mirror of
https://bitbucket.org/mfeemster/fractorium.git
synced 2025-02-01 10:30:08 -05:00
--Bug fixes
-Fix crash when creating a dummy renderer when showing the final render dialog. -Fix default tab size with new version of Qt.
This commit is contained in:
parent
6d38e57b38
commit
7a343606b4
@ -13,7 +13,7 @@
|
|||||||
<!--
|
<!--
|
||||||
Change this for every release.
|
Change this for every release.
|
||||||
-->
|
-->
|
||||||
<?define ProductCode="{FCEA107E-1FEE-4510-8361-6509749BEF80}"?>
|
<?define ProductCode="{4E5EFBC9-8572-4B82-A99E-A275DEA7A609}"?>
|
||||||
|
|
||||||
<Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
|
<Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
|
||||||
<Package
|
<Package
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
1.0.0.7 11/26/2017
|
1.0.0.7 12/21/2017
|
||||||
--User changes
|
--User changes
|
||||||
-Support 4k monitors, and in general, properly scale any monitor that is not HD.
|
-Support 4k monitors, and in general, properly scale any monitor that is not HD.
|
||||||
-Allow for a spatial filter of radius zero, which means do not use a spatial filter.
|
-Allow for a spatial filter of radius zero, which means do not use a spatial filter.
|
||||||
-Add new variations: concentric, cpow3, helicoid, helix, rand_cubes, sphereblur.
|
-Add new variations: concentric, cpow3, helicoid, helix, rand_cubes, rays1, rays2, rays3, sphereblur.
|
||||||
-Use a new method for computing elliptic which is more precise. Developed by Discord user Claude.
|
-Use a new method for computing elliptic which is more precise. Developed by Discord user Claude.
|
||||||
-Remove the 8 variation per xform limitation on the GPU.
|
-Remove the 8 variation per xform limitation on the GPU.
|
||||||
-Allow for loading the last flame file on startup, rather than randoms.
|
-Allow for loading the last flame file on startup, rather than randoms.
|
||||||
@ -13,6 +13,10 @@
|
|||||||
-No variations in an xform used to have the same behavior as a single linear variation with weight 1. While sensible, this breaks backward compatibility. No variations now sets the output point to zeroes.
|
-No variations in an xform used to have the same behavior as a single linear variation with weight 1. While sensible, this breaks backward compatibility. No variations now sets the output point to zeroes.
|
||||||
-Prevent crashing the program when adjusting a value on the main window while a final render is in progress.
|
-Prevent crashing the program when adjusting a value on the main window while a final render is in progress.
|
||||||
-The xaos table was inverted.
|
-The xaos table was inverted.
|
||||||
|
-Place the xforms and palette tabs in a scroll area to prevent weird sizing problems on low resolution monitors.
|
||||||
|
-Allow group dragging and floating of dock widgets.
|
||||||
|
-Make some tables auto size to their contents because some text appeared obscured on Linux.
|
||||||
|
-Opening an Xml was not properly setting the background field on the GUI, even though it was correctly parsed and used.
|
||||||
|
|
||||||
--Code changes
|
--Code changes
|
||||||
-Convert projects to Visual Studio 2017.
|
-Convert projects to Visual Studio 2017.
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
This is needed to deal with the large tabs in the fusion theme which is the default on Linux, and optional on Windows.
|
This is needed to deal with the large tabs in the fusion theme which is the default on Linux, and optional on Windows.
|
||||||
It's not needed for other themes.
|
It's not needed for other themes.
|
||||||
You should keep this at the top of whatever custom style you make to ensure the tabs aren't unusually large.*/
|
You should keep this at the top of whatever custom style you make to ensure the tabs aren't unusually large.*/
|
||||||
QTabBar::tab { height: 5ex; }
|
QTabBar::tab { height: 3ex; }
|
||||||
|
|
||||||
/*This is needed to give the labels on the status bar some padding.*/
|
/*This is needed to give the labels on the status bar some padding.*/
|
||||||
QStatusBar QLabel { padding-left: 2px; padding-right: 2px; }
|
QStatusBar QLabel { padding-left: 2px; padding-right: 2px; }
|
||||||
|
@ -497,7 +497,7 @@ static QString BaseStyle()
|
|||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
"QTabBar::tab { height: 3ex; }\n\n"
|
"QTabBar::tab { height: 3ex; }\n\n"
|
||||||
#else
|
#else
|
||||||
"QTabBar::tab { height: 5ex; }\n\n"
|
"QTabBar::tab { height: 3ex; }\n\n"
|
||||||
#endif
|
#endif
|
||||||
"/*This is needed to give the labels on the status bar some padding.*/\n"
|
"/*This is needed to give the labels on the status bar some padding.*/\n"
|
||||||
"QStatusBar QLabel { padding-left: 2px; padding-right: 2px; }\n\n"
|
"QStatusBar QLabel { padding-left: 2px; padding-right: 2px; }\n\n"
|
||||||
|
@ -243,6 +243,7 @@ public:
|
|||||||
virtual bool CreateRenderer(eRendererType renderType, const vector<pair<size_t, size_t>>& devices, bool updatePreviews, bool shared = true) { return false; }
|
virtual bool CreateRenderer(eRendererType renderType, const vector<pair<size_t, size_t>>& devices, bool updatePreviews, bool shared = true) { return false; }
|
||||||
virtual uint SizeOfT() const { return 0; }
|
virtual uint SizeOfT() const { return 0; }
|
||||||
virtual void ClearUndo() { }
|
virtual void ClearUndo() { }
|
||||||
|
virtual void DeleteRenderer() { }
|
||||||
virtual GLEmberControllerBase* GLController() { return nullptr; }
|
virtual GLEmberControllerBase* GLController() { return nullptr; }
|
||||||
bool RenderTimerRunning();
|
bool RenderTimerRunning();
|
||||||
void StartRenderTimer();
|
void StartRenderTimer();
|
||||||
@ -251,7 +252,6 @@ public:
|
|||||||
void ClearFinalImages();
|
void ClearFinalImages();
|
||||||
void Shutdown();
|
void Shutdown();
|
||||||
void UpdateRender(eProcessAction action = eProcessAction::FULL_RENDER);
|
void UpdateRender(eProcessAction action = eProcessAction::FULL_RENDER);
|
||||||
void DeleteRenderer();
|
|
||||||
void SaveCurrentRender(const QString& filename, const EmberImageComments& comments, vector<v4F>& pixels, size_t width, size_t height, bool png16Bit, bool transparency);
|
void SaveCurrentRender(const QString& filename, const EmberImageComments& comments, vector<v4F>& pixels, size_t width, size_t height, bool png16Bit, bool transparency);
|
||||||
RendererBase* Renderer() { return m_Renderer.get(); }
|
RendererBase* Renderer() { return m_Renderer.get(); }
|
||||||
vector<v4F>* FinalImage() { return &(m_FinalImage); }
|
vector<v4F>* FinalImage() { return &(m_FinalImage); }
|
||||||
@ -515,6 +515,7 @@ public:
|
|||||||
virtual int ProgressFunc(Ember<T>& ember, void* foo, double fraction, int stage, double etaMs) override;
|
virtual int ProgressFunc(Ember<T>& ember, void* foo, double fraction, int stage, double etaMs) override;
|
||||||
virtual void ClearUndo() override;
|
virtual void ClearUndo() override;
|
||||||
virtual GLEmberControllerBase* GLController() override { return m_GLController.get(); }
|
virtual GLEmberControllerBase* GLController() override { return m_GLController.get(); }
|
||||||
|
virtual void DeleteRenderer() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//Embers.
|
//Embers.
|
||||||
|
@ -93,11 +93,14 @@ void FractoriumEmberControllerBase::UpdateRender(eProcessAction action)
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Call Shutdown() then delete the renderer and clear the textures in the output window if there is one.
|
/// Call Shutdown() then delete the renderer and clear the textures in the output window if there is one.
|
||||||
|
/// Note the name is somewhat misleading because a new empty renderer is actually created as a placeholder.
|
||||||
|
/// This is that the program won't crash if the user adjusts any of the controls while the renderer is shut down.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void FractoriumEmberControllerBase::DeleteRenderer()
|
template <typename T>
|
||||||
|
void FractoriumEmberController<T>::DeleteRenderer()
|
||||||
{
|
{
|
||||||
Shutdown();
|
Shutdown();
|
||||||
m_Renderer = make_unique<EmberNs::Renderer<float, float>>();
|
m_Renderer = make_unique<EmberNs::Renderer<T, float>>();
|
||||||
|
|
||||||
if (GLController())
|
if (GLController())
|
||||||
GLController()->ClearWindow();
|
GLController()->ClearWindow();
|
||||||
|
@ -120,8 +120,8 @@ void Fractorium::OnAddXformButtonClicked(bool checked) { m_Controller->AddXform(
|
|||||||
/// From: All xaos values from the current xform are zero when going to any xform but the new one added, which is 1.
|
/// From: All xaos values from the current xform are zero when going to any xform but the new one added, which is 1.
|
||||||
/// To: The xaos value coming from the current xform is 1 and the xaos values from all other xforms are 0, when going to the newly added xform.
|
/// To: The xaos value coming from the current xform is 1 and the xaos values from all other xforms are 0, when going to the newly added xform.
|
||||||
/// Take different action when a single xform is selected vs. multiple.
|
/// Take different action when a single xform is selected vs. multiple.
|
||||||
/// Single: Copy current xform's xaos values to the new one.
|
/// Single: Copy the current xform's xaos values to the new one.
|
||||||
/// Multiple: Set new xform's xaos values to 1, and except the last entry which is 0.
|
/// Multiple: Set the new xform's xaos values to 1, and except the last entry which is 0.
|
||||||
/// Called when the add xform button is clicked.
|
/// Called when the add xform button is clicked.
|
||||||
/// Resets the rendering process.
|
/// Resets the rendering process.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
Loading…
Reference in New Issue
Block a user