--User changes

-Allow dragging in folders which will be recursively traversed for flame files.
 -Allow for adjusting scale via keyboard with the < and > keys.
 -Show the count of opened flames on the header of the library tree.

--Bug fixes
 -Attempt to preserve xaos when pasting xforms.

--Code changes
 -Default flam3 compatibility mode to true.
This commit is contained in:
Person
2020-03-08 14:17:13 -07:00
parent 3ef32565c7
commit 61ddc06151
147 changed files with 3486 additions and 24044 deletions

View File

@ -8,7 +8,7 @@ namespace EmberNs
template<> unique_ptr<QTIsaac<ISAAC_SIZE, ISAAC_INT>> QTIsaac<ISAAC_SIZE, ISAAC_INT>::GlobalRand = unique_ptr<QTIsaac<ISAAC_SIZE, ISAAC_INT>>(new QTIsaac<ISAAC_SIZE, ISAAC_INT>());
template<> unique_ptr<recursive_mutex> QTIsaac<ISAAC_SIZE, ISAAC_INT>::s_CS = unique_ptr<recursive_mutex>(new recursive_mutex());
template EMBER_API class QTIsaac<ISAAC_SIZE, ISAAC_INT>;
bool Compat::m_Compat = false;
bool Compat::m_Compat = true;
}
#include "Curves.h"

View File

@ -3261,7 +3261,7 @@ public:
ss << "\t{\n"
<< "\t\treal_t a = vIn.x + " << r << ";\n"
<< "\t\treal_t b = vIn.y;\n"
<< "\t\treal_t c = " << r << " * vIn.x + 1;\n"
<< "\t\treal_t c = fma(" << r << ", vIn.x, (real_t)(1.0));\n"
<< "\t\treal_t d = " << r << " * vIn.y;\n"
<< "\t\treal_t x = fma(a, c, b * d);\n"
<< "\t\treal_t y = fma(b, c, -(a * d));\n"

View File

@ -901,9 +901,8 @@ static void AddXformsWithXaos(Ember<T>& ember, std::vector<std::pair<Xform<T>, s
xf->SetXaos(j, 0);
else if (!preserveXaos)
xf->SetXaos(j, 1);
//else if (i - origXformCount < xforms.size())//Should never be out of bounds, but just to be safe.
// xf->SetXaos(j, xforms[i - origXformCount].first.Xaos(j - origXformCount));
else if (i - origXformCount < xforms.size())//Should never be out of bounds, but just to be safe.
xf->SetXaos(j, xforms[i - origXformCount].first.Xaos(j - origXformCount));
}
}
}

View File

@ -373,7 +373,7 @@ public:
INITBOOLOPTION(CwInterpLoops, Eob(eOptionUse::OPT_USE_GENOME, eOptionIDs::OPT_CW_INTERP_LOOPS, _T("--cwinterploops"), false, SO_NONE, " --cwinterploops Rotate clockwise during interpolation, ignored if --interploops is 0 [default: false].\n"));
INITBOOLOPTION(LockAccum, Eob(eOptionUse::OPT_USE_ALL, eOptionIDs::OPT_LOCK_ACCUM, _T("--lock_accum"), false, SO_NONE, " --lock_accum Lock threads when accumulating to the histogram using the CPU. This will drop performance to that of single threading [default: false].\n"));
INITBOOLOPTION(DumpKernel, Eob(eOptionUse::OPT_USE_RENDER, eOptionIDs::OPT_DUMP_KERNEL, _T("--dump_kernel"), false, SO_NONE, " --dump_kernel Print the iteration kernel string when using OpenCL (ignored for CPU) [default: false].\n"));
INITBOOLOPTION(Flam3Compat, Eob(eOptionUse::OPT_USE_ALL, eOptionIDs::OPT_FLAM3_COMPAT, _T("--flam3_compat"), false, SO_NONE, " --flam3_compat The behavior of the cos, cosh, cot, coth, csc, csch, sec, sech, sin, sinh, tan and tanh variations are different in flam3/Apophysis versus Chaotica. True for flam3/Apophysis behavior, false for Chaotica behavior [default: false].\n"));
INITBOOLOPTION(Flam3Compat, Eob(eOptionUse::OPT_USE_ALL, eOptionIDs::OPT_FLAM3_COMPAT, _T("--flam3_compat"), true, SO_NONE, " --flam3_compat The behavior of the cos, cosh, cot, coth, csc, csch, sec, sech, sin, sinh, tan and tanh variations are different in flam3/Apophysis versus Chaotica. True for flam3/Apophysis behavior, false for Chaotica behavior [default: true].\n"));
//Int.
INITINTOPTION(Symmetry, Eoi(eOptionUse::OPT_USE_GENOME, eOptionIDs::OPT_SYMMETRY, _T("--symmetry"), 0, SO_REQ_SEP, " --symmetry=<val> Set symmetry of result [default: 0].\n"));
INITINTOPTION(SheepGen, Eoi(eOptionUse::OPT_USE_GENOME, eOptionIDs::OPT_SHEEP_GEN, _T("--sheep_gen"), -1, SO_REQ_SEP, " --sheep_gen=<val> Sheep generation of this flame [default: -1].\n"));

