--User changes

-Fix stylesheets.
-Make various fields in the options window be resettable via double click.
-Get stylesheets working properly on Windows and Linux with Qt6.
-Set default style to Fusion.

--Code changes
-Get build and deployment scripts working with latest versions of Qt6, AppImage, and various library dependencies.
-Add two new macros so it would build with the latest gcc: SINGLETON_DERIVED_DECL_T and SINGLETON_DERIVED_IMPL_T.
-Small changes to opencl.hpp.
-Center progress bars on Linux.
-Proper sizing of vertical header on the xaos visualization table on Linux.
This commit is contained in:
Person 2023-06-22 19:25:53 -06:00
parent 6b641d233d
commit 484b2e3123
20 changed files with 843 additions and 765 deletions

View File

@ -124,19 +124,19 @@
<File Id="libxml2.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\libxml2.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="msvcp140.dll" Guid="8f1ffde7-c1bd-45fb-8bc8-26dde552eafd">
<File Id="msvcp140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.34.31931\x64\Microsoft.VC143.CRT\msvcp140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
<File Id="msvcp140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\msvcp140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="vcruntime140.dll" Guid="50c9bc27-c547-4a03-9f6c-cd416f449dd8">
<File Id="vcruntime140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.34.31931\x64\Microsoft.VC143.CRT\vcruntime140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
<File Id="vcruntime140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\vcruntime140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="vcruntime140_1.dll" Guid="a02507f8-326b-45b2-b734-e5091921559f">
<File Id="vcruntime140_1.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.34.31931\x64\Microsoft.VC143.CRT\vcruntime140_1.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
<File Id="vcruntime140_1.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\vcruntime140_1.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="vccorlib140.dll" Guid="affe33e7-1e64-4bb0-a062-2b56f77459b4">
<File Id="vccorlib140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.34.31931\x64\Microsoft.VC143.CRT\vccorlib140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
<File Id="vccorlib140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\vccorlib140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="concrt140.dll" Guid="7fb716a1-1b4f-42fb-89c7-4d216ebd6e2e">
<File Id="concrt140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.34.31931\x64\Microsoft.VC143.CRT\concrt140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
<File Id="concrt140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\concrt140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="flam3palettes.xml" Guid="d3adb0bb-14ef-4923-99d9-a5784b7ef04e">
<File Id="flam3palettes.xml" Source="$(var.SolutionDir)..\..\..\Data\flam3-palettes.xml" KeyPath="yes" Checksum="yes" ReadOnly="yes" />

View File

