Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef FXSETTINGS_H
Toshihiro Shimizu 890ddd
#define FXSETTINGS_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 <qsplitter></qsplitter>
Toshihiro Shimizu 890ddd
#include <qtoolbar></qtoolbar>
Toshihiro Shimizu 890ddd
#include <qstackedwidget></qstackedwidget>
Toshihiro Shimizu 890ddd
#include <qscrollarea></qscrollarea>
Toshihiro Shimizu 890ddd
#include <qmap></qmap>
Toshihiro Shimizu 890ddd
#include <qgroupbox></qgroupbox>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "tcommon.h"
Toshihiro Shimizu 890ddd
#include "tfx.h"
Toshihiro Shimizu 890ddd
#include "tabbar.h"
Toshihiro Shimizu 890ddd
#include "gutil.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "toonzqt/framenavigator.h"
Toshihiro Shimizu 890ddd
#include "toonzqt/paramfield.h"
Toshihiro Shimizu 890ddd
#include "toonzqt/swatchviewer.h"
Toshihiro Shimizu 890ddd
#include "toonzqt/fxhistogramrender.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
// forward declaration
Toshihiro Shimizu 890ddd
class QToolBar;
Toshihiro Shimizu 890ddd
class QStackedWidget;
Toshihiro Shimizu 890ddd
class QVBoxLayout;
Toshihiro Shimizu 890ddd
class QGridLayout;
Toshihiro Shimizu 890ddd
class QPushButton;
Toshihiro Shimizu 890ddd
class FxKeyframeNavigator;
Toshihiro Shimizu 890ddd
class ParamViewer;
Toshihiro Shimizu 890ddd
class TFxHandle;
Toshihiro Shimizu 890ddd
class TFrameHandle;
Toshihiro Shimizu 890ddd
class TXsheetHandle;
Toshihiro Shimizu 890ddd
class TSceneHandle;
Toshihiro Shimizu 890ddd
class TXshLevelHandle;
Toshihiro Shimizu 890ddd
class TObjectHandle;
Toshihiro Shimizu 890ddd
class ToonzScene;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
/*! \brief ParamsPage. View a page with fx params.
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
		Inherits \b QWidget.
Toshihiro Shimizu 890ddd
*/
Toshihiro Shimizu 890ddd
class DVAPI ParamsPage : public QFrame
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QColor m_textColor; /*-- 文字の色 デフォルト黒 --*/
Toshihiro Shimizu 890ddd
	Q_PROPERTY(QColor TextColor READ getTextColor WRITE setTextColor)
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QGridLayout *m_mainLayout;
Toshihiro Shimizu 890ddd
	QHBoxLayout *m_horizontalLayout;
Toshihiro Shimizu 890ddd
	QGridLayout *m_groupLayout;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	friend class ParamViewer;
Toshihiro Shimizu 890ddd
	QVector<paramfield *=""> m_fields;</paramfield>
Toshihiro Shimizu 890ddd
	/*! To menage eventually histogram in page. */
Toshihiro Shimizu 890ddd
	FxHistogramRender *m_fxHistogramRender;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	ParamViewer *m_paramViewer;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	ParamsPage(QWidget *parent = 0, ParamViewer *paramViewer = 0);
Toshihiro Shimizu 890ddd
	~ParamsPage();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void setPage(TIStream &is, const TFxP &fx)
Toshihiro Shimizu 890ddd
	{
Toshihiro Shimizu 890ddd
		setPageField(is, fx);
Toshihiro Shimizu 890ddd
		setPageSpace();
Toshihiro Shimizu 890ddd
	}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void setFx(const TFxP ¤tFx, const TFxP &actualFx, int frame);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void update(int frame);
Toshihiro Shimizu 890ddd
	void setPointValue(int index, const TPointD &p);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	FxHistogramRender *getFxHistogramRender() const { return m_fxHistogramRender; }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	/*- 現在のページの最適なサイズを返す -*/
Toshihiro Shimizu 890ddd
	QSize getPreferedSize();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void setTextColor(const QColor &color) { m_textColor = color; }
Toshihiro Shimizu 890ddd
	QColor getTextColor() const { return m_textColor; }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Toshihiro Shimizu 890ddd
	void setPageField(TIStream &is, const TFxP &fx, bool isVertical = true);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	void setPageSpace();
Toshihiro Shimizu 890ddd
	void beginGroup(const char *name);
Toshihiro Shimizu 890ddd
	void endGroup();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void addWidget(QWidget *, bool isVertical = true);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#define TOONZ_DECLARE_NEW_COMPONENT(NAME) \
Toshihiro Shimizu 890ddd
	QWidget *NAME(TFx *fx, const char *name)
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TOONZ_DECLARE_NEW_COMPONENT(newParamField);
Toshihiro Shimizu 890ddd
	TOONZ_DECLARE_NEW_COMPONENT(newLineEdit);
Toshihiro Shimizu 890ddd
	TOONZ_DECLARE_NEW_COMPONENT(newSlider);