View File

@ -110,7 +110,7 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt; font-weight:600;&quot;&gt;Builders, Testers and Advisors:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Linux deployment: &lt;/span&gt;&lt;a href=&quot;https://launchpad.net/~fractorium&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Gambhiro Bhikkhu&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Testing and Feedback: &lt;/span&gt;&lt;a href=&quot;http://snicker02.deviantart.com/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Brad Stefanov&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;http://www.fxysw.com/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Fengda&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;http://b33rheart.deviantart.com/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Gabor Timar&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/guephren&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Guephren&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/jeddaka&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Jeddaka,&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://boosthardware.com/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Patrick Shirkey&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;http://nightmaretf.deviantart.com/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Richard Vollebregt&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, Simon Detheridge, Tai,&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://gameryamen.deviantart.com/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Yamen&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Testing and Feedback: &lt;/span&gt;&lt;a href=&quot;http://snicker02.deviantart.com/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Brad Stefanov&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;http://www.fxysw.com/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Fengda&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;http://www.deviantart.com/b33rheart&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Gabor Timar&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/guephren&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Guephren&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/jeddaka&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Jeddaka,&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://boosthardware.com/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Patrick Shirkey&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;http://nightmaretf.deviantart.com/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Richard Vollebregt&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, Simon Detheridge, Tai,&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://gameryamen.deviantart.com/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Yamen&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Code and theory questions: &lt;/span&gt;&lt;a href=&quot;https://github.com/scottdraves/flam3&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Erik Reckase&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;http://fractron9000.sourceforge.net/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Mike Thiesen&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://github.com/scottdraves/flam3&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Scott Draves&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://github.com/stevenrobertson/cuburn&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Steve Robertson&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;http://www.chaoticafractals.com/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Thomas Ludwig&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt; font-weight:600;&quot;&gt;Code Copied:&lt;/span&gt;&lt;/p&gt;
@ -120,7 +120,10 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;http://www.qt.io/developers/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Qt&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Digia Plc (GPL v3, LGPL v2)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://g-truc.net&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;glm&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Christophe Riccio (MIT License)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://threadingbuildingblocks.org&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Threading Building Blocks&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Intel Corporation (GPLv2)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://libjpeg.sourceforge.net&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;libjpeg&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Independent JPEG Group (Free Software License)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://libpng.org&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;libpng&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Glenn Randers-Pehrson et al (Libpng License)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://xmlsoft.org&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;libxml2&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Daniel Veillard (MIT License)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://zlib.net&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;zlib&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Jean-loup Gailly, Mark Adler (Zlib License)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://burtleburtle.net/bob/cplus/isaac.hpp&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;QTIsaac&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Robert J. Jenkins, Quinn Tyler Jackson (Public Domain)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://cas.ee.ic.ac.uk/people/dt10/research/rngs-gpu-mwc64x.html&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;MWC64X Random Number Generator&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: David Thomas (Public Domain)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;https://github.com/brofield/simpleopt&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;SimpleOpt&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Brodie Thiesfield (MIT License)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt; font-weight:600;&quot;&gt;Icons and Palettes Used:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Palettes: &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/boxtail&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Boxtail&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/fardareismai&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;FarDareisMai&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/fractaldesire&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;FractalDesire&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, Rce, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/rubydeva&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Rubydeva&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/tatasz&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Tatasz&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt; (Public Domain)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Silk&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Mark James (Creative Commons Attribution 2.5 License)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://momentumdesignlab.com&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Momentum&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Momentum Design Lab (Creative Commons Attribution-ShareAlike 3.5 License)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://everaldo.com&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Crystal Clear&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Everaldo Coelho (LGPL)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://openiconlibrary.sourceforge.net&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Open Icon Library&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Jeff Israel (GPL, LGPL, Creative Commons, Public Domain)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://icons.mysitemyway.com/category/3d-transparent-glass-icons/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;3D Transparent Glass&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: iconsETC (Public Domain)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://p.yusukekamiyamane.com&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Fugue&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Yusuke Kamiyamane (Creative Commons Attribution 3.0 License)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Palettes: &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/boxtail&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Boxtail&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/fardareismai&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;FarDareisMai&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/fractaldesire&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;FractalDesire&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, Rce, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/rubydeva&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Rubydeva&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/tatasz&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Tatasz&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt; (Public Domain)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Silk&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Mark James (Creative Commons Attribution 2.5 License)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://momentumdesignlab.com&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Momentum&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Momentum Design Lab (Creative Commons Attribution-ShareAlike 3.5 License)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://everaldo.com&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Crystal Clear&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Everaldo Coelho (LGPL)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://openiconlibrary.sourceforge.net&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Open Icon Library&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Jeff Israel (GPL, LGPL, Creative Commons, Public Domain)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://icons.mysitemyway.com/category/3d-transparent-glass-icons/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;3D Transparent Glass&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: iconsETC (Public Domain)&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://p.yusukekamiyamane.com&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Fugue&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;: Yusuke Kamiyamane (Creative Commons Attribution 3.0 License)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt; font-weight:600;&quot;&gt;Benchmark and Example Flames:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;https://www.deviantart.com/b33rheart&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Gabor Timar&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/golubaja&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Golubaja&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/pillemaster&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Pillemaster&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/plangkye&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Plangkye&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/tatasz&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Tatasz&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/tyrantwave&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;TyrantWave&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;https://www.deviantart.com/zy0rg&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;Zy0rg&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>

