fractorium/Source/Fractorium/OptionsDialog.h
Person 15fdc860b8 --User changes
-Add buttons to copy and paste affine transforms.
 -Show xform names on the column headers of the xaos table.
 -Add a color-coded third column to the variations tree which shows any properties of each variation which are non-standard.
 -Draw a transparent circle over hovered xforms.
 -Change how xforms respond to dragging. Rotate only is now the default, and scale will only happen with shift.
 --Optionally do scale and rotate when holding shift, via a setting in the options dialog.

--Bug fixes
 -Snapping when dragging was wrong sometimes.
 -The program would very rarely crash on startup due to some values being in an uninitialized state.

--Code changes
 -Change almost every variation to use fma() in OpenCL when doing computations of the form a * b + c. This provides a slight speedup, mostly in double precision mode.
 -Also apply fma() to affine calcs.
 -Cleanup of OpenGL affine drawing code.
 -Separate the concept of hovering and selecting xforms.
2018-09-15 03:11:12 -07:00

69 lines
1.6 KiB
C++

#pragma once
#include "ui_OptionsDialog.h"
#include "FractoriumSettings.h"
#include "SpinBox.h"
/// <summary>
/// FractoriumOptionsDialog class.
/// </summary>
class Fractorium;//Forward declaration since Fractorium uses this dialog.
/// <summary>
/// The options dialog allows the user to save various preferences
/// between program runs.
/// It has a pointer to a FractoriumSettings object which is assigned
/// in the constructor. The main window holds the object as a member and the
/// pointer to it here is just for convenience.
/// </summary>
class FractoriumOptionsDialog : public QDialog
{
Q_OBJECT
friend Fractorium;
public:
FractoriumOptionsDialog(QWidget* p = nullptr, Qt::WindowFlags f = 0);
bool EarlyClip();
bool YAxisUp();
bool Transparency();
bool ContinuousUpdate();
bool OpenCL();
bool SharedTexture();
bool Double();
bool ShowAllXforms();
bool ToggleType();
bool Png16Bit();
bool AutoUnique();
bool LoadLast();
bool RotateAndScale();
uint ThreadCount();
uint RandomCount();
uint CpuQuality();
uint OpenClQuality();
void DataToGui();
void GuiToData();
public slots:
void OnOpenCLCheckBoxStateChanged(int state);
void OnDeviceTableCellChanged(int row, int col);
void OnDeviceTableRadioToggled(bool checked);
virtual void accept() override;
virtual void reject() override;
protected:
virtual void showEvent(QShowEvent* e) override;
private:
Ui::OptionsDialog ui;
shared_ptr<OpenCLInfo> m_Info;
SpinBox* m_XmlTemporalSamplesSpin;
SpinBox* m_XmlQualitySpin;
SpinBox* m_XmlSupersampleSpin;
QLineEdit* m_IdEdit;
QLineEdit* m_UrlEdit;
QLineEdit* m_NickEdit;
shared_ptr<FractoriumSettings> m_Settings;
};