|
Shinya Kitaoka |
810553 |
#pragma once
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifndef CAMERASETTINGSWIDGET_H
|
|
Toshihiro Shimizu |
890ddd |
#define CAMERASETTINGSWIDGET_H
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
9f5a1b |
#ifdef _WIN32
|
|
Toshihiro Shimizu |
890ddd |
#pragma warning(disable : 4251)
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "tcommon.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tgeometry.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#undef DVAPI
|
|
Toshihiro Shimizu |
890ddd |
#undef DVVAR
|
|
Toshihiro Shimizu |
890ddd |
#ifdef TOONZQT_EXPORTS
|
|
Toshihiro Shimizu |
890ddd |
#define DVAPI DV_EXPORT_API
|
|
Toshihiro Shimizu |
890ddd |
#define DVVAR DV_EXPORT_VAR
|
|
Toshihiro Shimizu |
890ddd |
#else
|
|
Toshihiro Shimizu |
890ddd |
#define DVAPI DV_IMPORT_API
|
|
Toshihiro Shimizu |
890ddd |
#define DVVAR DV_IMPORT_VAR
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include <qframe></qframe>
|
|
Toshihiro Shimizu |
890ddd |
#include <qpushbutton></qpushbutton>
|
|
Toshihiro Shimizu |
890ddd |
#include <qvalidator></qvalidator>
|
|
Toshihiro Shimizu |
890ddd |
#include <qlineedit></qlineedit>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class TCamera;
|
|
Toshihiro Shimizu |
890ddd |
class QRadioButton;
|
|
Toshihiro Shimizu |
890ddd |
class QComboBox;
|
|
Toshihiro Shimizu |
890ddd |
class ResListManager;
|
|
Toshihiro Shimizu |
890ddd |
class TFilePath;
|
|
Toshihiro Shimizu |
890ddd |
class TXshSimpleLevel;
|
|
Toshihiro Shimizu |
890ddd |
class TXshLevel;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
namespace DVGui {
|
|
Toshihiro Shimizu |
890ddd |
class LineEdit;
|
|
Toshihiro Shimizu |
890ddd |
class DoubleLineEdit;
|
|
Toshihiro Shimizu |
890ddd |
class IntLineEdit;
|
|
Toshihiro Shimizu |
890ddd |
class MeasuredDoubleLineEdit;
|
|
Toshihiro Shimizu |
890ddd |
class CheckBox;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//---------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class SimpleExpValidator final : public QValidator {
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
SimpleExpValidator(QObject *parent) : QValidator(parent){};
|
|
Shinya Kitaoka |
473e70 |
State validate(QString &input, int &pos) const override;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//---------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
// for A/R input field
|
|
Shinya Kitaoka |
d1f6c4 |
class SimpleExpField final : public QLineEdit {
|
|
Shinya Kitaoka |
120a6e |
SimpleExpValidator *m_validator;
|
|
Shinya Kitaoka |
120a6e |
QString m_previousValue;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
SimpleExpField(QWidget *parent);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void setValue(double);
|
|
Shinya Kitaoka |
120a6e |
void setValue(double, int, int);
|
|
Shinya Kitaoka |
120a6e |
double getValue();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
void focusInEvent(QFocusEvent *event) override;
|
|
Shinya Kitaoka |
473e70 |
void focusOutEvent(QFocusEvent *event) override;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//---------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class DVAPI CameraSettingsWidget final : public QFrame {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
bool m_forCleanup;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRadioButton *m_xPrev, *m_yPrev, *m_arPrev;
|
|
Shinya Kitaoka |
120a6e |
QRadioButton *m_inchPrev, *m_dotPrev;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
DVGui::MeasuredDoubleLineEdit *m_lxFld, *m_lyFld;
|
|
Shinya Kitaoka |
120a6e |
SimpleExpField *m_arFld;
|
|
Shinya Kitaoka |
120a6e |
double m_arValue;
|
|
Shinya Kitaoka |
120a6e |
DVGui::IntLineEdit *m_xResFld, *m_yResFld;
|
|
Shinya Kitaoka |
120a6e |
DVGui::DoubleLineEdit *m_xDpiFld, *m_yDpiFld;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QPushButton *m_fspChk; // Force Squared Pixel => dpix == dpiy
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QPushButton *m_useLevelSettingsBtn;
|
|
Shinya Kitaoka |
120a6e |
QComboBox *m_presetListOm;
|
|
Shinya Kitaoka |
120a6e |
QPushButton *m_addPresetBtn, *m_removePresetBtn;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
DVGui::MeasuredDoubleLineEdit *m_offsX, *m_offsY;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QString m_presetListFile;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// needed by "use level settings"
|
|
Shinya Kitaoka |
120a6e |
TXshSimpleLevel *m_currentLevel;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void savePresetList();
|
|
Shinya Kitaoka |
120a6e |
void loadPresetList();
|
|
Shinya Kitaoka |
120a6e |
bool parsePresetString(const QString &str, QString &name, int &xres,
|
|
Shinya Kitaoka |
120a6e |
int &yres, QString &ar);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
bool parsePresetString(const QString &str, QString &name, int &xres,
|
|
Shinya Kitaoka |
120a6e |
int &yres, double &fx, double &fy, QString &xoffset,
|
|
Shinya Kitaoka |
120a6e |
QString &yoffset, double &ar, bool forCleanup = false);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
CameraSettingsWidget(bool forCleanup = false);
|
|
Shinya Kitaoka |
120a6e |
~CameraSettingsWidget();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void setPresetListFile(const TFilePath &fp);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// Defines the level referred by the button "Use level settings".
|
|
Shinya Kitaoka |
120a6e |
// Calling setCurrentLevel(0) disables the button
|
|
Shinya Kitaoka |
120a6e |
void setCurrentLevel(TXshLevel *);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// camera => widget fields (i.e. initialize widget)
|
|
Shinya Kitaoka |
120a6e |
void setFields(const TCamera *camera);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// widget fields => camera
|
|
Shinya Kitaoka |
120a6e |
void getFields(TCamera *camera);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
QSize sizeHint() const override { return minimumSize(); }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// The aspect ratio can be expressed as a fraction (e.g. "4/3")
|
|
Shinya Kitaoka |
120a6e |
// The following methods convert code/decode the value
|
|
Shinya Kitaoka |
120a6e |
static double aspectRatioStringToValue(const QString &s);
|
|
Shinya Kitaoka |
120a6e |
/*---
|
|
Shinya Kitaoka |
120a6e |
* カメラの縦横ピクセル値を入力できるようにし、valueがX/Yの値に近かったら、"X/Y"と表示する
|
|
Shinya Kitaoka |
120a6e |
* ---*/
|
|
Shinya Kitaoka |
120a6e |
static QString aspectRatioValueToString(double ar, int width = 0,
|
|
Shinya Kitaoka |
120a6e |
int height = 0);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// the current camera dimension (in inches)
|
|
Shinya Kitaoka |
120a6e |
TDimensionD getSize() const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// the current camera resolution (in pixels)
|
|
Shinya Kitaoka |
120a6e |
TDimension getRes() const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
/*--- cleanupCameraSettingsWidgetからポインタを受け取る ---*/
|
|
Shinya Kitaoka |
120a6e |
void setOffsetWidgetPointers(DVGui::MeasuredDoubleLineEdit *offsX,
|
|
Shinya Kitaoka |
120a6e |
DVGui::MeasuredDoubleLineEdit *offsY) {
|
|
Shinya Kitaoka |
120a6e |
m_offsX = offsX;
|
|
Shinya Kitaoka |
120a6e |
m_offsY = offsY;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
bool eventFilter(QObject *obj, QEvent *e) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void hComputeLx();
|
|
Shinya Kitaoka |
120a6e |
void hComputeLy();
|
|
Shinya Kitaoka |
120a6e |
void vComputeLx();
|
|
Shinya Kitaoka |
120a6e |
void vComputeLy();
|
|
Shinya Kitaoka |
120a6e |
void computeAr();
|
|
Shinya Kitaoka |
120a6e |
void computeXRes();
|
|
Shinya Kitaoka |
120a6e |
void computeYRes();
|
|
Shinya Kitaoka |
120a6e |
void computeXDpi();
|
|
Shinya Kitaoka |
120a6e |
void computeYDpi();
|
|
Shinya Kitaoka |
120a6e |
void computeResOrDpi();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void updatePresetListOm();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void setArFld(double ar);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Shinya Kitaoka |
120a6e |
void onLxChanged();
|
|
Shinya Kitaoka |
120a6e |
void onLyChanged();
|
|
Shinya Kitaoka |
120a6e |
void onArChanged();
|
|
Shinya Kitaoka |
120a6e |
void onXResChanged();
|
|
Shinya Kitaoka |
120a6e |
void onYResChanged();
|
|
Shinya Kitaoka |
120a6e |
void onXDpiChanged();
|
|
Shinya Kitaoka |
120a6e |
void onYDpiChanged();
|
|
Shinya Kitaoka |
120a6e |
void onFspChanged(bool checked);
|
|
Shinya Kitaoka |
120a6e |
void onPrevToggled(bool checked);
|
|
Shinya Kitaoka |
120a6e |
void onPresetSelected(const QString &);
|
|
Shinya Kitaoka |
120a6e |
void addPreset();
|
|
Shinya Kitaoka |
120a6e |
void removePreset();
|
|
Shinya Kitaoka |
120a6e |
void useLevelSettings();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
signals:
|
|
Shinya Kitaoka |
120a6e |
void changed(); // some value has been changed
|
|
Shinya Kitaoka |
120a6e |
void
|
|
Shinya Kitaoka |
120a6e |
levelSettingsUsed(); // the "Use level settings" button has been pressed.
|
|
Shinya Kitaoka |
120a6e |
// Note: a changed() signal is always emitted after levelSettingsUsed()
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#endif
|