From 10c12b525092966ef224db672a8f1ea74cee8071 Mon Sep 17 00:00:00 2001 From: mfeemster Date: Sat, 13 Feb 2016 17:24:51 -0800 Subject: [PATCH] --Code changes -Fix build. -Cleanup warnings. --- Builds/MSVC/VS2013/Fractorium.vcxproj | 9 +- Source/Ember/Ember.cpp | 3 +- Source/Ember/Ember.h | 2 +- Source/Ember/Interpolate.h | 12 +- Source/Ember/Isaac.h | 32 +- Source/Ember/PaletteList.h | 4 +- Source/Ember/Utils.h | 16 +- Source/Ember/Variations01.h | 2 +- Source/Ember/Variations02.h | 18 +- Source/Ember/Variations03.h | 4 +- Source/Ember/Variations06.h | 33 +- Source/Ember/Variations07.h | 2 +- Source/Ember/Xform.h | 4 +- Source/Ember/XmlToEmber.h | 589 +++++++++--------- Source/Fractorium/EmberFile.h | 4 +- Source/Fractorium/EmberTreeWidgetItem.h | 7 +- Source/Fractorium/FinalRenderDialog.cpp | 6 +- .../Fractorium/FinalRenderEmberController.cpp | 2 +- .../Fractorium/FinalRenderEmberController.h | 2 +- Source/Fractorium/FractoriumCommon.h | 8 +- .../Fractorium/FractoriumEmberController.cpp | 12 +- Source/Fractorium/FractoriumEmberController.h | 8 +- Source/Fractorium/FractoriumLibrary.cpp | 8 +- Source/Fractorium/FractoriumMenus.cpp | 35 +- Source/Fractorium/FractoriumPalette.cpp | 29 +- Source/Fractorium/FractoriumRender.cpp | 14 +- Source/Fractorium/FractoriumSettings.cpp | 4 +- Source/Fractorium/FractoriumSettings.h | 20 +- Source/Fractorium/FractoriumXforms.cpp | 10 +- Source/Fractorium/FractoriumXformsColor.cpp | 6 +- Source/Fractorium/GLEmberController.cpp | 6 +- Source/Fractorium/GLWidget.cpp | 22 +- Source/Fractorium/SpinBox.cpp | 2 + Source/Fractorium/SpinBox.h | 1 + Source/Fractorium/VariationsDialog.cpp | 4 +- 35 files changed, 472 insertions(+), 468 deletions(-) diff --git a/Builds/MSVC/VS2013/Fractorium.vcxproj b/Builds/MSVC/VS2013/Fractorium.vcxproj index a6339e1..531fb88 100644 --- a/Builds/MSVC/VS2013/Fractorium.vcxproj +++ b/Builds/MSVC/VS2013/Fractorium.vcxproj @@ -156,11 +156,12 @@ xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"FractoriumPch.h $(IntDir)$(TargetName).pch $(TargetDir)$(TargetName).pdb - 4661 + 4251;4661 /bigobj -Zm150 %(AdditionalOptions) true true false + Level3 Windows @@ -241,12 +242,13 @@ xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"FractoriumPch.h $(IntDir)$(TargetName).pch $(TargetDir)$(TargetName).pdb - 4661 + 4251;4661 true true false /bigobj -Zm150 %(AdditionalOptions) false + Level3 Windows @@ -274,11 +276,12 @@ xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"FractoriumPch.h $(IntDir)$(TargetName).pch $(TargetDir)$(TargetName).pdb - 4661 + 4251;4661 true true false /bigobj -Zm150 %(AdditionalOptions) + Level3 Windows diff --git a/Source/Ember/Ember.cpp b/Source/Ember/Ember.cpp index ed24524..eb6bd76 100644 --- a/Source/Ember/Ember.cpp +++ b/Source/Ember/Ember.cpp @@ -5,7 +5,8 @@ namespace EmberNs { template<> unique_ptr> QTIsaac::GlobalRand = unique_ptr>(new QTIsaac()); -template<> std::recursive_mutex QTIsaac::s_CS; +template<> unique_ptr QTIsaac::s_CS = unique_ptr(new recursive_mutex()); +template EMBER_API class QTIsaac; } #include "Curves.h" diff --git a/Source/Ember/Ember.h b/Source/Ember/Ember.h index 142aca7..856b6c9 100644 --- a/Source/Ember/Ember.h +++ b/Source/Ember/Ember.h @@ -101,7 +101,7 @@ public: m_FinalRasH = ember.m_FinalRasH; m_OrigFinalRasW = ember.m_OrigFinalRasW; m_OrigFinalRasH = ember.m_OrigFinalRasH; - m_OrigPixPerUnit = ember.m_OrigPixPerUnit; + m_OrigPixPerUnit = T(ember.m_OrigPixPerUnit); m_SubBatchSize = ember.m_SubBatchSize; m_FuseCount = ember.m_FuseCount; m_Supersample = ember.m_Supersample; diff --git a/Source/Ember/Interpolate.h b/Source/Ember/Interpolate.h index 6e09bee..dcfa744 100644 --- a/Source/Ember/Interpolate.h +++ b/Source/Ember/Interpolate.h @@ -828,11 +828,11 @@ public: //The first line below makes the first xform interpolate first. //The second line makes the last xform interpolate first. T st = stagScaled * (numXforms - 1 - thisXform) / (numXforms - 1); - T et = st + (1 - stagScaled); + T ett = st + (1 - stagScaled); if (t <= st) return 0; - else if (t >= et) + else if (t >= ett) return 1; else return Smoother((t - st) / (1 - stagScaled)); @@ -893,9 +893,9 @@ public: } /* - //Will need to alter this to handle 2D palettes. - static bool InterpMissingColors(vector>& palette) - { + //Will need to alter this to handle 2D palettes. + static bool InterpMissingColors(vector>& palette) + { //Check for a non-full palette. int minIndex, maxIndex; int colorli, colorri; @@ -988,7 +988,7 @@ public: } return true; - } + } */ /// diff --git a/Source/Ember/Isaac.h b/Source/Ember/Isaac.h index 3b6fbdf..220317f 100644 --- a/Source/Ember/Isaac.h +++ b/Source/Ember/Isaac.h @@ -41,7 +41,6 @@ namespace EmberNs { - union UintBytes { unsigned char Bytes[4]; @@ -59,14 +58,6 @@ public: UintBytes m_Cache; size_t m_LastIndex; - /// - /// Global ISAAC RNG to be used from anywhere. This is not thread safe, so take caution to only - /// use it when no other threads are. - /// - static unique_ptr> GlobalRand; - - static std::recursive_mutex s_CS; - /// /// The structure which holds all of the random information. /// @@ -124,7 +115,7 @@ public: /// The next random integer in the range of 0-255 static inline T LockedRandByte() { - rlg l(s_CS); + rlg l(*s_CS.get()); T t = GlobalRand->RandByte(); return t; } @@ -148,7 +139,7 @@ public: /// The next random integer static inline T LockedRand() { - rlg l(s_CS); + rlg l(*s_CS.get()); T t = GlobalRand->Rand(); return t; } @@ -170,7 +161,7 @@ public: /// A value between 0 and the value passed in minus 1 static inline T LockedRand(T upper) { - rlg l(s_CS); + rlg l(*s_CS.get()); T t = GlobalRand->Rand(upper); return t; } @@ -198,7 +189,7 @@ public: template static inline floatType LockedFrand(floatType fMin, floatType fMax) { - rlg l(s_CS); + rlg l(*s_CS.get()); floatType t = GlobalRand->template Frand(fMin, fMax); return t; } @@ -225,7 +216,7 @@ public: template static inline floatType LockedFrand01() { - rlg l(s_CS); + rlg l(*s_CS.get()); floatType t = GlobalRand->template Frand01(); return t; } @@ -252,7 +243,7 @@ public: template static inline floatType LockedFrand11() { - rlg l(s_CS); + rlg l(*s_CS.get()); floatType t = GlobalRand->template Frand11(); return t; } @@ -274,7 +265,7 @@ public: template static inline floatType LockedGoldenBit() { - rlg l(s_CS); + rlg l(*s_CS.get()); floatType t = GlobalRand->template GoldenBit(); return t; } @@ -294,7 +285,7 @@ public: /// A random 0 or 1 static inline uint LockedRandBit() { - rlg l(s_CS); + rlg l(*s_CS.get()); uint t = GlobalRand->RandBit(); return t; } @@ -516,5 +507,12 @@ protected: private: randctx m_Rc;//The random context which holds all of the seed and state information as well as the random number values. + + /// + /// Global ISAAC RNG to be used from anywhere. This is not thread safe, so take caution to only + /// use it when no other threads are. + /// + static unique_ptr> GlobalRand; + static unique_ptr s_CS; }; } diff --git a/Source/Ember/PaletteList.h b/Source/Ember/PaletteList.h index c8492c9..3796f07 100644 --- a/Source/Ember/PaletteList.h +++ b/Source/Ember/PaletteList.h @@ -82,7 +82,7 @@ public: Palette* GetRandomPalette() { auto p = s_Palettes.begin(); - size_t i = 0, paletteFileIndex = QTIsaac::GlobalRand->Rand() % Size(); + size_t i = 0, paletteFileIndex = QTIsaac::LockedRand() % Size(); //Move p forward i elements. while (i < paletteFileIndex && p != s_Palettes.end()) @@ -93,7 +93,7 @@ public: if (i < Size()) { - size_t paletteIndex = QTIsaac::GlobalRand->Rand() % p->second.size(); + size_t paletteIndex = QTIsaac::LockedRand() % p->second.size(); if (paletteIndex < p->second.size()) return &p->second[paletteIndex]; diff --git a/Source/Ember/Utils.h b/Source/Ember/Utils.h index 4635c3a..5e2f0df 100644 --- a/Source/Ember/Utils.h +++ b/Source/Ember/Utils.h @@ -867,18 +867,14 @@ static inline bool IsClose(T val1, T val2, T tolerance = 1e-6) template static inline T NormalizeDeg180(T angle) { - angle = fmod(angle, 360); + auto a = fmod(angle, T(360)); - if (angle > 180) - { - angle -= 360; - } - else if (angle < -180) - { - angle += 360; - } + if (a > 180) + a -= 360; + else if (a < -180) + a += 360; - return angle; + return a; } /// diff --git a/Source/Ember/Variations01.h b/Source/Ember/Variations01.h index 90deb0c..5447a4a 100644 --- a/Source/Ember/Variations01.h +++ b/Source/Ember/Variations01.h @@ -3784,7 +3784,7 @@ public: virtual string OpenCLString() const override { ostringstream ss, ss2; - intmax_t i = 0, varIndex = IndexInXform(); + intmax_t i = 0; ss2 << "_" << XformIndexInEmber() << "]"; string index = ss2.str(); string weightDivPiDiv2 = "parVars[" + ToUpper(m_Params[i++].Name()) + index; diff --git a/Source/Ember/Variations02.h b/Source/Ember/Variations02.h index 66990a9..149880e 100644 --- a/Source/Ember/Variations02.h +++ b/Source/Ember/Variations02.h @@ -850,7 +850,7 @@ public: virtual string OpenCLString() const override { ostringstream ss, ss2; - intmax_t i = 0, varIndex = IndexInXform(); + intmax_t i = 0; ss2 << "_" << XformIndexInEmber() << "]"; string index = ss2.str(); string v = "parVars[" + ToUpper(m_Params[i++].Name()) + index;//Precalcs only, no params. @@ -1674,7 +1674,7 @@ public: virtual string OpenCLString() const override { ostringstream ss, ss2; - intmax_t i = 0, varIndex = IndexInXform(); + intmax_t i = 0; ss2 << "_" << XformIndexInEmber() << "]"; string index = ss2.str(); string hole = "parVars[" + ToUpper(m_Params[i++].Name()) + index; @@ -3291,7 +3291,7 @@ public: virtual string OpenCLString() const override { ostringstream ss, ss2; - intmax_t i = 0, varIndex = IndexInXform(); + intmax_t i = 0; ss2 << "_" << XformIndexInEmber() << "]"; string index = ss2.str(); string v = "parVars[" + ToUpper(m_Params[i++].Name()) + index;//Precalcs only, no params. @@ -3529,7 +3529,7 @@ public: virtual string OpenCLString() const override { ostringstream ss, ss2; - intmax_t i = 0, varIndex = IndexInXform(); + intmax_t i = 0; ss2 << "_" << XformIndexInEmber() << "]"; string index = ss2.str(); string c = "parVars[" + ToUpper(m_Params[i++].Name()) + index; @@ -3621,7 +3621,7 @@ public: virtual string OpenCLString() const override { ostringstream ss, ss2; - intmax_t i = 0, varIndex = IndexInXform(); + intmax_t i = 0; ss2 << "_" << XformIndexInEmber() << "]"; string index = ss2.str(); string c = "parVars[" + ToUpper(m_Params[i++].Name()) + index; @@ -4012,7 +4012,7 @@ public: virtual string OpenCLString() const override { ostringstream ss, ss2; - intmax_t i = 0, varIndex = IndexInXform(); + intmax_t i = 0; ss2 << "_" << XformIndexInEmber() << "]"; string index = ss2.str(); string c1r = "parVars[" + ToUpper(m_Params[i++].Name()) + index; @@ -4601,7 +4601,7 @@ public: virtual string OpenCLString() const override { ostringstream ss, ss2; - intmax_t i = 0, varIndex = IndexInXform(); + intmax_t i = 0; ss2 << "_" << XformIndexInEmber() << "]"; string index = ss2.str(); string shiftX = "parVars[" + ToUpper(m_Params[i++].Name()) + index; @@ -4930,7 +4930,7 @@ public: virtual string OpenCLString() const override { ostringstream ss, ss2; - intmax_t i = 0, varIndex = IndexInXform(); + intmax_t i = 0; ss2 << "_" << XformIndexInEmber() << "]"; string index = ss2.str(); string vvar2 = "parVars[" + ToUpper(m_Params[i++].Name()) + index;//Precalcs only, no params. @@ -5282,7 +5282,7 @@ public: virtual string OpenCLString() const override { ostringstream ss, ss2; - intmax_t i = 0, varIndex = IndexInXform(); + intmax_t i = 0; ss2 << "_" << XformIndexInEmber() << "]"; string index = ss2.str(); string weight01 = "parVars[" + ToUpper(m_Params[i++].Name()) + index; diff --git a/Source/Ember/Variations03.h b/Source/Ember/Variations03.h index c2619fe..535a255 100644 --- a/Source/Ember/Variations03.h +++ b/Source/Ember/Variations03.h @@ -358,7 +358,7 @@ public: virtual string OpenCLString() const override { ostringstream ss, ss2; - intmax_t i = 0, varIndex = IndexInXform(); + intmax_t i = 0; ss2 << "_" << XformIndexInEmber() << "]"; string index = ss2.str(); string pull = "parVars[" + ToUpper(m_Params[i++].Name()) + index; @@ -2966,7 +2966,7 @@ public: virtual string OpenCLString() const override { ostringstream ss, ss2; - intmax_t i = 0, varIndex = IndexInXform(); + intmax_t i = 0; ss2 << "_" << XformIndexInEmber() << "]"; string index = ss2.str(); string even = "parVars[" + ToUpper(m_Params[i++].Name()) + index; diff --git a/Source/Ember/Variations06.h b/Source/Ember/Variations06.h index 712be46..23313f9 100644 --- a/Source/Ember/Variations06.h +++ b/Source/Ember/Variations06.h @@ -3985,7 +3985,7 @@ public: else { T x, s, c; - x = ((int)(rand.Frand01() * 2)) ? m_WorkPower + (rand.Frand01() * m_Scatter + m_Offset + edge) * T(M_PI) : -(rand.Frand01() * m_Scatter + m_Offset + edge) * T(M_PI); + x = int(rand.Frand01() * 2) ? m_WorkPower + (rand.Frand01() * m_Scatter + m_Offset + edge) * T(M_PI) : -(rand.Frand01() * m_Scatter + m_Offset + edge) * T(M_PI); sincos(x, &s, &c); if (m_Static > 1 || m_Static == -1) @@ -4519,7 +4519,7 @@ public: T s, c; T total = 0; T total2 = 0; - T temp1, temp2, temp3, temp4; + T temp1, temp2, temp4; if (m_Hypergon != 0) { @@ -4532,7 +4532,6 @@ public: } else { - temp3 = m_HypergonD; total += m_Hypergon * (m_HypergonD - std::sqrt(Sqr(m_HypergonD) - temp2)) / std::sqrt(temp2); } } @@ -4568,7 +4567,6 @@ public: } else { - temp3 = m_HypergonD; total2 += m_Hypergon * (m_HypergonD - std::sqrt(Sqr(m_HypergonD) - temp2)) / std::sqrt(temp2); } } @@ -4644,7 +4642,7 @@ public: << "\t\treal_t s, c;\n" << "\t\treal_t total = 0;\n" << "\t\treal_t total2 = 0;\n" - << "\t\treal_t temp1, temp2, temp3, temp4;\n" + << "\t\treal_t temp1, temp2, temp4;\n" << "\n" << "\t\tif (" << hypergon << " != 0)\n" << "\t\t{\n" @@ -4657,7 +4655,6 @@ public: << "\t\t }\n" << "\t\t else\n" << "\t\t {\n" - << "\t\t temp3 = " << hypergonD << ";\n" << "\t\t total += " << hypergon << " * (" << hypergonD << " - sqrt(Sqr(" << hypergonD << ") - temp2)) / sqrt(temp2);\n" << "\t\t }\n" << "\t\t}\n" @@ -4693,7 +4690,6 @@ public: << "\t\t }\n" << "\t\t else\n" << "\t\t {\n" - << "\t\t temp3 = " << hypergonD << ";\n" << "\t\t total2 += " << hypergon << " * (" << hypergonD << " - sqrt(Sqr(" << hypergonD << ") - temp2)) / sqrt(temp2);\n" << "\t\t }\n" << "\t\t }\n" @@ -4813,11 +4809,10 @@ public: virtual void Func(IteratorHelper& helper, Point& outPoint, QTIsaac& rand) override { T a = helper.m_PrecalcAtanyx; - T a90 = atan2(helper.In.x, -helper.In.y); T r; T s, c; T total = 0; - T temp1, temp2, temp3, temp4; + T temp1, temp2, temp4; if (m_Hypergon != 0) { @@ -4830,7 +4825,6 @@ public: } else { - temp3 = m_HypergonD; total += m_Hypergon * (m_HypergonD - std::sqrt(Sqr(m_HypergonD) - temp2)) / std::sqrt(temp2); } } @@ -4886,11 +4880,10 @@ public: string oneOverSuperN1 = "parVars[" + ToUpper(m_Params[i++].Name()) + index; ss << "\t{\n" << "\t\treal_t a = precalcAtanyx;\n" - << "\t\treal_t a90 = atan2(vIn.x, -vIn.y);\n" << "\t\treal_t r;\n" << "\t\treal_t s, c;\n" << "\t\treal_t total = 0;\n" - << "\t\treal_t temp1, temp2, temp3, temp4;\n" + << "\t\treal_t temp1, temp2, temp4;\n" << "\n" << "\t\tif (" << hypergon << " != 0)\n" << "\t\t{\n" @@ -4903,7 +4896,6 @@ public: << "\t\t }\n" << "\t\t else\n" << "\t\t {\n" - << "\t\t temp3 = " << hypergonD << ";\n" << "\t\t total += " << hypergon << " * (" << hypergonD << " - sqrt(Sqr(" << hypergonD << ") - temp2)) / sqrt(temp2);\n" << "\t\t }\n" << "\t\t}\n" @@ -5014,11 +5006,10 @@ public: virtual void Func(IteratorHelper& helper, Point& outPoint, QTIsaac& rand) override { T a = helper.m_PrecalcAtanyx; - T a90 = atan2(helper.In.x, -helper.In.y); T r; T s, c; T total = 0; - T temp1, temp2, temp3, temp4; + T temp1, temp2, temp4; if (m_Hypergon != 0) { @@ -5031,7 +5022,6 @@ public: } else { - temp3 = m_HypergonD; total += m_Hypergon * (m_HypergonD - std::sqrt(Sqr(m_HypergonD) - temp2)) / std::sqrt(temp2); } } @@ -5087,11 +5077,10 @@ public: string oneOverSuperN1 = "parVars[" + ToUpper(m_Params[i++].Name()) + index; ss << "\t{\n" << "\t\treal_t a = precalcAtanyx;\n" - << "\t\treal_t a90 = atan2(vIn.x, -vIn.y);\n" << "\t\treal_t r;\n" << "\t\treal_t s, c;\n" << "\t\treal_t total = 0;\n" - << "\t\treal_t temp1, temp2, temp3, temp4;\n" + << "\t\treal_t temp1, temp2, temp4;\n" << "\n" << "\t\tif (" << hypergon << " != 0)\n" << "\t\t{\n" @@ -5104,7 +5093,6 @@ public: << "\t\t }\n" << "\t\t else\n" << "\t\t {\n" - << "\t\t temp3 = " << hypergonD << ";\n" << "\t\t total += " << hypergon << " * (" << hypergonD << " - sqrt(Sqr(" << hypergonD << ") - temp2)) / sqrt(temp2);\n" << "\t\t }\n" << "\t\t}\n" @@ -5215,11 +5203,10 @@ public: virtual void Func(IteratorHelper& helper, Point& outPoint, QTIsaac& rand) override { T a = helper.m_PrecalcAtanyx; - T a90 = atan2(helper.In.x, -helper.In.y); T r; T s, c; T total = 0; - T temp1, temp2, temp3, temp4; + T temp1, temp2, temp4; if (m_Hypergon != 0) { @@ -5232,7 +5219,6 @@ public: } else { - temp3 = m_HypergonD; total += m_Hypergon * (m_HypergonD - std::sqrt(Sqr(m_HypergonD) - temp2)) / std::sqrt(temp2); } } @@ -5292,7 +5278,7 @@ public: << "\t\treal_t r;\n" << "\t\treal_t s, c;\n" << "\t\treal_t total = 0;\n" - << "\t\treal_t temp1, temp2, temp3, temp4;\n" + << "\t\treal_t temp1, temp2, temp4;\n" << "\n" << "\t\tif (" << hypergon << " != 0)\n" << "\t\t{\n" @@ -5305,7 +5291,6 @@ public: << "\t\t }\n" << "\t\t else\n" << "\t\t {\n" - << "\t\t temp3 = " << hypergonD << ";\n" << "\t\t total += " << hypergon << " * (" << hypergonD << " - sqrt(Sqr(" << hypergonD << ") - temp2)) / sqrt(temp2);\n" << "\t\t }\n" << "\t\t}\n" diff --git a/Source/Ember/Variations07.h b/Source/Ember/Variations07.h index 796b2f0..8c4ce36 100644 --- a/Source/Ember/Variations07.h +++ b/Source/Ember/Variations07.h @@ -543,7 +543,7 @@ public: virtual string OpenCLString() const override { ostringstream ss, ss2; - intmax_t i = 0, varIndex = IndexInXform(); + intmax_t varIndex = IndexInXform(); ss2 << "_" << XformIndexInEmber() << "]"; string index = ss2.str(); ss << "\t{\n" diff --git a/Source/Ember/Xform.h b/Source/Ember/Xform.h index 31a7505..92e86d8 100644 --- a/Source/Ember/Xform.h +++ b/Source/Ember/Xform.h @@ -159,9 +159,9 @@ public: m_HasPreOrRegularVars = xform.PreVariationCount() > 0 || xform.VariationCount() > 0; m_Wind[0] = T(xform.m_Wind[0]); m_Wind[1] = T(xform.m_Wind[1]); - m_MotionFreq = xform.m_MotionFreq; + m_MotionFreq = T(xform.m_MotionFreq); m_MotionFunc = xform.m_MotionFunc; - m_MotionOffset = xform.m_MotionOffset; + m_MotionOffset = T(xform.m_MotionOffset); ClearAndDeleteVariations(); //Must manually add them via the AddVariation() function so that diff --git a/Source/Ember/XmlToEmber.h b/Source/Ember/XmlToEmber.h index f4d81bf..1b708ed 100644 --- a/Source/Ember/XmlToEmber.h +++ b/Source/Ember/XmlToEmber.h @@ -79,194 +79,211 @@ public: if (!m_Init) { - m_BadParamNames.reserve(100); - m_BadParamNames["swtin_distort"] = "stwin_distort";//stwin. - m_BadParamNames["pow_numerator"] = "pow_block_numerator";//pow_block. - m_BadParamNames["pow_denominator"] = "pow_block_denominator"; - m_BadParamNames["pow_root"] = "pow_block_root"; - m_BadParamNames["pow_correctn"] = "pow_block_correctn"; - m_BadParamNames["pow_correctd"] = "pow_block_correctd"; - m_BadParamNames["pow_power"] = "pow_block_power"; - m_BadParamNames["lt"] = "linearT_powX";//linearT. - m_BadParamNames["lt"] = "linearT_powY"; - m_BadParamNames["re_a"] = "Mobius_Re_A";//Mobius. - m_BadParamNames["im_a"] = "Mobius_Im_A"; - m_BadParamNames["re_b"] = "Mobius_Re_B"; - m_BadParamNames["im_b"] = "Mobius_Im_B"; - m_BadParamNames["re_c"] = "Mobius_Re_C"; - m_BadParamNames["im_c"] = "Mobius_Im_C"; - m_BadParamNames["re_d"] = "Mobius_Re_D"; - m_BadParamNames["im_d"] = "Mobius_Im_D"; - m_BadParamNames["rx_sin"] = "rotate_x_sin";//rotate_x. - m_BadParamNames["rx_cos"] = "rotate_x_cos"; - m_BadParamNames["ry_sin"] = "rotate_y_sin";//rotate_y. - m_BadParamNames["ry_cos"] = "rotate_y_cos"; - m_BadParamNames["intrfr2_a1"] = "interference2_a1";//interference2. - m_BadParamNames["intrfr2_b1"] = "interference2_b1"; - m_BadParamNames["intrfr2_c1"] = "interference2_c1"; - m_BadParamNames["intrfr2_p1"] = "interference2_p1"; - m_BadParamNames["intrfr2_t1"] = "interference2_t1"; - m_BadParamNames["intrfr2_a2"] = "interference2_a2"; - m_BadParamNames["intrfr2_b2"] = "interference2_b2"; - m_BadParamNames["intrfr2_c2"] = "interference2_c2"; - m_BadParamNames["intrfr2_p2"] = "interference2_p2"; - m_BadParamNames["intrfr2_t2"] = "interference2_t2"; - m_BadParamNames["octa_x"] = "octagon_x";//octagon. - m_BadParamNames["octa_y"] = "octagon_y"; - m_BadParamNames["octa_z"] = "octagon_z"; - m_BadParamNames["bubble_x"] = "bubble2_x";//bubble2. - m_BadParamNames["bubble_y"] = "bubble2_y"; - m_BadParamNames["bubble_z"] = "bubble2_z"; - m_BadParamNames["cubic3d_xpand"] = "cubicLattice_3D_xpand";//cubicLattice_3D. - m_BadParamNames["cubic3d_style"] = "cubicLattice_3D_style"; - m_BadParamNames["splitb_x"] = "SplitBrdr_x";//SplitBrdr. - m_BadParamNames["splitb_y"] = "SplitBrdr_y"; - m_BadParamNames["splitb_px"] = "SplitBrdr_px"; - m_BadParamNames["splitb_py"] = "SplitBrdr_py"; - m_BadParamNames["dc_cyl_offset"] = "dc_cylinder_offset";//dc_cylinder. - m_BadParamNames["dc_cyl_angle"] = "dc_cylinder_angle"; - m_BadParamNames["dc_cyl_scale"] = "dc_cylinder_scale"; - m_BadParamNames["cyl_x"] = "dc_cylinder_x"; - m_BadParamNames["cyl_y"] = "dc_cylinder_y"; - m_BadParamNames["cyl_blur"] = "dc_cylinder_blur"; - m_BadParamNames["mobius_radius"] = "mobius_strip_radius";//mobius_strip. - m_BadParamNames["mobius_width"] = "mobius_strip_width"; - m_BadParamNames["mobius_rect_x"] = "mobius_strip_rect_x"; - m_BadParamNames["mobius_rect_y"] = "mobius_strip_rect_y"; - m_BadParamNames["mobius_rotate_x"] = "mobius_strip_rotate_x"; - m_BadParamNames["mobius_rotate_y"] = "mobius_strip_rotate_y"; - m_BadParamNames["bwraps2_cellsize"] = "bwraps_cellsize";//bwraps2. - m_BadParamNames["bwraps2_space"] = "bwraps_space"; - m_BadParamNames["bwraps2_gain"] = "bwraps_gain"; - m_BadParamNames["bwraps2_inner_twist"] = "bwraps_inner_twist"; - m_BadParamNames["bwraps2_outer_twist"] = "bwraps_outer_twist"; - m_BadParamNames["bwraps7_cellsize"] = "bwraps_cellsize";//bwraps7. - m_BadParamNames["bwraps7_space"] = "bwraps_space"; - m_BadParamNames["bwraps7_gain"] = "bwraps_gain"; - m_BadParamNames["bwraps7_inner_twist"] = "bwraps_inner_twist"; - m_BadParamNames["bwraps7_outer_twist"] = "bwraps_outer_twist"; - m_BadParamNames["pre_bwraps2_cellsize"] = "pre_bwraps_cellsize"; - m_BadParamNames["pre_bwraps2_space"] = "pre_bwraps_space"; - m_BadParamNames["pre_bwraps2_gain"] = "pre_bwraps_gain"; - m_BadParamNames["pre_bwraps2_inner_twist"] = "pre_bwraps_inner_twist"; - m_BadParamNames["pre_bwraps2_outer_twist"] = "pre_bwraps_outer_twist"; - m_BadParamNames["post_bwraps2_cellsize"] = "post_bwraps_cellsize"; - m_BadParamNames["post_bwraps2_space"] = "post_bwraps_space"; - m_BadParamNames["post_bwraps2_gain"] = "post_bwraps_gain"; - m_BadParamNames["post_bwraps2_inner_twist"] = "post_bwraps_inner_twist"; - m_BadParamNames["post_bwraps2_outer_twist"] = "post_bwraps_outer_twist"; - m_BadParamNames["hexa3d_majp"] = "hexaplay3D_majp"; - m_BadParamNames["hexa3d_scale"] = "hexaplay3D_scale"; - m_BadParamNames["hexa3d_zlift"] = "hexaplay3D_zlift"; - m_BadParamNames["nb_numedges"] = "nBlur_numEdges"; - m_BadParamNames["nb_numstripes"] = "nBlur_numStripes"; - m_BadParamNames["nb_ratiostripes"] = "nBlur_ratioStripes"; - m_BadParamNames["nb_ratiohole"] = "nBlur_ratioHole"; - m_BadParamNames["nb_circumcircle"] = "nBlur_circumCircle"; - m_BadParamNames["nb_adjusttolinear"] = "nBlur_adjustToLinear"; - m_BadParamNames["nb_equalblur"] = "nBlur_equalBlur"; - m_BadParamNames["nb_exactcalc"] = "nBlur_exactCalc"; - m_BadParamNames["nb_highlightedges"] = "nBlur_highlightEdges"; - m_BadParamNames["octapol_r"] = "octapol_radius"; - m_BadParamNames["number_of_stripes"] = "bubbleT3D_number_of_stripes"; - m_BadParamNames["ratio_of_stripes"] = "bubbleT3D_ratio_of_stripes"; - m_BadParamNames["angle_of_hole"] = "bubbleT3D_angle_of_hole"; - m_BadParamNames["exponentZ"] = "bubbleT3D_exponentZ"; - m_BadParamNames["_symmetryZ"] = "bubbleT3D_symmetryZ"; - m_BadParamNames["_modusBlur"] = "bubbleT3D_modusBlur"; - m_BadParamNames["post_scrop_power"] = "post_smartcrop_power"; - m_BadParamNames["post_scrop_radius"] = "post_smartcrop_radius"; - m_BadParamNames["post_scrop_roundstr"] = "post_smartcrop_roundstr"; - m_BadParamNames["post_scrop_roundwidth"] = "post_smartcrop_roundwidth"; - m_BadParamNames["post_scrop_distortion"] = "post_smartcrop_distortion"; - m_BadParamNames["post_scrop_edge"] = "post_smartcrop_edge"; - m_BadParamNames["post_scrop_scatter"] = "post_smartcrop_scatter"; - m_BadParamNames["post_scrop_offset"] = "post_smartcrop_offset"; - m_BadParamNames["post_scrop_rotation"] = "post_smartcrop_rotation"; - m_BadParamNames["post_scrop_cropmode"] = "post_smartcrop_cropmode"; - m_BadParamNames["post_scrop_static"] = "post_smartcrop_static"; - m_FlattenNames.reserve(24); - m_FlattenNames.push_back("pre_crop"); - m_FlattenNames.push_back("pre_falloff2"); - m_FlattenNames.push_back("pre_rotate_x"); - m_FlattenNames.push_back("pre_rotate_y"); - m_FlattenNames.push_back("pre_ztranslate"); - m_FlattenNames.push_back("blur3D"); - m_FlattenNames.push_back("bubble"); - m_FlattenNames.push_back("bwraps"); - m_FlattenNames.push_back("bwraps2"); - m_FlattenNames.push_back("crop"); - m_FlattenNames.push_back("cylinder"); - m_FlattenNames.push_back("falloff2"); - m_FlattenNames.push_back("hemisphere"); - m_FlattenNames.push_back("julia3D"); - m_FlattenNames.push_back("julia3Dz"); - m_FlattenNames.push_back("linear3D"); - m_FlattenNames.push_back("zblur"); - m_FlattenNames.push_back("zcone"); - m_FlattenNames.push_back("ztranslate"); - m_FlattenNames.push_back("post_crop"); - m_FlattenNames.push_back("post_falloff2"); - m_FlattenNames.push_back("post_rotate_x"); - m_FlattenNames.push_back("post_rotate_y"); - m_FlattenNames.push_back("curl3D_cz"); + m_BadParamNames = unordered_map + { + { "swtin_distort" , "stwin_distort" },//stwin. + { "pow_numerator" , "pow_block_numerator" },//pow_block. + { "pow_denominator" , "pow_block_denominator" }, + { "pow_root" , "pow_block_root" }, + { "pow_correctn" , "pow_block_correctn" }, + { "pow_correctd" , "pow_block_correctd" }, + { "pow_power" , "pow_block_power" }, + { "lt" , "linearT_powX" },//linearT. + { "lt" , "linearT_powY" }, + { "re_a" , "Mobius_Re_A" },//Mobius. + { "im_a" , "Mobius_Im_A" }, + { "re_b" , "Mobius_Re_B" }, + { "im_b" , "Mobius_Im_B" }, + { "re_c" , "Mobius_Re_C" }, + { "im_c" , "Mobius_Im_C" }, + { "re_d" , "Mobius_Re_D" }, + { "im_d" , "Mobius_Im_D" }, + { "rx_sin" , "rotate_x_sin" },//rotate_x. + { "rx_cos" , "rotate_x_cos" }, + { "ry_sin" , "rotate_y_sin" },//rotate_y. + { "ry_cos" , "rotate_y_cos" }, + { "intrfr2_a1" , "interference2_a1" },//interference2. + { "intrfr2_b1" , "interference2_b1" }, + { "intrfr2_c1" , "interference2_c1" }, + { "intrfr2_p1" , "interference2_p1" }, + { "intrfr2_t1" , "interference2_t1" }, + { "intrfr2_a2" , "interference2_a2" }, + { "intrfr2_b2" , "interference2_b2" }, + { "intrfr2_c2" , "interference2_c2" }, + { "intrfr2_p2" , "interference2_p2" }, + { "intrfr2_t2" , "interference2_t2" }, + { "octa_x" , "octagon_x" },//octagon. + { "octa_y" , "octagon_y" }, + { "octa_z" , "octagon_z" }, + { "bubble_x" , "bubble2_x" },//bubble2. + { "bubble_y" , "bubble2_y" }, + { "bubble_z" , "bubble2_z" }, + { "cubic3d_xpand" , "cubicLattice_3D_xpand" },//cubicLattice_3D. + { "cubic3d_style" , "cubicLattice_3D_style" }, + { "splitb_x" , "SplitBrdr_x" },//SplitBrdr. + { "splitb_y" , "SplitBrdr_y" }, + { "splitb_px" , "SplitBrdr_px" }, + { "splitb_py" , "SplitBrdr_py" }, + { "dc_cyl_offset" , "dc_cylinder_offset" },//dc_cylinder. + { "dc_cyl_angle" , "dc_cylinder_angle" }, + { "dc_cyl_scale" , "dc_cylinder_scale" }, + { "cyl_x" , "dc_cylinder_x" }, + { "cyl_y" , "dc_cylinder_y" }, + { "cyl_blur" , "dc_cylinder_blur" }, + { "mobius_radius" , "mobius_strip_radius" },//mobius_strip. + { "mobius_width" , "mobius_strip_width" }, + { "mobius_rect_x" , "mobius_strip_rect_x" }, + { "mobius_rect_y" , "mobius_strip_rect_y" }, + { "mobius_rotate_x" , "mobius_strip_rotate_x" }, + { "mobius_rotate_y" , "mobius_strip_rotate_y" }, + { "bwraps2_cellsize" , "bwraps_cellsize" },//bwraps2. + { "bwraps2_space" , "bwraps_space" }, + { "bwraps2_gain" , "bwraps_gain" }, + { "bwraps2_inner_twist" , "bwraps_inner_twist" }, + { "bwraps2_outer_twist" , "bwraps_outer_twist" }, + { "bwraps7_cellsize" , "bwraps_cellsize" },//bwraps7. + { "bwraps7_space" , "bwraps_space" }, + { "bwraps7_gain" , "bwraps_gain" }, + { "bwraps7_inner_twist" , "bwraps_inner_twist" }, + { "bwraps7_outer_twist" , "bwraps_outer_twist" }, + { "pre_bwraps2_cellsize" , "pre_bwraps_cellsize" },//bwraps2. + { "pre_bwraps2_space" , "pre_bwraps_space" }, + { "pre_bwraps2_gain" , "pre_bwraps_gain" }, + { "pre_bwraps2_inner_twist" , "pre_bwraps_inner_twist" }, + { "pre_bwraps2_outer_twist" , "pre_bwraps_outer_twist" }, + { "post_bwraps2_cellsize" , "post_bwraps_cellsize" }, + { "post_bwraps2_space" , "post_bwraps_space" }, + { "post_bwraps2_gain" , "post_bwraps_gain" }, + { "post_bwraps2_inner_twist", "post_bwraps_inner_twist" }, + { "post_bwraps2_outer_twist", "post_bwraps_outer_twist" }, + { "hexa3d_majp" , "hexaplay3D_majp" },//hexaplay3D. + { "hexa3d_scale" , "hexaplay3D_scale" }, + { "hexa3d_zlift" , "hexaplay3D_zlift" }, + { "nb_numedges" , "nBlur_numEdges" },//nBlur. + { "nb_numstripes" , "nBlur_numStripes" }, + { "nb_ratiostripes" , "nBlur_ratioStripes" }, + { "nb_ratiohole" , "nBlur_ratioHole" }, + { "nb_circumcircle" , "nBlur_circumCircle" }, + { "nb_adjusttolinear" , "nBlur_adjustToLinear" }, + { "nb_equalblur" , "nBlur_equalBlur" }, + { "nb_exactcalc" , "nBlur_exactCalc" }, + { "nb_highlightedges" , "nBlur_highlightEdges" }, + { "octapol_r" , "octapol_radius" },//octapol. + { "number_of_stripes" , "bubbleT3D_number_of_stripes" },//bubbleT3D. + { "ratio_of_stripes" , "bubbleT3D_ratio_of_stripes" }, + { "angle_of_hole" , "bubbleT3D_angle_of_hole" }, + { "exponentZ" , "bubbleT3D_exponentZ" }, + { "_symmetryZ" , "bubbleT3D_symmetryZ" }, + { "_modusBlur" , "bubbleT3D_modusBlur" }, + { "post_scrop_power" , "post_smartcrop_power" },//post_smartcrop. + { "post_scrop_radius" , "post_smartcrop_radius" }, + { "post_scrop_roundstr" , "post_smartcrop_roundstr" }, + { "post_scrop_roundwidth" , "post_smartcrop_roundwidth" }, + { "post_scrop_distortion" , "post_smartcrop_distortion" }, + { "post_scrop_edge" , "post_smartcrop_edge" }, + { "post_scrop_scatter" , "post_smartcrop_scatter" }, + { "post_scrop_offset" , "post_smartcrop_offset" }, + { "post_scrop_rotation" , "post_smartcrop_rotation" }, + { "post_scrop_cropmode" , "post_smartcrop_cropmode" }, + { "post_scrop_static" , "post_smartcrop_static" } + }; + m_FlattenNames = + { + "pre_crop", + "pre_falloff2", + "pre_rotate_x", + "pre_rotate_y", + "pre_ztranslate", + "blur3D", + "bubble", + "bwraps", + "bwraps2", + "crop", + "cylinder", + "falloff2", + "hemisphere", + "julia3D", + "julia3Dz", + "linear3D", + "zblur", + "zcone", + "ztranslate", + "post_crop", + "post_falloff2", + "post_rotate_x", + "post_rotate_y", + "curl3D_cz", + }; //This is a vector of the param names as they are in the legacy, badly named flam3/Apophysis code. - vector badParams; - badParams.reserve(11); - badParams.push_back("bwraps7_cellsize"); - badParams.push_back("bwraps7_space"); - badParams.push_back("bwraps7_gain"); - badParams.push_back("bwraps7_inner_twist"); - badParams.push_back("bwraps7_outer_twist"); + vector badParams = + { + "bwraps7_cellsize", + "bwraps7_space", + "bwraps7_gain", + "bwraps7_inner_twist", + "bwraps7_outer_twist" + }; m_BadVariationNames.push_back(make_pair(make_pair(string("bwraps7"), string("bwraps")), badParams));//bwraps7 is the same as bwraps. - badParams.clear(); - badParams.push_back("bwraps2_cellsize"); - badParams.push_back("bwraps2_space"); - badParams.push_back("bwraps2_gain"); - badParams.push_back("bwraps2_inner_twist"); - badParams.push_back("bwraps2_outer_twist"); + badParams = + { + "bwraps2_cellsize", + "bwraps2_space", + "bwraps2_gain", + "bwraps2_inner_twist", + "bwraps2_outer_twist" + }; m_BadVariationNames.push_back(make_pair(make_pair(string("bwraps2"), string("bwraps")), badParams));//bwraps2 is the same as bwraps. - badParams.clear(); - badParams.push_back("pre_bwraps2_cellsize"); - badParams.push_back("pre_bwraps2_space"); - badParams.push_back("pre_bwraps2_gain"); - badParams.push_back("pre_bwraps2_inner_twist"); - badParams.push_back("pre_bwraps2_outer_twist"); + badParams = + { + "pre_bwraps2_cellsize", + "pre_bwraps2_space", + "pre_bwraps2_gain", + "pre_bwraps2_inner_twist", + "pre_bwraps2_outer_twist" + }; m_BadVariationNames.push_back(make_pair(make_pair(string("pre_bwraps2"), string("pre_bwraps")), badParams)); - badParams.clear(); - badParams.push_back("post_bwraps2_cellsize"); - badParams.push_back("post_bwraps2_space"); - badParams.push_back("post_bwraps2_gain"); - badParams.push_back("post_bwraps2_inner_twist"); - badParams.push_back("post_bwraps2_outer_twist"); + badParams = + { + "post_bwraps2_cellsize", + "post_bwraps2_space", + "post_bwraps2_gain", + "post_bwraps2_inner_twist", + "post_bwraps2_outer_twist" + }; m_BadVariationNames.push_back(make_pair(make_pair(string("post_bwraps2"), string("post_bwraps")), badParams)); - badParams.clear(); - badParams.push_back("mobius_radius"); - badParams.push_back("mobius_width"); - badParams.push_back("mobius_rect_x"); - badParams.push_back("mobius_rect_y"); - badParams.push_back("mobius_rotate_x"); - badParams.push_back("mobius_rotate_y"); + badParams = + { + "mobius_radius", + "mobius_width", + "mobius_rect_x", + "mobius_rect_y", + "mobius_rotate_x", + "mobius_rotate_y" + }; m_BadVariationNames.push_back(make_pair(make_pair(string("mobius"), string("mobius_strip")), badParams));//mobius_strip clashes with Mobius. - badParams.clear(); - badParams.push_back("post_dcztransl_x0"); - badParams.push_back("post_dcztransl_x1"); - badParams.push_back("post_dcztransl_factor"); - badParams.push_back("post_dcztransl_overwrite"); - badParams.push_back("post_dcztransl_clamp"); + badParams = + { + "post_dcztransl_x0", + "post_dcztransl_x1", + "post_dcztransl_factor", + "post_dcztransl_overwrite", + "post_dcztransl_clamp" + }; m_BadVariationNames.push_back(make_pair(make_pair(string("post_dcztransl"), string("post_dc_ztransl")), badParams)); - badParams.clear(); - badParams.push_back("post_scrop_power"); - badParams.push_back("post_scrop_radius"); - badParams.push_back("post_scrop_roundstr"); - badParams.push_back("post_scrop_roundwidth"); - badParams.push_back("post_scrop_distortion"); - badParams.push_back("post_scrop_edge"); - badParams.push_back("post_scrop_scatter"); - badParams.push_back("post_scrop_offset"); - badParams.push_back("post_scrop_rotation"); - badParams.push_back("post_scrop_cropmode"); - badParams.push_back("post_scrop_static"); + badParams = + { + "post_scrop_power", + "post_scrop_radius", + "post_scrop_roundstr", + "post_scrop_roundwidth", + "post_scrop_distortion", + "post_scrop_edge", + "post_scrop_scatter", + "post_scrop_offset", + "post_scrop_rotation", + "post_scrop_cropmode", + "post_scrop_static" + }; m_BadVariationNames.push_back(make_pair(make_pair(string("post_scrop"), string("post_smartcrop")), badParams)); //Note that splits3D can't be done here because it's param names are also used by splits. badParams.clear(); @@ -277,14 +294,14 @@ public: } } - /// - /// Parse the specified buffer and place the results in the vector of embers passed in. - /// - /// The buffer to parse - /// Full path and filename, optionally empty - /// The newly constructed embers based on what was parsed - /// True to use defaults if they are not present in the file, else false to use invalid values as placeholders to indicate the values were not present. Default: true. - /// True if there were no errors, else false. +/// +/// Parse the specified buffer and place the results in the vector of embers passed in. +/// +/// The buffer to parse +/// Full path and filename, optionally empty +/// The newly constructed embers based on what was parsed +/// True to use defaults if they are not present in the file, else false to use invalid values as placeholders to indicate the values were not present. Default: true. +/// True if there were no errors, else false. bool Parse(byte* buf, const char* filename, vector>& embers, bool useDefaults = true) { char* bn; @@ -360,14 +377,14 @@ public: return true; } - /// - /// Parse the specified file and place the results in the vector of embers passed in. - /// This will strip out ampersands because the Xml parser can't handle them. - /// - /// Full path and filename - /// The newly constructed embers based on what was parsed - /// True to use defaults if they are not present in the file, else false to use invalid values as placeholders to indicate the values were not present. Default: true. - /// True if there were no errors, else false. +/// +/// Parse the specified file and place the results in the vector of embers passed in. +/// This will strip out ampersands because the Xml parser can't handle them. +/// +/// Full path and filename +/// The newly constructed embers based on what was parsed +/// True to use defaults if they are not present in the file, else false to use invalid values as placeholders to indicate the values were not present. Default: true. +/// True if there were no errors, else false. bool Parse(const char* filename, vector>& embers, bool useDefaults = true) { const char* loc = __FUNCTION__; @@ -389,13 +406,13 @@ public: return false; } - /// - /// Thin wrapper around converting the string to a numeric value and return a bool indicating success. - /// See error report for errors. - /// - /// The string to convert - /// The converted value - /// True if success, else false. +/// +/// Thin wrapper around converting the string to a numeric value and return a bool indicating success. +/// See error report for errors. +/// +/// The string to convert +/// The converted value +/// True if success, else false. template bool Aton(const char* str, valT& val) { @@ -414,13 +431,13 @@ public: } - /// - /// Convert an integer to a string. - /// Just a wrapper around _itoa_s() which wraps the result in a std::string. - /// - /// The integer to convert - /// The radix of the integer. Default: 10. - /// The converted string +/// +/// Convert an integer to a string. +/// Just a wrapper around _itoa_s() which wraps the result in a std::string. +/// +/// The integer to convert +/// The radix of the integer. Default: 10. +/// The converted string static string Itos(int i, int radix = 10) { char ch[16]; @@ -432,13 +449,13 @@ public: return string(ch); } - /// - /// Convert an unsigned 64-bit integer to a string. - /// Just a wrapper around _ui64toa_s() which wraps the result in a std::string. - /// - /// The unsigned 64-bit integer to convert - /// The radix of the integer. Default: 10. - /// The converted string +/// +/// Convert an unsigned 64-bit integer to a string. +/// Just a wrapper around _ui64toa_s() which wraps the result in a std::string. +/// +/// The unsigned 64-bit integer to convert +/// The radix of the integer. Default: 10. +/// The converted string static string Itos64(size_t i, int radix = 10) { char ch[64]; @@ -453,13 +470,13 @@ public: static vector m_FlattenNames; private: - /// - /// Scan the file for ember nodes, and parse them out into the vector of embers. - /// - /// The current node to parse - /// The full path and filename - /// The newly constructed embers based on what was parsed - /// True to use defaults if they are not present in the file, else false to use invalid values as placeholders to indicate the values were not present. +/// +/// Scan the file for ember nodes, and parse them out into the vector of embers. +/// +/// The current node to parse +/// The full path and filename +/// The newly constructed embers based on what was parsed +/// True to use defaults if they are not present in the file, else false to use invalid values as placeholders to indicate the values were not present. void ScanForEmberNodes(xmlNode* curNode, char* parentFile, vector>& embers, bool useDefaults) { bool parseEmberSuccess; @@ -512,12 +529,12 @@ private: } } - /// - /// Parse an ember element. - /// - /// The current node to parse - /// The newly constructed ember based on what was parsed - /// True if there were no errors, else false. +/// +/// Parse an ember element. +/// +/// The current node to parse +/// The newly constructed ember based on what was parsed +/// True if there were no errors, else false. bool ParseEmberElement(xmlNode* emberNode, Ember& currentEmber) { bool ret = true; @@ -1074,14 +1091,14 @@ private: return ErrorReport().empty(); } - /// - /// Parse a floating point value from an xml attribute and add the value to a EmberMotion object - /// - /// The current attribute - /// The attribute value to parse - /// The flame motion parameter type - /// The flame motion element to add the parameter to - /// True if there were no errors, else false. +/// +/// Parse a floating point value from an xml attribute and add the value to a EmberMotion object +/// +/// The current attribute +/// The attribute value to parse +/// The flame motion parameter type +/// The flame motion element to add the parameter to +/// True if there were no errors, else false. bool AttToEmberMotionFloat(xmlAttrPtr att, const char* attStr, eEmberMotionParam param, EmberMotion& motion) { const char* loc = __FUNCTION__; @@ -1101,13 +1118,13 @@ private: return r; } - /// - /// Parse an xform element. - /// - /// The current node to parse - /// The newly constructed xform based on what was parsed - /// True if this xform is a motion within a parent xform, else false - /// True if there were no errors, else false. +/// +/// Parse an xform element. +/// +/// The current node to parse +/// The newly constructed xform based on what was parsed +/// True if this xform is a motion within a parent xform, else false +/// True if there were no errors, else false. bool ParseXform(xmlNode* childNode, Xform& xform, bool motion, bool fromEmber) { bool success = true; @@ -1350,13 +1367,13 @@ private: return true; } - /// - /// Some Apophysis plugins use an inconsistent naming scheme for the parametric variation variables. - /// This function identifies and converts them to Ember's consistent naming convention. - /// - /// The map of corrected names to search - /// The current Xml node to check - /// The corrected name if one was found, else the passed in name. +/// +/// Some Apophysis plugins use an inconsistent naming scheme for the parametric variation variables. +/// This function identifies and converts them to Ember's consistent naming convention. +/// +/// The map of corrected names to search +/// The current Xml node to check +/// The corrected name if one was found, else the passed in name. static string GetCorrectedParamName(const unordered_map& names, const char* name) { const auto& newName = names.find(ToLower(name)); @@ -1367,15 +1384,15 @@ private: return name; } - /// - /// Some Apophysis plugins use an inconsistent naming scheme for variation names. - /// This function identifies and converts them to Ember's consistent naming convention. - /// It uses some additional intelligence to ensure the variation is the expected one, - /// by examining the rest of the xform for the existence of parameter names. - /// - /// The vector of corrected names to search - /// The current Xml node to check - /// The corrected name if one was found, else the passed in name. +/// +/// Some Apophysis plugins use an inconsistent naming scheme for variation names. +/// This function identifies and converts them to Ember's consistent naming convention. +/// It uses some additional intelligence to ensure the variation is the expected one, +/// by examining the rest of the xform for the existence of parameter names. +/// +/// The vector of corrected names to search +/// The current Xml node to check +/// The corrected name if one was found, else the passed in name. static string GetCorrectedVariationName(vector, vector>>& vec, xmlAttrPtr att) { for (auto& v : vec) @@ -1400,12 +1417,12 @@ private: return string(CCX(att->name)); } - /// - /// Determine if an Xml node contains a given tag. - /// - /// The Xml node to search - /// The node name to search for - /// True if name was found, else false. +/// +/// Determine if an Xml node contains a given tag. +/// +/// The Xml node to search +/// The node name to search for +/// True if name was found, else false. static bool XmlContainsTag(xmlAttrPtr att, const char* name) { xmlAttrPtr temp = att; @@ -1420,15 +1437,15 @@ private: return false; } - /// - /// Parse hexadecimal colors. - /// This can read RGB and RGBA, however only RGB will be stored. - /// - /// The string of hex colors to parse - /// The ember whose palette will be assigned the colors - /// The number of colors present - /// The number of channels in each color - /// True if there were no errors, else false. +/// +/// Parse hexadecimal colors. +/// This can read RGB and RGBA, however only RGB will be stored. +/// +/// The string of hex colors to parse +/// The ember whose palette will be assigned the colors +/// The number of colors present +/// The number of channels in each color +/// True if there were no errors, else false. bool ParseHexColors(char* colstr, Ember& ember, size_t numColors, intmax_t chan) { size_t colorIndex = 0; @@ -1491,15 +1508,15 @@ private: return ok; } - /// - /// Wrapper to parse a numeric Xml string value and convert it. - /// - /// The xml tag to parse - /// The name of the Xml attribute - /// The name of the Xml tag - /// The parsed value - /// Bitwise ANDed with true if name matched str and the conversion succeeded, else false. Used for keeping a running value between successive calls. - /// True if the tag was matched and the conversion succeeded, else false +/// +/// Wrapper to parse a numeric Xml string value and convert it. +/// +/// The xml tag to parse +/// The name of the Xml attribute +/// The name of the Xml tag +/// The parsed value +/// Bitwise ANDed with true if name matched str and the conversion succeeded, else false. Used for keeping a running value between successive calls. +/// True if the tag was matched and the conversion succeeded, else false template bool ParseAndAssign(const xmlChar* name, const char* attStr, const char* str, valT& val, bool& b) { diff --git a/Source/Fractorium/EmberFile.h b/Source/Fractorium/EmberFile.h index c69d991..4a7a663 100644 --- a/Source/Fractorium/EmberFile.h +++ b/Source/Fractorium/EmberFile.h @@ -192,9 +192,9 @@ public: /// /// The index in the file of the ember /// The default ember name - static QString DefaultEmberName(uint i) + static QString DefaultEmberName(T i) { - return DefaultFilename() + "_" + ToString(i); + return DefaultFilename() + "_" + ToString(i); } QString m_Filename; diff --git a/Source/Fractorium/EmberTreeWidgetItem.h b/Source/Fractorium/EmberTreeWidgetItem.h index 43946e6..3296b2d 100644 --- a/Source/Fractorium/EmberTreeWidgetItem.h +++ b/Source/Fractorium/EmberTreeWidgetItem.h @@ -19,7 +19,7 @@ public: /// This is meant to be a root level item. /// /// The parent widget of this item - explicit EmberTreeWidgetItemBase(QTreeWidget* p = 0) + explicit EmberTreeWidgetItemBase(QTreeWidget* p) : QTreeWidgetItem(p) { } @@ -29,11 +29,11 @@ public: /// This is meant to be the child of a root level item. /// /// The parent widget of this item - explicit EmberTreeWidgetItemBase(QTreeWidgetItem* p = 0) + explicit EmberTreeWidgetItemBase(QTreeWidgetItem* p) : QTreeWidgetItem(p) { } - + /// /// Set the preview image for the tree widget item. /// @@ -43,7 +43,6 @@ public: void SetImage(vector& v, uint width, uint height) { int size = 64; - m_Image = QImage(width, height, QImage::Format_RGBA8888); memcpy(m_Image.scanLine(0), v.data(), v.size() * sizeof(v[0]));//Memcpy the data in. m_Pixmap = QPixmap::fromImage(m_Image).scaled(QSize(size, size), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);//Create a QPixmap out of the QImage, scaled to size. diff --git a/Source/Fractorium/FinalRenderDialog.cpp b/Source/Fractorium/FinalRenderDialog.cpp index 0151416..edbabaf 100644 --- a/Source/Fractorium/FinalRenderDialog.cpp +++ b/Source/Fractorium/FinalRenderDialog.cpp @@ -116,7 +116,7 @@ FractoriumFinalRenderDialog::FractoriumFinalRenderDialog(FractoriumSettings* set m_QualitySpin->setValue(m_Settings->FinalQuality()); m_TemporalSamplesSpin->setValue(m_Settings->FinalTemporalSamples()); m_SupersampleSpin->setValue(m_Settings->FinalSupersample()); - m_StripsSpin->setValue(m_Settings->FinalStrips()); + m_StripsSpin->setValue(int(m_Settings->FinalStrips())); Scale(eScaleType(m_Settings->FinalScale())); if (m_Settings->FinalExt() == "jpg") @@ -622,7 +622,7 @@ void FractoriumFinalRenderDialog::showEvent(QShowEvent* e) { if (CreateControllerFromGUI(true)) { - int index = m_Fractorium->m_Controller->Index() + 1; + int index = int(m_Fractorium->m_Controller->Index()) + 1; #ifdef DO_DOUBLE Ember ed; EmberFile efi; @@ -644,7 +644,7 @@ void FractoriumFinalRenderDialog::showEvent(QShowEvent* e) });//Copy the whole file, will take about 0.2ms per ember in the file. #endif m_Controller->SetEmberFile(efi);//Copy the temp file into the final render controller. - ui.FinalRenderCurrentSpin->setMaximum(efi.Size()); + ui.FinalRenderCurrentSpin->setMaximum(int(efi.Size())); ui.FinalRenderCurrentSpin->blockSignals(true); ui.FinalRenderCurrentSpin->setValue(index);//Set the currently selected ember to the one that was being edited. ui.FinalRenderCurrentSpin->blockSignals(false); diff --git a/Source/Fractorium/FinalRenderEmberController.cpp b/Source/Fractorium/FinalRenderEmberController.cpp index 73fd1ae..a861079 100644 --- a/Source/Fractorium/FinalRenderEmberController.cpp +++ b/Source/Fractorium/FinalRenderEmberController.cpp @@ -142,7 +142,7 @@ FinalRenderEmberController::FinalRenderEmberController(FractoriumFinalRenderD [&](size_t strip) { },//Error. [&](Ember& finalEmber)//Final strip. { - QImage image(finalEmber.m_FinalRasW, finalEmber.m_FinalRasH, QImage::Format_RGBA8888);//The label wants RGBA. + QImage image(int(finalEmber.m_FinalRasW), int(finalEmber.m_FinalRasH), QImage::Format_RGBA8888);//The label wants RGBA. memcpy(image.scanLine(0), m_PreviewFinalImage.data(), finalEmber.m_FinalRasW * finalEmber.m_FinalRasH * 4);//Memcpy the data in. QPixmap pixmap(QPixmap::fromImage(image)); QMetaObject::invokeMethod(widget, "setPixmap", Qt::QueuedConnection, Q_ARG(QPixmap, pixmap)); diff --git a/Source/Fractorium/FinalRenderEmberController.h b/Source/Fractorium/FinalRenderEmberController.h index 5b384f5..eea2755 100644 --- a/Source/Fractorium/FinalRenderEmberController.h +++ b/Source/Fractorium/FinalRenderEmberController.h @@ -43,7 +43,7 @@ struct FinalRenderGuiState double m_Quality; uint m_TemporalSamples; uint m_Supersample; - uint m_Strips; + size_t m_Strips; }; /// diff --git a/Source/Fractorium/FractoriumCommon.h b/Source/Fractorium/FractoriumCommon.h index f149544..6f48aa6 100644 --- a/Source/Fractorium/FractoriumCommon.h +++ b/Source/Fractorium/FractoriumCommon.h @@ -211,7 +211,7 @@ static vector> Devices(const QList& selectedDevic auto& devices = OpenCLInfo::Instance()->DeviceIndices(); vec.reserve(selectedDevices.size()); - for (size_t i = 0; i < selectedDevices.size(); i++) + for (int i = 0; i < selectedDevices.size(); i++) { auto index = selectedDevices[i].toUInt(); @@ -235,9 +235,9 @@ static void SetupDeviceTable(QTableWidget* table, const QList& setting bool primary = false; auto& deviceNames = OpenCLInfo::Instance()->AllDeviceNames(); table->clearContents(); - table->setRowCount(deviceNames.size()); + table->setRowCount(int(deviceNames.size())); - for (size_t i = 0; i < deviceNames.size(); i++) + for (int i = 0; i < deviceNames.size(); i++) { auto checkItem = new QTableWidgetItem(); auto radio = new QRadioButton(); @@ -405,4 +405,4 @@ static QList GetAllParents(QWidget* widget) } return parents; -} \ No newline at end of file +} diff --git a/Source/Fractorium/FractoriumEmberController.cpp b/Source/Fractorium/FractoriumEmberController.cpp index d1f1bab..8d5bb6c 100644 --- a/Source/Fractorium/FractoriumEmberController.cpp +++ b/Source/Fractorium/FractoriumEmberController.cpp @@ -100,7 +100,7 @@ FractoriumEmberController::FractoriumEmberController(Fractorium* fractorium) if (auto top = tree->topLevelItem(0)) { - for (size_t i = start; m_PreviewRun && i < end && i < m_EmberFile.Size(); i++) + for (auto i = start; m_PreviewRun && i < end && i < m_EmberFile.Size(); i++) { Ember ember = m_EmberFile.m_Embers[i]; ember.SyncSize(); @@ -112,7 +112,7 @@ FractoriumEmberController::FractoriumEmberController(Fractorium* fractorium) if (m_PreviewRenderer->Run(m_PreviewFinalImage) == eRenderStatus::RENDER_OK) { - if (auto treeItem = dynamic_cast*>(top->child(i))) + if (auto treeItem = dynamic_cast*>(top->child(int(i)))) { //It is critical that Qt::BlockingQueuedConnection is passed because this is running on a different thread than the UI. //This ensures the events are processed in order as each preview is updated, and that control does not return here @@ -173,8 +173,8 @@ template Ember* FractoriumEmberController::CurrentEmber() { r template void FractoriumEmberController::ConstrainDimensions(Ember& ember) { - ember.m_FinalRasW = std::min(m_Fractorium->ui.GLDisplay->MaxTexSize(), ember.m_FinalRasW); - ember.m_FinalRasH = std::min(m_Fractorium->ui.GLDisplay->MaxTexSize(), ember.m_FinalRasH); + ember.m_FinalRasW = std::min(m_Fractorium->ui.GLDisplay->MaxTexSize(), int(ember.m_FinalRasW)); + ember.m_FinalRasH = std::min(m_Fractorium->ui.GLDisplay->MaxTexSize(), int(ember.m_FinalRasH)); } /// @@ -190,7 +190,7 @@ void FractoriumEmberController::SetEmber(size_t index) { if (auto top = m_Fractorium->ui.LibraryTree->topLevelItem(0)) { - for (uint i = 0; i < top->childCount(); i++) + for (int i = 0; i < top->childCount(); i++) { if (auto emberItem = dynamic_cast*>(top->child(i))) emberItem->setSelected(i == index); @@ -229,7 +229,7 @@ void FractoriumEmberController::Update(std::function func, bool template void FractoriumEmberController::UpdateXform(std::function*)> func, eXformUpdate updateType, bool updateRender, eProcessAction action) { - size_t i = 0; + int i = 0; bool isCurrentFinal = m_Ember.IsFinalXform(CurrentXform()); bool doFinal = updateType != eXformUpdate::UPDATE_SELECTED_EXCEPT_FINAL && updateType != eXformUpdate::UPDATE_ALL_EXCEPT_FINAL; diff --git a/Source/Fractorium/FractoriumEmberController.h b/Source/Fractorium/FractoriumEmberController.h index e8a54e5..760fed0 100644 --- a/Source/Fractorium/FractoriumEmberController.h +++ b/Source/Fractorium/FractoriumEmberController.h @@ -199,7 +199,7 @@ public: virtual void RandomXaos() { } //Palette. - virtual int InitPaletteList(const string& s) { return 0; } + virtual size_t InitPaletteList(const string& s) { return 0; } virtual bool FillPaletteTable(const string& s) { return false; } virtual void ApplyPaletteToEmber() { } virtual void PaletteAdjust() { } @@ -240,9 +240,9 @@ protected: bool m_Shared; bool m_LastEditWasUndoRedo; vector> m_Devices; - uint m_SubBatchCount; + size_t m_SubBatchCount; uint m_FailedRenders; - uint m_UndoIndex; + size_t m_UndoIndex; double m_LockedScale; eRendererType m_RenderType; eEditUndoState m_EditState; @@ -443,7 +443,7 @@ public: virtual void RandomXaos() override; //Palette. - virtual int InitPaletteList(const string& s) override; + virtual size_t InitPaletteList(const string& s) override; virtual bool FillPaletteTable(const string& s) override; virtual void ApplyPaletteToEmber() override; virtual void PaletteAdjust() override; diff --git a/Source/Fractorium/FractoriumLibrary.cpp b/Source/Fractorium/FractoriumLibrary.cpp index fe27f7c..c057866 100644 --- a/Source/Fractorium/FractoriumLibrary.cpp +++ b/Source/Fractorium/FractoriumLibrary.cpp @@ -18,7 +18,7 @@ void Fractorium::InitLibraryUI() /// A pair containing the index of the item clicked and a pointer to the item pair Fractorium::GetCurrentEmberIndex() { - size_t index = 0; + int index = 0; QTreeWidgetItem* item = nullptr; auto tree = ui.LibraryTree; @@ -141,7 +141,7 @@ void FractoriumEmberController::FillLibraryTree(int selectIndex) emberItem->setSelected(true); QCoreApplication::flush(); - RenderPreviews(0, m_EmberFile.Size()); + RenderPreviews(0, uint(m_EmberFile.Size())); tree->expandAll(); } @@ -180,7 +180,7 @@ void FractoriumEmberController::UpdateLibraryTree() //the pointers contained in the EmberTreeWidgetItems. So reassign all pointers here. SyncPointers(); tree->blockSignals(false); - RenderPreviews(childCount, m_EmberFile.Size()); + RenderPreviews(childCount, uint(m_EmberFile.Size())); } } @@ -334,7 +334,7 @@ void FractoriumEmberController::RenderPreviews(uint start, uint end) } tree->blockSignals(false); - m_PreviewResult = QtConcurrent::run(m_PreviewRenderFunc, 0, m_EmberFile.Size()); + m_PreviewResult = QtConcurrent::run(m_PreviewRenderFunc, 0, uint(m_EmberFile.Size())); } else m_PreviewResult = QtConcurrent::run(m_PreviewRenderFunc, start, end); diff --git a/Source/Fractorium/FractoriumMenus.cpp b/Source/Fractorium/FractoriumMenus.cpp index 9039b38..c21b44c 100644 --- a/Source/Fractorium/FractoriumMenus.cpp +++ b/Source/Fractorium/FractoriumMenus.cpp @@ -60,7 +60,7 @@ void FractoriumEmberController::NewFlock(size_t count) for (size_t i = 0; i < count; i++) { - m_SheepTools->Random(ember, m_FilteredVariations, static_cast(QTIsaac::GlobalRand->Frand(-2, 2)), 0, MAX_CL_VARS); + m_SheepTools->Random(ember, m_FilteredVariations, static_cast(QTIsaac::LockedFrand(-2, 2)), 0, MAX_CL_VARS); ParamsToEmber(ember); ember.m_Index = i; ember.m_Name = m_EmberFile.m_Filename.toStdString() + "_" + ToString(i + 1ULL).toStdString(); @@ -119,7 +119,7 @@ void FractoriumEmberController::NewRandomFlameInCurrentFile() { Ember ember; StopPreviewRender(); - m_SheepTools->Random(ember, m_FilteredVariations, static_cast(QTIsaac::GlobalRand->Frand(-2, 2)), 0, MAX_CL_VARS); + m_SheepTools->Random(ember, m_FilteredVariations, static_cast(QTIsaac::LockedFrand(-2, 2)), 0, MAX_CL_VARS); ParamsToEmber(ember); ember.m_Name = EmberFile::DefaultEmberName(m_EmberFile.Size() + 1).toStdString(); ember.m_Index = m_EmberFile.Size(); @@ -172,7 +172,7 @@ void FractoriumEmberController::OpenAndPrepFiles(const QStringList& filenames EmberFile emberFile; XmlToEmber parser; vector> embers; - uint previousSize = append ? m_EmberFile.Size() : 0; + uint previousSize = append ? uint(m_EmberFile.Size()) : 0u; StopPreviewRender(); emberFile.m_Filename = filenames[0]; @@ -366,7 +366,7 @@ void Fractorium::OnActionSaveCurrentScreen(bool checked) template void FractoriumEmberController::SaveCurrentToOpenedFile() { - size_t i; + uint i; bool fileFound = false; for (i = 0; i < m_EmberFile.Size(); i++) @@ -415,7 +415,7 @@ void FractoriumEmberController::Undo() { int index = m_Ember.GetTotalXformIndex(CurrentXform()); m_LastEditWasUndoRedo = true; - m_UndoIndex = std::max(0u, m_UndoIndex - 1u); + m_UndoIndex = std::max(0u, m_UndoIndex - 1u); SetEmber(m_UndoList[m_UndoIndex], true); m_EditState = eEditUndoState::UNDO_REDO; @@ -439,7 +439,7 @@ void FractoriumEmberController::Redo() { int index = m_Ember.GetTotalXformIndex(CurrentXform()); m_LastEditWasUndoRedo = true; - m_UndoIndex = std::min(m_UndoIndex + 1, m_UndoList.size() - 1); + m_UndoIndex = std::min(m_UndoIndex + 1, m_UndoList.size() - 1); SetEmber(m_UndoList[m_UndoIndex], true); m_EditState = eEditUndoState::UNDO_REDO; @@ -506,7 +506,7 @@ void Fractorium::OnActionCopyAllXml(bool checked) { m_Controller->CopyAllXml(); template void FractoriumEmberController::PasteXmlAppend() { - uint i, previousSize = m_EmberFile.Size(); + size_t previousSize = m_EmberFile.Size(); string s, errors; XmlToEmber parser; vector> embers; @@ -514,7 +514,7 @@ void FractoriumEmberController::PasteXmlAppend() auto b = codec->fromUnicode(QApplication::clipboard()->text()); s.reserve(b.size()); - for (i = 0; i < b.size(); i++) + for (auto i = 0; i < b.size(); i++) { if (uint(b[i]) < 128u) s.push_back(b[i]); @@ -532,7 +532,7 @@ void FractoriumEmberController::PasteXmlAppend() if (!embers.empty()) { - for (i = 0; i < embers.size(); i++) + for (auto i = 0; i < embers.size(); i++) { embers[i].m_Index = m_EmberFile.Size(); ConstrainDimensions(embers[i]);//Do not exceed the max texture size. @@ -560,7 +560,6 @@ void Fractorium::OnActionPasteXmlAppend(bool checked) { m_Controller->PasteXmlAp template void FractoriumEmberController::PasteXmlOver() { - uint i; string s, errors; XmlToEmber parser; auto backupEmber = m_EmberFile.m_Embers[0]; @@ -568,7 +567,7 @@ void FractoriumEmberController::PasteXmlOver() auto b = codec->fromUnicode(QApplication::clipboard()->text()); s.reserve(b.size()); - for (i = 0; i < b.size(); i++) + for (auto i = 0; i < b.size(); i++) { if (uint(b[i]) < 128u) s.push_back(b[i]); @@ -587,7 +586,7 @@ void FractoriumEmberController::PasteXmlOver() if (m_EmberFile.Size()) { - for (i = 0; i < m_EmberFile.Size(); i++) + for (auto i = 0; i < m_EmberFile.Size(); i++) { m_EmberFile.m_Embers[i].m_Index = i; ConstrainDimensions(m_EmberFile.m_Embers[i]);//Do not exceed the max texture size. @@ -698,8 +697,8 @@ void FractoriumEmberController::AddReflectiveSymmetry() Update([&]() { m_Ember.AddSymmetry(-1, m_Rand); - int index = m_Ember.TotalXformCount() - (m_Ember.UseFinalXform() ? 2 : 1);//Set index to the last item before final. - FillXforms(index); + auto index = m_Ember.TotalXformCount() - (m_Ember.UseFinalXform() ? 2 : 1);//Set index to the last item before final. + FillXforms(int(index)); }); } @@ -716,8 +715,8 @@ void FractoriumEmberController::AddRotationalSymmetry() Update([&]() { m_Ember.AddSymmetry(2, m_Rand); - int index = m_Ember.TotalXformCount() - (m_Ember.UseFinalXform() ? 2 : 1);//Set index to the last item before final. - FillXforms(index); + auto index = m_Ember.TotalXformCount() - (m_Ember.UseFinalXform() ? 2 : 1);//Set index to the last item before final. + FillXforms(int(index)); }); } @@ -734,8 +733,8 @@ void FractoriumEmberController::AddBothSymmetry() Update([&]() { m_Ember.AddSymmetry(-2, m_Rand); - int index = m_Ember.TotalXformCount() - (m_Ember.UseFinalXform() ? 2 : 1);//Set index to the last item before final. - FillXforms(index); + auto index = m_Ember.TotalXformCount() - (m_Ember.UseFinalXform() ? 2 : 1);//Set index to the last item before final. + FillXforms(int(index)); }); } diff --git a/Source/Fractorium/FractoriumPalette.cpp b/Source/Fractorium/FractoriumPalette.cpp index 6609953..e40add6 100644 --- a/Source/Fractorium/FractoriumPalette.cpp +++ b/Source/Fractorium/FractoriumPalette.cpp @@ -49,7 +49,7 @@ void Fractorium::InitPaletteUI() /// The full path to the palette files folder /// The number of palettes successfully added template -int FractoriumEmberController::InitPaletteList(const string& s) +size_t FractoriumEmberController::InitPaletteList(const string& s) { QDirIterator it(s.c_str(), QStringList() << "*.xml", QDir::Files, QDirIterator::FollowSymlinks); m_PaletteList.Clear(); @@ -84,7 +84,7 @@ bool FractoriumEmberController::FillPaletteTable(const string& s) auto palettePreviewTable = m_Fractorium->ui.PalettePreviewTable; m_CurrentPaletteFilePath = m_Fractorium->ui.PaletteFilenameCombo->property("path").toString().toStdString() + "/" + s; - if (size_t paletteSize = m_PaletteList.Size(m_CurrentPaletteFilePath)) + if (int paletteSize = int(m_PaletteList.Size(m_CurrentPaletteFilePath))) { paletteTable->clear(); paletteTable->blockSignals(true); @@ -98,7 +98,7 @@ bool FractoriumEmberController::FillPaletteTable(const string& s) paletteTable->setHorizontalHeaderItem(1, paletteHeader); //Palette list table. - for (size_t i = 0; i < paletteSize; i++) + for (auto i = 0; i < paletteSize; i++) { if (auto p = m_PaletteList.GetPalette(m_CurrentPaletteFilePath, i)) { @@ -106,7 +106,7 @@ bool FractoriumEmberController::FillPaletteTable(const string& s) auto nameCol = new QTableWidgetItem(p->m_Name.c_str()); nameCol->setToolTip(p->m_Name.c_str()); paletteTable->setItem(i, 0, nameCol); - QImage image(v.data(), p->Size(), PALETTE_CELL_HEIGHT, QImage::Format_RGB888); + QImage image(v.data(), int(p->Size()), PALETTE_CELL_HEIGHT, QImage::Format_RGB888); auto paletteItem = new PaletteTableWidgetItem(p); paletteItem->setData(Qt::DecorationRole, QPixmap::fromImage(image)); paletteTable->setItem(i, 1, paletteItem); @@ -168,7 +168,7 @@ void FractoriumEmberController::UpdateAdjustedPaletteGUI(Palette& palette) { //Use the adjusted palette to fill the preview palette control so the user can see the effects of applying the adjustements. vector v = palette.MakeRgbPaletteBlock(PALETTE_CELL_HEIGHT);//Make the palette repeat for PALETTE_CELL_HEIGHT rows. - m_FinalPaletteImage = QImage(palette.Size(), PALETTE_CELL_HEIGHT, QImage::Format_RGB888);//Create a QImage out of it. + m_FinalPaletteImage = QImage(int(palette.Size()), PALETTE_CELL_HEIGHT, QImage::Format_RGB888);//Create a QImage out of it. memcpy(m_FinalPaletteImage.scanLine(0), v.data(), v.size() * sizeof(v[0]));//Memcpy the data in. QPixmap pixmap(QPixmap::fromImage(m_FinalPaletteImage));//Create a QPixmap out of the QImage. previewPaletteItem->setData(Qt::DecorationRole, pixmap.scaled(QSize(pixmap.width(), palettePreviewTable->rowHeight(0) + 2), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));//Set the pixmap on the palette tab. @@ -235,7 +235,7 @@ void Fractorium::OnPaletteCellClicked(int row, int col) { if (auto item = dynamic_cast(ui.PaletteListTable->item(row, 1))) { - auto index = item->Index(); + auto index = int(item->Index()); if (m_PreviousPaletteRow != index) { @@ -272,7 +272,7 @@ void Fractorium::OnPaletteRandomSelectButtonClicked(bool checked) uint i = 0; int rowCount = ui.PaletteListTable->rowCount() - 1; - while ((i = QTIsaac::GlobalRand->Rand(rowCount)) == uint(m_PreviousPaletteRow)); + while ((i = QTIsaac::LockedRand(rowCount)) == uint(m_PreviousPaletteRow)); if (checked) OnPaletteCellDoubleClicked(i, 1);//Will clear the adjustments. @@ -287,22 +287,21 @@ void Fractorium::OnPaletteRandomSelectButtonClicked(bool checked) /// void Fractorium::OnPaletteRandomAdjustButtonClicked(bool checked) { - auto gRand = QTIsaac::GlobalRand.get(); - m_PaletteHueSpin->setValue(-180 + gRand->Rand(361)); - m_PaletteSaturationSpin->setValue(-50 + gRand->Rand(101));//Full range of these leads to bad palettes, so clamp range. - m_PaletteBrightnessSpin->setValue(-50 + gRand->Rand(101)); - m_PaletteContrastSpin->setValue(-50 + gRand->Rand(101)); + m_PaletteHueSpin->setValue(-180 + QTIsaac::LockedRand(361)); + m_PaletteSaturationSpin->setValue(-50 + QTIsaac::LockedRand(101));//Full range of these leads to bad palettes, so clamp range. + m_PaletteBrightnessSpin->setValue(-50 + QTIsaac::LockedRand(101)); + m_PaletteContrastSpin->setValue(-50 + QTIsaac::LockedRand(101)); //Doing frequency and blur together gives bad palettes that are just a solid color. - if (gRand->RandBit()) + if (QTIsaac::LockedRandBit()) { - m_PaletteBlurSpin->setValue(gRand->Rand(21)); + m_PaletteBlurSpin->setValue(QTIsaac::LockedRand(21)); m_PaletteFrequencySpin->setValue(1); } else { m_PaletteBlurSpin->setValue(0); - m_PaletteFrequencySpin->setValue(1 + gRand->Rand(10)); + m_PaletteFrequencySpin->setValue(1 + QTIsaac::LockedRand(10)); } OnPaletteAdjust(0); diff --git a/Source/Fractorium/FractoriumRender.cpp b/Source/Fractorium/FractoriumRender.cpp index f919c06..5eb63fa 100644 --- a/Source/Fractorium/FractoriumRender.cpp +++ b/Source/Fractorium/FractoriumRender.cpp @@ -260,7 +260,7 @@ bool FractoriumEmberController::SyncSizes() if (!m_GLController->SizesMatch()) { m_GLController->ClearWindow(); - gl->SetDimensions(m_Ember.m_FinalRasW, m_Ember.m_FinalRasH); + gl->SetDimensions(int(m_Ember.m_FinalRasW), int(m_Ember.m_FinalRasH)); gl->Allocate(); gl->SetViewport(); @@ -660,12 +660,12 @@ bool Fractorium::CreateControllerFromOptions() if (!m_Controller.get() || (m_Controller->SizeOfT() != elementSize)) { - double hue = m_PaletteHueSpin->value(); - double sat = m_PaletteSaturationSpin->value(); - double bright = m_PaletteBrightnessSpin->value(); - double con = m_PaletteContrastSpin->value(); - double blur = m_PaletteBlurSpin->value(); - double freq = m_PaletteFrequencySpin->value(); + auto hue = m_PaletteHueSpin->value(); + auto sat = m_PaletteSaturationSpin->value(); + auto bright = m_PaletteBrightnessSpin->value(); + auto con = m_PaletteContrastSpin->value(); + auto blur = m_PaletteBlurSpin->value(); + auto freq = m_PaletteFrequencySpin->value(); #ifdef DO_DOUBLE Ember ed; EmberFile efd; diff --git a/Source/Fractorium/FractoriumSettings.cpp b/Source/Fractorium/FractoriumSettings.cpp index 9d2fa4a..f3cdc6e 100644 --- a/Source/Fractorium/FractoriumSettings.cpp +++ b/Source/Fractorium/FractoriumSettings.cpp @@ -180,8 +180,8 @@ void FractoriumSettings::FinalTemporalSamples(uint i) { setValue(FINALTEMPO uint FractoriumSettings::FinalSupersample() { return value(FINALSUPERSAMPLE).toUInt(); } void FractoriumSettings::FinalSupersample(uint i) { setValue(FINALSUPERSAMPLE, i); } -uint FractoriumSettings::FinalStrips() { return value(FINALSTRIPS).toUInt(); } -void FractoriumSettings::FinalStrips(uint i) { setValue(FINALSTRIPS, i); } +size_t FractoriumSettings::FinalStrips() { return value(FINALSTRIPS).toULongLong(); } +void FractoriumSettings::FinalStrips(size_t i) { setValue(FINALSTRIPS, uint(i)); } /// /// Xml file saving settings. diff --git a/Source/Fractorium/FractoriumSettings.h b/Source/Fractorium/FractoriumSettings.h index 36612ac..a1d3011 100644 --- a/Source/Fractorium/FractoriumSettings.h +++ b/Source/Fractorium/FractoriumSettings.h @@ -77,16 +77,16 @@ public: bool EarlyClip(); void EarlyClip(bool b); - + bool YAxisUp(); void YAxisUp(bool b); bool Transparency(); void Transparency(bool b); - + bool OpenCL(); void OpenCL(bool b); - + bool Double(); void Double(bool b); @@ -113,13 +113,13 @@ public: uint OpenCLSubBatch(); void OpenCLSubBatch(uint i); - + uint RandomCount(); void RandomCount(uint i); bool FinalEarlyClip(); void FinalEarlyClip(bool b); - + bool FinalYAxisUp(); void FinalYAxisUp(bool b); @@ -131,7 +131,7 @@ public: bool FinalDouble(); void FinalDouble(bool b); - + bool FinalSaveXml(); void FinalSaveXml(bool b); @@ -143,10 +143,10 @@ public: bool FinalKeepAspect(); void FinalKeepAspect(bool b); - + uint FinalScale(); void FinalScale(uint i); - + QString FinalExt(); void FinalExt(const QString& s); @@ -168,8 +168,8 @@ public: uint FinalSupersample(); void FinalSupersample(uint i); - uint FinalStrips(); - void FinalStrips(uint i); + size_t FinalStrips(); + void FinalStrips(size_t i); uint XmlTemporalSamples(); void XmlTemporalSamples(uint i); diff --git a/Source/Fractorium/FractoriumXforms.cpp b/Source/Fractorium/FractoriumXforms.cpp index 91dc804..bb57490 100644 --- a/Source/Fractorium/FractoriumXforms.cpp +++ b/Source/Fractorium/FractoriumXforms.cpp @@ -101,7 +101,7 @@ void FractoriumEmberController::AddXform() newXform.m_Weight = 0.25; newXform.m_ColorX = m_Rand.Frand01(); m_Ember.AddXform(newXform); - int index = m_Ember.TotalXformCount() - (m_Ember.UseFinalXform() ? 2 : 1);//Set index to the last item before final. + int index = int(m_Ember.TotalXformCount() - (m_Ember.UseFinalXform() ? 2 : 1));//Set index to the last item before final. FillXforms(index); }); } @@ -148,7 +148,7 @@ void FractoriumEmberController::AddLinkedXform() xform->SetXaos(count - 1, 1);//Set the xaos value for the previous xform pointing to the new one to one. xform->m_Opacity = 0;//Clear the opacity of the previous xform. - int index = m_Ember.TotalXformCount() - (m_Ember.UseFinalXform() ? 2 : 1);//Set index to the last item before final. + int index = int(m_Ember.TotalXformCount() - (m_Ember.UseFinalXform() ? 2 : 1));//Set index to the last item before final. FillXforms(index); FillXaos(); }, eXformUpdate::UPDATE_CURRENT); @@ -178,7 +178,7 @@ void FractoriumEmberController::DuplicateXform() for (auto& it : vec) m_Ember.AddXform(it); - int index = m_Ember.TotalXformCount() - (m_Ember.UseFinalXform() ? 2 : 1);//Set index to the last item before final. + int index = int(m_Ember.TotalXformCount() - (m_Ember.UseFinalXform() ? 2 : 1));//Set index to the last item before final. FillXforms(index);//Handles xaos. }); } @@ -257,7 +257,7 @@ void FractoriumEmberController::DeleteXforms() if (offset) { - int index = m_Ember.TotalXformCount() - (m_Ember.UseFinalXform() ? 2 : 1);//Set index to the last item before final. Note final is requeried one last time. + int index = int(m_Ember.TotalXformCount() - (m_Ember.UseFinalXform() ? 2 : 1));//Set index to the last item before final. Note final is requeried one last time. FillXforms(index); UpdateRender(); } @@ -284,7 +284,7 @@ void FractoriumEmberController::AddFinalXform() auto combo = m_Fractorium->ui.CurrentXformCombo; final.AddVariation(new LinearVariation());//Just a placeholder so other parts of the code don't see it as being empty. m_Ember.SetFinalXform(final); - int index = m_Ember.TotalXformCount() - 1;//Set index to the last item. + int index = int(m_Ember.TotalXformCount() - 1);//Set index to the last item. FillXforms(index); }); } diff --git a/Source/Fractorium/FractoriumXformsColor.cpp b/Source/Fractorium/FractoriumXformsColor.cpp index 92a61ff..37dfcf0 100644 --- a/Source/Fractorium/FractoriumXformsColor.cpp +++ b/Source/Fractorium/FractoriumXformsColor.cpp @@ -204,7 +204,7 @@ void Fractorium::OnCurvesBlueRadioButtonToggled(bool checked) { if (checked) ui template QColor FractoriumEmberController::ColorIndexToQColor(double d) { - v4T entry = m_Ember.m_Palette[Clamp(d * COLORMAP_LENGTH_MINUS_1, 0, m_Ember.m_Palette.Size())]; + v4T entry = m_Ember.m_Palette[Clamp(d * COLORMAP_LENGTH_MINUS_1, 0, m_Ember.m_Palette.Size())]; entry.r *= 255; entry.g *= 255; entry.b *= 255; @@ -220,9 +220,9 @@ void FractoriumEmberController::FillCurvesControl() { m_Fractorium->ui.CurvesView->blockSignals(true); - for (size_t i = 0; i < 4; i++) + for (auto i = 0; i < 4; i++) { - for (size_t j = 1; j < 3; j++)//Only do middle points. + for (auto j = 1; j < 3; j++)//Only do middle points. { QPointF point(m_Ember.m_Curves.m_Points[i][j].x, m_Ember.m_Curves.m_Points[i][j].y); m_Fractorium->ui.CurvesView->Set(i, j, point); diff --git a/Source/Fractorium/GLEmberController.cpp b/Source/Fractorium/GLEmberController.cpp index 4a0ff1c..2f7a938 100644 --- a/Source/Fractorium/GLEmberController.cpp +++ b/Source/Fractorium/GLEmberController.cpp @@ -255,13 +255,13 @@ void GLEmberController::QueryMatrices(bool print) if (print) { - for (size_t i = 0; i < 4; i++) + for (glm::length_t i = 0; i < 4; i++) qDebug() << "Viewport[" << i << "] = " << m_Viewport[i] << "\n"; - for (size_t i = 0; i < 16; i++) + for (glm::length_t i = 0; i < 16; i++) qDebug() << "Modelview[" << i << "] = " << glm::value_ptr(m_Modelview)[i] << "\n"; - for (size_t i = 0; i < 16; i++) + for (glm::length_t i = 0; i < 16; i++) qDebug() << "Projection[" << i << "] = " << glm::value_ptr(m_Projection)[i] << "\n"; } } diff --git a/Source/Fractorium/GLWidget.cpp b/Source/Fractorium/GLWidget.cpp index 448422a..3a92c97 100644 --- a/Source/Fractorium/GLWidget.cpp +++ b/Source/Fractorium/GLWidget.cpp @@ -995,7 +995,7 @@ int GLEmberController::UpdateHover(v3T& glCoords) bool post = m_Fractorium->ui.PostAffineGroupBox->isChecked(); bool preAll = pre && m_Fractorium->DrawAllPre(); bool postAll = post && m_Fractorium->DrawAllPost(); - uint bestIndex = -1; + int bestIndex = -1; T bestDist = 10; auto ember = m_FractoriumEmberController->CurrentEmber(); m_HoverType = eHoverType::HoverNone; @@ -1012,12 +1012,12 @@ int GLEmberController::UpdateHover(v3T& glCoords) if (CheckXformHover(m_SelectedXform, glCoords, bestDist, checkSelPre, checkSelPost)) { m_HoverXform = m_SelectedXform; - bestIndex = ember->GetTotalXformIndex(m_SelectedXform); + bestIndex = int(ember->GetTotalXformIndex(m_SelectedXform)); } } //Check all xforms. - for (size_t i = 0; i < ember->TotalXformCount(); i++) + for (int i = 0; i < int(ember->TotalXformCount()); i++) { auto xform = ember->GetTotalXform(i); @@ -1186,7 +1186,8 @@ void GLEmberController::CalcDragXAxis() if (GetShift()) { - v3T snapped = GetControl() ? SnapToNormalizedAngle(m_MouseWorldPos + m_DragHandleOffset, 24) : m_MouseWorldPos + m_DragHandleOffset; + auto posOffset = m_MouseWorldPos + m_DragHandleOffset; + v3T snapped = GetControl() ? SnapToNormalizedAngle(posOffset, 24u) : posOffset; auto startDiff = (v2T(m_MouseDownWorldPos) * scale) - m_DragSrcTransform.O(); auto endDiff = (v2T(snapped) * scale) - m_DragSrcTransform.O(); T startAngle = std::atan2(startDiff.y, startDiff.x); @@ -1222,11 +1223,12 @@ void GLEmberController::CalcDragXAxis() else { v3T diff; + auto posOffset = m_MouseWorldPos + m_DragHandleOffset; if (GetControl()) - diff = SnapToGrid(m_MouseWorldPos + m_DragHandleOffset) - m_MouseDownWorldPos; + diff = SnapToGrid(posOffset) - m_MouseDownWorldPos; else - diff = (m_MouseWorldPos + m_DragHandleOffset) - m_MouseDownWorldPos; + diff = posOffset - m_MouseDownWorldPos; auto origXPlusOff = v3T(m_DragSrcTransform.X(), 0) + (diff * scale); m_FractoriumEmberController->UpdateXform([&](Xform* xform) @@ -1274,7 +1276,8 @@ void GLEmberController::CalcDragYAxis() if (GetShift()) { - v3T snapped = GetControl() ? SnapToNormalizedAngle(m_MouseWorldPos + m_DragHandleOffset, 24) : m_MouseWorldPos + m_DragHandleOffset; + auto posOffset = m_MouseWorldPos + m_DragHandleOffset; + v3T snapped = GetControl() ? SnapToNormalizedAngle(posOffset, 24u) : posOffset; auto startDiff = (v2T(m_MouseDownWorldPos) * scale) - m_DragSrcTransform.O(); auto endDiff = (v2T(snapped) * scale) - m_DragSrcTransform.O(); T startAngle = std::atan2(startDiff.y, startDiff.x); @@ -1310,11 +1313,12 @@ void GLEmberController::CalcDragYAxis() else { v3T diff; + auto posOffset = m_MouseWorldPos + m_DragHandleOffset; if (GetControl()) - diff = SnapToGrid(m_MouseWorldPos + m_DragHandleOffset) - m_MouseDownWorldPos; + diff = SnapToGrid(posOffset) - m_MouseDownWorldPos; else - diff = (m_MouseWorldPos + m_DragHandleOffset) - m_MouseDownWorldPos; + diff = posOffset - m_MouseDownWorldPos; auto origXPlusOff = v3T(m_DragSrcTransform.Y(), 0) + (diff * scale); m_FractoriumEmberController->UpdateXform([&](Xform* xform) diff --git a/Source/Fractorium/SpinBox.cpp b/Source/Fractorium/SpinBox.cpp index 7adb580..8f98960 100644 --- a/Source/Fractorium/SpinBox.cpp +++ b/Source/Fractorium/SpinBox.cpp @@ -43,6 +43,8 @@ void SpinBox::SetValueStealth(int d) blockSignals(false); } +void SpinBox::SetValueStealth(size_t d) { SetValueStealth(int(d)); } + /// /// Set whether to respond to double click events. /// diff --git a/Source/Fractorium/SpinBox.h b/Source/Fractorium/SpinBox.h index ee3e72a..8ed2ce0 100644 --- a/Source/Fractorium/SpinBox.h +++ b/Source/Fractorium/SpinBox.h @@ -19,6 +19,7 @@ public: explicit SpinBox(QWidget* p = 0, int height = 16, int step = 1); virtual ~SpinBox() { } void SetValueStealth(int d); + void SetValueStealth(size_t d); void DoubleClick(bool b); void DoubleClickZero(int val); void DoubleClickNonZero(int val); diff --git a/Source/Fractorium/VariationsDialog.cpp b/Source/Fractorium/VariationsDialog.cpp index 837a1ef..af5bf42 100644 --- a/Source/Fractorium/VariationsDialog.cpp +++ b/Source/Fractorium/VariationsDialog.cpp @@ -127,10 +127,10 @@ void FractoriumVariationsDialog::OnSelectNoneButtonClicked(bool checked) void FractoriumVariationsDialog::Populate() { auto table = ui.VariationsTable; - auto size = std::max(std::max(m_VariationList.RegSize(), m_VariationList.PreSize()), m_VariationList.PostSize()); + int size = int(std::max(std::max(m_VariationList.RegSize(), m_VariationList.PreSize()), m_VariationList.PostSize())); table->setRowCount(size); - for (size_t i = 0; i < size; i++) + for (auto i = 0; i < size; i++) { if (auto pre = m_VariationList.GetVariation(i, eVariationType::VARTYPE_PRE)) {