diff --git a/Data/BuildGuideLinux.md b/Data/BuildGuideLinux.md
index 61b9a0b..ec408a9 100644
--- a/Data/BuildGuideLinux.md
+++ b/Data/BuildGuideLinux.md
@@ -1,6 +1,6 @@
# Build Guide for Linux
-The following has been tested on Ubuntu 17.10 (artful).
+The following has been tested on Ubuntu 20.
Make sure the package lists are up-to-date:
@@ -13,13 +13,13 @@ Install `git` and clone the repository:
```
sudo apt-get install git
-git clone --depth=1 https://mfeemster@bitbucket.org/mfeemster/fractorium.git
+git clone https://mfeemster@bitbucket.org/mfeemster/fractorium.git
```
Install the dependencies.
```
-sudo apt-get install g++ libc6-dev libgl1-mesa-dev libgl-dev libglm-dev libjpeg-dev libpng-dev libqt5opengl5-dev libtbb-dev libxml2-dev ocl-icd-libopencl1 ocl-icd-opencl-dev opencl-headers qt5-default qt5-qmake qtbase5-dev libopenexr22 libopenexr-dev
+sudo apt-get install g++ libxcb-cursor0 libc6-dev libgl1-mesa-dev libgl-dev libglm-dev libjpeg-dev libpng-dev libqt6opengl6-dev libxml2-dev ocl-icd-libopencl1 ocl-icd-opencl-dev opencl-headers qt6-default qt6-qmake qtbase6-dev libopenexr25 libopenexr-dev
```
Install the OpenCL drivers and opencl support for your hardware.
@@ -36,10 +36,10 @@ Optionally you can install the Nvidia-specific `nvidia-libopencl1-384` package,
but keep in mind that this will remove the generic ones (`ocl-icd-opencl-dev`
and `ocl-icd-libopencl1`).
-If you have both Qt 4 and 5 installed, select Qt 5 before compilation:
+If you have both Qt 5 and 6 installed, select Qt 6 before compilation:
```
-export QT_SELECT=qt5
+export QT_SELECT=qt6
```
Compile the binaries, they will be created in the `Bin/release` folder.
diff --git a/Data/BuildGuideMacOSX.md b/Data/BuildGuideMacOSX.md
index ce8d113..7e57db7 100644
--- a/Data/BuildGuideMacOSX.md
+++ b/Data/BuildGuideMacOSX.md
@@ -2,21 +2,22 @@
Install Xcode from the App Store
-Install Qt 5.4.2 (Note, newer versions of Qt up to and including 5.8 have a bug with drawing OpenGL lines)
+Install Qt 6.5.1
Install [homebrew](http://brew.sh/).
-Install `git` and clone the repository:
+Install Command Line Tools for Xcode
+
+Clone the repository:
```
-brew install git
git clone https://mfeemster@bitbucket.org/mfeemster/fractorium.git
```
Install the dependencies:
```
-brew install qt5 tbb glm jpeg libpng glib libxml2 openexr
+brew install glm jpeg libpng glib openexr@2
```
Add the Qt `bin` folder to `PATH` to make `qmake` available. In
diff --git a/Data/BuildGuideQtCreator.md b/Data/BuildGuideQtCreator.md
index 23ae734..5aa8a2f 100644
--- a/Data/BuildGuideQtCreator.md
+++ b/Data/BuildGuideQtCreator.md
@@ -1,4 +1,4 @@
-# Build Guide For Visual Studio 2019 or Qt Creator
+# Build Guide For Visual Studio 2022 or Qt Creator
## Tools
### git
@@ -7,15 +7,15 @@ Install [git](https://git-scm.com/downloads).
### Visual Studio
-Install [Microsoft Visual Studio 2019 or later](https://www.visualstudio.com/downloads/), then install the latest updates.
+Install [Microsoft Visual Studio 2022 or later](https://www.visualstudio.com/downloads/), then install the latest updates.
### Qt
-Install Qt for Windows 64-bit (VS 2017) 5.12.8 or later (http://www.qt.io/download/).
+Install Qt for Windows 64-bit (VS 2019) 6.5.1 or later (http://www.qt.io/download/).
Add system environment variable named `QTPATH` and point it to the location of the Qt folder. On a default install, this will be something like:
-`C:\Qt\5.12.8\msvc2017_64`
+`C:\Qt\6.5.1\msvc2019_64`
### Wix
@@ -59,7 +59,7 @@ Go into the fractorium folder and run this script which will get the rest of the
`makedeps.bat`
-This will download and build `glm libopenexr libpng libxml tbb zlib`. You will have a folder structure like this:
+This will download and build `glm libopenexr libpng libxml zlib`. You will have a folder structure like this:
```
[fractorium]
@@ -69,32 +69,25 @@ This will download and build `glm libopenexr libpng libxml tbb zlib`. You will h
├─libpng
├─libxml2
├─openexr
-├─tbb
└─fractorium
│
├─Deps
│
+ ├─Iex-3_1.dll
+ ├─IlmThread-3_1.dll
+ ├─IMath-3_1.dll
+ ├─libxml2.dll
+ ├─OpenEXR-3_1.dll
+ ├─Iex-3_1.lib
+ ├─IlmThread-3_1.lib
+ ├─Imath-3_1.lib
├─libjpeg.lib
├─libpng.lib
├─libxml2.lib
- ├─libxml2.dll
- ├─tbb.dll
- ├─tbb.lib
+ ├─OpenEXR-3_1.lib
+ ├─OpenEXRCore-3_1.lib
+ ├─OpenEXRUtil-3_1.lib
├─zlib.lib
- ├─Half-2_3.lib
- ├─Iex-2_3.lib
- ├─IexMath-2_3.lib
- ├─IlmImf-2_3.lib
- ├─IlmImfUtil-2_3.lib
- ├─IlmThread-2_3.lib
- ├─Imath-2_3.lib
- ├─Half-2_3.dll
- ├─Iex-2_3.dll
- ├─IexMath-2_3.dll
- ├─IlmImf-2_3.dll
- ├─IlmImfUtil-2_3.dll
- ├─IlmThread-2_3.dll
- ├─Imath-2_3.dll
```
## Building with Qt Creator or Visual Studio
@@ -120,17 +113,17 @@ The outputs will be placed in `fractorium/Bin/release` several minutes later if
Install the [Visual Studio Qt Addon](http://www.qt.io/download/).
-Run Visual Studio and verify there is a menu item named *Qt5*. Click on it and click *Qt Options*.
+Run Visual Studio and verify there is a menu item named *Qt6*. Click on it and click *Qt Options*.
-Add a new Qt version to the list with the exact name of "Qt5", and set its path to the same as `$QTPATH`, which will be something like:
+Add a new Qt version to the list with the exact name of "Qt6", and set its path to the same as `$QTPATH`, which will be something like:
-`C:\Qt\5.12.8\msvc2017_64`
+`C:\Qt\6.5.1\msvc2019_64`
-The name "Qt5" must match exactly and this step must be completed before the Fractorium solution is opened. If not, the Qt add-in will completely ruin all solution and project files that use Qt.
+The name "Qt6" must match exactly and this step must be completed before the Fractorium solution is opened. If not, the Qt add-in will completely ruin all solution and project files that use Qt.
Set the default version to the newly created Qt version and click *Ok*.
-Open the file Fractorium.sln under Builds/MSVC/2019
+Open the file Fractorium.sln under Builds/MSVC
Set the configuration to release, and build all.
@@ -154,17 +147,13 @@ Apatite_Supergroup.ugr
boxtail_pack_02.gradient
boxtail_pack_03_triangle.gradient
boxtail_pack_04_mineshack.gradient
+concrt140.dll
dark_windows.qss
-lightdark.qss
-ember.dll
-ember.exp
-ember.lib
-emberanimate.exe
-embercl.dll
-embercl.exp
-embercl.lib
-embergenome.exe
-emberrender.exe
+Ember.dll
+EmberAnimate.exe
+EmberCL.dll
+EmberGenome.exe
+EmberRender.exe
fardareismai_pack_01_variety_number_128.gradient
fardareismai_pack_02_b_sides.gradient
fardareismai_pack_03_old_and_new.gradient
@@ -172,18 +161,20 @@ fardareismai_pack_04_hoard.gradient
Feldspar_Group.ugr
flam3-palettes.xml
fractaldesire_pack_01.gradient
-fractorium.exe
-half-2_3.dll
-iex-2_3.dll
-iexmath-2_3.dll
-ilmimf-2_3.dll
-ilmthread-2_3.dll
-imath-2_3.dll
+Fractorium.exe
+Iex-3_1.dll
+IlmThread-3_1.dll
+Imath-3_1.dll
libxml2.dll
+lightdark.qss
Mica_Group.ugr
-Qt5Core.dll
-Qt5Gui.dll
-Qt5Widgets.dll
+msvcp140.dll
+OpenEXR-3_1.dll
+Qt6Core.dll
+Qt6Gui.dll
+Qt6OpenGL.dll
+Qt6OpenGLWidgets.dll
+Qt6Widgets.dll
Quartz_Varieties.ugr
rce_ordinary_pack_01_colornation.gradient
tatasz_pack_01.gradient
@@ -191,75 +182,87 @@ tatasz_pack_02_colder.gradient
tatasz_pack_02_dark.gradient
tatasz_pack_02_warmer.gradient
tatasz_pack_03.gradient
-tbb.dll
+tatasz_pack_04.gradient
+tatasz_pack_05.gradient
+tatasz_pack_06.gradient
+tatasz_pack_07.gradient
+uranium.qss
+user-palettes.xml
+vccorlib140.dll
+vcruntime140.dll
+vcruntime140_1.dll
imageformats\qjpeg.dll
platforms\qwindows.dll
```
Double click fractorium.exe to run it, and use the command line to run the others.
-To run on a computer without Visual Studio 2017, these files also need to be in the folder:
+To run on a computer without Visual Studio 2022, these files also need to be in the folder:
```
-2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\msvcp140.dll
-2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vcruntime140.dll
-2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vcruntime140_1.dll
-2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vccorlib140.dll
-2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\concrt140.dll
+C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\msvcp140.dll
+C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\vcruntime140.dll
+C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\vcruntime140_1.dll
+C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\vccorlib140.dll
+C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\concrt140.dll
```
-or you can install [Visual C++ Redistributable Packages for Visual Studio 2019 (64 bit)](https://www.visualstudio.com/downloads/)
+or you can install [Visual C++ Redistributable Packages for Visual Studio 2022 (64 bit)](https://www.visualstudio.com/downloads/)
## Final file structure for distribution
```
[YOUR FOLDER]
│
- ├─ Amphibole_Supergroup.ugr
- ├─ Apatite_Supergroup.ugr
- ├─ boxtail_pack_02.gradient
- ├─ boxtail_pack_03_triangle.gradient
- ├─ boxtail_pack_04_mineshack.gradient
- ├─ dark_windows.qss
- ├─ lightdark.qss
- ├─ ember.dll
- ├─ emberanimate.exe
- ├─ embercl.dll
- ├─ embergenome.exe
- ├─ emberrender.exe
- ├─ fardareismai_pack_01_variety_number_128.gradient
- ├─ fardareismai_pack_02_b_sides.gradient
- ├─ fardareismai_pack_03_old_and_new.gradient
- ├─ fardareismai_pack_04_hoard.gradient
- ├─ Feldspar_Group.ugr
- ├─ flam3-palettes.xml
- ├─ fractaldesire_pack_01.gradient
- ├─ fractorium.exe
- ├─ half-2_3.dll
- ├─ iex-2_3.dll
- ├─ iexmath-2_3.dll
- ├─ ilmimf-2_3.dll
- ├─ ilmthread-2_3.dll
- ├─ imath-2_3.dll
- ├─ libxml2.dll
- ├─ Mica_Group.ugr
- ├─ Qt5Core.dll
- ├─ Qt5Gui.dll
- ├─ Qt5Widgets.dll
- ├─ Quartz_Varieties.ugr
- ├─ rce_ordinary_pack_01_colornation.gradient
- ├─ tatasz_pack_01.gradient
- ├─ tatasz_pack_02_colder.gradient
- ├─ tatasz_pack_02_dark.gradient
- ├─ tatasz_pack_02_warmer.gradient
- ├─ tatasz_pack_03.gradient
- ├─ tbb.dll
- │
- ├─ msvcp140.dll (optional)
- ├─ vcruntime140.dll (optional)
- ├─ vcruntime140_1.dll (optional)
- ├─ vccorlib140.dll (optional)
- ├─ concrt140.dll (optional)
+ ├─Amphibole_Supergroup.ugr
+ ├─Apatite_Supergroup.ugr
+ ├─boxtail_pack_02.gradient
+ ├─boxtail_pack_03_triangle.gradient
+ ├─boxtail_pack_04_mineshack.gradient
+ ├─dark_windows.qss
+ ├─Ember.dll
+ ├─EmberAnimate.exe
+ ├─EmberCL.dll
+ ├─EmberGenome.exe
+ ├─EmberRender.exe
+ ├─fardareismai_pack_01_variety_number_128.gradient
+ ├─fardareismai_pack_02_b_sides.gradient
+ ├─fardareismai_pack_03_old_and_new.gradient
+ ├─fardareismai_pack_04_hoard.gradient
+ ├─Feldspar_Group.ugr
+ ├─flam3-palettes.xml
+ ├─fractaldesire_pack_01.gradient
+ ├─Fractorium.exe
+ ├─Iex-3_1.dll
+ ├─IlmThread-3_1.dll
+ ├─Imath-3_1.dll
+ ├─libxml2.dll
+ ├─lightdark.qss
+ ├─Mica_Group.ugr
+ ├─OpenEXR-3_1.dll
+ ├─Qt6Core.dll
+ ├─Qt6Gui.dll
+ ├─Qt6OpenGL.dll
+ ├─Qt6OpenGLWidgets.dll
+ ├─Qt6Widgets.dll
+ ├─Quartz_Varieties.ugr
+ ├─rce_ordinary_pack_01_colornation.gradient
+ ├─tatasz_pack_01.gradient
+ ├─tatasz_pack_02_colder.gradient
+ ├─tatasz_pack_02_dark.gradient
+ ├─tatasz_pack_02_warmer.gradient
+ ├─tatasz_pack_03.gradient
+ ├─tatasz_pack_04.gradient
+ ├─tatasz_pack_05.gradient
+ ├─tatasz_pack_06.gradient
+ ├─tatasz_pack_07.gradient
+ ├─uranium.qss
+ ├─user-palettes.xml
+ ├─msvcp140.dll (optional)
+ ├─vcruntime140.dll (optional)
+ ├─vcruntime140_1.dll (optional)
+ ├─vccorlib140.dll (optional)
+ ├─concrt140.dll (optional)
│
└─imageformats
│
diff --git a/Data/Fractorium.spec b/Data/Fractorium.spec
index 43e406b..bdfacd2 100644
--- a/Data/Fractorium.spec
+++ b/Data/Fractorium.spec
@@ -2,7 +2,7 @@
%define buildroot %{_topdir}/BUILDROOT
Name: Fractorium
-Version: 22.21.4.2
+Version: 23.23.8.1
Release: 1
Summary: A fractal flame editor with GPU support
diff --git a/Data/LinuxRelease.md b/Data/LinuxRelease.md
index 11b3b24..015ca48 100644
--- a/Data/LinuxRelease.md
+++ b/Data/LinuxRelease.md
@@ -10,7 +10,7 @@ Starting with a fresh clone from bitbucket.org. It will not work unless it's tot
```
$ git clone https://mfeemster@bitbucket.org/mfeemster/fractorium.git
$ cd fractorium
-$ qmake main.pro -r -spec linux-g++-64 CONFIG+="release native"
+$ qmake main.pro -r -spec linux-g++-64 CONFIG+=release
```
### Building a `.deb` locally
@@ -69,7 +69,7 @@ To build the AppImage after successfully building using the make after qmake has
Ensure you these have two files in the folder up one level from the fractorium folder:
-`linuxdeployqt-6-x86_64.AppImage`
+`linuxdeployqt-continuous-x86_64.AppImage`
`appimagetool-x86_64.AppImage`
diff --git a/Data/Version History.txt b/Data/Version History.txt
index 03e3ec8..48e4219 100644
--- a/Data/Version History.txt
+++ b/Data/Version History.txt
@@ -1,3 +1,51 @@
+23.23.8.1 8/6/2023
+
+--User changes
+ -Add Clear Sequence button to the Sequence Panel.
+ -Add animation preview in the sequence generator output pane.
+ -Add two new options --width and --height to EmberRender and EmberAnimate to allow the user to specify absolute dimensions to render the image at.
+ -Add a new option to EmberAnimate --ignore-existing which makes it skip rendering a frame if the files from all of the requested extensions for that frame already exist.
+ -Add new preset dimensions to the right click menu of the width and height fields in the editor.
+ -Make various fields in the Options window be resettable via double click.
+ -Fix various bugs in stylesheets to get them working properly on Windows and Linux with Qt6.
+ --Change QSS stylesheets to properly handle tabs.
+ --Make tabs rectangular by default. For some reason, they had always been triangular.
+ --Set default style to Fusion.
+ -Change installer to install to program files for all users.
+
+--Bug fixes
+ -Handle forward slashes better in file output paths.
+ -Start and end tags were not properly included in the final render backup file output.
+ -Numbering of rendered files was wrong.
+ -Truchet_hex_fill was not compiling with some newer Nvidia drivers.
+ -Contrast was too sensitive.
+ -Incremental rendering times in the editor were wrong.
+ -Proper sizing of vertical header on the xaos visualization table on Linux.
+ -Options window layout was completely broken.
+ -Error when saving screen on macOS at first time.
+ -Center progress bars on Linux.
+
+--Code changes
+ -Upgrade openexr to version 3.1.3.
+ -Remove all dependencies on Intel Threading Building Blocks and write our own version of parallel_for().
+ -Test if directories exist before adding to INCLUDEPATH.
+ -Fix compiler warnings in XmlToEmber.
+ -Remove unused varIndex = IndexInXform.
+ -Change Sequence Preview to PREVIEW_SIZE (128).
+ -Add include for /usr/include/Imath for OpenEXR to defaults.pri because it wasn't building on some linux systems with out it.
+ -Fix warning about unused CLStrings.
+ -Migrate to VS2022 and no longer use a version specific folder for the VS solution and project files. It is now under a version agnostic folder called Solution.
+ -Migrate to Qt6. There is probably more work to be done here.
+ -Migrate to Wix 4 installer.
+ -Fix many VS2022 code analysis warnings.
+ -No longer use byte typedef, because std::byte is now a type. Revert all back to unsigned char.
+ -Upgrade OpenCL headers to version 3.0 and keep locally now rather than trying to look for system files.
+ -No longer link to Nvidia or AMD specific OpenCL libraries. Use the generic installer located at OCL_ROOT.
+ -Add the ability to change OpenCL grid dimensions. This was attempted for investigating possible performance improvments, but made no difference.
+ -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 to get it to build.
+
22.21.4.2 4/19/2021
--User changes
diff --git a/Data/control.package b/Data/control.package
index e49b704..a2fb1f0 100644
--- a/Data/control.package
+++ b/Data/control.package
@@ -8,7 +8,7 @@ Homepage: http://fractorium.com/
Vcs-Git: https://bitbucket.org/mfeemster/fractorium
Vcs-Browser: https://bitbucket.org/mfeemster/fractorium
Package: Fractorium
-Version: 22.21.4.2
+Version: 23.23.8.1
Architecture: amd64
Description: A fractal flame editor with GPU support
Fractorium
diff --git a/Source/Fractorium/FractoriumParams.cpp b/Source/Fractorium/FractoriumParams.cpp
index 676ad28..36dc00b 100644
--- a/Source/Fractorium/FractoriumParams.cpp
+++ b/Source/Fractorium/FractoriumParams.cpp
@@ -148,13 +148,15 @@ void Fractorium::InitParamsUI()
/// The height of the preset
void Fractorium::AddSizePreset(QString name, int w, int h)
{
- auto widthAction = new QAction(name, m_WidthSpin);
+ QString caption;
+ QTextStream(&caption) << name << " (" << ToString(w) << " x " << ToString(h) << ")";
+ auto widthAction = new QAction(caption, m_WidthSpin);
connect(widthAction, SIGNAL(triggered(bool)), this, SLOT(PresetWidthActionTriggered(bool)), Qt::QueuedConnection);
m_WidthSpin->addAction(widthAction);
- auto heightAction = new QAction(name, m_HeightSpin);
+ auto heightAction = new QAction(caption, m_HeightSpin);
connect(heightAction, SIGNAL(triggered(bool)), this, SLOT(PresetHeightActionTriggered(bool)), Qt::QueuedConnection);
m_HeightSpin->addAction(heightAction);
- m_HeightPresets[name] = std::pair(w, h);
+ m_HeightPresets[caption] = std::pair(w, h);
}
///