Toshihiro Shimizu 890ddd
	TOONZ_DECLARE_NEW_COMPONENT(newSpinBox);
Toshihiro Shimizu 890ddd
	TOONZ_DECLARE_NEW_COMPONENT(newCheckBox);
Toshihiro Shimizu 890ddd
	TOONZ_DECLARE_NEW_COMPONENT(newRadioButton);
Toshihiro Shimizu 890ddd
	TOONZ_DECLARE_NEW_COMPONENT(newComboBox);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#undef TOONZ_DECLARE_NEW_COMPONENT
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
/*! \brief ParamsPageSet. Contains a stack of page \b ParamsPage with relative tab.
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
		Inherits \b QWidget.
Toshihiro Shimizu 890ddd
*/
Toshihiro Shimizu 890ddd
class DVAPI ParamsPageSet : public QWidget
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TabBarContainter *m_tabBarContainer;
Shinya Kitaoka bb1d04
	DVGui::TabBar *m_tabBar;
Toshihiro Shimizu 890ddd
	QStackedWidget *m_pagesList;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	ParamViewer *m_parent;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	//!Allows to map page and index, useful to display a macro.
Toshihiro Shimizu 890ddd
	QMap<paramspage *,="" int=""> m_pageFxIndexTable;</paramspage>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QSize m_preferedSize;
Toshihiro Shimizu 890ddd
	/*-- ヘルプのファイルパス(もしあれば)---*/
Toshihiro Shimizu 890ddd
	std::string m_helpFilePath;
Toshihiro Shimizu 890ddd
	/*-- pdfファイルのページ指定など、引数が必要な場合の追加引数 --*/
Toshihiro Shimizu 890ddd
	std::string m_helpCommand;
Toshihiro Shimizu 890ddd
	/*-- ヘルプボタンで開くURL --*/
Toshihiro Shimizu 890ddd
	std::string m_helpUrl;
Toshihiro Shimizu 890ddd
	QPushButton *m_helpButton;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
#if QT_VERSION >= 0x050500
Toshihiro Shimizu 890ddd
	ParamsPageSet(QWidget *parent = 0, Qt::WindowFlags flags = 0);
Toshihiro Shimizu 890ddd
#else
Toshihiro Shimizu 890ddd
	ParamsPageSet(QWidget *parent = 0, Qt::WFlags flags = 0);
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
	~ParamsPageSet();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void setFx(const TFxP ¤tFx, const TFxP &actualFx, int frame);
Toshihiro Shimizu 890ddd
	void setScene(ToonzScene *scene);
Toshihiro Shimizu 890ddd
	void setIsCameraViewMode(bool isCameraViewMode);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void updatePage(int frame, bool onlyParam);
Toshihiro Shimizu 890ddd
	/*! Create a page reading xml file relating to \b fx. */
Toshihiro Shimizu 890ddd
	void createControls(const TFxP &fx, int index = -1);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	ParamsPage *getCurrentParamsPage() const;
Toshihiro Shimizu 890ddd
	ParamsPage *getParamsPage(int index) const;
Toshihiro Shimizu 890ddd
	int getParamsPageCount() const { return (int)m_pagesList->count(); };
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	ParamsPage *createParamsPage();
Toshihiro Shimizu 890ddd
	void addParamsPage(ParamsPage *page, const char *name);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QSize getPreferedSize() { return m_preferedSize; }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Toshihiro Shimizu 890ddd
	void createPage(TIStream &is, const TFxP &fx, int index);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Toshihiro Shimizu 890ddd
	void setPage(int);
Toshihiro Shimizu 890ddd
	void openHelpFile();
Toshihiro Shimizu 890ddd
	void openHelpUrl();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
/*! \brief ParamViewer. Contains a stack of \b ParamsPageSet.
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
		Inherits \b QWidget.
Toshihiro Shimizu 890ddd
*/
Toshihiro Shimizu 890ddd
class DVAPI ParamViewer : public QFrame
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TFxP m_fx;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QStackedWidget *m_tablePageSet;
Shinya Kitaoka 3bfa54
	QMap<std::string, int=""> m_tableFxIndex;</std::string,>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
#if QT_VERSION >= 0x050500
Toshihiro Shimizu 890ddd
	ParamViewer(QWidget *parent = 0, Qt::WindowFlags flags = 0);
Toshihiro Shimizu 890ddd
#else
Toshihiro Shimizu 890ddd
	ParamViewer(QWidget *parent = 0, Qt::WFlags flags = 0);
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
	~ParamViewer();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void setFx(const TFxP ¤tFx, const TFxP &actualFx, int frame, ToonzScene *scene);
Toshihiro Shimizu 890ddd
	void setScene(ToonzScene *scene);
Toshihiro Shimizu 890ddd
	void setIsCameraViewMode(bool isCameraViewMode);
Toshihiro Shimizu 890ddd
	/*! If onlyParam is true don't invalidate raster of associated histogram. */
