2014-07-08 03:11:14 -04:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "ui_Fractorium.h"
|
2014-12-11 00:50:15 -05:00
|
|
|
#include "FractoriumCommon.h"
|
2014-07-08 03:11:14 -04:00
|
|
|
#include "GLWidget.h"
|
|
|
|
#include "EmberTreeWidgetItem.h"
|
|
|
|
#include "VariationTreeWidgetItem.h"
|
|
|
|
#include "StealthComboBox.h"
|
|
|
|
#include "TableWidget.h"
|
|
|
|
#include "FinalRenderDialog.h"
|
|
|
|
#include "OptionsDialog.h"
|
2015-07-23 21:16:36 -04:00
|
|
|
#include "VariationsDialog.h"
|
2014-07-08 03:11:14 -04:00
|
|
|
#include "AboutDialog.h"
|
2015-03-21 18:27:37 -04:00
|
|
|
#include "CurvesGraphicsView.h"
|
2015-05-30 00:08:44 -04:00
|
|
|
#include "DoubleSpinBoxTableItemDelegate.h"
|
2014-07-08 03:11:14 -04:00
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Fractorium class.
|
|
|
|
/// </summary>
|
|
|
|
|
2014-12-11 00:50:15 -05:00
|
|
|
class GLWidget;
|
|
|
|
class FractoriumOptionsDialog;
|
2015-07-23 21:16:36 -04:00
|
|
|
class FractoriumVariationsDialog;
|
2014-12-11 00:50:15 -05:00
|
|
|
class FractoriumFinalRenderDialog;
|
|
|
|
class FractoriumAboutDialog;
|
|
|
|
class GLEmberControllerBase;
|
|
|
|
class FractoriumEmberControllerBase;
|
|
|
|
class FinalRenderEmberControllerBase;
|
|
|
|
template <typename T> class GLEmberController;
|
|
|
|
template <typename T> class FractoriumEmberController;
|
|
|
|
template <typename T> class FinalRenderEmberController;
|
|
|
|
|
2014-07-08 03:11:14 -04:00
|
|
|
/// <summary>
|
|
|
|
/// Fractorium is the main window for the interactive renderer. The main viewable area
|
|
|
|
/// is a derivation of QGLWidget named GLWidget. The design uses the concept of a controller
|
|
|
|
/// to allow for both polymorphism and templating to coexist. Most processing functionality
|
|
|
|
/// is contained within the controller, and the GUI events just call the appropriate controller
|
|
|
|
/// member functions.
|
|
|
|
/// The rendering takes place on a timer with
|
|
|
|
/// a period of 0 which means it will trigger an event whenever the event input queue is idle.
|
|
|
|
/// As it's rendering, if the user changes anything on the GUI, a re-render will trigger. Since
|
|
|
|
/// certain parameters don't require a full render, the minimum necessary processing will be ran.
|
|
|
|
/// When the user changes something on the GUI, the required processing action is added to a vector.
|
|
|
|
/// Upon the next execution of the idle timer function, the most significant action will be extracted
|
|
|
|
/// and applied to the renderer. The vector is then cleared.
|
|
|
|
/// On the left side of the window is a dock widget which contains all controls needed for
|
|
|
|
/// manipulating embers.
|
|
|
|
/// Qt takes very long to create file dialog windows, so they are kept as members and initialized
|
|
|
|
/// upon first use with lazy instantiation and then kept around for the remainder of the program.
|
|
|
|
/// Additional dialogs are for the about box, options, and final rendering out to a file.
|
|
|
|
/// While all class member variables and functions are declared in this .h file, the implementation
|
|
|
|
/// for them is far too lengthy to put in a single .cpp file. So general functionality is placed in
|
|
|
|
/// Fractorium.cpp and the other functional areas are each broken out into their own files.
|
|
|
|
/// The order of the functions in each .cpp file should roughly match the order they appear in the .h file.
|
|
|
|
/// Future todo list:
|
|
|
|
/// Add all of the plugins/variations that work with Apophysis and are open source.
|
|
|
|
/// Allow specifying variations to include/exclude from random generation.
|
|
|
|
/// Allow the option to specify a different palette file rather than the default flam3-palettes.xml.
|
|
|
|
/// Implement more rendering types.
|
|
|
|
/// Add support for animation previewing.
|
|
|
|
/// Add support for full animation editing and rendering.
|
|
|
|
/// Possibly add some features from JWildFire.
|
|
|
|
/// </summary>
|
|
|
|
class Fractorium : public QMainWindow
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
friend GLWidget;
|
|
|
|
friend FractoriumOptionsDialog;
|
|
|
|
friend FractoriumFinalRenderDialog;
|
|
|
|
friend FractoriumAboutDialog;
|
|
|
|
friend GLEmberControllerBase;
|
|
|
|
friend GLEmberController<float>;
|
|
|
|
friend FractoriumEmberControllerBase;
|
|
|
|
friend FractoriumEmberController<float>;
|
|
|
|
friend FinalRenderEmberControllerBase;
|
|
|
|
friend FinalRenderEmberController<float>;
|
2014-12-11 00:50:15 -05:00
|
|
|
|
|
|
|
#ifdef DO_DOUBLE
|
2014-12-12 03:54:03 -05:00
|
|
|
friend GLEmberController<double>;
|
|
|
|
friend FractoriumEmberController<double>;
|
|
|
|
friend FinalRenderEmberController<double>;
|
2014-12-11 00:50:15 -05:00
|
|
|
#endif
|
2014-12-12 03:54:03 -05:00
|
|
|
|
2014-07-08 03:11:14 -04:00
|
|
|
public:
|
2014-12-11 00:50:15 -05:00
|
|
|
Fractorium(QWidget* p = 0);
|
2014-07-08 03:11:14 -04:00
|
|
|
~Fractorium();
|
|
|
|
|
|
|
|
//Geometry.
|
|
|
|
void SetCenter(float x, float y);
|
|
|
|
void SetRotation(double rot, bool stealth);
|
|
|
|
void SetScale(double scale);
|
2014-12-11 00:50:15 -05:00
|
|
|
void SetCoordinateStatus(int rasX, int rasY, float worldX, float worldY);
|
2015-01-02 18:11:36 -05:00
|
|
|
void CenterScrollbars();
|
2014-07-08 03:11:14 -04:00
|
|
|
|
|
|
|
//Xforms.
|
2014-12-06 00:05:09 -05:00
|
|
|
void CurrentXform(uint i);
|
2014-07-08 03:11:14 -04:00
|
|
|
|
|
|
|
//Xforms Affine.
|
|
|
|
bool DrawAllPre();
|
|
|
|
bool DrawAllPost();
|
|
|
|
bool LocalPivot();
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
//Dock.
|
|
|
|
void OnDockTopLevelChanged(bool topLevel);
|
|
|
|
void dockLocationChanged(Qt::DockWidgetArea area);
|
|
|
|
|
|
|
|
//Menu.
|
|
|
|
void OnActionNewFlock(bool checked);//File.
|
|
|
|
void OnActionNewEmptyFlameInCurrentFile(bool checked);
|
|
|
|
void OnActionNewRandomFlameInCurrentFile(bool checked);
|
|
|
|
void OnActionCopyFlameInCurrentFile(bool checked);
|
|
|
|
void OnActionOpen(bool checked);
|
|
|
|
void OnActionSaveCurrentAsXml(bool checked);
|
|
|
|
void OnActionSaveEntireFileAsXml(bool checked);
|
|
|
|
void OnActionSaveCurrentScreen(bool checked);
|
|
|
|
void OnActionSaveCurrentToOpenedFile(bool checked);
|
|
|
|
void OnActionExit(bool checked);
|
|
|
|
|
|
|
|
void OnActionUndo(bool checked);//Edit.
|
|
|
|
void OnActionRedo(bool checked);
|
|
|
|
void OnActionCopyXml(bool checked);
|
|
|
|
void OnActionCopyAllXml(bool checked);
|
|
|
|
void OnActionPasteXmlAppend(bool checked);
|
|
|
|
void OnActionPasteXmlOver(bool checked);
|
2015-05-19 22:31:33 -04:00
|
|
|
void OnActionCopySelectedXforms(bool checked);
|
|
|
|
void OnActionPasteSelectedXforms(bool checked);
|
2014-07-08 03:11:14 -04:00
|
|
|
|
2015-06-20 14:35:08 -04:00
|
|
|
void OnActionResetWorkspace(bool checked);//View
|
|
|
|
|
2014-07-08 03:11:14 -04:00
|
|
|
void OnActionAddReflectiveSymmetry(bool checked);//Tools.
|
|
|
|
void OnActionAddRotationalSymmetry(bool checked);
|
|
|
|
void OnActionAddBothSymmetry(bool checked);
|
Numerous fixes
0.4.0.5 Beta 07/18/2014
--User Changes
Allow for vibrancy values > 1.
Add flatten and unflatten menu items.
Automatically flatten like Apophysis does.
Add plugin and new_linear tags to Xml to be compatible with Apophysis.
--Bug Fixes
Fix blur, blur3d, bubble, cropn, cross, curl, curl3d, epispiral, ho,
julia3d, julia3dz, loonie, mirror_x, mirror_y, mirror_z, rotate_x,
sinusoidal, spherical, spherical3d, stripes.
Unique filename on final render was completely broken.
Two severe OpenCL bugs. Random seeds were biased and fusing was being
reset too often leading to results that differ from the CPU.
Subtle, but sometimes severe bug in the setup of the xaos weights.
Use properly defined epsilon by getting the value from
std::numeric_limits, rather than hard coding 1e-6 or 1e-10.
Omit incorrect usage of epsilon everywhere. It should not be
automatically added to denominators. Rather, it should only be used if
the denominator is zero.
Force final render progress bars to 100 on completion. Sometimes they
didn't seem to make it there.
Make variation name and params comparisons be case insensitive.
--Code Changes
Make ForEach and FindIf wrappers around std::for_each and std::find_if.
2014-07-19 02:33:18 -04:00
|
|
|
void OnActionFlatten(bool checked);
|
|
|
|
void OnActionUnflatten(bool checked);
|
2014-07-08 03:11:14 -04:00
|
|
|
void OnActionClearFlame(bool checked);
|
|
|
|
void OnActionRenderPreviews(bool checked);
|
|
|
|
void OnActionStopRenderingPreviews(bool checked);
|
|
|
|
void OnActionFinalRender(bool checked);
|
|
|
|
void OnFinalRenderClose(int result);
|
|
|
|
void OnActionOptions(bool checked);
|
2015-07-23 21:16:36 -04:00
|
|
|
void OnActionVariationsDialog(bool checked);
|
2014-07-26 15:03:51 -04:00
|
|
|
|
2014-07-08 03:11:14 -04:00
|
|
|
void OnActionAbout(bool checked);//Help.
|
|
|
|
|
|
|
|
//Toolbar.
|
|
|
|
|
2015-03-21 18:27:37 -04:00
|
|
|
//Library.
|
|
|
|
void OnEmberTreeItemChanged(QTreeWidgetItem* item, int col);
|
|
|
|
void OnEmberTreeItemDoubleClicked(QTreeWidgetItem* item, int col);
|
|
|
|
void OnDelete(const pair<size_t, QTreeWidgetItem*>& p);
|
|
|
|
|
2014-07-08 03:11:14 -04:00
|
|
|
//Params.
|
|
|
|
void OnBrightnessChanged(double d);//Color.
|
|
|
|
void OnGammaChanged(double d);
|
|
|
|
void OnGammaThresholdChanged(double d);
|
|
|
|
void OnVibrancyChanged(double d);
|
|
|
|
void OnHighlightPowerChanged(double d);
|
|
|
|
void OnBackgroundColorButtonClicked(bool checked);
|
|
|
|
void OnColorSelected(const QColor& color);
|
|
|
|
void OnPaletteModeComboCurrentIndexChanged(int index);
|
|
|
|
void OnWidthChanged(int d);//Geometry.
|
|
|
|
void OnHeightChanged(int d);
|
|
|
|
void OnCenterXChanged(double d);
|
|
|
|
void OnCenterYChanged(double d);
|
|
|
|
void OnScaleChanged(double d);
|
|
|
|
void OnZoomChanged(double d);
|
|
|
|
void OnRotateChanged(double d);
|
|
|
|
void OnZPosChanged(double d);
|
|
|
|
void OnPerspectiveChanged(double d);
|
|
|
|
void OnPitchChanged(double d);
|
|
|
|
void OnYawChanged(double d);
|
|
|
|
void OnDepthBlurChanged(double d);
|
|
|
|
void OnSpatialFilterWidthChanged(double d);//Filter.
|
|
|
|
void OnSpatialFilterTypeComboCurrentIndexChanged(const QString& text);
|
|
|
|
void OnTemporalFilterWidthChanged(double d);
|
|
|
|
void OnTemporalFilterTypeComboCurrentIndexChanged(const QString& text);
|
|
|
|
void OnDEFilterMinRadiusWidthChanged(double d);
|
|
|
|
void OnDEFilterMaxRadiusWidthChanged(double d);
|
|
|
|
void OnDEFilterCurveWidthChanged(double d);
|
2014-11-28 04:37:51 -05:00
|
|
|
void OnSbsChanged(int d);//Iteration.
|
|
|
|
void OnFuseChanged(int d);
|
2014-07-08 03:11:14 -04:00
|
|
|
void OnQualityChanged(double d);
|
|
|
|
void OnSupersampleChanged(int d);
|
2014-11-28 04:37:51 -05:00
|
|
|
void OnTemporalSamplesChanged(int d);
|
2014-07-08 03:11:14 -04:00
|
|
|
void OnAffineInterpTypeComboCurrentIndexChanged(int index);
|
|
|
|
void OnInterpTypeComboCurrentIndexChanged(int index);
|
|
|
|
|
|
|
|
//Xforms.
|
|
|
|
void OnCurrentXformComboChanged(int index);
|
|
|
|
void OnAddXformButtonClicked(bool checked);
|
2015-06-24 23:49:09 -04:00
|
|
|
void OnAddLinkedXformButtonClicked(bool checked);
|
2014-07-08 03:11:14 -04:00
|
|
|
void OnDuplicateXformButtonClicked(bool checked);
|
|
|
|
void OnClearXformButtonClicked(bool checked);
|
|
|
|
void OnDeleteXformButtonClicked(bool checked);
|
|
|
|
void OnAddFinalXformButtonClicked(bool checked);
|
|
|
|
void OnXformWeightChanged(double d);
|
|
|
|
void OnEqualWeightButtonClicked(bool checked);
|
|
|
|
void OnXformNameChanged(int row, int col);
|
|
|
|
|
|
|
|
//Xforms Affine.
|
2015-05-15 21:45:15 -04:00
|
|
|
void OnPreAffineRowDoubleClicked(int logicalIndex);
|
|
|
|
void OnPreAffineColDoubleClicked(int logicalIndex);
|
|
|
|
void OnPostAffineRowDoubleClicked(int logicalIndex);
|
|
|
|
void OnPostAffineColDoubleClicked(int logicalIndex);
|
|
|
|
|
2014-07-08 03:11:14 -04:00
|
|
|
void OnX1Changed(double d);
|
|
|
|
void OnX2Changed(double d);
|
|
|
|
void OnY1Changed(double d);
|
|
|
|
void OnY2Changed(double d);
|
|
|
|
void OnO1Changed(double d);
|
|
|
|
void OnO2Changed(double d);
|
|
|
|
|
|
|
|
void OnFlipHorizontalButtonClicked(bool checked);
|
|
|
|
void OnFlipVerticalButtonClicked(bool checked);
|
|
|
|
void OnRotate90CButtonClicked(bool checked);
|
|
|
|
void OnRotate90CcButtonClicked(bool checked);
|
|
|
|
void OnRotateCButtonClicked(bool checked);
|
|
|
|
void OnRotateCcButtonClicked(bool checked);
|
|
|
|
void OnMoveUpButtonClicked(bool checked);
|
|
|
|
void OnMoveDownButtonClicked(bool checked);
|
|
|
|
void OnMoveLeftButtonClicked(bool checked);
|
|
|
|
void OnMoveRightButtonClicked(bool checked);
|
|
|
|
void OnScaleDownButtonClicked(bool checked);
|
|
|
|
void OnScaleUpButtonClicked(bool checked);
|
|
|
|
void OnResetAffineButtonClicked(bool checked);
|
|
|
|
|
|
|
|
void OnAffineGroupBoxToggled(bool on);
|
|
|
|
void OnAffineDrawAllCurrentRadioButtonToggled(bool checked);
|
2015-02-03 20:11:16 -05:00
|
|
|
void OnPolarAffineCheckBoxStateChanged(int state);
|
2014-07-08 03:11:14 -04:00
|
|
|
|
|
|
|
//Xforms Color.
|
|
|
|
void OnXformColorIndexChanged(double d);
|
|
|
|
void OnXformColorIndexChanged(double d, bool updateRender);
|
|
|
|
void OnXformScrollColorIndexChanged(int d);
|
|
|
|
void OnXformColorSpeedChanged(double d);
|
|
|
|
void OnXformOpacityChanged(double d);
|
|
|
|
void OnXformDirectColorChanged(double d);
|
|
|
|
void OnSoloXformCheckBoxStateChanged(int state);
|
|
|
|
void OnXformRefPaletteResized(int logicalIndex, int oldSize, int newSize);
|
2015-03-21 18:27:37 -04:00
|
|
|
void OnResetCurvesButtonClicked(bool checked);
|
|
|
|
void OnCurvesPointChanged(int curveIndex, int pointIndex, const QPointF& point);
|
|
|
|
void OnCurvesAllRadioButtonToggled(bool checked);
|
|
|
|
void OnCurvesRedRadioButtonToggled(bool checked);
|
|
|
|
void OnCurvesGreenRadioButtonToggled(bool checked);
|
|
|
|
void OnCurvesBlueRadioButtonToggled(bool checked);
|
|
|
|
|
2014-07-08 03:11:14 -04:00
|
|
|
//Xforms Variations.
|
|
|
|
void OnVariationSpinBoxValueChanged(double d);
|
|
|
|
void OnTreeHeaderSectionClicked(int);
|
|
|
|
void OnVariationsFilterLineEditTextChanged(const QString& text);
|
|
|
|
void OnVariationsFilterClearButtonClicked(bool checked);
|
|
|
|
|
2015-04-27 01:11:56 -04:00
|
|
|
//Xforms Selection.
|
|
|
|
void OnXformsSelectAllButtonClicked(bool checked);
|
|
|
|
void OnXformsSelectNoneButtonClicked(bool checked);
|
|
|
|
|
|
|
|
//Xaos.
|
2014-07-08 03:11:14 -04:00
|
|
|
void OnXaosChanged(double d);
|
|
|
|
void OnClearXaosButtonClicked(bool checked);
|
2014-10-15 23:09:44 -04:00
|
|
|
void OnRandomXaosButtonClicked(bool checked);
|
2015-05-03 20:13:14 -04:00
|
|
|
void OnXaosRowDoubleClicked(int logicalIndex);
|
|
|
|
void OnXaosColDoubleClicked(int logicalIndex);
|
2015-05-30 00:08:44 -04:00
|
|
|
void OnXaosTableModelDataChanged(const QModelIndex& indexA, const QModelIndex& indexB);
|
2014-07-08 03:11:14 -04:00
|
|
|
|
|
|
|
//Palette.
|
2015-04-08 21:23:29 -04:00
|
|
|
void OnPaletteFilenameComboChanged(const QString& text);
|
2014-07-08 03:11:14 -04:00
|
|
|
void OnPaletteAdjust(int d);
|
|
|
|
void OnPaletteCellClicked(int row, int col);
|
|
|
|
void OnPaletteCellDoubleClicked(int row, int col);
|
2014-10-27 17:21:06 -04:00
|
|
|
void OnPaletteRandomSelectButtonClicked(bool checked);
|
|
|
|
void OnPaletteRandomAdjustButtonClicked(bool checked);
|
2015-05-31 01:14:34 -04:00
|
|
|
void OnPaletteFilterLineEditTextChanged(const QString& text);
|
|
|
|
void OnPaletteFilterClearButtonClicked(bool checked);
|
|
|
|
void OnPaletteHeaderSectionClicked(int col);
|
2014-07-08 03:11:14 -04:00
|
|
|
|
2015-07-15 23:27:32 -04:00
|
|
|
//Info.
|
|
|
|
void OnSummaryTableHeaderResized(int logicalIndex, int oldSize, int newSize);
|
|
|
|
void OnSummaryTreeHeaderSectionClicked(int logicalIndex);
|
|
|
|
|
2014-07-08 03:11:14 -04:00
|
|
|
//Rendering/progress.
|
|
|
|
void StartRenderTimer();
|
|
|
|
void IdleTimer();
|
|
|
|
bool ControllersOk();
|
2014-10-14 11:53:15 -04:00
|
|
|
void ShowCritical(const QString& title, const QString& text, bool invokeRequired = false);
|
2014-07-08 03:11:14 -04:00
|
|
|
|
|
|
|
//Can't have a template function be a slot.
|
2014-12-11 00:50:15 -05:00
|
|
|
void SetLibraryTreeItemData(EmberTreeWidgetItemBase* item, vector<byte>& v, uint w, uint h);
|
2014-07-08 03:11:14 -04:00
|
|
|
|
|
|
|
public:
|
|
|
|
//template<typename spinType, typename valType>//See below.
|
|
|
|
//static void SetupSpinner(QTableWidget* table, const QObject* receiver, int& row, int col, spinType*& spinBox, int height, valType min, valType max, valType step, const char* signal, const char* slot, bool incRow = true, valType val = 0, valType doubleClickZero = -999, valType doubleClickNonZero = -999);
|
|
|
|
static void SetupAffineSpinner(QTableWidget* table, const QObject* receiver, int row, int col, DoubleSpinBox*& spinBox, int height, double min, double max, double step, double prec, const char* signal, const char* slot);
|
2015-05-03 20:13:14 -04:00
|
|
|
static void SetupCombo(QTableWidget* table, const QObject* receiver, int& row, int col, StealthComboBox*& comboBox, const vector<string>& vals, const char* signal, const char* slot, Qt::ConnectionType connectionType = Qt::QueuedConnection);
|
2014-07-08 03:11:14 -04:00
|
|
|
static void SetFixedTableHeader(QHeaderView* header, QHeaderView::ResizeMode mode = QHeaderView::Fixed);
|
|
|
|
|
|
|
|
protected:
|
2014-12-12 03:54:03 -05:00
|
|
|
virtual bool eventFilter(QObject* o, QEvent* e) override;
|
2014-10-14 11:53:15 -04:00
|
|
|
virtual void resizeEvent(QResizeEvent* e) override;
|
|
|
|
virtual void closeEvent(QCloseEvent* e) override;
|
|
|
|
virtual void dragEnterEvent(QDragEnterEvent* e) override;
|
|
|
|
virtual void dragMoveEvent(QDragMoveEvent* e) override;
|
|
|
|
virtual void dropEvent(QDropEvent* e) override;
|
2014-07-08 03:11:14 -04:00
|
|
|
|
|
|
|
private:
|
|
|
|
void InitMenusUI();
|
|
|
|
void InitToolbarUI();
|
|
|
|
void InitParamsUI();
|
|
|
|
void InitXformsUI();
|
|
|
|
void InitXformsColorUI();
|
|
|
|
void InitXformsAffineUI();
|
|
|
|
void InitXformsVariationsUI();
|
2015-04-27 01:11:56 -04:00
|
|
|
void InitXformsSelectUI();
|
|
|
|
void InitXaosUI();
|
2014-07-08 03:11:14 -04:00
|
|
|
void InitPaletteUI();
|
|
|
|
void InitLibraryUI();
|
2015-07-15 23:27:32 -04:00
|
|
|
void InitInfoUI();
|
2014-07-28 01:25:38 -04:00
|
|
|
void SetTabOrders();
|
2014-07-08 03:11:14 -04:00
|
|
|
|
2015-05-30 00:08:44 -04:00
|
|
|
void ToggleTableRow(QTableView* table, int logicalIndex);
|
|
|
|
void ToggleTableCol(QTableView* table, int logicalIndex);
|
2015-05-15 21:45:15 -04:00
|
|
|
|
2014-07-08 03:11:14 -04:00
|
|
|
//Embers.
|
|
|
|
bool HaveFinal();
|
|
|
|
|
2015-03-21 18:27:37 -04:00
|
|
|
//Library.
|
|
|
|
pair<size_t, QTreeWidgetItem*> GetCurrentEmberIndex();
|
|
|
|
|
2014-07-08 03:11:14 -04:00
|
|
|
//Params.
|
|
|
|
|
|
|
|
//Xforms.
|
|
|
|
|
|
|
|
//Xforms Color.
|
|
|
|
|
|
|
|
//Xforms Affine.
|
|
|
|
|
|
|
|
//Xforms Variations.
|
2015-07-23 21:16:36 -04:00
|
|
|
void Filter();
|
|
|
|
void Filter(const QString& text);
|
2014-07-08 03:11:14 -04:00
|
|
|
|
2015-04-27 01:11:56 -04:00
|
|
|
//Xforms Selection.
|
|
|
|
void ClearXformsSelections();
|
|
|
|
void ForEachXformCheckbox(std::function<void(int, QCheckBox*)> func);
|
|
|
|
|
|
|
|
//Xaos.
|
2014-07-08 03:11:14 -04:00
|
|
|
void FillXaosTable();
|
|
|
|
|
|
|
|
//Palette.
|
|
|
|
void ResetPaletteControls();
|
2015-05-15 21:45:15 -04:00
|
|
|
void SetPaletteFileComboIndex(const string& filename);
|
2015-07-15 23:27:32 -04:00
|
|
|
void SetPaletteTableItem(QPixmap* pixmap, QTableWidget* table, QTableWidgetItem* item, int row, int col);
|
2014-07-08 03:11:14 -04:00
|
|
|
|
|
|
|
//Info.
|
2015-07-15 23:27:32 -04:00
|
|
|
void FillSummary();
|
2014-07-08 03:11:14 -04:00
|
|
|
void UpdateHistogramBounds();
|
2014-12-11 00:50:15 -05:00
|
|
|
void ErrorReportToQTextEdit(const vector<string>& errors, QTextEdit* textEdit, bool clear = true);
|
2015-07-15 23:27:32 -04:00
|
|
|
void SetTableWidgetBackgroundColor();
|
2014-07-08 03:11:14 -04:00
|
|
|
|
|
|
|
//Rendering/progress.
|
|
|
|
bool CreateRendererFromOptions();
|
|
|
|
bool CreateControllerFromOptions();
|
|
|
|
|
|
|
|
//Dialogs.
|
|
|
|
QStringList SetupOpenXmlDialog();
|
2014-10-14 11:53:15 -04:00
|
|
|
QString SetupSaveXmlDialog(const QString& defaultFilename);
|
|
|
|
QString SetupSaveImageDialog(const QString& defaultFilename);
|
2014-07-08 03:11:14 -04:00
|
|
|
QString SetupSaveFolderDialog();
|
|
|
|
QColorDialog* m_ColorDialog;
|
|
|
|
FractoriumFinalRenderDialog* m_FinalRenderDialog;
|
|
|
|
FractoriumOptionsDialog* m_OptionsDialog;
|
2015-07-23 21:16:36 -04:00
|
|
|
FractoriumVariationsDialog* m_VarDialog;
|
2014-07-08 03:11:14 -04:00
|
|
|
FractoriumAboutDialog* m_AboutDialog;
|
|
|
|
|
|
|
|
//Params.
|
|
|
|
DoubleSpinBox* m_BrightnessSpin;//Color.
|
|
|
|
DoubleSpinBox* m_GammaSpin;
|
|
|
|
DoubleSpinBox* m_GammaThresholdSpin;
|
|
|
|
DoubleSpinBox* m_VibrancySpin;
|
|
|
|
DoubleSpinBox* m_HighlightSpin;
|
|
|
|
QPushButton* m_BackgroundColorButton;
|
|
|
|
StealthComboBox* m_PaletteModeCombo;
|
|
|
|
SpinBox* m_WidthSpin;//Geometry.
|
|
|
|
SpinBox* m_HeightSpin;
|
|
|
|
DoubleSpinBox* m_CenterXSpin;
|
|
|
|
DoubleSpinBox* m_CenterYSpin;
|
|
|
|
DoubleSpinBox* m_ScaleSpin;
|
|
|
|
DoubleSpinBox* m_ZoomSpin;
|
|
|
|
DoubleSpinBox* m_RotateSpin;
|
|
|
|
DoubleSpinBox* m_ZPosSpin;
|
|
|
|
DoubleSpinBox* m_PerspectiveSpin;
|
|
|
|
DoubleSpinBox* m_PitchSpin;
|
|
|
|
DoubleSpinBox* m_YawSpin;
|
|
|
|
DoubleSpinBox* m_DepthBlurSpin;
|
|
|
|
DoubleSpinBox* m_SpatialFilterWidthSpin;//Filter.
|
|
|
|
StealthComboBox* m_SpatialFilterTypeCombo;
|
|
|
|
DoubleSpinBox* m_TemporalFilterWidthSpin;
|
|
|
|
StealthComboBox* m_TemporalFilterTypeCombo;
|
|
|
|
DoubleSpinBox* m_DEFilterMinRadiusSpin;
|
|
|
|
DoubleSpinBox* m_DEFilterMaxRadiusSpin;
|
|
|
|
DoubleSpinBox* m_DECurveSpin;
|
2014-11-28 04:37:51 -05:00
|
|
|
SpinBox* m_SbsSpin;//Iteration.
|
|
|
|
SpinBox* m_FuseSpin;
|
2014-07-08 03:11:14 -04:00
|
|
|
DoubleSpinBox* m_QualitySpin;
|
|
|
|
SpinBox* m_SupersampleSpin;
|
2014-11-28 04:37:51 -05:00
|
|
|
SpinBox* m_TemporalSamplesSpin;
|
2014-07-08 03:11:14 -04:00
|
|
|
StealthComboBox* m_AffineInterpTypeCombo;
|
|
|
|
StealthComboBox* m_InterpTypeCombo;
|
|
|
|
|
|
|
|
//Xforms.
|
|
|
|
DoubleSpinBox* m_XformWeightSpin;
|
|
|
|
SpinnerButtonWidget* m_XformWeightSpinnerButtonWidget;
|
2015-04-27 01:11:56 -04:00
|
|
|
QFormLayout* m_XformsSelectionLayout;
|
|
|
|
QVector<QCheckBox*> m_XformSelections;
|
2014-07-08 03:11:14 -04:00
|
|
|
|
|
|
|
//Xforms Color.
|
|
|
|
QTableWidgetItem* m_XformColorValueItem;
|
|
|
|
QTableWidgetItem* m_PaletteRefItem;
|
|
|
|
DoubleSpinBox* m_XformColorIndexSpin;
|
|
|
|
DoubleSpinBox* m_XformColorSpeedSpin;
|
|
|
|
DoubleSpinBox* m_XformOpacitySpin;
|
|
|
|
DoubleSpinBox* m_XformDirectColorSpin;
|
|
|
|
|
|
|
|
//Xforms Affine.
|
|
|
|
DoubleSpinBox* m_PreX1Spin;//Pre.
|
|
|
|
DoubleSpinBox* m_PreX2Spin;
|
|
|
|
DoubleSpinBox* m_PreY1Spin;
|
|
|
|
DoubleSpinBox* m_PreY2Spin;
|
|
|
|
DoubleSpinBox* m_PreO1Spin;
|
|
|
|
DoubleSpinBox* m_PreO2Spin;
|
|
|
|
|
|
|
|
DoubleSpinBox* m_PostX1Spin;//Post.
|
|
|
|
DoubleSpinBox* m_PostX2Spin;
|
|
|
|
DoubleSpinBox* m_PostY1Spin;
|
|
|
|
DoubleSpinBox* m_PostY2Spin;
|
|
|
|
DoubleSpinBox* m_PostO1Spin;
|
|
|
|
DoubleSpinBox* m_PostO2Spin;
|
2015-02-03 20:11:16 -05:00
|
|
|
|
|
|
|
DoubleSpinBox* m_PreSpins[6];
|
|
|
|
DoubleSpinBox* m_PostSpins[6];
|
2014-07-08 03:11:14 -04:00
|
|
|
|
2015-05-30 00:08:44 -04:00
|
|
|
//Xaos.
|
|
|
|
DoubleSpinBox* m_XaosSpinBox;
|
|
|
|
QStandardItemModel* m_XaosTableModel;
|
|
|
|
DoubleSpinBoxTableItemDelegate* m_XaosTableItemDelegate;
|
|
|
|
|
2014-07-08 03:11:14 -04:00
|
|
|
//Palette.
|
|
|
|
SpinBox* m_PaletteHueSpin;
|
|
|
|
SpinBox* m_PaletteSaturationSpin;
|
|
|
|
SpinBox* m_PaletteBrightnessSpin;
|
|
|
|
SpinBox* m_PaletteContrastSpin;
|
|
|
|
SpinBox* m_PaletteBlurSpin;
|
|
|
|
SpinBox* m_PaletteFrequencySpin;
|
|
|
|
|
2015-07-15 23:27:32 -04:00
|
|
|
//Info.
|
|
|
|
QTableWidgetItem* m_InfoNameItem;
|
|
|
|
QTableWidgetItem* m_InfoPaletteItem;
|
|
|
|
QTableWidgetItem* m_Info3dItem;
|
|
|
|
QTableWidgetItem* m_InfoXaosItem;
|
|
|
|
QTableWidgetItem* m_InfoXformCountItem;
|
|
|
|
QTableWidgetItem* m_InfoFinalXformItem;
|
|
|
|
|
2014-07-08 03:11:14 -04:00
|
|
|
//Files.
|
|
|
|
QFileDialog* m_FileDialog;
|
|
|
|
QFileDialog* m_FolderDialog;
|
|
|
|
QString m_LastSaveAll;
|
|
|
|
QString m_LastSaveCurrent;
|
|
|
|
//QMenu* m_FileTreeMenu;
|
|
|
|
|
|
|
|
QProgressBar* m_ProgressBar;
|
|
|
|
QLabel* m_RenderStatusLabel;
|
|
|
|
QLabel* m_CoordinateStatusLabel;
|
|
|
|
FractoriumSettings* m_Settings;
|
|
|
|
char m_ULString[32];
|
|
|
|
char m_URString[32];
|
|
|
|
char m_LRString[32];
|
|
|
|
char m_LLString[32];
|
2014-12-12 03:54:03 -05:00
|
|
|
char m_WHString[64];
|
2014-07-08 03:11:14 -04:00
|
|
|
char m_DEString[16];
|
|
|
|
char m_CoordinateString[128];
|
2014-07-26 15:03:51 -04:00
|
|
|
QColor m_XformComboColors[XFORM_COLOR_COUNT], m_FinalXformComboColor;
|
|
|
|
QIcon m_XformComboIcons[XFORM_COLOR_COUNT], m_FinalXformComboIcon;
|
2015-06-20 14:35:08 -04:00
|
|
|
vector<QDockWidget*> m_Docks;
|
2014-07-08 03:11:14 -04:00
|
|
|
|
|
|
|
int m_FontSize;
|
|
|
|
int m_VarSortMode;
|
2015-05-31 01:14:34 -04:00
|
|
|
int m_PaletteSortMode;
|
2014-07-08 03:11:14 -04:00
|
|
|
int m_PreviousPaletteRow;
|
|
|
|
OpenCLWrapper m_Wrapper;
|
2014-10-18 17:07:07 -04:00
|
|
|
unique_ptr<FractoriumEmberControllerBase> m_Controller;
|
2014-07-08 03:11:14 -04:00
|
|
|
Ui::FractoriumClass ui;
|
|
|
|
};
|