@ -94,7 +94,10 @@ win32 {
LIBS += -ljpeg
LIBS += -lpng
LIBS += -lpthread
LIBS += -lOpenEXR
LIBS += -lIlmImf
LIBS += -lHalf
LIBS += -lImath
LIBS += -lIex
unix:!macx {
LIBS += -lxml2

View File

@ -4,12 +4,12 @@ You should keep this at the top of whatever custom style you make to ensure the
/*
QTabBar::tab { height: 4ex; }
*/
/*
/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
*
{
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
font: 8pt "MS Shell Dlg 2";
}
*/
/*This is needed to give the labels on the status bar some padding.*/
QStatusBar QLabel { padding-left: 2px; padding-right: 2px; }
@ -135,7 +135,7 @@ QCheckBox::indicator:enabled:checked,
QTableView::indicator:enabled:checked
{
background-color: lightgray;
image: url(:/Fractorium/Icons/checkbox_checked.png);
image: url(:/Fractorium/Icons/checkbox_checked.png);
}
QCheckBox::indicator:disabled:unchecked,
@ -149,7 +149,7 @@ QCheckBox::indicator:disabled:checked,
QTableView::indicator:disabled:checked
{
background-color: gray;
image: none;
image: none;
}
QRadioButton::indicator:checked
@ -215,9 +215,9 @@ QComboBox::item:selected
QComboBox QAbstractItemView
{
border: 1px solid gray;
border: 1px solid gray;
outline: none;
selection-background-color: darkgray;
selection-background-color: darkgray;
}
QTableView QComboBox
@ -244,9 +244,9 @@ QProgressBar
{
color: black;
background-color: gray;
border: 0px none gray;
border: 0px none gray;
border-radius: 3px;
text-align: center;
text-align: center center;
}
QProgressBar::chunk
@ -297,8 +297,8 @@ QGroupBox
{
padding-top: 3px;
border: 2px solid gray;
border-radius: 4px;
margin-top: 3ex;
border-radius: 4px;
margin-top: 3ex;
}
QGroupBox::title
@ -353,7 +353,7 @@ QTreeView::item:selected
QTreeView::branch:!has-children
{
background: rgb(53, 53, 53);
background: rgb(53, 53, 53);
}
QTreeView::branch:has-children:closed
@ -459,7 +459,7 @@ QScrollBar::vertical
QScrollBar::handle::vertical
{
background-color: gray;
background-color: gray;
border-top: 1px solid darkgray;
border-bottom: 1px solid darkgray;
min-height: 20px;
@ -485,15 +485,15 @@ QScrollBar::sub-line::vertical
QScrollBar::up-arrow::vertical, QScrollBar::down-arrow::vertical
{
border: 2px solid darkgray;
width: 5px;
height: 12px;
background-color: gray;
border: 2px solid darkgray;
width: 5px;
height: 12px;
background-color: gray;
}
QScrollBar::add-page::vertical, QScrollBar::sub-page::vertical, QScrollBar::add-page::horizontal, QScrollBar::sub-page::horizontal
{
background-color: darkgray;
background-color: darkgray;
}
QScrollBar::horizontal
@ -532,10 +532,10 @@ QScrollBar::sub-line::horizontal
QScrollBar::left-arrow::horizontal, QScrollBar::right-arrow::horizontal
{
border: 2px solid darkgray;
width: 12px;
height: 5px;
background-color: gray;
border: 2px solid darkgray;
width: 12px;
height: 5px;
background-color: gray;
}
QMenu::separator

View File

@ -4,12 +4,11 @@ You should keep this at the top of whatever custom style you make to ensure the
/*
QTabBar::tab { height: 4ex; }
*/
/*
/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
*
{
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
font: 8pt "MS Shell Dlg 2";
}
*/
/*Specific styles below this line*/
Fractorium
@ -132,7 +131,7 @@ QCheckBox::indicator:enabled:checked,
QTableView::indicator:enabled:checked
{
background-color: lightgray;
image: url(:/Fractorium/Icons/checkbox_checked.png);
image: url(:/Fractorium/Icons/checkbox_checked.png);
}
QCheckBox::indicator:disabled:unchecked,
@ -146,7 +145,7 @@ QCheckBox::indicator:disabled:checked,
QTableView::indicator:disabled:checked
{
background-color: gray;
image: none;
image: none;
}
QRadioButton::indicator:checked
@ -212,9 +211,9 @@ QComboBox::item:selected
QComboBox QAbstractItemView
{
border: 1px solid gray;
border: 1px solid gray;
outline: none;
selection-background-color: darkgray;
selection-background-color: darkgray;
}
QTableView QComboBox
@ -241,9 +240,9 @@ QProgressBar
{
color: black;
background-color: gray;
border: 0px none gray;
border: 0px none gray;
border-radius: 3px;
text-align: center;
text-align: center center;
}
QProgressBar::chunk
@ -294,8 +293,8 @@ QGroupBox
{
padding-top: 3px;
border: 2px solid gray;
border-radius: 4px;
margin-top: 3ex;
border-radius: 4px;
margin-top: 3ex;
}
QGroupBox::title
@ -483,15 +482,15 @@ QScrollBar::sub-line::vertical
QScrollBar::up-arrow::vertical, QScrollBar::down-arrow::vertical
{
border: 2px solid darkgray;
width: 5px;
height: 12px;
background-color: gray;
border: 2px solid darkgray;
width: 5px;
height: 12px;
background-color: gray;
}
QScrollBar::add-page::vertical, QScrollBar::sub-page::vertical, QScrollBar::add-page::horizontal, QScrollBar::sub-page::horizontal
{
background-color: darkgray;
background-color: darkgray;
}
QScrollBar::horizontal
@ -530,10 +529,10 @@ QScrollBar::sub-line::horizontal
QScrollBar::left-arrow::horizontal, QScrollBar::right-arrow::horizontal
{
border: 2px solid darkgray;
width: 12px;
height: 5px;
background-color: gray;
border: 2px solid darkgray;
width: 12px;
height: 5px;
background-color: gray;
}
QMenu::separator

View File

@ -133,7 +133,7 @@ QCheckBox::indicator:enabled:checked,
QTableView::indicator:enabled:checked
{
background-color: lightgray;
image: url(:/Fractorium/Icons/checkbox_checked.png);
image: url(:/Fractorium/Icons/checkbox_checked.png);
}
QCheckBox::indicator:disabled:unchecked,
@ -147,7 +147,7 @@ QCheckBox::indicator:disabled:checked,
QTableView::indicator:disabled:checked
{
background-color: gray;
image: none;
image: none;
}
QRadioButton::indicator:checked
@ -242,15 +242,15 @@ QProgressBar
{
color: black;
background-color: gray;
border: 0px none gray;
border: 0px none gray;
border-radius: 3px;
text-align: center;
text-align: center center;
}
QProgressBar::chunk
{
border-radius: 3px;
background-color: lightgray;
background-color: lightgray;
}
QStatusBar QProgressBar
@ -295,8 +295,8 @@ QGroupBox
{
padding-top: 3px;
border: 2px solid gray;
border-radius: 4px;
margin-top: 3ex;
border-radius: 4px;
margin-top: 3ex;
}
QGroupBox::title
@ -351,7 +351,7 @@ QTreeView::item:selected
QTreeView::branch:!has-children
{
background: rgb(53, 53, 53);
background: rgb(53, 53, 53);
}
QTreeView::branch:has-children:closed
@ -457,7 +457,7 @@ QScrollBar::vertical
QScrollBar::handle::vertical
{
background-color: gray;
background-color: gray;
border-top: 1px solid darkgray;
border-bottom: 1px solid darkgray;
min-height: 20px;
@ -483,15 +483,15 @@ QScrollBar::sub-line::vertical
QScrollBar::up-arrow::vertical, QScrollBar::down-arrow::vertical
{
border: 2px solid darkgray;
width: 5px;
height: 12px;
background-color: gray;
border: 2px solid darkgray;
width: 5px;
height: 12px;
background-color: gray;
}
QScrollBar::add-page::vertical, QScrollBar::sub-page::vertical, QScrollBar::add-page::horizontal, QScrollBar::sub-page::horizontal
{
background-color: darkgray;
background-color: darkgray;
}
QScrollBar::horizontal
@ -530,10 +530,10 @@ QScrollBar::sub-line::horizontal
QScrollBar::left-arrow::horizontal, QScrollBar::right-arrow::horizontal
{
border: 2px solid darkgray;
width: 12px;
height: 5px;
background-color: gray;
border: 2px solid darkgray;
width: 12px;
height: 5px;
background-color: gray;
}
QMenu::separator

View File

@ -4,9 +4,10 @@ You should keep this at the top of whatever custom style you make to ensure the
/*
QTabBar::tab { height: 4ex; }
*/
/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
*
{
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
font: 8pt "MS Shell Dlg 2";
}
QObject
@ -41,42 +42,40 @@ QTableView
/*For some reason, Qt does not draw table headers correctly, so the style must always be manually specified.*/
QHeaderView::section::vertical:enabled
{
width: 12px;
color: black;
background-color: lightgray;
border: none;
padding: 0px;
padding-left: 4px;
padding-left: 4px;
}
QHeaderView::section::horizontal:enabled
{
height: 18px;
color: black;
background-color: lightgray;
border: none;
padding: 0px;
padding-left: 4px;
height: 18px;
color: black;
background-color: lightgray;
border: none;
padding: 0px;
padding-left: 4px;
}
QHeaderView::section::vertical:disabled
{
width: 12px;
color: rgb(35, 35, 35);
background-color: rgb(53, 53, 53);
border: none;
padding: 0px;
padding-left: 4px;
padding-left: 4px;
}
QHeaderView::section::horizontal:disabled
{
height: 18px;
height: 18px;
color:rgb(35, 35, 35);
background-color: rgb(53, 53, 53);
border: none;
padding: 0px;
padding-left: 4px;
padding-left: 4px;
}
QTableView
@ -89,13 +88,13 @@ QTableView
QTableView QTableCornerButton::section:enabled
{
border: none;
border: none;
background-color: lightgray;
}
QTableView QTableCornerButton::section:disabled
{
border: none;
border: none;
background-color: rgb(53, 53, 53);
}
@ -154,12 +153,20 @@ QScrollBar::sub-line::vertical
subcontrol-origin: margin;
}
QScrollBar::up-arrow::vertical, QScrollBar::down-arrow::vertical
QScrollBar::up-arrow::vertical
{
border: 2px solid darkgray;
width: 5px;
height: 12px;
background-color: gray;
border: 2px solid darkgray;
width: 5px;
height: 12px;
background-color: gray;
}
QScrollBar::down-arrow::vertical
{
border: 2px solid darkgray;
width: 5px;
height: 12px;
background-color: gray;
}
QScrollBar::add-page::vertical,
@ -167,7 +174,7 @@ QScrollBar::sub-page::vertical,
QScrollBar::add-page::horizontal,
QScrollBar::sub-page::horizontal
{
background-color: darkgray;
background-color: darkgray;
}
QScrollBar::horizontal
@ -204,13 +211,20 @@ QScrollBar::sub-line::horizontal
subcontrol-origin: margin;
}
QScrollBar::left-arrow::horizontal,
QScrollBar::left-arrow::horizontal
{
border: 2px solid darkgray;
width: 12px;
height: 5px;
background-color: gray;
}
QScrollBar::right-arrow::horizontal
{
border: 2px solid darkgray;
width: 12px;
height: 5px;
background-color: gray;
border: 2px solid darkgray;
width: 12px;
height: 5px;
background-color: gray;
}
/*==================================================================================================
@ -368,7 +382,7 @@ QDockWidget QTabBar
QDialog QTabBar
{
border-color: transparent; /* set color for QTabBars inside Preferences dialog */
border-color: transparent; /* set color for QTabBars inside Preferences dialog */
}
/* end fix */
@ -377,15 +391,15 @@ QTabBar::tab
background-color: transparent;
border: 1px solid transparent;
padding: 4px 4px 4px 4px;
margin: 0px;
margin: 0px;
}
QDialog QTabBar::tab:top
{
background-color: transparent;
background-color: transparent;
border: 1px solid transparent;
padding: 4px 4px 4px 4px;
min-width: 20ex;
min-width: 20ex;
}
QTabBar::tab:left,
@ -462,28 +476,28 @@ QToolBar
QToolBar > QToolButton
{
margin: 1px;
padding: 1px;
border-radius: 3px;
margin: 1px;
padding: 1px;
border-radius: 3px;
border: 1px solid #5e5e5e;
position: relative;
position: relative;
subcontrol-position: right;
subcontrol-origin: margin;
}
QDialog > QToolBar > QToolButton
{
width: 95px;
margin: 0px;
padding: 0px;
border-radius: 3px;
width: 95px;
margin: 0px;
padding: 0px;
border-radius: 3px;
border: 1px solid #5e5e5e;
}
QDialog > QToolBar > QToolButton::menu-button
{
left: -2px;
border-radius: 3px;
left: -2px;
border-radius: 3px;
border: 1px solid #5e5e5e;
}
@ -523,11 +537,13 @@ QPushButton
{
margin: 1px;
padding: 4px;
color: white;
background-color: gray;
}
QPushButton:pressed
{
background-color: gray;
background-color: darkgray;
}
QPushButton:focus
@ -574,7 +590,7 @@ QTableView::indicator:enabled:checked,
QGroupBox::indicator:enabled:checked
{
background-color: lightgray;
image: url(:/Fractorium/Icons/checkbox_checked.png);
image: url(:/Fractorium/Icons/checkbox_checked.png);
}
QCheckBox::indicator:disabled:unchecked,
@ -590,7 +606,7 @@ QTableView::indicator:disabled:checked,
QGroupBox::indicator:disabled:checked
{
background-color: gray;
image: none;
image: none;
}
QRadioButton::indicator:checked
@ -657,15 +673,15 @@ QProgressBar
{
color: black;
background-color: gray;
border: 0px none gray;
border: 0px none gray;
border-radius: 3px;
text-align: center;
text-align: center center;
}
QProgressBar::chunk
{
border-radius: 3px;
background-color: lightgray;
background-color: lightgray;
}
QStatusBar QProgressBar
@ -679,8 +695,8 @@ QGroupBox
{
padding-top: 8px;
border: 2px solid gray;
border-radius: 4px;
margin-top: 3ex;
border-radius: 4px;
margin-top: 3ex;
}
QGroupBox::title
@ -751,16 +767,9 @@ QTableView#FinalRenderParamsTable QPushButton
margin-bottom: 2px;
}
QTableView#XaosTableView QHeaderView::section::vertical,
QTableView#XaosDistVizTableWidget QHeaderView::section::vertical,
QTableView#XaosAppliedTableView QHeaderView::section::vertical
{
width: 19px;
}
QTableView#SummaryTable QHeaderView::section::vertical
{
width: 69px;
width: 69px;
}
QssDialog QssTextEdit#QssEdit

