|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "scenesettingspopup.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// Tnz6 includes
|
|
Toshihiro Shimizu |
890ddd |
#include "menubarcommandids.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "previewer.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tapp.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzQt includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/menubarcommand.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzLib includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txsheet.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tscenehandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txsheethandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/sceneproperties.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/toonzscene.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/preferences.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toutputproperties.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzBase includes
|
|
Toshihiro Shimizu |
890ddd |
#include "tunit.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzCore includes
|
|
Toshihiro Shimizu |
890ddd |
#include "trop.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// Qt includes
|
|
Toshihiro Shimizu |
890ddd |
#include <qlayout></qlayout>
|
|
Toshihiro Shimizu |
890ddd |
#include <qcombobox></qcombobox>
|
|
Toshihiro Shimizu |
890ddd |
#include <qlabel></qlabel>
|
|
Toshihiro Shimizu |
890ddd |
#include <qapplication></qapplication>
|
|
Campbell Barton |
d0e335 |
#include <qmainwindow></qmainwindow>
|
|
Toshihiro Shimizu |
890ddd |
#include <qpainter></qpainter>
|
|
shun-iwasawa |
f84c65 |
#include <qpushbutton></qpushbutton>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
using namespace DVGui;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
namespace {
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
const int labelSize = 110;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
shun-iwasawa |
f84c65 |
class EditCellMarkUndo final : public TUndo {
|
|
shun-iwasawa |
f84c65 |
int m_id;
|
|
shun-iwasawa |
f84c65 |
TSceneProperties::CellMark m_markBefore, m_markAfter;
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
EditCellMarkUndo(int id) : m_id(id) {
|
|
shun-iwasawa |
f84c65 |
m_markBefore = TApp::instance()
|
|
shun-iwasawa |
f84c65 |
->getCurrentScene()
|
|
shun-iwasawa |
f84c65 |
->getScene()
|
|
shun-iwasawa |
f84c65 |
->getProperties()
|
|
shun-iwasawa |
f84c65 |
->getCellMark(id);
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
public:
|
|
shun-iwasawa |
f84c65 |
EditCellMarkUndo(int id, TPixel32 color) : EditCellMarkUndo(id) {
|
|
shun-iwasawa |
f84c65 |
m_markAfter = {m_markBefore.name, color};
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
EditCellMarkUndo(int id, QString name) : EditCellMarkUndo(id) {
|
|
shun-iwasawa |
f84c65 |
m_markAfter = {name, m_markBefore.color};
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
void set(const TSceneProperties::CellMark &mark) const {
|
|
shun-iwasawa |
f84c65 |
TApp::instance()
|
|
shun-iwasawa |
f84c65 |
->getCurrentScene()
|
|
shun-iwasawa |
f84c65 |
->getScene()
|
|
shun-iwasawa |
f84c65 |
->getProperties()
|
|
shun-iwasawa |
f84c65 |
->setCellMark(mark, m_id);
|
|
shun-iwasawa |
f84c65 |
TApp::instance()->getCurrentScene()->notifySceneChanged();
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
void undo() const override { set(m_markBefore); }
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
void redo() const override { set(m_markAfter); }
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
int getSize() const override { return sizeof *this; }
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
QString getHistoryString() override {
|
|
shun-iwasawa |
f84c65 |
return QObject::tr("Edit Cell Mark #%1").arg(QString::number(m_id));
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
};
|
|
shun-iwasawa |
f84c65 |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
} // namespace
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
/*
|
|
Shinya Kitaoka |
d1f6c4 |
class CheckBoardRect final : public QWidget
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TRaster32P m_ras;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
public:
|
|
Toshihiro Shimizu |
890ddd |
CheckBoardRect(QWidget *parent, int sizeX, int sizeY)
|
|
Shinya Kitaoka |
120a6e |
: m_ras(sizeX,sizeY)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
setFixedSize(sizeX,sizeY);
|
|
Toshihiro Shimizu |
890ddd |
setColors(TPixel32(0, 0, 0), TPixel32(255, 255, 255));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
void setColors(const TPixel32 &color1, const TPixel32 &color2)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Shinya Kitaoka |
120a6e |
TRop::checkBoard(m_ras, color1, color2, TDimensionD(m_ras->getLx()/8,
|
|
Shinya Kitaoka |
120a6e |
m_ras->getLy()/8),TPointD(0, 0));
|
|
Toshihiro Shimizu |
890ddd |
update();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Toshihiro Shimizu |
890ddd |
void paintEvent(QPaintEvent *event)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Shinya Kitaoka |
120a6e |
QPainter painter(this);
|
|
Shinya Kitaoka |
120a6e |
QImage img(m_ras->getRawData(), m_ras->getLx(), m_ras->getLy(),
|
|
Shinya Kitaoka |
120a6e |
QImage::Format_ARGB32);
|
|
Toshihiro Shimizu |
890ddd |
painter.drawImage(0,0,img);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Shinya Kitaoka |
120a6e |
};
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
shun-iwasawa |
f84c65 |
// CellMarksPopup
|
|
shun-iwasawa |
f84c65 |
//-----------------------------------------------------------------------------
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
CellMarksPopup::CellMarksPopup(QWidget *parent) : QDialog(parent) {
|
|
shun-iwasawa |
f84c65 |
setWindowTitle(tr("Cell Marks Settings"));
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
QList<tsceneproperties::cellmark> marks = TApp::instance()</tsceneproperties::cellmark>
|
|
shun-iwasawa |
f84c65 |
->getCurrentScene()
|
|
shun-iwasawa |
f84c65 |
->getScene()
|
|
shun-iwasawa |
f84c65 |
->getProperties()
|
|
shun-iwasawa |
f84c65 |
->getCellMarks();
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
QGridLayout *layout = new QGridLayout();
|
|
shun-iwasawa |
f84c65 |
layout->setMargin(10);
|
|
shun-iwasawa |
f84c65 |
layout->setHorizontalSpacing(5);
|
|
shun-iwasawa |
f84c65 |
layout->setVerticalSpacing(10);
|
|
shun-iwasawa |
f84c65 |
{
|
|
shun-iwasawa |
f84c65 |
int id = 0;
|
|
shun-iwasawa |
f84c65 |
for (auto mark : marks) {
|
|
shun-iwasawa |
f84c65 |
ColorField *colorF = new ColorField(this, false, mark.color, 20);
|
|
shun-iwasawa |
f84c65 |
colorF->hideChannelsFields(true);
|
|
shun-iwasawa |
f84c65 |
QLineEdit *nameF = new QLineEdit(mark.name, this);
|
|
shun-iwasawa |
f84c65 |
m_fields.append({id, colorF, nameF});
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
int row = layout->rowCount();
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
layout->addWidget(new QLabel(QString("%1:").arg(id), this), row, 0,
|
|
shun-iwasawa |
f84c65 |
Qt::AlignRight | Qt::AlignVCenter);
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
layout->addWidget(colorF, row, 1);
|
|
shun-iwasawa |
f84c65 |
layout->addWidget(nameF, row, 2);
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
connect(colorF, SIGNAL(colorChanged(const TPixel32 &, bool)), this,
|
|
shun-iwasawa |
f84c65 |
SLOT(onColorChanged(const TPixel32 &, bool)));
|
|
shun-iwasawa |
f84c65 |
connect(nameF, SIGNAL(editingFinished()), this, SLOT(onNameChanged()));
|
|
shun-iwasawa |
f84c65 |
id++;
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
layout->setColumnStretch(2, 1);
|
|
shun-iwasawa |
f84c65 |
setLayout(layout);
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
void CellMarksPopup::update() {
|
|
shun-iwasawa |
f84c65 |
QList<tsceneproperties::cellmark> marks = TApp::instance()</tsceneproperties::cellmark>
|
|
shun-iwasawa |
f84c65 |
->getCurrentScene()
|
|
shun-iwasawa |
f84c65 |
->getScene()
|
|
shun-iwasawa |
f84c65 |
->getProperties()
|
|
shun-iwasawa |
f84c65 |
->getCellMarks();
|
|
shun-iwasawa |
f84c65 |
assert(marks.count() == m_fields.count());
|
|
shun-iwasawa |
f84c65 |
int id = 0;
|
|
shun-iwasawa |
f84c65 |
for (auto mark : marks) {
|
|
shun-iwasawa |
f84c65 |
assert(m_fields[id].id == id);
|
|
shun-iwasawa |
f84c65 |
m_fields[id].colorField->setColor(mark.color);
|
|
shun-iwasawa |
f84c65 |
m_fields[id].nameField->setText(mark.name);
|
|
shun-iwasawa |
f84c65 |
id++;
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
void CellMarksPopup::onColorChanged(const TPixel32 &color, bool isDragging) {
|
|
shun-iwasawa |
f84c65 |
if (isDragging) return;
|
|
shun-iwasawa |
f84c65 |
// obtain id
|
|
shun-iwasawa |
f84c65 |
int id = -1;
|
|
shun-iwasawa |
f84c65 |
ColorField *colorF = qobject_cast<colorfield *="">(sender());</colorfield>
|
|
shun-iwasawa |
f84c65 |
for (auto field : m_fields) {
|
|
shun-iwasawa |
f84c65 |
if (field.colorField == colorF) {
|
|
shun-iwasawa |
f84c65 |
id = field.id;
|
|
shun-iwasawa |
f84c65 |
break;
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
if (id < 0) return;
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
// return if the value is unchanged
|
|
shun-iwasawa |
f84c65 |
TPixel32 oldColor = TApp::instance()
|
|
shun-iwasawa |
f84c65 |
->getCurrentScene()
|
|
shun-iwasawa |
f84c65 |
->getScene()
|
|
shun-iwasawa |
f84c65 |
->getProperties()
|
|
shun-iwasawa |
f84c65 |
->getCellMark(id)
|
|
shun-iwasawa |
f84c65 |
.color;
|
|
shun-iwasawa |
f84c65 |
if (color == oldColor) return;
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
EditCellMarkUndo *undo = new EditCellMarkUndo(id, color);
|
|
shun-iwasawa |
f84c65 |
undo->redo();
|
|
shun-iwasawa |
f84c65 |
TUndoManager::manager()->add(undo);
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
void CellMarksPopup::onNameChanged() {
|
|
shun-iwasawa |
f84c65 |
// obtain id
|
|
shun-iwasawa |
f84c65 |
int id = -1;
|
|
shun-iwasawa |
f84c65 |
QLineEdit *nameF = qobject_cast<qlineedit *="">(sender());</qlineedit>
|
|
shun-iwasawa |
f84c65 |
for (auto field : m_fields) {
|
|
shun-iwasawa |
f84c65 |
if (field.nameField == nameF) {
|
|
shun-iwasawa |
f84c65 |
id = field.id;
|
|
shun-iwasawa |
f84c65 |
break;
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
if (id < 0) return;
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
// return if the value is unchanged
|
|
shun-iwasawa |
f84c65 |
QString oldName = TApp::instance()
|
|
shun-iwasawa |
f84c65 |
->getCurrentScene()
|
|
shun-iwasawa |
f84c65 |
->getScene()
|
|
shun-iwasawa |
f84c65 |
->getProperties()
|
|
shun-iwasawa |
f84c65 |
->getCellMark(id)
|
|
shun-iwasawa |
f84c65 |
.name;
|
|
shun-iwasawa |
f84c65 |
if (nameF->text() == oldName) return;
|
|
shun-iwasawa |
f84c65 |
// reject empty string
|
|
shun-iwasawa |
f84c65 |
if (nameF->text().isEmpty()) {
|
|
shun-iwasawa |
f84c65 |
nameF->setText(oldName);
|
|
shun-iwasawa |
f84c65 |
return;
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
EditCellMarkUndo *undo = new EditCellMarkUndo(id, nameF->text());
|
|
shun-iwasawa |
f84c65 |
undo->redo();
|
|
shun-iwasawa |
f84c65 |
TUndoManager::manager()->add(undo);
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
// SceneSettingsPopup
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
SceneSettingsPopup::SceneSettingsPopup()
|
|
shun-iwasawa |
f84c65 |
: QDialog(TApp::instance()->getMainWindow()), m_cellMarksPopup(nullptr) {
|
|
Shinya Kitaoka |
120a6e |
setWindowTitle(tr("Scene Settings"));
|
|
Shinya Kitaoka |
120a6e |
setObjectName("SceneSettings");
|
|
Shinya Kitaoka |
120a6e |
TSceneProperties *sprop = getProperties();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// Frame Rate
|
|
Shinya Kitaoka |
120a6e |
double frameRate = sprop->getOutputProperties()->getFrameRate();
|
|
Shinya Kitaoka |
120a6e |
m_frameRateFld = new DoubleLineEdit(this, frameRate);
|
|
Shinya Kitaoka |
120a6e |
m_frameRateFld->setRange(1, 100);
|
|
Shinya Kitaoka |
120a6e |
m_frameRateFld->setDecimals(2);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// Camera BG color
|
|
Shinya Kitaoka |
120a6e |
m_bgColorFld = new ColorField(this, true, sprop->getBgColor());
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// Field Guide Size - A/R
|
|
Shinya Kitaoka |
120a6e |
int fieldGuideSize = sprop->getFieldGuideSize();
|
|
Shinya Kitaoka |
120a6e |
m_fieldGuideFld = new DVGui::IntLineEdit(this, fieldGuideSize, 0, 50);
|
|
Shinya Kitaoka |
120a6e |
m_aspectRatioFld = new DoubleLineEdit(this, 1.38);
|
|
Shinya Kitaoka |
120a6e |
m_aspectRatioFld->setRange(-10000.0, 10000.0);
|
|
Shinya Kitaoka |
120a6e |
m_aspectRatioFld->setDecimals(5);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// Image Subsampling - Tlv Subsampling
|
|
Shinya Kitaoka |
120a6e |
int fullcolorSubsampling = sprop->getFullcolorSubsampling();
|
|
Shinya Kitaoka |
120a6e |
m_fullcolorSubsamplingFld =
|
|
Shinya Kitaoka |
120a6e |
new DVGui::IntLineEdit(this, fullcolorSubsampling, 1);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
int tlvSubsampling = sprop->getTlvSubsampling();
|
|
Shinya Kitaoka |
120a6e |
m_tlvSubsamplingFld = new DVGui::IntLineEdit(this, tlvSubsampling, 1);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// Marker Interval - Start Frame
|
|
shun-iwasawa |
fe3506 |
int distance, offset, secDistance;
|
|
shun-iwasawa |
fe3506 |
sprop->getMarkers(distance, offset, secDistance);
|
|
Shinya Kitaoka |
120a6e |
m_markerIntervalFld = new DVGui::IntLineEdit(this, distance, 0);
|
|
Shinya Kitaoka |
120a6e |
m_startFrameFld = new DVGui::IntLineEdit(this, offset);
|
|
Shinya Kitaoka |
120a6e |
|
|
shun_iwasawa |
2c0f50 |
// Whether the column color filter and transparency is available also in
|
|
shun_iwasawa |
2c0f50 |
// render
|
|
shun_iwasawa |
2c0f50 |
m_colorFilterOnRenderCB = new DVGui::CheckBox(
|
|
shun_iwasawa |
2c0f50 |
tr("Enable Column Color Filter and Transparency for Rendering"), this);
|
|
shun_iwasawa |
2c0f50 |
m_colorFilterOnRenderCB->setChecked(
|
|
shun_iwasawa |
2c0f50 |
sprop->isColumnColorFilterOnRenderEnabled());
|
|
shun_iwasawa |
2c0f50 |
|
|
shun-iwasawa |
f84c65 |
QPushButton *editCellMarksButton =
|
|
shun-iwasawa |
f84c65 |
new QPushButton(tr("Edit Cell Marks"), this);
|
|
shun-iwasawa |
f84c65 |
|
|
Shinya Kitaoka |
120a6e |
// layout
|
|
Shinya Kitaoka |
120a6e |
QGridLayout *mainLayout = new QGridLayout();
|
|
Shinya Kitaoka |
120a6e |
mainLayout->setMargin(10);
|
|
Shinya Kitaoka |
120a6e |
mainLayout->setHorizontalSpacing(5);
|
|
Shinya Kitaoka |
120a6e |
mainLayout->setVerticalSpacing(15);
|
|
Shinya Kitaoka |
120a6e |
{
|
|
Shinya Kitaoka |
120a6e |
// Frame Rate
|
|
Shinya Kitaoka |
120a6e |
mainLayout->addWidget(new QLabel(tr("Frame Rate:"), this), 0, 0,
|
|
Shinya Kitaoka |
120a6e |
Qt::AlignRight | Qt::AlignVCenter);
|
|
shun-iwasawa |
fe3506 |
mainLayout->addWidget(m_frameRateFld, 0, 1, 1, 4,
|
|
shun-iwasawa |
fe3506 |
Qt::AlignLeft | Qt::AlignVCenter);
|
|
Shinya Kitaoka |
120a6e |
// Camera BG color
|
|
Shinya Kitaoka |
120a6e |
mainLayout->addWidget(new QLabel(tr("Camera BG Color:"), this), 1, 0,
|
|
Shinya Kitaoka |
120a6e |
Qt::AlignRight | Qt::AlignVCenter);
|
|
Shinya Kitaoka |
120a6e |
mainLayout->addWidget(m_bgColorFld, 1, 1, 1, 4);
|
|
Shinya Kitaoka |
120a6e |
// Field Guide Size - A/R
|
|
Shinya Kitaoka |
120a6e |
mainLayout->addWidget(new QLabel(tr("Field Guide Size:"), this), 2, 0,
|
|
Shinya Kitaoka |
120a6e |
Qt::AlignRight | Qt::AlignVCenter);
|
|
Shinya Kitaoka |
120a6e |
mainLayout->addWidget(m_fieldGuideFld, 2, 1);
|
|
Shinya Kitaoka |
120a6e |
mainLayout->addWidget(new QLabel(tr("A/R:"), this), 2, 2,
|
|
Shinya Kitaoka |
120a6e |
Qt::AlignRight | Qt::AlignVCenter);
|
|
shun-iwasawa |
fe3506 |
mainLayout->addWidget(m_aspectRatioFld, 2, 3, 1, 2,
|
|
shun-iwasawa |
fe3506 |
Qt::AlignLeft | Qt::AlignVCenter);
|
|
Shinya Kitaoka |
120a6e |
// Image Subsampling - Tlv Subsampling
|
|
Shinya Kitaoka |
120a6e |
mainLayout->addWidget(new QLabel(tr("Image Subsampling:"), this), 3, 0,
|
|
Shinya Kitaoka |
120a6e |
Qt::AlignRight | Qt::AlignVCenter);
|
|
Shinya Kitaoka |
120a6e |
mainLayout->addWidget(m_fullcolorSubsamplingFld, 3, 1);
|
|
Shinya Kitaoka |
120a6e |
if (m_tlvSubsamplingFld) {
|
|
Shinya Kitaoka |
120a6e |
mainLayout->addWidget(new QLabel(tr("TLV Subsampling:"), this), 4, 0,
|
|
Shinya Kitaoka |
120a6e |
Qt::AlignRight | Qt::AlignVCenter);
|
|
Shinya Kitaoka |
120a6e |
mainLayout->addWidget(m_tlvSubsamplingFld, 4, 1);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
// Marker Interval - Start Frame
|
|
Shinya Kitaoka |
120a6e |
mainLayout->addWidget(new QLabel(tr("Marker Interval:"), this), 5, 0,
|
|
Shinya Kitaoka |
120a6e |
Qt::AlignRight | Qt::AlignVCenter);
|
|
Shinya Kitaoka |
120a6e |
mainLayout->addWidget(m_markerIntervalFld, 5, 1);
|
|
Shinya Kitaoka |
120a6e |
mainLayout->addWidget(new QLabel(tr(" Start Frame:"), this), 5, 2,
|
|
Shinya Kitaoka |
120a6e |
Qt::AlignRight | Qt::AlignVCenter);
|
|
Shinya Kitaoka |
120a6e |
mainLayout->addWidget(m_startFrameFld, 5, 3);
|
|
shun_iwasawa |
2c0f50 |
|
|
shun_iwasawa |
2c0f50 |
// Use Color Filter and Transparency for Rendering
|
|
shun_iwasawa |
2c0f50 |
mainLayout->addWidget(m_colorFilterOnRenderCB, 6, 0, 1, 4);
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
// cell marks
|
|
shun-iwasawa |
f84c65 |
mainLayout->addWidget(new QLabel(tr("Cell Marks:"), this), 7, 0,
|
|
shun-iwasawa |
f84c65 |
Qt::AlignRight | Qt::AlignVCenter);
|
|
shun-iwasawa |
f84c65 |
mainLayout->addWidget(editCellMarksButton, 7, 1, 1, 4,
|
|
shun-iwasawa |
f84c65 |
Qt::AlignLeft | Qt::AlignVCenter);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
mainLayout->setColumnStretch(0, 0);
|
|
Shinya Kitaoka |
120a6e |
mainLayout->setColumnStretch(1, 0);
|
|
Shinya Kitaoka |
120a6e |
mainLayout->setColumnStretch(2, 0);
|
|
Shinya Kitaoka |
120a6e |
mainLayout->setColumnStretch(3, 0);
|
|
Shinya Kitaoka |
120a6e |
mainLayout->setColumnStretch(4, 1);
|
|
shun-iwasawa |
481b59 |
mainLayout->setRowStretch(9, 1);
|
|
Shinya Kitaoka |
120a6e |
setLayout(mainLayout);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// signal-slot connections
|
|
Shinya Kitaoka |
120a6e |
bool ret = true;
|
|
Shinya Kitaoka |
120a6e |
// Frame Rate
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(m_frameRateFld, SIGNAL(editingFinished()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onFrameRateEditingFinished()));
|
|
Shinya Kitaoka |
120a6e |
// Camera BG color
|
|
Shinya Kitaoka |
120a6e |
ret =
|
|
Shinya Kitaoka |
120a6e |
ret && connect(m_bgColorFld, SIGNAL(colorChanged(const TPixel32 &, bool)),
|
|
Shinya Kitaoka |
120a6e |
this, SLOT(setBgColor(const TPixel32 &, bool)));
|
|
Shinya Kitaoka |
120a6e |
// Field Guide Size - A/R
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(m_fieldGuideFld, SIGNAL(editingFinished()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onFieldGuideSizeEditingFinished()));
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(m_aspectRatioFld, SIGNAL(editingFinished()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onFieldGuideAspectRatioEditingFinished()));
|
|
Shinya Kitaoka |
120a6e |
// Image Subsampling - Tlv Subsampling
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(m_fullcolorSubsamplingFld, SIGNAL(editingFinished()),
|
|
Shinya Kitaoka |
120a6e |
this, SLOT(onFullColorSubsampEditingFinished()));
|
|
Shinya Kitaoka |
120a6e |
if (m_tlvSubsamplingFld)
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(m_tlvSubsamplingFld, SIGNAL(editingFinished()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onTlvSubsampEditingFinished()));
|
|
Shinya Kitaoka |
120a6e |
// Marker Interval - Start Frame
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(m_markerIntervalFld, SIGNAL(editingFinished()), this,
|
|
shun-iwasawa |
fe3506 |
SLOT(onMakerInformationChanged()));
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(m_startFrameFld, SIGNAL(editingFinished()), this,
|
|
shun-iwasawa |
fe3506 |
SLOT(onMakerInformationChanged()));
|
|
shun-iwasawa |
fe3506 |
|
|
shun_iwasawa |
2c0f50 |
// Use Color Filter and Transparency for Rendering
|
|
shun_iwasawa |
2c0f50 |
ret = ret && connect(m_colorFilterOnRenderCB, SIGNAL(stateChanged(int)), this,
|
|
shun_iwasawa |
2c0f50 |
SLOT(onColorFilterOnRenderChanged()));
|
|
shun-iwasawa |
f84c65 |
// Cell Marks
|
|
shun-iwasawa |
f84c65 |
ret = ret && connect(editCellMarksButton, SIGNAL(clicked()), this,
|
|
shun-iwasawa |
f84c65 |
SLOT(onEditCellMarksButtonClicked()));
|
|
Shinya Kitaoka |
120a6e |
assert(ret);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void SceneSettingsPopup::showEvent(QShowEvent *e) {
|
|
Shinya Kitaoka |
120a6e |
TSceneHandle *sceneHandle = TApp::instance()->getCurrentScene();
|
|
Shinya Kitaoka |
120a6e |
connect(sceneHandle, SIGNAL(sceneChanged()), SLOT(update()));
|
|
Shinya Kitaoka |
120a6e |
connect(sceneHandle, SIGNAL(sceneSwitched()), SLOT(update()));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
update();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void SceneSettingsPopup::hideEvent(QHideEvent *e) {
|
|
Shinya Kitaoka |
120a6e |
TSceneHandle *sceneHandle = TApp::instance()->getCurrentScene();
|
|
Shinya Kitaoka |
120a6e |
disconnect(sceneHandle, SIGNAL(sceneChanged()), this, SLOT(update()));
|
|
Shinya Kitaoka |
120a6e |
disconnect(sceneHandle, SIGNAL(sceneSwitched()), this, SLOT(update()));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TSceneProperties *SceneSettingsPopup::getProperties() const {
|
|
Shinya Kitaoka |
120a6e |
return TApp::instance()->getCurrentScene()->getScene()->getProperties();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void SceneSettingsPopup::update() {
|
|
Shinya Kitaoka |
120a6e |
TSceneProperties *sprop = getProperties();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QString str;
|
|
Shinya Kitaoka |
120a6e |
m_frameRateFld->setValue(sprop->getOutputProperties()->getFrameRate());
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TPixel32 col1, col2;
|
|
Shinya Kitaoka |
120a6e |
Preferences::instance()->getChessboardColors(col1, col2);
|
|
Shinya Kitaoka |
120a6e |
m_bgColorFld->setChessboardColors(col1, col2);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TPixel bgColor = sprop->getBgColor();
|
|
Shinya Kitaoka |
120a6e |
m_bgColorFld->setColor(bgColor);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
m_fieldGuideFld->setValue(sprop->getFieldGuideSize());
|
|
Shinya Kitaoka |
120a6e |
m_aspectRatioFld->setValue(sprop->getFieldGuideAspectRatio());
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
UnitParameters::setFieldGuideAspectRatio(sprop->getFieldGuideAspectRatio());
|
|
Shinya Kitaoka |
120a6e |
m_fullcolorSubsamplingFld->setValue(sprop->getFullcolorSubsampling());
|
|
Shinya Kitaoka |
120a6e |
if (m_tlvSubsamplingFld)
|
|
Shinya Kitaoka |
120a6e |
m_tlvSubsamplingFld->setValue(sprop->getTlvSubsampling());
|
|
shun-iwasawa |
fe3506 |
int markerDistance = 0, markerOffset = 0, secDistance;
|
|
shun-iwasawa |
fe3506 |
sprop->getMarkers(markerDistance, markerOffset, secDistance);
|
|
Shinya Kitaoka |
120a6e |
m_markerIntervalFld->setValue(markerDistance);
|
|
Shinya Kitaoka |
120a6e |
m_startFrameFld->setValue(markerOffset + 1);
|
|
shun-iwasawa |
2e274c |
m_colorFilterOnRenderCB->setChecked(
|
|
shun-iwasawa |
2e274c |
sprop->isColumnColorFilterOnRenderEnabled());
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
if (m_cellMarksPopup) m_cellMarksPopup->update();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void SceneSettingsPopup::onFrameRateEditingFinished() {
|
|
Shinya Kitaoka |
120a6e |
TSceneProperties *sprop = getProperties();
|
|
Shinya Kitaoka |
120a6e |
double frameRate = sprop->getOutputProperties()->getFrameRate();
|
|
Shinya Kitaoka |
120a6e |
double frameRateFldValue = m_frameRateFld->getValue();
|
|
Shinya Kitaoka |
120a6e |
if (frameRate == frameRateFldValue) return;
|
|
Shinya Kitaoka |
120a6e |
sprop->getOutputProperties()->setFrameRate(frameRateFldValue);
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentScene()->getScene()->updateSoundColumnFrameRate();
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentScene()->notifySceneChanged();
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentXsheet()->getXsheet()->updateFrameCount();
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void SceneSettingsPopup::onFieldGuideSizeEditingFinished() {
|
|
Shinya Kitaoka |
120a6e |
TSceneProperties *sprop = getProperties();
|
|
Shinya Kitaoka |
120a6e |
int fieldGuideSize = sprop->getFieldGuideSize();
|
|
Shinya Kitaoka |
120a6e |
int fieldGuideSizefld = m_fieldGuideFld->text().toInt();
|
|
Shinya Kitaoka |
120a6e |
if (fieldGuideSize == fieldGuideSizefld) return;
|
|
Shinya Kitaoka |
120a6e |
sprop->setFieldGuideSize(fieldGuideSizefld);
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentScene()->notifySceneChanged();
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void SceneSettingsPopup::onFieldGuideAspectRatioEditingFinished() {
|
|
Shinya Kitaoka |
120a6e |
TSceneProperties *sprop = getProperties();
|
|
Shinya Kitaoka |
120a6e |
double fieldGuideAspectRatio = sprop->getFieldGuideAspectRatio();
|
|
Shinya Kitaoka |
120a6e |
double aspectRatioFld = m_aspectRatioFld->text().toDouble();
|
|
Shinya Kitaoka |
120a6e |
if (fieldGuideAspectRatio == aspectRatioFld) return;
|
|
Shinya Kitaoka |
120a6e |
sprop->setFieldGuideAspectRatio(aspectRatioFld);
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentScene()->notifySceneChanged();
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
|
|
Shinya Kitaoka |
120a6e |
UnitParameters::setFieldGuideAspectRatio(m_aspectRatioFld->text().toDouble());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void SceneSettingsPopup::onFullColorSubsampEditingFinished() {
|
|
Shinya Kitaoka |
120a6e |
TSceneProperties *sprop = getProperties();
|
|
Shinya Kitaoka |
120a6e |
int fullcolorSubsampling = sprop->getFullcolorSubsampling();
|
|
Shinya Kitaoka |
120a6e |
int fullcolorSubsamplingFld = m_fullcolorSubsamplingFld->getValue();
|
|
Shinya Kitaoka |
120a6e |
if (fullcolorSubsampling == fullcolorSubsamplingFld) return;
|
|
Shinya Kitaoka |
120a6e |
sprop->setFullcolorSubsampling(fullcolorSubsamplingFld);
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentScene()->notifySceneChanged();
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void SceneSettingsPopup::onTlvSubsampEditingFinished() {
|
|
Shinya Kitaoka |
120a6e |
if (!m_tlvSubsamplingFld) return;
|
|
Shinya Kitaoka |
120a6e |
TSceneProperties *sprop = getProperties();
|
|
Shinya Kitaoka |
120a6e |
int tlvSubsampling = sprop->getTlvSubsampling();
|
|
Shinya Kitaoka |
120a6e |
int tlvSubsamplingFld = m_tlvSubsamplingFld->getValue();
|
|
Shinya Kitaoka |
120a6e |
if (tlvSubsamplingFld == tlvSubsampling) return;
|
|
Shinya Kitaoka |
120a6e |
sprop->setTlvSubsampling(tlvSubsamplingFld);
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentScene()->notifySceneChanged();
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
shun-iwasawa |
fe3506 |
void SceneSettingsPopup::onMakerInformationChanged() {
|
|
Shinya Kitaoka |
120a6e |
TSceneProperties *sprop = getProperties();
|
|
shun-iwasawa |
fe3506 |
int distance, offset, secDistance;
|
|
shun-iwasawa |
fe3506 |
sprop->getMarkers(distance, offset, secDistance);
|
|
Shinya Kitaoka |
120a6e |
int markerDistance = m_markerIntervalFld->text().toInt();
|
|
Shinya Kitaoka |
120a6e |
int markerOffset = m_startFrameFld->text().toInt() - 1;
|
|
Toshihiro Shimizu |
890ddd |
|
|
shun-iwasawa |
fe3506 |
if (distance == markerDistance && offset == markerOffset) return;
|
|
Shinya Kitaoka |
120a6e |
sprop->setMarkers(markerDistance, markerOffset);
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentScene()->notifySceneChanged();
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void SceneSettingsPopup::setBgColor(const TPixel32 &bgColor, bool isDragging) {
|
|
Shinya Kitaoka |
120a6e |
TSceneProperties *sprop = getProperties();
|
|
Shinya Kitaoka |
120a6e |
sprop->setBgColor(bgColor);
|
|
Shinya Kitaoka |
120a6e |
// TODO: forse sarebbe meglio usare una notifica piu' specifica
|
|
Shinya Kitaoka |
120a6e |
if (!isDragging) Previewer::clearAll();
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentScene()->notifySceneChanged();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
shun_iwasawa |
2c0f50 |
//-----------------------------------------------------------------------------
|
|
shun_iwasawa |
2c0f50 |
|
|
shun_iwasawa |
2c0f50 |
void SceneSettingsPopup::onColorFilterOnRenderChanged() {
|
|
shun_iwasawa |
2c0f50 |
TSceneProperties *sprop = getProperties();
|
|
shun_iwasawa |
2c0f50 |
sprop->enableColumnColorFilterOnRender(m_colorFilterOnRenderCB->isChecked());
|
|
shun_iwasawa |
2c0f50 |
TApp::instance()->getCurrentScene()->notifySceneChanged();
|
|
shun_iwasawa |
2c0f50 |
}
|
|
shun_iwasawa |
2c0f50 |
|
|
shun-iwasawa |
f84c65 |
//-----------------------------------------------------------------------------
|
|
shun-iwasawa |
f84c65 |
|
|
shun-iwasawa |
f84c65 |
void SceneSettingsPopup::onEditCellMarksButtonClicked() {
|
|
shun-iwasawa |
f84c65 |
if (!m_cellMarksPopup) m_cellMarksPopup = new CellMarksPopup(this);
|
|
shun-iwasawa |
f84c65 |
m_cellMarksPopup->show();
|
|
shun-iwasawa |
f84c65 |
m_cellMarksPopup->raise();
|
|
shun-iwasawa |
f84c65 |
}
|
|
shun-iwasawa |
f84c65 |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
OpenPopupCommandHandler<scenesettingspopup> openSceneSettingsPopup(</scenesettingspopup>
|
|
Shinya Kitaoka |
120a6e |
MI_SceneSettings);
|