Merge pull request #739 from shun-iwasawa/stageinch2
Introducing Stage::standardDpi instead of updating Stage::inch
This commit is contained in:
commit
1bad81ba81
14 changed files with 82 additions and 24 deletions
|
@ -347,14 +347,15 @@ TMeasureManager::TMeasureManager() {
|
||||||
m->add(cameraYFld.clone());
|
m->add(cameraYFld.clone());
|
||||||
add(m);
|
add(m);
|
||||||
|
|
||||||
const double stage_inch = 53.33333; // Consider changing to 120 or 160
|
const double stage_inch = 53.33333;
|
||||||
|
const double stage_standardDpi = 120;
|
||||||
|
|
||||||
TUnit fxLength(L"fxLength"),
|
TUnit fxLength(L"fxLength"),
|
||||||
fxInch(L"in", new TSimpleUnitConverter(1 / stage_inch)),
|
fxInch(L"in", new TSimpleUnitConverter(1 / stage_inch)),
|
||||||
fxCm(L"cm", new TSimpleUnitConverter(2.54 / stage_inch)),
|
fxCm(L"cm", new TSimpleUnitConverter(2.54 / stage_inch)),
|
||||||
fxMm(L"mm", new TSimpleUnitConverter(25.4 / stage_inch)),
|
fxMm(L"mm", new TSimpleUnitConverter(25.4 / stage_inch)),
|
||||||
fxXfld(L"fld", new TSimpleUnitConverter(2 / stage_inch)),
|
fxXfld(L"fld", new TSimpleUnitConverter(2 / stage_inch)),
|
||||||
fxPx(L"px", new TSimpleUnitConverter(1));
|
fxPx(L"px", new TSimpleUnitConverter(stage_standardDpi / stage_inch));
|
||||||
fxInch.addExtension(L"inch");
|
fxInch.addExtension(L"inch");
|
||||||
fxInch.addExtension(L"\"");
|
fxInch.addExtension(L"\"");
|
||||||
fxInch.addExtension(L"''");
|
fxInch.addExtension(L"''");
|
||||||
|
|
|
@ -43,7 +43,7 @@ namespace Stage {
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
DVVAR extern const double inch;
|
DVVAR extern const double inch;
|
||||||
DVVAR extern const double vectorDpi;
|
DVVAR extern const double standardDpi;
|
||||||
|
|
||||||
class Visitor;
|
class Visitor;
|
||||||
struct VisitArgs;
|
struct VisitArgs;
|
||||||
|
|
|
@ -42,6 +42,9 @@ Constructs TCamera with default value, size (12,9) and resolution (768,576).
|
||||||
Constructs TCamera with default value, size (36, 20.25) and resolution
|
Constructs TCamera with default value, size (36, 20.25) and resolution
|
||||||
(1920,1080).
|
(1920,1080).
|
||||||
- 05/31/16
|
- 05/31/16
|
||||||
|
Constructs TCamera with default value, size (16, 9) and resolution
|
||||||
|
(1920,1080).
|
||||||
|
- 08/16/16
|
||||||
*/
|
*/
|
||||||
TCamera();
|
TCamera();
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,8 @@ public:
|
||||||
|
|
||||||
void notifyPreferenceChanged() { emit preferenceChanged(); }
|
void notifyPreferenceChanged() { emit preferenceChanged(); }
|
||||||
|
|
||||||
|
void notifyPixelUnitSelected(bool on) { emit pixelUnitSelected(on); }
|
||||||
|
|
||||||
void setDirtyFlag(bool dirtyFlag) {
|
void setDirtyFlag(bool dirtyFlag) {
|
||||||
if (m_dirtyFlag == dirtyFlag) return;
|
if (m_dirtyFlag == dirtyFlag) return;
|
||||||
m_dirtyFlag = dirtyFlag;
|
m_dirtyFlag = dirtyFlag;
|
||||||
|
@ -75,6 +77,7 @@ signals:
|
||||||
void castFolderAdded(const TFilePath &path);
|
void castFolderAdded(const TFilePath &path);
|
||||||
void nameSceneChanged();
|
void nameSceneChanged();
|
||||||
void preferenceChanged();
|
void preferenceChanged();
|
||||||
|
void pixelUnitSelected(bool on);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TSCENEHANDLE_H
|
#endif // TSCENEHANDLE_H
|
||||||
|
|
|
@ -244,7 +244,8 @@ void CameraSettingsPopup::updateFields() {
|
||||||
TCamera *camera = cameraObject->getCamera();
|
TCamera *camera = cameraObject->getCamera();
|
||||||
if (Preferences::instance()->getPixelsOnly()) {
|
if (Preferences::instance()->getPixelsOnly()) {
|
||||||
TDimension res = camera->getRes();
|
TDimension res = camera->getRes();
|
||||||
camera->setSize(TDimensionD(res.lx / Stage::inch, res.ly / Stage::inch));
|
camera->setSize(
|
||||||
|
TDimensionD(res.lx / Stage::standardDpi, res.ly / Stage::standardDpi));
|
||||||
}
|
}
|
||||||
if (camera) m_cameraSettingsWidget->setFields(camera);
|
if (camera) m_cameraSettingsWidget->setFields(camera);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1257,8 +1257,8 @@ bool IoCmd::saveSceneIfNeeded(QString msg) {
|
||||||
void IoCmd::newScene() {
|
void IoCmd::newScene() {
|
||||||
RenderingSuspender suspender;
|
RenderingSuspender suspender;
|
||||||
TApp *app = TApp::instance();
|
TApp *app = TApp::instance();
|
||||||
double cameraDpi = 53.33333; // used to be 64, consider changing to 120 or
|
double cameraDpi = 120; // used to be 64 and 53.33333
|
||||||
// 160
|
|
||||||
if (!saveSceneIfNeeded(QApplication::tr("New Scene"))) return;
|
if (!saveSceneIfNeeded(QApplication::tr("New Scene"))) return;
|
||||||
|
|
||||||
IconGenerator::instance()->clearRequests();
|
IconGenerator::instance()->clearRequests();
|
||||||
|
@ -1861,6 +1861,35 @@ bool IoCmd::loadScene(const TFilePath &path, bool updateRecentFile,
|
||||||
QAction *act = CommandManager::instance()->getAction(MI_RevertScene);
|
QAction *act = CommandManager::instance()->getAction(MI_RevertScene);
|
||||||
if (act) act->setEnabled(exist);
|
if (act) act->setEnabled(exist);
|
||||||
|
|
||||||
|
// check if the output dpi is incompatible with pixels only mode
|
||||||
|
if (Preferences::instance()->getPixelsOnly()) {
|
||||||
|
TPointD dpi = scene->getCurrentCamera()->getDpi();
|
||||||
|
if (!areAlmostEqual(dpi.x, Stage::standardDpi) ||
|
||||||
|
!areAlmostEqual(dpi.y, Stage::standardDpi)) {
|
||||||
|
QString question = QObject::tr(
|
||||||
|
"This scene is incompatible with pixels only mode of the current "
|
||||||
|
"OpenToonz version.\nWhat would you like to do?");
|
||||||
|
QString turnOffPixelAnswer = QObject::tr("Turn off pixels only mode");
|
||||||
|
QString resizeSceneAnswer =
|
||||||
|
QObject::tr("Keep pixels only mode on and resize the scene");
|
||||||
|
int ret =
|
||||||
|
DVGui::MsgBox(question, turnOffPixelAnswer, resizeSceneAnswer, 0);
|
||||||
|
if (ret == 0) {
|
||||||
|
} // do nothing
|
||||||
|
else if (ret == 1) { // Turn off pixels only mode
|
||||||
|
Preferences::instance()->setPixelsOnly(false);
|
||||||
|
app->getCurrentScene()->notifyPixelUnitSelected(false);
|
||||||
|
} else { // ret = 2 : Resize the scene
|
||||||
|
TDimensionD camSize = scene->getCurrentCamera()->getSize();
|
||||||
|
TDimension camRes(camSize.lx * Stage::standardDpi,
|
||||||
|
camSize.ly * Stage::standardDpi);
|
||||||
|
scene->getCurrentCamera()->setRes(camRes);
|
||||||
|
app->getCurrentScene()->setDirtyFlag(true);
|
||||||
|
app->getCurrentXsheet()->notifyXsheetChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
printf("%s:%s loadScene() completed :\n", __FILE__, __FUNCTION__);
|
printf("%s:%s loadScene() completed :\n", __FILE__, __FUNCTION__);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "toonz/tcamera.h"
|
#include "toonz/tcamera.h"
|
||||||
#include "toonz/levelproperties.h"
|
#include "toonz/levelproperties.h"
|
||||||
#include "toonz/tonionskinmaskhandle.h"
|
#include "toonz/tonionskinmaskhandle.h"
|
||||||
|
#include "toonz/stage.h"
|
||||||
|
|
||||||
// TnzCore includes
|
// TnzCore includes
|
||||||
#include "tsystem.h"
|
#include "tsystem.h"
|
||||||
|
@ -217,22 +218,22 @@ Preferences::LevelFormat PreferencesPopup::FormatProperties::levelFormat()
|
||||||
void PreferencesPopup::onPixelsOnlyChanged(int index) {
|
void PreferencesPopup::onPixelsOnlyChanged(int index) {
|
||||||
bool enabled = index == Qt::Checked;
|
bool enabled = index == Qt::Checked;
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
m_pref->setDefLevelDpi(53.33333);
|
m_pref->setDefLevelDpi(Stage::standardDpi);
|
||||||
m_pref->setPixelsOnly(true);
|
m_pref->setPixelsOnly(true);
|
||||||
TCamera *camera;
|
TCamera *camera;
|
||||||
camera =
|
camera =
|
||||||
TApp::instance()->getCurrentScene()->getScene()->getCurrentCamera();
|
TApp::instance()->getCurrentScene()->getScene()->getCurrentCamera();
|
||||||
TDimension camRes = camera->getRes();
|
TDimension camRes = camera->getRes();
|
||||||
TDimensionD camSize;
|
TDimensionD camSize;
|
||||||
camSize.lx = camRes.lx / 53.33333;
|
camSize.lx = camRes.lx / Stage::standardDpi;
|
||||||
camSize.ly = camRes.ly / 53.33333;
|
camSize.ly = camRes.ly / Stage::standardDpi;
|
||||||
camera->setSize(camSize);
|
camera->setSize(camSize);
|
||||||
TDimension cleanupRes = CleanupSettingsModel::instance()
|
TDimension cleanupRes = CleanupSettingsModel::instance()
|
||||||
->getCurrentParameters()
|
->getCurrentParameters()
|
||||||
->m_camera.getRes();
|
->m_camera.getRes();
|
||||||
TDimensionD cleanupSize;
|
TDimensionD cleanupSize;
|
||||||
cleanupSize.lx = cleanupRes.lx / 53.33333;
|
cleanupSize.lx = cleanupRes.lx / Stage::standardDpi;
|
||||||
cleanupSize.ly = cleanupRes.ly / 53.33333;
|
cleanupSize.ly = cleanupRes.ly / Stage::standardDpi;
|
||||||
CleanupSettingsModel::instance()->getCurrentParameters()->m_camera.setSize(
|
CleanupSettingsModel::instance()->getCurrentParameters()->m_camera.setSize(
|
||||||
cleanupSize);
|
cleanupSize);
|
||||||
m_pref->storeOldUnits();
|
m_pref->storeOldUnits();
|
||||||
|
@ -241,7 +242,7 @@ void PreferencesPopup::onPixelsOnlyChanged(int index) {
|
||||||
m_unitOm->setDisabled(true);
|
m_unitOm->setDisabled(true);
|
||||||
m_cameraUnitOm->setDisabled(true);
|
m_cameraUnitOm->setDisabled(true);
|
||||||
m_defLevelDpi->setDisabled(true);
|
m_defLevelDpi->setDisabled(true);
|
||||||
m_defLevelDpi->setValue(53.33333);
|
m_defLevelDpi->setValue(Stage::standardDpi);
|
||||||
m_defLevelWidth->setMeasure("camera.lx");
|
m_defLevelWidth->setMeasure("camera.lx");
|
||||||
m_defLevelHeight->setMeasure("camera.ly");
|
m_defLevelHeight->setMeasure("camera.ly");
|
||||||
m_defLevelWidth->setValue(m_pref->getDefLevelWidth());
|
m_defLevelWidth->setValue(m_pref->getDefLevelWidth());
|
||||||
|
@ -275,6 +276,15 @@ void PreferencesPopup::onPixelsOnlyChanged(int index) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void PreferencesPopup::onPixelUnitExternallySelected(bool on) {
|
||||||
|
// call slot function onPixelsOnlyChanged() accordingly
|
||||||
|
m_pixelsOnlyCB->setCheckState((on) ? Qt::Checked : Qt::Unchecked);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void PreferencesPopup::onUnitChanged(int index) {
|
void PreferencesPopup::onUnitChanged(int index) {
|
||||||
if (index == 4 && m_pixelsOnlyCB->isChecked() == false) {
|
if (index == 4 && m_pixelsOnlyCB->isChecked() == false) {
|
||||||
m_pixelsOnlyCB->setCheckState(Qt::Checked);
|
m_pixelsOnlyCB->setCheckState(Qt::Checked);
|
||||||
|
@ -1844,6 +1854,11 @@ PreferencesPopup::PreferencesPopup()
|
||||||
SLOT(onStyleSheetTypeChanged(int)));
|
SLOT(onStyleSheetTypeChanged(int)));
|
||||||
ret = ret && connect(m_pixelsOnlyCB, SIGNAL(stateChanged(int)),
|
ret = ret && connect(m_pixelsOnlyCB, SIGNAL(stateChanged(int)),
|
||||||
SLOT(onPixelsOnlyChanged(int)));
|
SLOT(onPixelsOnlyChanged(int)));
|
||||||
|
// pixels unit may deactivated externally on loading scene (see
|
||||||
|
// IoCmd::loadScene())
|
||||||
|
ret = ret && connect(TApp::instance()->getCurrentScene(),
|
||||||
|
SIGNAL(pixelUnitSelected(bool)), this,
|
||||||
|
SLOT(onPixelUnitExternallySelected(bool)));
|
||||||
ret = ret && connect(m_unitOm, SIGNAL(currentIndexChanged(int)),
|
ret = ret && connect(m_unitOm, SIGNAL(currentIndexChanged(int)),
|
||||||
SLOT(onUnitChanged(int)));
|
SLOT(onUnitChanged(int)));
|
||||||
ret = ret && connect(m_cameraUnitOm, SIGNAL(currentIndexChanged(int)),
|
ret = ret && connect(m_cameraUnitOm, SIGNAL(currentIndexChanged(int)),
|
||||||
|
|
|
@ -79,6 +79,7 @@ private:
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
void onPixelsOnlyChanged(int index);
|
void onPixelsOnlyChanged(int index);
|
||||||
|
void onPixelUnitExternallySelected(bool on);
|
||||||
void onUnitChanged(int index);
|
void onUnitChanged(int index);
|
||||||
void onCameraUnitChanged(int index);
|
void onCameraUnitChanged(int index);
|
||||||
void onRoomChoiceChanged(int index);
|
void onRoomChoiceChanged(int index);
|
||||||
|
|
|
@ -1864,8 +1864,12 @@ void SceneViewer::zoomQt(bool forward, bool reset) {
|
||||||
/*! a factor for getting pixel-based zoom ratio
|
/*! a factor for getting pixel-based zoom ratio
|
||||||
*/
|
*/
|
||||||
double SceneViewer::getDpiFactor() {
|
double SceneViewer::getDpiFactor() {
|
||||||
|
// When the current unit is "pixels", always use a standard dpi
|
||||||
|
if (Preferences::instance()->getPixelsOnly()) {
|
||||||
|
return Stage::inch / Stage::standardDpi;
|
||||||
|
}
|
||||||
// When preview mode, use a camera DPI
|
// When preview mode, use a camera DPI
|
||||||
if (isPreviewEnabled()) {
|
else if (isPreviewEnabled()) {
|
||||||
return Stage::inch /
|
return Stage::inch /
|
||||||
TApp::instance()
|
TApp::instance()
|
||||||
->getCurrentScene()
|
->getCurrentScene()
|
||||||
|
|
|
@ -69,8 +69,8 @@ typedef std::vector<Player> PlayerSet;
|
||||||
thickness of
|
thickness of
|
||||||
images .pli.
|
images .pli.
|
||||||
*/
|
*/
|
||||||
const double Stage::inch = 53.33333; // consider changing to 120 or 160
|
const double Stage::inch = 53.33333;
|
||||||
const double Stage::vectorDpi = 53.3333;
|
const double Stage::standardDpi = 120;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
void updateOnionSkinSize(const PlayerSet &players) {
|
void updateOnionSkinSize(const PlayerSet &players) {
|
||||||
|
|
|
@ -10,7 +10,8 @@
|
||||||
|
|
||||||
TCamera::TCamera()
|
TCamera::TCamera()
|
||||||
//: m_size(12, 9), m_res(768, 576), m_xPrevalence(true)
|
//: m_size(12, 9), m_res(768, 576), m_xPrevalence(true)
|
||||||
: m_size(36, 20.25),
|
//: m_size(36, 20.25),
|
||||||
|
: m_size(16, 9),
|
||||||
m_res(1920, 1080),
|
m_res(1920, 1080),
|
||||||
m_xPrevalence(true) {}
|
m_xPrevalence(true) {}
|
||||||
|
|
||||||
|
|
|
@ -759,8 +759,8 @@ void CameraSettingsWidget::onYResChanged() {
|
||||||
|
|
||||||
void CameraSettingsWidget::onXDpiChanged() {
|
void CameraSettingsWidget::onXDpiChanged() {
|
||||||
if (Preferences::instance()->getPixelsOnly()) {
|
if (Preferences::instance()->getPixelsOnly()) {
|
||||||
m_xDpiFld->setValue(Stage::inch);
|
m_xDpiFld->setValue(Stage::standardDpi);
|
||||||
m_yDpiFld->setValue(Stage::inch);
|
m_yDpiFld->setValue(Stage::standardDpi);
|
||||||
} else if (m_fspChk->isChecked())
|
} else if (m_fspChk->isChecked())
|
||||||
m_yDpiFld->setValue(m_xDpiFld->getValue());
|
m_yDpiFld->setValue(m_xDpiFld->getValue());
|
||||||
|
|
||||||
|
@ -781,8 +781,8 @@ void CameraSettingsWidget::onXDpiChanged() {
|
||||||
|
|
||||||
void CameraSettingsWidget::onYDpiChanged() {
|
void CameraSettingsWidget::onYDpiChanged() {
|
||||||
if (Preferences::instance()->getPixelsOnly()) {
|
if (Preferences::instance()->getPixelsOnly()) {
|
||||||
m_xDpiFld->setValue(Stage::inch);
|
m_xDpiFld->setValue(Stage::standardDpi);
|
||||||
m_yDpiFld->setValue(Stage::inch);
|
m_yDpiFld->setValue(Stage::standardDpi);
|
||||||
} else if (m_fspChk->isChecked())
|
} else if (m_fspChk->isChecked())
|
||||||
m_xDpiFld->setValue(m_yDpiFld->getValue());
|
m_xDpiFld->setValue(m_yDpiFld->getValue());
|
||||||
|
|
||||||
|
@ -850,8 +850,8 @@ void CameraSettingsWidget::onPresetSelected(const QString &str) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Preferences::instance()->getPixelsOnly()) {
|
if (Preferences::instance()->getPixelsOnly()) {
|
||||||
m_lxFld->setValue(xres / Stage::inch);
|
m_lxFld->setValue(xres / Stage::standardDpi);
|
||||||
m_lyFld->setValue(yres / Stage::inch);
|
m_lyFld->setValue(yres / Stage::standardDpi);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_forCleanup && m_offsX && m_offsY && !xoffset.isEmpty() &&
|
if (m_forCleanup && m_offsX && m_offsY && !xoffset.isEmpty() &&
|
||||||
|
|
|
@ -95,7 +95,7 @@ void CleanupCameraSettingsWidget::setFields(
|
||||||
if (Preferences::instance()->getPixelsOnly()) {
|
if (Preferences::instance()->getPixelsOnly()) {
|
||||||
TDimension res = cleanupParameters->m_camera.getRes();
|
TDimension res = cleanupParameters->m_camera.getRes();
|
||||||
cleanupParameters->m_camera.setSize(
|
cleanupParameters->m_camera.setSize(
|
||||||
TDimensionD(res.lx / Stage::inch, res.ly / Stage::inch));
|
TDimensionD(res.lx / Stage::standardDpi, res.ly / Stage::standardDpi));
|
||||||
}
|
}
|
||||||
m_cameraWidget->setFields(&cleanupParameters->m_camera);
|
m_cameraWidget->setFields(&cleanupParameters->m_camera);
|
||||||
m_offsX->setValue(cleanupParameters->m_offx);
|
m_offsX->setValue(cleanupParameters->m_offx);
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
using namespace DVGui;
|
using namespace DVGui;
|
||||||
|
|
||||||
QString DialogTitle = QObject::tr("OpenToonz 1.0");
|
QString DialogTitle = QObject::tr("OpenToonz 1.1");
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
namespace {
|
namespace {
|
||||||
|
|
Loading…
Reference in a new issue