View File

@ -4,9 +4,10 @@ You should keep this at the top of whatever custom style you make to ensure the
/*
QTabBar::tab { height: 4ex; }
*/
/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
*
{
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
font: 8pt "MS Shell Dlg 2";
}
QObject
@ -45,7 +46,6 @@ QTableView
/*For some reason, Qt does not draw table headers correctly, so the style must always be manually specified.*/
QHeaderView::section::vertical:enabled
{
width: 12px;
color: black;
background-color: rgb(176, 204, 177);
border: none;
@ -65,7 +65,6 @@ QHeaderView::section::horizontal:enabled
QHeaderView::section::vertical:disabled
{
width: 12px;
color: rgb(35, 35, 35);
background-color: rgb(53, 53, 53);
border: none;
@ -174,12 +173,20 @@ QScrollBar::sub-line::vertical
subcontrol-origin: margin;
}
QScrollBar::up-arrow::vertical, QScrollBar::down-arrow::vertical
QScrollBar::up-arrow::vertical
{
border: 2px solid rgb(124, 232, 0);
width: 5px;
height: 12px;
background-color: gray;
border: 2px solid rgb(124, 232, 0);
width: 5px;
height: 12px;
background-color: gray;
}
QScrollBar::down-arrow::vertical
{
border: 2px solid rgb(124, 232, 0);
width: 5px;
height: 12px;
background-color: gray;
}
QScrollBar::add-page::vertical,
@ -187,12 +194,12 @@ QScrollBar::sub-page::vertical,
QScrollBar::add-page::horizontal,
QScrollBar::sub-page::horizontal
{
background-color: rgb(115, 133, 116);
background-color: rgb(115, 133, 116);
}
QScrollBar::horizontal
{
background-color: rgb(176, 204, 177);
background-color: rgb(115, 133, 116);
border: 0px solid darkgray;
height: 15px;
margin: 0px 20px 0 20px;
@ -224,7 +231,14 @@ QScrollBar::sub-line::horizontal
subcontrol-origin: margin;
}
QScrollBar::left-arrow::horizontal,
QScrollBar::left-arrow::horizontal
{
border: 2px solid rgb(124, 232, 0);
width: 12px;
height: 5px;
background-color: gray;
}
QScrollBar::right-arrow::horizontal
{
border: 2px solid rgb(124, 232, 0);
@ -718,7 +732,7 @@ QProgressBar
background-color: gray;
border: 0px none gray;
border-radius: 3px;
text-align: center;
text-align: center center;
}
QProgressBar::chunk
@ -832,13 +846,6 @@ QTableView#FinalRenderParamsTable QPushButton
margin-bottom: 2px;
}
QTableView#XaosTableView QHeaderView::section::vertical,
QTableView#XaosDistVizTableWidget QHeaderView::section::vertical,
QTableView#XaosAppliedTableView QHeaderView::section::vertical
{
width: 19px;
}
QTableView#SummaryTable QHeaderView::section::vertical
{
width: 69px;

View File

@ -49,7 +49,7 @@ public:
bool IsModifiable(const string& filename);
const map<string, vector<Palette<T>>>& Palettes() const;
SINGLETON_DERIVED_DECL(PaletteList<T>);
SINGLETON_DERIVED_DECL_T(PaletteList, T);
private:
PaletteList();
bool Save(const string& filename);

View File

@ -277,6 +277,14 @@ protected:
x(const x& other) = delete; \
const x& operator=(const x& other) = delete//Semicolon deliberately omitted to force it on the caller.
//Use this if the body of the destructor will be implemented in a cpp file and the type is templated.
#define SINGLETON_DERIVED_DECL_T(x, T) \
friend class Singleton<x<T>>; \
public: \
~x(); \
x(const x& other) = delete; \
const x& operator=(const x& other) = delete//Semicolon deliberately omitted to force it on the caller.
//Use this if the body of the destructor is empty and is will be implemented inline in the header file.
#define SINGLETON_DERIVED_IMPL(x) \
friend class Singleton<x>; \
@ -285,6 +293,14 @@ protected:
x(const x& other) = delete; \
const x& operator=(const x& other) = delete
//Use this if the body of the destructor is empty and is will be implemented inline in the header file and the type is templated.
#define SINGLETON_DERIVED_IMPL_T(x, T) \
friend class Singleton<x<T>>; \
public: \
~x(){} \
x(const x& other) = delete; \
const x& operator=(const x& other) = delete
/// <summary>
/// The calculations in some variations were changed from what they were in flam3/Apophysis to match Chaotica.
/// Some users prefer the old functionality, so provide an option to retain it.

View File

@ -709,7 +709,7 @@ public:
}
}
SINGLETON_DERIVED_IMPL(VarFuncs<T>);
SINGLETON_DERIVED_IMPL_T(VarFuncs, T);
private:
/// <summary>