View File

@ -369,6 +369,8 @@ bool Fractorium::eventFilter(QObject* o, QEvent* e)
static int gcount = 0;
static int hcount = 0;
static int pcount = 0;
static int commacount = 0;
static int periodcount = 0;
static int lcount = 0;
if (o == ui.GLParentScrollArea && e->type() == QEvent::Resize)
@ -429,6 +431,7 @@ bool Fractorium::eventFilter(QObject* o, QEvent* e)
unsigned int index = combo->currentIndex();
double vdist = 0.01;
double hdist = 0.01;
double zoom = 1;
double rot = 1;
double grow = 0.01;
bool shift = QGuiApplication::keyboardModifiers().testFlag(Qt::ShiftModifier);
@ -446,6 +449,7 @@ bool Fractorium::eventFilter(QObject* o, QEvent* e)
vdist *= 0.1;
rot *= 0.1;
grow *= 0.1;
zoom *= 0.1;
}
else if (ctrl)
{
@ -453,6 +457,7 @@ bool Fractorium::eventFilter(QObject* o, QEvent* e)
vdist *= 10;
rot *= 10;
grow *= 10;
zoom *= 10;
}
}
@ -542,6 +547,30 @@ bool Fractorium::eventFilter(QObject* o, QEvent* e)
return true;
}
}
else if (ke->key() == Qt::Key_Comma || ke->key() == Qt::Key_Less)
{
commacount++;
if (commacount >= times)
{
commacount = 0;
m_ScaleSpin->setValue(m_ScaleSpin->value() - zoom);
}
return true;
}
else if (ke->key() == Qt::Key_Period || ke->key() == Qt::Key_Greater)
{
periodcount++;
if (periodcount >= times)
{
periodcount = 0;
m_ScaleSpin->setValue(m_ScaleSpin->value() + zoom);
}
return true;
}
else if ((!DrawPreAffines() && pre) || (!DrawPostAffines() && !pre))//Everything below this must be for editing xforms via key press.
{
return true;
@ -695,6 +724,7 @@ void Fractorium::closeEvent(QCloseEvent* e)
/// <summary>
/// Examine the files dragged when it first enters the window area.
/// Ok if at least one file is .flam3, .flam3 or .xml, else not ok.
/// Also traverse folders recursively if a folder is included in the list of dragged items.
/// Called when the user first drags files in.
/// </summary>
/// <param name="e">The event</param>
@ -706,14 +736,36 @@ void Fractorium::dragEnterEvent(QDragEnterEvent* e)
for (auto& url : urls)
{
QString localFile = url.toLocalFile();
QFileInfo fileInfo(localFile);
QString suf = fileInfo.suffix();
auto localFile = url.toLocalFile();
if (suf == "flam3" || suf == "flame" || suf == "xml" || suf == "chaos")
if (QDir(localFile).exists())
{
e->accept();
break;
QDirIterator it(localFile, QDirIterator::Subdirectories);
while (it.hasNext())
{
auto next = it.next();
qDebug() << next;
QFileInfo fileInfo(next);
auto suf = fileInfo.suffix();
if (suf == "flam3" || suf == "flame" || suf == "xml" || suf == "chaos")
{
e->accept();
return;
}
}
}
else
{
QFileInfo fileInfo(localFile);
auto suf = fileInfo.suffix();
if (suf == "flam3" || suf == "flame" || suf == "xml" || suf == "chaos")
{
e->accept();
break;
}
}
}
}
@ -729,8 +781,8 @@ void Fractorium::dragMoveEvent(QDragMoveEvent* e)
}
/// <summary>
/// Examine and open the dropped files.
/// Called when the user drops a file in.
/// Examine and open the dropped files and/or folders.
/// Called when the user drops a file or folder in.
/// </summary>
/// <param name="e">The event</param>
void Fractorium::dropEvent(QDropEvent* e)
@ -745,12 +797,35 @@ void Fractorium::dropEvent(QDropEvent* e)
for (auto& url : urls)
{
QString localFile = url.toLocalFile();
QFileInfo fileInfo(localFile);
QString suf = fileInfo.suffix();
auto localFile = url.toLocalFile();
if (suf == "flam3" || suf == "flame" || suf == "xml" || suf == "chaos")
filenames << localFile;
if (QDir(localFile).exists())
{
QDirIterator it(localFile, QDirIterator::Subdirectories);
while (it.hasNext())
{
auto next = it.next();
qDebug() << next;
QFileInfo fileInfo(next);
if (fileInfo.isFile() && fileInfo.exists())
{
auto suf = fileInfo.suffix();
if (suf == "flam3" || suf == "flame" || suf == "xml" || suf == "chaos")
filenames << next;
}
}
}
else
{
QFileInfo fileInfo(localFile);
auto suf = fileInfo.suffix();
if (suf == "flam3" || suf == "flame" || suf == "xml" || suf == "chaos")
filenames << localFile;
}
}
}
@ -819,46 +894,46 @@ QStringList Fractorium::SetupOpenXmlDialog(bool openExamples)
QStringList filenames;
if(openExamples)
{
m_OpenFileDialog->selectFile("*");
m_OpenFileDialog->setDirectory(QCoreApplication::applicationDirPath() + "/FlameExamples");
m_OpenFileDialog->selectNameFilter("flame (*.flame)");
}
else
{
m_OpenFileDialog->setDirectory(m_Settings->OpenFolder());
m_OpenFileDialog->selectNameFilter(m_Settings->OpenXmlExt());
}
if (openExamples)
{
m_OpenFileDialog->selectFile("*");
m_OpenFileDialog->setDirectory(QCoreApplication::applicationDirPath() + "/FlameExamples");
m_OpenFileDialog->selectNameFilter("flame (*.flame)");
}
else
{
m_OpenFileDialog->setDirectory(m_Settings->OpenFolder());
m_OpenFileDialog->selectNameFilter(m_Settings->OpenXmlExt());
}
if (m_OpenFileDialog->exec() == QDialog::Accepted)
{
filenames = m_OpenFileDialog->selectedFiles();
if (!openExamples && !filenames.empty())
if (!openExamples && !filenames.empty())
m_Settings->OpenFolder(QFileInfo(filenames[0]).canonicalPath());
else
m_OpenFileDialog->selectFile("*");
}
else
m_OpenFileDialog->selectFile("*");
}
#else
QString defaultFilter;
QStringList filenames;
QString defaultFilter;
QStringList filenames;
if(openExamples)
{
defaultFilter = "flame (*.flame)";
filenames = QFileDialog::getOpenFileNames(this, tr("Open Flame"), QCoreApplication::applicationDirPath() + "/FlameExamples", tr("flame(*.flame)"), &defaultFilter);
}
else
{
defaultFilter = m_Settings->OpenXmlExt();
filenames = QFileDialog::getOpenFileNames(this, tr("Open Flame"), m_Settings->OpenFolder(), tr("flam3(*.flam3);; flame(*.flame);; xml(*.xml);; chaos (*.chaos)"), &defaultFilter);
m_Settings->OpenXmlExt(defaultFilter);
if (openExamples)
{
defaultFilter = "flame (*.flame)";
filenames = QFileDialog::getOpenFileNames(this, tr("Open Flame"), QCoreApplication::applicationDirPath() + "/FlameExamples", tr("flame(*.flame)"), &defaultFilter);
}
else
{
defaultFilter = m_Settings->OpenXmlExt();
filenames = QFileDialog::getOpenFileNames(this, tr("Open Flame"), m_Settings->OpenFolder(), tr("flam3(*.flam3);; flame(*.flame);; xml(*.xml);; chaos (*.chaos)"), &defaultFilter);
m_Settings->OpenXmlExt(defaultFilter);
if (!filenames.empty())
m_Settings->OpenFolder(QFileInfo(filenames[0]).canonicalPath());
}
if (!filenames.empty())
m_Settings->OpenFolder(QFileInfo(filenames[0]).canonicalPath());
}
#endif
return filenames;

