|
shun-iwasawa |
77b7d0 |
#pragma once
|
|
shun-iwasawa |
77b7d0 |
//=============================================================================
|
|
shun-iwasawa |
77b7d0 |
// SeparateColorsPopup
|
|
shun-iwasawa |
77b7d0 |
//-----------------------------------------------------------------------------
|
|
shun-iwasawa |
77b7d0 |
#ifndef SEPARATECOLORSPOPUP_H
|
|
shun-iwasawa |
77b7d0 |
#define SEPARATECOLORSPOPUP_H
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
#include "tfilepath.h"
|
|
shun-iwasawa |
77b7d0 |
#include "tpixel.h"
|
|
shun-iwasawa |
77b7d0 |
#include "traster.h"
|
|
shun-iwasawa |
77b7d0 |
#include "toonzqt/dvdialog.h"
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
#include <qvector></qvector>
|
|
shun-iwasawa |
77b7d0 |
#include <qpair></qpair>
|
|
shun-iwasawa |
77b7d0 |
#include <qrunnable></qrunnable>
|
|
shun-iwasawa |
77b7d0 |
#include <qvector3d></qvector3d>
|
|
shun-iwasawa |
77b7d0 |
#include <qvector4d></qvector4d>
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
class QLabel;
|
|
shun-iwasawa |
77b7d0 |
class QCheckBox;
|
|
shun-iwasawa |
77b7d0 |
class QGroupBox;
|
|
shun-iwasawa |
77b7d0 |
class QComboBox;
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
class SeparateSwatch;
|
|
shun-iwasawa |
77b7d0 |
namespace DVGui {
|
|
shun-iwasawa |
77b7d0 |
class IntLineEdit;
|
|
shun-iwasawa |
77b7d0 |
class FileField;
|
|
shun-iwasawa |
77b7d0 |
class LineEdit;
|
|
shun-iwasawa |
77b7d0 |
class ColorField;
|
|
shun-iwasawa |
77b7d0 |
class ProgressDialog;
|
|
shun-iwasawa |
77b7d0 |
class CheckBox;
|
|
shun-iwasawa |
77b7d0 |
class DoubleField;
|
|
shun-iwasawa |
77b7d0 |
class IntField;
|
|
shun-iwasawa |
670fac |
} // namespace DVGui
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
namespace ImageUtils {
|
|
shun-iwasawa |
77b7d0 |
class FrameTaskNotifier;
|
|
shun-iwasawa |
77b7d0 |
}
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
using namespace DVGui;
|
|
shun-iwasawa |
77b7d0 |
using namespace ImageUtils;
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
//----------------------------------
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
class Separate4ColorsTask : public QRunnable {
|
|
shun-iwasawa |
77b7d0 |
int m_from, m_to;
|
|
shun-iwasawa |
77b7d0 |
QVector3D* m_src;
|
|
shun-iwasawa |
77b7d0 |
QVector4D* m_out;
|
|
shun-iwasawa |
77b7d0 |
const QVector3D m_paper_xyz, m_main_xyz, m_sub1_xyz, m_sub2_xyz, m_sub3_xyz;
|
|
shun-iwasawa |
77b7d0 |
const QVector4D m_pane_m12, m_pane_m13, m_pane_m23, m_pane_123;
|
|
shun-iwasawa |
77b7d0 |
const QVector3D m_R;
|
|
shun-iwasawa |
77b7d0 |
const float m_mainAdjust;
|
|
shun-iwasawa |
77b7d0 |
const float m_borderRatio;
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
void run();
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
public:
|
|
shun-iwasawa |
77b7d0 |
Separate4ColorsTask(int from, int to, QVector3D* src, QVector4D* out,
|
|
shun-iwasawa |
77b7d0 |
const QVector3D paper_xyz, const QVector3D main_xyz,
|
|
shun-iwasawa |
77b7d0 |
const QVector3D sub1_xyz, const QVector3D sub2_xyz,
|
|
shun-iwasawa |
77b7d0 |
const QVector3D sub3_xyz, const QVector4D pane_m12,
|
|
shun-iwasawa |
77b7d0 |
const QVector4D pane_m13, const QVector4D pane_m23,
|
|
shun-iwasawa |
77b7d0 |
const QVector4D pane_123, const QVector3D R,
|
|
shun-iwasawa |
77b7d0 |
const float mainAdjust, const float borderRatio)
|
|
shun-iwasawa |
77b7d0 |
: m_from(from)
|
|
shun-iwasawa |
77b7d0 |
, m_to(to)
|
|
shun-iwasawa |
77b7d0 |
, m_src(src)
|
|
shun-iwasawa |
77b7d0 |
, m_out(out)
|
|
shun-iwasawa |
77b7d0 |
, m_paper_xyz(paper_xyz)
|
|
shun-iwasawa |
77b7d0 |
, m_main_xyz(main_xyz)
|
|
shun-iwasawa |
77b7d0 |
, m_sub1_xyz(sub1_xyz)
|
|
shun-iwasawa |
77b7d0 |
, m_sub2_xyz(sub2_xyz)
|
|
shun-iwasawa |
77b7d0 |
, m_sub3_xyz(sub3_xyz)
|
|
shun-iwasawa |
77b7d0 |
, m_pane_m12(pane_m12)
|
|
shun-iwasawa |
77b7d0 |
, m_pane_m13(pane_m13)
|
|
shun-iwasawa |
77b7d0 |
, m_pane_m23(pane_m23)
|
|
shun-iwasawa |
77b7d0 |
, m_pane_123(pane_123)
|
|
shun-iwasawa |
77b7d0 |
, m_R(R)
|
|
shun-iwasawa |
77b7d0 |
, m_mainAdjust(mainAdjust)
|
|
shun-iwasawa |
77b7d0 |
, m_borderRatio(borderRatio) {}
|
|
shun-iwasawa |
77b7d0 |
};
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
//----------------------------------
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
class Separate3ColorsTask : public QRunnable {
|
|
shun-iwasawa |
77b7d0 |
int m_from, m_to;
|
|
shun-iwasawa |
77b7d0 |
QVector3D *m_src, *m_out;
|
|
shun-iwasawa |
77b7d0 |
const QVector3D m_paper_xyz, m_main_xyz, m_sub1_xyz, m_sub2_xyz;
|
|
shun-iwasawa |
77b7d0 |
const QVector4D m_pane;
|
|
shun-iwasawa |
77b7d0 |
const float m_mainAdjust;
|
|
shun-iwasawa |
77b7d0 |
const float m_borderRatio;
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
void run();
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
public:
|
|
shun-iwasawa |
77b7d0 |
Separate3ColorsTask(int from, int to, QVector3D* src, QVector3D* out,
|
|
shun-iwasawa |
77b7d0 |
const QVector3D paper_xyz, const QVector3D main_xyz,
|
|
shun-iwasawa |
77b7d0 |
const QVector3D sub1_xyz, const QVector3D sub2_xyz,
|
|
shun-iwasawa |
77b7d0 |
const QVector4D pane, const float mainAdjust,
|
|
shun-iwasawa |
77b7d0 |
const float borderRatio)
|
|
shun-iwasawa |
77b7d0 |
: m_from(from)
|
|
shun-iwasawa |
77b7d0 |
, m_to(to)
|
|
shun-iwasawa |
77b7d0 |
, m_src(src)
|
|
shun-iwasawa |
77b7d0 |
, m_out(out)
|
|
shun-iwasawa |
77b7d0 |
, m_paper_xyz(paper_xyz)
|
|
shun-iwasawa |
77b7d0 |
, m_main_xyz(main_xyz)
|
|
shun-iwasawa |
77b7d0 |
, m_sub1_xyz(sub1_xyz)
|
|
shun-iwasawa |
77b7d0 |
, m_sub2_xyz(sub2_xyz)
|
|
shun-iwasawa |
77b7d0 |
, m_pane(pane)
|
|
shun-iwasawa |
77b7d0 |
, m_mainAdjust(mainAdjust)
|
|
shun-iwasawa |
77b7d0 |
, m_borderRatio(borderRatio) {}
|
|
shun-iwasawa |
77b7d0 |
};
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
//----------------------------------
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
class SeparateColorsPopup : public DVGui::Dialog {
|
|
shun-iwasawa |
77b7d0 |
Q_OBJECT
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
FrameTaskNotifier* m_notifier;
|
|
shun-iwasawa |
77b7d0 |
QPushButton *m_previewBtn, *m_okBtn, *m_cancelBtn, *m_autoBtn;
|
|
shun-iwasawa |
77b7d0 |
IntLineEdit *m_fromFld, *m_toFld;
|
|
shun-iwasawa |
77b7d0 |
FileField* m_saveInFileFld;
|
|
shun-iwasawa |
77b7d0 |
QComboBox* m_fileFormatCombo;
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
DoubleField *m_subColorAdjustFld, *m_borderSmoothnessFld;
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
QGroupBox* m_matteGroupBox;
|
|
shun-iwasawa |
77b7d0 |
DoubleField* m_matteThreshold;
|
|
shun-iwasawa |
77b7d0 |
IntField* m_matteRadius;
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
ColorField *m_paperColorField, *m_mainColorField, *m_subColor1Field,
|
|
shun-iwasawa |
77b7d0 |
*m_subColor2Field, *m_subColor3Field;
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
QCheckBox *m_outMainCB, *m_outSub1CB, *m_outSub2CB, *m_outSub3CB;
|
|
shun-iwasawa |
77b7d0 |
LineEdit *m_mainSuffixEdit, *m_sub1SuffixEdit, *m_sub2SuffixEdit,
|
|
shun-iwasawa |
77b7d0 |
*m_sub3SuffixEdit;
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
IntField* m_previewFrameField;
|
|
shun-iwasawa |
77b7d0 |
QLabel* m_previewFrameLabel;
|
|
shun-iwasawa |
77b7d0 |
QVector<qpair<tfilepath, tframeid="">> m_srcFrames;</qpair<tfilepath,>
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
QPushButton *m_pickBtn, *m_showMatteBtn, *m_showAlphaBtn;
|
|
shun-iwasawa |
77b7d0 |
SeparateSwatch* m_separateSwatch;
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
ProgressDialog* m_progressDialog;
|
|
shun-iwasawa |
77b7d0 |
std::vector<tfilepath> m_srcFilePaths;</tfilepath>
|
|
shun-iwasawa |
670fac |
|
|
shun-iwasawa |
670fac |
QString m_lastAcceptedSaveInPath;
|
|
shun-iwasawa |
670fac |
|
|
shun-iwasawa |
77b7d0 |
bool m_isConverting;
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
void doSeparate(const TFilePath& source, int from, int to, int framerate,
|
|
shun-iwasawa |
77b7d0 |
FrameTaskNotifier* frameNotifier, bool do4Colors);
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
void doCompute(TRaster32P raster, TDimensionI& dim, TRaster32P ras_m,
|
|
shun-iwasawa |
77b7d0 |
TRaster32P ras_c1, TRaster32P ras_c2, bool isPreview = false);
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
void doCompute(TRaster32P raster, TDimensionI& dim, TRaster32P ras_m,
|
|
shun-iwasawa |
77b7d0 |
TRaster32P ras_c1, TRaster32P ras_c2, TRaster32P ras_c3,
|
|
shun-iwasawa |
77b7d0 |
bool isPreview = false);
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
void doPreview(TRaster32P& orgRas, TRaster32P& mainRas, TRaster32P& sub1Ras,
|
|
shun-iwasawa |
77b7d0 |
TRaster32P& sub2Ras, TRaster32P& sub3Ras);
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
public:
|
|
shun-iwasawa |
77b7d0 |
SeparateColorsPopup();
|
|
shun-iwasawa |
77b7d0 |
~SeparateColorsPopup();
|
|
shun-iwasawa |
77b7d0 |
void setFiles(const std::vector<tfilepath>& fps);</tfilepath>
|
|
shun-iwasawa |
77b7d0 |
bool isConverting();
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
protected:
|
|
shun-iwasawa |
77b7d0 |
void showEvent(QShowEvent* e);
|
|
shun-iwasawa |
77b7d0 |
// store the current value to user env file
|
|
shun-iwasawa |
77b7d0 |
void hideEvent(QHideEvent* e);
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
public slots:
|
|
luz paz |
6454c4 |
// starts the conversion
|
|
shun-iwasawa |
77b7d0 |
void separate();
|
|
shun-iwasawa |
77b7d0 |
void onSeparateFinished();
|
|
shun-iwasawa |
77b7d0 |
void onPreviewBtnPressed();
|
|
shun-iwasawa |
77b7d0 |
void onPreviewFrameFieldValueChanged(bool isDragging);
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
void onChange(bool isDragging);
|
|
shun-iwasawa |
77b7d0 |
void onToggle() { onChange(false); }
|
|
shun-iwasawa |
77b7d0 |
void onColorChange(const TPixel32&, bool isDragging) { onChange(isDragging); }
|
|
shun-iwasawa |
670fac |
|
|
shun-iwasawa |
670fac |
void onSaveSettings();
|
|
shun-iwasawa |
670fac |
void onLoadSettings();
|
|
shun-iwasawa |
670fac |
|
|
shun-iwasawa |
670fac |
void doSaveSettings(const TFilePath&);
|
|
shun-iwasawa |
670fac |
void doLoadSettings(const TFilePath&, bool loadAll);
|
|
shun-iwasawa |
670fac |
|
|
shun-iwasawa |
670fac |
void onSaveInPathChanged();
|
|
shun-iwasawa |
77b7d0 |
};
|
|
shun-iwasawa |
77b7d0 |
|
|
shun-iwasawa |
77b7d0 |
#endif
|