--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:
Person 2017-12-21 20:09:08 -08:00
parent 6d38e57b38
commit 7a343606b4
7 changed files with 18 additions and 10 deletions

View File

@ -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

View File

@ -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.

View File

@ -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; }

View File

@ -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"

View File

@ -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.

View File

@ -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();

View File

@ -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>