Toshihiro Shimizu 890ddd
	void update(int frame, bool onlyParam);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void setPointValue(int index, const TPointD &p);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Toshihiro Shimizu 890ddd
	ParamsPageSet *getCurrentPageSet() const;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
signals:
Toshihiro Shimizu 890ddd
	void currentFxParamChanged();
Toshihiro Shimizu 890ddd
	void actualFxParamChanged();
Toshihiro Shimizu 890ddd
	void paramKeyChanged();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void preferedSizeChanged(QSize);
Toshihiro Shimizu 890ddd
	void showSwatchButtonToggled(bool);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
/*! \brief FxSettings.
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
		Inherits \b QWidget.
Toshihiro Shimizu 890ddd
*/
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class QActionGroup;
Toshihiro Shimizu 890ddd
class DVAPI FxSettings : public QSplitter
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QToolBar *m_toolBar;
Toshihiro Shimizu 890ddd
	QAction *m_checkboardBg;
Toshihiro Shimizu 890ddd
	ParamViewer *m_paramViewer;
Toshihiro Shimizu 890ddd
	SwatchViewer *m_viewer;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TFxHandle *m_fxHandle;
Toshihiro Shimizu 890ddd
	TXsheetHandle *m_xsheetHandle;
Toshihiro Shimizu 890ddd
	TSceneHandle *m_sceneHandle;
Toshihiro Shimizu 890ddd
	TXshLevelHandle *m_levelHandle;
Toshihiro Shimizu 890ddd
	TFrameHandle *m_frameHandle;
Toshihiro Shimizu 890ddd
	TObjectHandle *m_objectHandle;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	FxKeyframeNavigator *m_keyframeNavigator;
Toshihiro Shimizu 890ddd
	FrameNavigator *m_frameNavigator;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TPixel32 m_checkCol1, m_checkCol2;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	bool m_isCameraModeView;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	int m_container_height;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	FxSettings(QWidget *parent, const TPixel32 &checkCol1, const TPixel32 &checkCol2);
Toshihiro Shimizu 890ddd
	~FxSettings();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	//Devono essere settati!
Toshihiro Shimizu 890ddd
	void setFxHandle(TFxHandle *fxHandle);
Toshihiro Shimizu 890ddd
	TFxHandle *getFxHandle() const { return m_fxHandle; }
Toshihiro Shimizu 890ddd
	void setFrameHandle(TFrameHandle *frameHandle);
Toshihiro Shimizu 890ddd
	TFrameHandle *getFrameHandle() const { return m_frameHandle; }
Toshihiro Shimizu 890ddd
	void setXsheetHandle(TXsheetHandle *XsheetHandle);
Toshihiro Shimizu 890ddd
	TXsheetHandle *getXsheetHandle() const { return m_xsheetHandle; }
Toshihiro Shimizu 890ddd
	void setSceneHandle(TSceneHandle *sceneHandle);
Toshihiro Shimizu 890ddd
	TSceneHandle *getSceneHandle() const { return m_sceneHandle; }
Toshihiro Shimizu 890ddd
	void setLevelHandle(TXshLevelHandle *levelHandle);
Toshihiro Shimizu 890ddd
	TXshLevelHandle *getLevelHandle() const { return m_levelHandle; }
Toshihiro Shimizu 890ddd
	void setObjectHandle(TObjectHandle *objectHandle);
Toshihiro Shimizu 890ddd
	TObjectHandle *getObjectHandle() const { return m_objectHandle; }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public slots:
Toshihiro Shimizu 890ddd
	void setCurrentFrame();
Toshihiro Shimizu 890ddd
	void setCurrentFx();
Toshihiro Shimizu 890ddd
	void setCurrentScene();
Toshihiro Shimizu 890ddd
	void notifySceneChanged();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Toshihiro Shimizu 890ddd
	/*! \b currentFx is fx with parent, \b actualFx is simple fx. */
Toshihiro Shimizu 890ddd
	void setFx(const TFxP ¤tFx, const TFxP &actualFx);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void createToolBar();
Toshihiro Shimizu 890ddd
	void showEvent(QShowEvent *);
Toshihiro Shimizu 890ddd
	void hideEvent(QHideEvent *);
Toshihiro Shimizu 890ddd
	void setCheckboardColors(const TPixel32 &col1, const TPixel32 &col2);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void changeTitleBar(TFx *fx);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Toshihiro Shimizu 890ddd
	void updateViewer();
Toshihiro Shimizu 890ddd
	void updateParamViewer();
Toshihiro Shimizu 890ddd
	void onPointChanged(int index, const TPointD &p);
Toshihiro Shimizu 890ddd
	void onViewModeChanged(QAction *);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void setWhiteBg();
Toshihiro Shimizu 890ddd
	void setBlackBg();
Toshihiro Shimizu 890ddd
	void setCheckboardBg();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void onPreferedSizeChanged(QSize);
Toshihiro Shimizu 890ddd
	void onShowSwatchButtonToggled(bool);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif // FXSETTINGS_H