View File

@ -49,7 +49,7 @@ public:
const vector<const Variation<T>*>& NonParametricVariations() const;
const vector<const ParametricVariation<T>*>& ParametricVariations() const;
SINGLETON_DERIVED_DECL(VariationList<T>);
SINGLETON_DERIVED_DECL_T(VariationList, T);
private:
VariationList();

File diff suppressed because it is too large Load Diff

View File

@ -25,6 +25,10 @@ FractoriumFinalRenderDialog::FractoriumFinalRenderDialog(QWidget* p, Qt::WindowF
m_Info = OpenCLInfo::Instance();
m_Fractorium = qobject_cast<Fractorium*>(p);
m_Settings = FractoriumSettings::DefInstance();
ui.FinalRenderIterationProgress->setAlignment(Qt::AlignCenter);
ui.FinalRenderFilteringProgress->setAlignment(Qt::AlignCenter);
ui.FinalRenderAccumProgress->setAlignment(Qt::AlignCenter);
ui.FinalRenderTotalProgress->setAlignment(Qt::AlignCenter);
ui.FinalRenderThreadCountSpin->setRange(1, Timing::ProcessorCount());
connect(ui.FinalRenderEarlyClipCheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnEarlyClipCheckBoxStateChanged(int)), Qt::QueuedConnection);
connect(ui.FinalRenderYAxisUpCheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnYAxisUpCheckBoxStateChanged(int)), Qt::QueuedConnection);
@ -44,7 +48,7 @@ FractoriumFinalRenderDialog::FractoriumFinalRenderDialog(QWidget* p, Qt::WindowF
SetupSpinner<SpinBox, int>(ui.FinalRenderSizeTable, this, row, -1, m_WidthSpin, spinHeight, 10, std::numeric_limits<int>::max(), 10, SIGNAL(valueChanged(int)), SLOT(OnWidthChanged(int)), true, 1920, 1920, 1920);
SetupSpinner<DoubleSpinBox, double>(ui.FinalRenderSizeTable, this, row, -1, m_HeightScaleSpin, spinHeight, 0.001, 99.99, 0.1, SIGNAL(valueChanged(double)), SLOT(OnHeightScaleChanged(double)), true, 1.0, 1.0, 1.0);
SetupSpinner<SpinBox, int>(ui.FinalRenderSizeTable, this, row, -1, m_HeightSpin, spinHeight, 10, std::numeric_limits<int>::max(), 10, SIGNAL(valueChanged(int)), SLOT(OnHeightChanged(int)), true, 1080, 1080, 1080);
m_SubBatchPctSpin = (DoubleSpinBox*)ui.FinalRenderOpenCLSubBatchPctSpin;
m_SubBatchPctSpin = ui.FinalRenderOpenCLSubBatchPctSpin;
m_SubBatchPctSpin->DoubleClick(true);
m_SubBatchPctSpin->DoubleClickZero(0.025);
m_SubBatchPctSpin->DoubleClickNonZero(0.025);

View File

@ -296,15 +296,15 @@
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>22</number>
</attribute>
<row>
<property name="text">
<string>AMD</string>
@ -419,7 +419,7 @@
</widget>
</item>
<item>
<widget class="DoubleSpinBox" name="FinalRenderOpenCLSubBatchPctSpin">
<widget class="DoubleSpinBox" name="FinalRenderOpenCLSubBatchPctSpin" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
@ -441,22 +441,22 @@
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The percentage of a sub batch to execute on each thread per kernel call when using OpenCL. Default: 0.025 (256 iters with a 10k sub batch size).&lt;/p&gt;&lt;p&gt;Increase this number for slightly faster render times.&lt;/p&gt;&lt;p&gt;Note that this can cause a crash and subsequent restart of the graphics driver if each kernel call takes too long. So reduce the value if you encounter such a problem.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="prefix">
<property name="prefix" stdset="0">
<string>OpenCL sub batch % per thread </string>
</property>
<property name="decimals">
<property name="decimals" stdset="0">
<number>3</number>
</property>
<property name="minimum">
<property name="minimum" stdset="0">
<double>0.010000000000000</double>
</property>
<property name="maximum">
<property name="maximum" stdset="0">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<property name="singleStep" stdset="0">
<double>0.010000000000000</double>
</property>
<property name="value">
<property name="value" stdset="0">
<double>0.250000000000000</double>
</property>
</widget>
@ -593,30 +593,30 @@
<attribute name="horizontalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>35</number>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>85</number>
</attribute>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>35</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>22</number>
</attribute>
<row>
<property name="text">
<string>Width Scale</string>
@ -811,30 +811,30 @@
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>35</number>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>110</number>
</attribute>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>35</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
@ -1055,6 +1055,9 @@
<property name="value">
<number>0</number>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
@ -1094,6 +1097,9 @@
<property name="value">
<number>0</number>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
@ -1107,6 +1113,9 @@
<property name="value">
<number>0</number>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="0">
@ -1146,6 +1155,9 @@
<property name="value">
<number>0</number>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
@ -1293,6 +1305,13 @@
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>DoubleSpinBox</class>
<extends>QWidget</extends>
<header>doublespinbox.h</header>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>FinalRenderEarlyClipCheckBox</tabstop>
<tabstop>FinalRenderDoublePrecisionCheckBox</tabstop>

View File

@ -148,6 +148,7 @@ Fractorium::Fractorium(QWidget* p)
m_ProgressBar->setMaximumHeight(progressBarHeight);
m_ProgressBar->setMinimumWidth(progressBarWidth);
m_ProgressBar->setMaximumWidth(progressBarWidth);
m_ProgressBar->setAlignment(Qt::AlignCenter);
ui.StatusBar->addPermanentWidget(m_ProgressBar);
//Setup pointer in the GL window to point back to here.
ui.GLDisplay->SetMainWindow(this);
@ -197,8 +198,24 @@ Fractorium::Fractorium(QWidget* p)
{
if (!QStyleFactory::keys().empty())
{
m_Theme = QStyleFactory::create(qApp->style()->objectName());
setStyle(m_Theme);
auto foundFusion = false;
for (auto& s : QStyleFactory::keys())
{
if (s.compare("fusion", Qt::CaseInsensitive) == 0)//Default to fusion if it exists and the style has not been set yet.
{
m_Theme = QStyleFactory::create(s);
setStyle(m_Theme);
foundFusion = true;
break;
}
}
if (!foundFusion)
{
m_Theme = QStyleFactory::create(qApp->style()->objectName());
setStyle(m_Theme);
}
}
}

View File

@ -77,8 +77,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1279</width>
<height>980</height>
<width>1280</width>
<height>985</height>
</rect>
</property>
<property name="sizePolicy">
@ -170,7 +170,7 @@
<x>0</x>
<y>0</y>
<width>230</width>
<height>931</height>
<height>926</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
@ -480,9 +480,6 @@
<property name="text">
<string>Geometry</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
</widget>
</item>
@ -561,9 +558,6 @@
<property name="text">
<string>Iteration</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
</widget>
</item>
@ -661,9 +655,6 @@
<property name="text">
<string>Filter</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
</widget>
</item>
@ -1324,9 +1315,6 @@
<property name="text">
<string>Animation</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
</widget>
</item>
@ -1864,9 +1852,6 @@
<property name="text">
<string>Color</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
</widget>
</item>
@ -1895,7 +1880,7 @@
<property name="minimumSize">
<size>
<width>310</width>
<height>439</height>
<height>444</height>
</size>
</property>
<property name="floating">
@ -2465,8 +2450,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>285</width>
<height>675</height>
<width>307</width>
<height>674</height>
</rect>
</property>
<property name="sizePolicy">
@ -3155,7 +3140,7 @@
<x>0</x>
<y>0</y>
<width>291</width>
<height>874</height>
<height>869</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_16">
@ -3533,33 +3518,21 @@
<property name="text">
<string>Weight</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
<column>
<property name="text">
<string>Name</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
<item row="0" column="0">
<property name="text">
<string/>
</property>
<property name="textAlignment">
<set>AlignLeading|AlignVCenter</set>
</property>
</item>
<item row="0" column="1">
<property name="text">
<string/>
</property>
<property name="textAlignment">
<set>AlignLeading|AlignVCenter</set>
</property>
</item>
</widget>
</item>
@ -3761,9 +3734,6 @@
<property name="toolTip">
<string/>
</property>
<property name="textAlignment">
<set>AlignLeading|AlignVCenter</set>
</property>
</item>
</widget>
</item>
@ -3845,7 +3815,7 @@
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>21</number>
<number>24</number>
</attribute>
<attribute name="verticalHeaderHighlightSections">
<bool>false</bool>
@ -4124,9 +4094,6 @@
<kerning>true</kerning>
</font>
</property>
<property name="textAlignment">
<set>AlignLeading|AlignVCenter</set>
</property>
</item>
<item row="1" column="0">
<property name="text">
@ -4156,6 +4123,19 @@
</item>
</widget>
</item>
<item row="6" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="SoloXformCheckBox">
<property name="toolTip">
@ -6279,8 +6259,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>267</width>
<height>656</height>
<width>269</width>
<height>650</height>
</rect>
</property>
<property name="sizePolicy">
@ -6410,7 +6390,7 @@
<x>0</x>
<y>0</y>
<width>291</width>
<height>854</height>
<height>849</height>
</rect>
</property>
<property name="sizePolicy">
@ -7153,9 +7133,6 @@
<kerning>true</kerning>
</font>
</property>
<property name="textAlignment">
<set>AlignLeading|AlignVCenter</set>
</property>
</item>
</widget>
</item>
@ -7291,7 +7268,7 @@
<x>0</x>
<y>0</y>
<width>1712</width>
<height>21</height>
<height>22</height>
</rect>
</property>
<widget class="QMenu" name="MenuFile">
@ -7524,8 +7501,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>422</width>
<height>587</height>
<width>418</width>
<height>631</height>
</rect>
</property>
<property name="sizePolicy">
@ -7534,7 +7511,7 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="verticalLayout_10" stretch="3,0,8">
<layout class="QVBoxLayout" name="verticalLayout_10" stretch="3,0,8,0">
<property name="spacing">
<number>4</number>
</property>
@ -8081,12 +8058,12 @@
<property name="prefix">
<string>Animation FPS: </string>
</property>
<property name="maximum">
<number>200</number>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>200</number>
</property>
<property name="value">
<number>30</number>
</property>
@ -8140,9 +8117,9 @@
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="SequenceAnimateButtonsHLayout" stretch="0,0,0,0">
</item>
<item>
<layout class="QHBoxLayout" name="SequenceAnimateButtonsHLayout" stretch="0,0">
<property name="spacing">
<number>2</number>
</property>

View File

@ -176,16 +176,16 @@ void Fractorium::FillXaosTable()
m_AppliedXaosTableModel->setVerticalHeaderLabels(vl);
ui.XaosDistVizTableWidget->setRowCount(1);
ui.XaosDistVizTableWidget->setColumnCount(count);
ui.XaosDistVizTableWidget->setHorizontalHeaderLabels(hl);
ui.XaosDistVizTableWidget->setVerticalHeaderLabels(blanks);
ui.XaosDistVizTableWidget->verticalHeader()->setSectionsClickable(false);
ui.XaosDistVizTableWidget->horizontalHeader()->setSectionsClickable(false);
ui.XaosTableView->setModel(m_XaosTableModel);
ui.XaosAppliedTableView->setModel(m_AppliedXaosTableModel);
ui.XaosTableView->setItemDelegate(m_XaosTableItemDelegate);//No need for a delegate on the applied table because it's read-only.
ui.XaosDistVizTableWidget->verticalHeader()->setFixedWidth(ui.XaosTableView->verticalHeader()->width());
SetTabOrder(this, ui.ClearXaosButton, ui.RandomXaosButton);
ui.XaosDistVizTableWidget->setRowHeight(0, ui.XaosTableView->rowHeight(0) * count);
ui.XaosDistVizTableWidget->setHorizontalHeaderLabels(hl);
ui.XaosDistVizTableWidget->setVerticalHeaderLabels(vl);
SetTabOrder(this, ui.ClearXaosButton, ui.RandomXaosButton);
ui.XaosDistVizTableWidget->verticalHeader()->setStyleSheet("QHeaderView::section::vertical { color: rgba(0, 0, 0, 0); }");
m_Controller->FillXaos();
m_Controller->FillAppliedXaos();
//Needed to get the dark stylesheet to correctly color the top left corner button.

View File

@ -20,15 +20,39 @@ FractoriumOptionsDialog::FractoriumOptionsDialog(QWidget* p, Qt::WindowFlags f)
ui.ThreadCountSpin->setRange(1, Timing::ProcessorCount());
connect(ui.OpenCLCheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnOpenCLCheckBoxStateChanged(int)), Qt::QueuedConnection);
connect(ui.DeviceTable, SIGNAL(cellChanged(int, int)), this, SLOT(OnDeviceTableCellChanged(int, int)), Qt::QueuedConnection);
SetupSpinner<SpinBox, int>(table, this, row, 1, m_XmlTemporalSamplesSpin, spinHeight, 1, 1000, 100, "", "", true, 1000);
SetupSpinner<SpinBox, int>(table, this, row, 1, m_XmlQualitySpin, spinHeight, 1, 200000, 50, "", "", true, 1000);
SetupSpinner<SpinBox, int>(table, this, row, 1, m_XmlSupersampleSpin, spinHeight, 1, 4, 1, "", "", true, 2);
SetupSpinner<SpinBox, int>(table, this, row, 1, m_XmlTemporalSamplesSpin, spinHeight, 1, 100000, 100, "", "", true, 300, 100, 100);
SetupSpinner<SpinBox, int>(table, this, row, 1, m_XmlQualitySpin, spinHeight, 1, 200000, 50, "", "", true, 1000, 1000, 1000);
SetupSpinner<SpinBox, int>(table, this, row, 1, m_XmlSupersampleSpin, spinHeight, 1, 4, 1, "", "", true, 2, 2, 2);
m_IdEdit = new QLineEdit(ui.OptionsIdentityTable);
ui.OptionsIdentityTable->setCellWidget(0, 1, m_IdEdit);
m_UrlEdit = new QLineEdit(ui.OptionsIdentityTable);
ui.OptionsIdentityTable->setCellWidget(1, 1, m_UrlEdit);
m_NickEdit = new QLineEdit(ui.OptionsIdentityTable);
ui.OptionsIdentityTable->setCellWidget(2, 1, m_NickEdit);
auto dspin = ui.OpenCLSubBatchPctSpin;
dspin->DoubleClick(true);
dspin->DoubleClickZero(0.025);
dspin->DoubleClickNonZero(0.025);
auto spin = ui.CpuQualitySpin;
spin->DoubleClick(true);
spin->DoubleClickZero(10);
spin->DoubleClickNonZero(10);
spin = ui.OpenCLQualitySpin;
spin->DoubleClick(true);
spin->DoubleClickZero(30);
spin->DoubleClickNonZero(30);
spin = ui.CpuSubBatchSpin;
spin->DoubleClick(true);
spin->DoubleClickZero(1);
spin->DoubleClickNonZero(1);
spin = ui.OpenCLSubBatchSpin;
spin->DoubleClick(true);
spin->DoubleClickZero(1);
spin->DoubleClickNonZero(1);
spin = ui.RandomCountSpin;
spin->DoubleClick(true);
spin->DoubleClickZero(1);
spin->DoubleClickNonZero(1);
table->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
ui.OptionsIdentityTable->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
table = ui.DeviceTable;