View File

@ -552,6 +552,7 @@ void Fractorium::SyncFileCountToSequenceCount()
if (auto top = ui.LibraryTree->topLevelItem(0))
{
int count = top->childCount() - 1;
ui.LibraryTree->headerItem()->setText(0, "Current Flame File (" + QString::number(top->childCount()) + ")");
ui.SequenceStartFlameSpinBox->setMinimum(0);
ui.SequenceStartFlameSpinBox->setMaximum(count);
ui.SequenceStartFlameSpinBox->setValue(0);

View File

@ -13,7 +13,7 @@ void Fractorium::InitMenusUI()
connect(ui.ActionCopyFlameInCurrentFile, SIGNAL(triggered(bool)), this, SLOT(OnActionCopyFlameInCurrentFile(bool)), Qt::QueuedConnection);
connect(ui.ActionCreateReferenceFile, SIGNAL(triggered(bool)), this, SLOT(OnActionCreateReferenceFile(bool)), Qt::QueuedConnection);
connect(ui.ActionOpen, SIGNAL(triggered(bool)), this, SLOT(OnActionOpen(bool)), Qt::QueuedConnection);
connect(ui.ActionOpenExamples, SIGNAL(triggered(bool)), this, SLOT(OnActionOpenExamples(bool)), Qt::QueuedConnection);
connect(ui.ActionOpenExamples, SIGNAL(triggered(bool)), this, SLOT(OnActionOpenExamples(bool)), Qt::QueuedConnection);
connect(ui.ActionSaveCurrentAsXml, SIGNAL(triggered(bool)), this, SLOT(OnActionSaveCurrentAsXml(bool)), Qt::QueuedConnection);
connect(ui.ActionSaveEntireFileAsXml, SIGNAL(triggered(bool)), this, SLOT(OnActionSaveEntireFileAsXml(bool)), Qt::QueuedConnection);
connect(ui.ActionSaveCurrentScreen, SIGNAL(triggered(bool)), this, SLOT(OnActionSaveCurrentScreen(bool)), Qt::QueuedConnection);

View File

@ -202,7 +202,7 @@ void FractoriumSettings::LoadLast(bool b) { setValue(LOAD
bool FractoriumSettings::RotateAndScale() { return value(ROTSCALE).toBool(); }
void FractoriumSettings::RotateAndScale(bool b) { setValue(ROTSCALE, b); }
bool FractoriumSettings::Flam3Compat() { return value(FLAM3COMPAT).toBool(); }
bool FractoriumSettings::Flam3Compat() { return value(FLAM3COMPAT, true).toBool(); }
void FractoriumSettings::Flam3Compat(bool b) { setValue(FLAM3COMPAT, b); }
/// <summary>

View File

@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
@ -544,12 +543,13 @@ namespace apoconv
var lines = File.ReadAllLines(file);
tb1lines.AddRange(lines.ToList());
final += Apo2Fractorium(lines, true);
/*
var guid = Guid.NewGuid();
var fileonly = System.IO.Path.GetFileName(file);
final += "<Component Id=\"" + fileonly + "\" Guid=\"" + guid + "\">\n";
final += "\t<File Id=\"" + fileonly + "\" Source = \"$(var.SolutionDir)..\\..\\..\\Data\\" + fileonly + "\" KeyPath=\"yes\" Checksum=\"yes\" ReadOnly=\"yes\"/>\n";
final += "</Component>\n\n";
/*
var guid = Guid.NewGuid();
var fileonly = System.IO.Path.GetFileName(file);
final += "<Component Id=\"" + fileonly + "\" Guid=\"" + guid + "\">\n";
final += "\t<File Id=\"" + fileonly + "\" Source = \"$(var.SolutionDir)..\\..\\..\\Data\\" + fileonly + "\" KeyPath=\"yes\" Checksum=\"yes\" ReadOnly=\"yes\"/>\n";
final += "</Component>\n\n";
*/
}