View File

@ -193,15 +193,15 @@
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>22</number>
</attribute>
<row>
<property name="text">
<string>AMD</string>
@ -221,25 +221,16 @@
<property name="text">
<string>Use</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
<column>
<property name="text">
<string>Primary</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
<column>
<property name="text">
<string>Device</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
</widget>
</item>
@ -290,36 +281,36 @@
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="OpenCLQualitySpin">
<widget class="SpinBox" name="OpenCLQualitySpin" native="true">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The default quality per device to use for the interactive renderer when using OpenCL.&lt;/p&gt;&lt;p&gt;30 is a good number for this, but you can use a larger value if you have a faster GPU.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="prefix">
<property name="prefix" stdset="0">
<string>OpenCL Quality </string>
</property>
<property name="minimum">
<property name="minimum" stdset="0">
<number>1</number>
</property>
<property name="maximum">
<property name="maximum" stdset="0">
<number>99999</number>
</property>
<property name="value">
<property name="value" stdset="0">
<number>30</number>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QSpinBox" name="OpenCLSubBatchSpin">
<widget class="SpinBox" name="OpenCLSubBatchSpin" native="true">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The number of ~8M iteration chunks ran using OpenCL in interactive mode for each mouse movement.&lt;/p&gt;&lt;p&gt;Increase this number for a higher quality image on each mouse movement, at the expense of responsiveness.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="prefix">
<property name="prefix" stdset="0">
<string>OpenCL chunks per mouse movement </string>
</property>
<property name="minimum">
<property name="minimum" stdset="0">
<number>1</number>
</property>
<property name="maximum">
<property name="maximum" stdset="0">
<number>100</number>
</property>
</widget>
@ -372,93 +363,93 @@
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="CpuSubBatchSpin">
<widget class="SpinBox" name="CpuSubBatchSpin" native="true">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The number of ~10,000 iteration chunks ran per thread on the CPU in interactive mode for each mouse movement.&lt;/p&gt;&lt;p&gt;Increase this number for a higher quality image on each mouse movement, at the expense of responsiveness.&lt;/p&gt;&lt;p&gt;The number of iterations done in each chunk is controlled by the Sub Batch Size field in the Flame tab.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="prefix">
<property name="prefix" stdset="0">
<string>CPU chunks per mouse movement </string>
</property>
<property name="minimum">
<property name="minimum" stdset="0">
<number>1</number>
</property>
<property name="maximum">
<property name="maximum" stdset="0">
<number>100</number>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QSpinBox" name="ThreadCountSpin">
<widget class="SpinBox" name="ThreadCountSpin" native="true">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The number of threads to use with CPU rendering.&lt;/p&gt;&lt;p&gt;Decrease for more responsive editing, increase for better performance.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="prefix">
<property name="prefix" stdset="0">
<string>Threads </string>
</property>
<property name="minimum">
<property name="minimum" stdset="0">
<number>1</number>
</property>
<property name="maximum">
<property name="maximum" stdset="0">
<number>64</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QSpinBox" name="RandomCountSpin">
<widget class="SpinBox" name="RandomCountSpin" native="true">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The number of random flames to generate on startup.&lt;/p&gt;&lt;p&gt;These are usually of low quality, so leave the count as 1 unless you are searching for good randoms.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="prefix">
<property name="prefix" stdset="0">
<string>Randoms </string>
</property>
<property name="minimum">
<property name="minimum" stdset="0">
<number>1</number>
</property>
<property name="maximum">
<property name="maximum" stdset="0">
<number>99999</number>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QDoubleSpinBox" name="OpenCLSubBatchPctSpin">
<widget class="DoubleSpinBox" name="OpenCLSubBatchPctSpin" native="true">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The percentage of a sub batch to execute on each thread per kernel call when using OpenCL in interactive mode. Default: 0.025 (256 iters).&lt;/p&gt;&lt;p&gt;Increase this number for a higher quality image on each mouse movement, at the expense of responsiveness.&lt;/p&gt;&lt;p&gt;Note that this can cause a crash and subsequent restart of the graphics driver if each kernel call takes too long. So reduce the value if you encounter such a problem.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="prefix">
<property name="prefix" stdset="0">
<string>OpenCL sub batch percent per thread </string>
</property>
<property name="decimals">
<property name="decimals" stdset="0">
<number>3</number>
</property>
<property name="minimum">
<property name="minimum" stdset="0">
<double>0.010000000000000</double>
</property>
<property name="maximum">
<property name="maximum" stdset="0">
<double>1.000000000000000</double>
</property>
<property name="singleStep">
<property name="singleStep" stdset="0">
<double>0.010000000000000</double>
</property>
<property name="value">
<property name="value" stdset="0">
<double>0.025000000000000</double>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="CpuQualitySpin">
<widget class="SpinBox" name="CpuQualitySpin" native="true">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The default quality to use for the interactive renderer when using the CPU.&lt;/p&gt;&lt;p&gt;10 is a good number for this, but you can use a larger value if you have a faster system.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="prefix">
<property name="prefix" stdset="0">
<string>CPU Quality </string>
</property>
<property name="minimum">
<property name="minimum" stdset="0">
<number>1</number>
</property>
<property name="maximum">
<property name="maximum" stdset="0">
<number>99999</number>
</property>
<property name="value">
<property name="value" stdset="0">
<number>10</number>
</property>
</widget>
@ -638,30 +629,30 @@
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>35</number>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>110</number>
</attribute>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>35</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
@ -831,30 +822,30 @@
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>35</number>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>110</number>
</attribute>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>35</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>22</number>
</attribute>
<attribute name="verticalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
@ -952,6 +943,18 @@
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>SpinBox</class>
<extends>QWidget</extends>
<header>spinbox.h</header>
</customwidget>
<customwidget>
<class>DoubleSpinBox</class>
<extends>QWidget</extends>
<header>doublespinbox.h</header>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>EarlyClipCheckBox</tabstop>
<tabstop>OpenCLCheckBox</tabstop>

View File

@ -12,9 +12,9 @@ FRACTORIUM_RPM_PACKAGE=$BUILD_PATH/../Bin/rpmbuild
EXTRA_LIBS=/usr/lib/x86_64-linux-gnu
# replace 5.12.8 by your QT version, and ensure the installation path is the same
QT_PATH=/home/$USER/Dev/Qt/5.12.8/gcc_64/bin
QT_PATH=/home/$USER/Dev/Qt/6.5.1/gcc_64/bin
LINUX_DEPLOY_QT=/home/$USER/Dev/linuxdeployqt-6-x86_64.AppImage
LINUX_DEPLOY_QT=/home/$USER/Dev/linuxdeployqt-continuous-x86_64.AppImage
APP_IMAGE_TOOL=/home/$USER/Dev/appimagetool-x86_64.AppImage
#######################
@ -84,12 +84,12 @@ cp $FRACTORIUM_RELEASE_ROOT/ember* $FRACTORIUM_BIN
cp $FRACTORIUM_RELEASE_ROOT/fractorium $FRACTORIUM_BIN
cp $FRACTORIUM_RELEASE_ROOT/lib* $FRACTORIUM_LIB
cp $EXTRA_LIBS/libHalf.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIex-2_2.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIexMath-2_2.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIlmImf-2_2.so.22 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIlmThread-2_2.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libImath-2_2.so.12 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libHalf.so $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIex.so $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIexMath.so $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIlmImf.so $FRACTORIUM_LIB
cp $EXTRA_LIBS/libIlmThread.so $FRACTORIUM_LIB
cp $EXTRA_LIBS/libImath.so $FRACTORIUM_LIB
cp $EXTRA_LIBS/libjpeg.so.8 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libpng16.so.16 $FRACTORIUM_LIB
cp $EXTRA_LIBS/libOpenCL.so.1 $FRACTORIUM_LIB