mirror of
https://bitbucket.org/mfeemster/fractorium.git
synced 2025-01-21 13:10:04 -05:00
More linux work.
This commit is contained in:
parent
0438827ba5
commit
a9ecb6a78e
@ -1,154 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<CodeBlocks_layout_file>
|
||||
<ActiveTarget name="Release x64" />
|
||||
<File name="../../Source/Ember/SpatialFilter.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="../../Source/Ember/Variations04.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3789" topLine="98" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Xform.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="11593" topLine="422" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/DllMain.cpp" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/RendererBase.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="6894" topLine="183" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Variations01.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="24427" topLine="850" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/SheepTools.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="17291" topLine="598" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/VariationsDC.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="22857" topLine="672" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/VariationList.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="14159" topLine="419" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Interpolate.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="18225" topLine="507" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Ember.h" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="39146" topLine="1242" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Variations03.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="121967" topLine="3845" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/EmberToXml.h" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="21325" topLine="635" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Renderer.cpp" open="0" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="54173" topLine="1346" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Utils.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="21157" topLine="689" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/TemporalFilter.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="9058" topLine="269" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Isaac.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="8233" topLine="210" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Timing.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3212" topLine="91" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/EmberDefines.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1899" topLine="57" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Renderer.h" open="0" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="4461" topLine="77" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/EmberPch.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="314" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Palette.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="14170" topLine="295" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/DensityFilter.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="5542" topLine="173" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/XmlToEmber.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="17930" topLine="385" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Affine2D.cpp" open="0" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="10791" topLine="325" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/CarToRas.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="4534" topLine="119" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/RendererBase.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="14912" topLine="437" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/EmberPch.cpp" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Variations02.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="325" topLine="3" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Point.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3621" topLine="148" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Variations05.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="59509" topLine="1823" />
|
||||
<Cursor1 position="90092" topLine="2971" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Iterator.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -156,14 +11,99 @@
|
||||
<Cursor1 position="2705" topLine="57" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Palette.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="14170" topLine="295" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Variations01.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="24427" topLine="850" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Point.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3621" topLine="148" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Variation.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="23279" topLine="1073" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Affine2D.h" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="../../Source/Ember/CarToRas.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2877" topLine="81" />
|
||||
<Cursor1 position="4534" topLine="119" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/VariationList.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="14159" topLine="419" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Xform.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="11593" topLine="422" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Timing.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3212" topLine="91" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/DensityFilter.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="5542" topLine="173" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/RendererBase.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="6894" topLine="183" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/VariationsDC.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="22857" topLine="672" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Utils.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="21157" topLine="689" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Renderer.cpp" open="0" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="54173" topLine="1346" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Variations02.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="325" topLine="3" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/EmberToXml.h" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="21325" topLine="635" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Affine2D.cpp" open="0" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="9859" topLine="325" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/XmlToEmber.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="17930" topLine="385" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Isaac.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="8233" topLine="210" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Ember.h" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="39146" topLine="1242" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Ember.cpp" open="0" top="0" tabpos="15" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -171,9 +111,34 @@
|
||||
<Cursor1 position="14346" topLine="378" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Variations04.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="../../Source/Ember/DllMain.cpp" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="90092" topLine="2971" />
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/EmberDefines.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1899" topLine="57" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Interpolate.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="18225" topLine="507" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Affine2D.h" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2877" topLine="81" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Variations03.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="121967" topLine="3845" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/EmberPch.cpp" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/PaletteList.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -181,4 +146,39 @@
|
||||
<Cursor1 position="4617" topLine="160" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/EmberPch.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="314" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Variations05.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="59509" topLine="1823" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/Renderer.h" open="0" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="4461" topLine="77" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/TemporalFilter.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="9058" topLine="269" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/SheepTools.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="17291" topLine="598" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/SpatialFilter.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3789" topLine="98" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/Ember/RendererBase.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="14912" topLine="437" />
|
||||
</Cursor>
|
||||
</File>
|
||||
</CodeBlocks_layout_file>
|
||||
|
@ -1,69 +1,64 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<CodeBlocks_layout_file>
|
||||
<ActiveTarget name="Release x64" />
|
||||
<File name="../../Source/EmberCL/FinalAccumOpenCLKernelCreator.cpp" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="23124" topLine="478" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/EmberCLStructs.h" open="0" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="10704" topLine="341" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/OpenCLWrapper.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="5054" topLine="127" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/IterOpenCLKernelCreator.h" open="0" top="0" tabpos="15" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1445" topLine="29" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/EmberCLFunctions.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7346" topLine="309" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/DEOpenCLKernelCreator.cpp" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7955" topLine="174" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/RendererCL.cpp" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="58613" topLine="1449" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/EmberCLPch.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="794" topLine="2" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/DEOpenCLKernelCreator.h" open="0" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2365" topLine="35" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/FinalAccumOpenCLKernelCreator.h" open="0" top="0" tabpos="17" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3386" topLine="37" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/RendererCL.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1822" topLine="38" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/OpenCLWrapper.cpp" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="39340" topLine="1173" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/IterOpenCLKernelCreator.cpp" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="../../Source/EmberCL/FinalAccumOpenCLKernelCreator.h" open="0" top="0" tabpos="17" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="28977" topLine="799" />
|
||||
<Cursor1 position="3386" topLine="37" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/EmberCLFunctions.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7346" topLine="309" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/RendererCL.cpp" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="58613" topLine="1449" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/DEOpenCLKernelCreator.h" open="0" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2365" topLine="35" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/OpenCLWrapper.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="5054" topLine="127" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/RendererCL.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1822" topLine="38" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/EmberCLPch.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="794" topLine="2" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/FinalAccumOpenCLKernelCreator.cpp" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="23124" topLine="478" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/DllMain.cpp" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -71,4 +66,9 @@
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCL/IterOpenCLKernelCreator.cpp" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="28977" topLine="799" />
|
||||
</Cursor>
|
||||
</File>
|
||||
</CodeBlocks_layout_file>
|
||||
|
@ -1,39 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<CodeBlocks_layout_file>
|
||||
<ActiveTarget name="Release x64" />
|
||||
<File name="../../Source/EmberGenome/EmberGenome.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="21828" topLine="752" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/JpegUtils.h" open="1" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/SimpleGlob.h" open="1" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/EmberCommon.h" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/EmberCommonPch.cpp" open="1" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/EmberOptions.h" open="1" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/SimpleOpt.h" open="1" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/JpegUtils.h" open="1" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/EmberCommon.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/SimpleGlob.h" open="1" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberGenome/EmberGenome.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="21828" topLine="752" />
|
||||
</Cursor>
|
||||
</File>
|
||||
</CodeBlocks_layout_file>
|
||||
|
@ -6,14 +6,9 @@
|
||||
<Cursor1 position="6646" topLine="170" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/EmberOptions.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="../../Source/EmberCommon/EmberCommon.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3660" topLine="147" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/EmberCommonPch.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="546" topLine="0" />
|
||||
<Cursor1 position="2710" topLine="73" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/SimpleOpt.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -21,9 +16,14 @@
|
||||
<Cursor1 position="19841" topLine="580" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberRender/EmberRender.cpp" open="1" top="1" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="../../Source/EmberRender/EmberRender.cpp" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="11353" topLine="330" />
|
||||
<Cursor1 position="11033" topLine="315" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/EmberOptions.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3660" topLine="147" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/SimpleGlob.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -31,9 +31,9 @@
|
||||
<Cursor1 position="28888" topLine="905" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="../../Source/EmberCommon/EmberCommon.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="../../Source/EmberCommon/EmberCommonPch.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2710" topLine="73" />
|
||||
<Cursor1 position="546" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
</CodeBlocks_layout_file>
|
||||
|
@ -1,6 +1,7 @@
|
||||
TEMPLATE = lib
|
||||
CONFIG += shared
|
||||
CONFIG += warn_off
|
||||
CONFIG += precompile_header
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
VERSION = 0.1.4.7
|
||||
@ -13,6 +14,7 @@ LIBS += -L/usr/lib/x86_64-linux-gnu -lxml2
|
||||
INCLUDEPATH += /usr/include/glm
|
||||
INCLUDEPATH += /usr/include/tbb
|
||||
INCLUDEPATH += /usr/include/libxml2
|
||||
INCLUDEPATH += ../../../Source/Ember
|
||||
|
||||
QMAKE_CXXFLAGS += -O2
|
||||
QMAKE_CXXFLAGS += -march=k8
|
||||
@ -47,6 +49,8 @@ QMAKE_CXXFLAGS += -DBUILDING_EMBER
|
||||
|
||||
QMAKE_LFLAGS += -s
|
||||
|
||||
PRECOMPILED_HEADER = ../../../Source/Ember/EmberPch.h
|
||||
|
||||
SOURCES += \
|
||||
../../../Source/Ember/Affine2D.cpp \
|
||||
../../../Source/Ember/DllMain.cpp \
|
||||
|
77
Builds/QtCreator/EmberAnimate/EmberAnimate.pro
Normal file
77
Builds/QtCreator/EmberAnimate/EmberAnimate.pro
Normal file
@ -0,0 +1,77 @@
|
||||
TEMPLATE = app
|
||||
CONFIG += console
|
||||
CONFIG += warn_off
|
||||
CONFIG += precompile_header
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
VERSION = 0.1.4.7
|
||||
|
||||
DESTDIR = ../../../Bin
|
||||
|
||||
LIBS += -L/usr/lib -lOpenCL
|
||||
LIBS += -L/usr/lib -lGL
|
||||
LIBS += -L/usr/lib -ljpeg
|
||||
LIBS += -L/usr/lib -lpng
|
||||
LIBS += -L/usr/lib/x86_64-linux-gnu -lxml2
|
||||
LIBS += -L../../../Bin -lEmber
|
||||
LIBS += -L../../../Bin -lEmberCL
|
||||
|
||||
INCLUDEPATH += /usr/include/CL
|
||||
INCLUDEPATH += /usr/include/GL
|
||||
INCLUDEPATH += /usr/include/glm
|
||||
INCLUDEPATH += /usr/include/tbb
|
||||
INCLUDEPATH += /usr/include/libxml2
|
||||
INCLUDEPATH += ../../../Source/Ember
|
||||
INCLUDEPATH += ../../../Source/EmberCL
|
||||
INCLUDEPATH += ../../../Source/EmberCommon
|
||||
|
||||
QMAKE_CXXFLAGS += -O2
|
||||
QMAKE_CXXFLAGS += -march=k8
|
||||
QMAKE_CXXFLAGS += -fPIC
|
||||
QMAKE_CXXFLAGS += -fpermissive
|
||||
QMAKE_CXXFLAGS += -fomit-frame-pointer
|
||||
QMAKE_CXXFLAGS += -pedantic
|
||||
QMAKE_CXXFLAGS += -std=c++11
|
||||
QMAKE_CXXFLAGS += -Wnon-virtual-dtor
|
||||
QMAKE_CXXFLAGS += -Wshadow
|
||||
QMAKE_CXXFLAGS += -Winit-self
|
||||
QMAKE_CXXFLAGS += -Wredundant-decls
|
||||
QMAKE_CXXFLAGS += -Wcast-align
|
||||
QMAKE_CXXFLAGS += -Winline
|
||||
QMAKE_CXXFLAGS += -Wunreachable-code
|
||||
QMAKE_CXXFLAGS += -Wmissing-include-dirs
|
||||
QMAKE_CXXFLAGS += -Wswitch-enum
|
||||
QMAKE_CXXFLAGS += -Wswitch-default
|
||||
QMAKE_CXXFLAGS += -Wmain
|
||||
QMAKE_CXXFLAGS += -Wzero-as-null-pointer-constant
|
||||
QMAKE_CXXFLAGS += -Wfatal-errors
|
||||
QMAKE_CXXFLAGS += -Wall -fpermissive
|
||||
QMAKE_CXXFLAGS += -Wold-style-cast
|
||||
QMAKE_CXXFLAGS += -Wno-unused-parameter
|
||||
QMAKE_CXXFLAGS += -Wno-unused-function
|
||||
QMAKE_CXXFLAGS += -Wold-style-cast
|
||||
QMAKE_CXXFLAGS += -D_M_X64
|
||||
QMAKE_CXXFLAGS += -D_USRDLL
|
||||
QMAKE_CXXFLAGS += -DNDEBUG
|
||||
QMAKE_CXXFLAGS += -D_CONSOLE
|
||||
|
||||
QMAKE_LFLAGS += -s
|
||||
|
||||
PRECOMPILED_HEADER = ../../../Source/EmberCommon/EmberCommonPch.h
|
||||
|
||||
SOURCES += \
|
||||
../../../Source/EmberAnimate/EmberAnimate.cpp \
|
||||
../../../Source/EmberCommon/EmberCommonPch.cpp
|
||||
|
||||
include(deployment.pri)
|
||||
qtcAddDeployment()
|
||||
|
||||
HEADERS += \
|
||||
../../../Source/EmberAnimate/EmberAnimate.h \
|
||||
../../../Source/EmberCommon/EmberCommon.h \
|
||||
../../../Source/EmberCommon/EmberCommonPch.h \
|
||||
../../../Source/EmberCommon/EmberOptions.h \
|
||||
../../../Source/EmberCommon/JpegUtils.h \
|
||||
../../../Source/EmberCommon/SimpleGlob.h \
|
||||
../../../Source/EmberCommon/SimpleOpt.h
|
||||
|
191
Builds/QtCreator/EmberAnimate/deployment.pri
Normal file
191
Builds/QtCreator/EmberAnimate/deployment.pri
Normal file
@ -0,0 +1,191 @@
|
||||
# This file was generated by an application wizard of Qt Creator.
|
||||
# The code below handles deployment to Android and Maemo, aswell as copying
|
||||
# of the application data to shadow build directories on desktop.
|
||||
# It is recommended not to modify this file, since newer versions of Qt Creator
|
||||
# may offer an updated version of it.
|
||||
|
||||
defineTest(qtcAddDeployment) {
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
item = item$${deploymentfolder}
|
||||
greaterThan(QT_MAJOR_VERSION, 4) {
|
||||
itemsources = $${item}.files
|
||||
} else {
|
||||
itemsources = $${item}.sources
|
||||
}
|
||||
$$itemsources = $$eval($${deploymentfolder}.source)
|
||||
itempath = $${item}.path
|
||||
$$itempath= $$eval($${deploymentfolder}.target)
|
||||
export($$itemsources)
|
||||
export($$itempath)
|
||||
DEPLOYMENT += $$item
|
||||
}
|
||||
|
||||
MAINPROFILEPWD = $$PWD
|
||||
|
||||
android-no-sdk {
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
item = item$${deploymentfolder}
|
||||
itemfiles = $${item}.files
|
||||
$$itemfiles = $$eval($${deploymentfolder}.source)
|
||||
itempath = $${item}.path
|
||||
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
|
||||
export($$itemfiles)
|
||||
export($$itempath)
|
||||
INSTALLS += $$item
|
||||
}
|
||||
|
||||
target.path = /data/user/qt
|
||||
|
||||
export(target.path)
|
||||
INSTALLS += target
|
||||
} else:android {
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
item = item$${deploymentfolder}
|
||||
itemfiles = $${item}.files
|
||||
$$itemfiles = $$eval($${deploymentfolder}.source)
|
||||
itempath = $${item}.path
|
||||
$$itempath = /assets/$$eval($${deploymentfolder}.target)
|
||||
export($$itemfiles)
|
||||
export($$itempath)
|
||||
INSTALLS += $$item
|
||||
}
|
||||
|
||||
x86 {
|
||||
target.path = /libs/x86
|
||||
} else: armeabi-v7a {
|
||||
target.path = /libs/armeabi-v7a
|
||||
} else {
|
||||
target.path = /libs/armeabi
|
||||
}
|
||||
|
||||
export(target.path)
|
||||
INSTALLS += target
|
||||
} else:win32 {
|
||||
copyCommand =
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
|
||||
source = $$replace(source, /, \\)
|
||||
sourcePathSegments = $$split(source, \\)
|
||||
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
|
||||
target = $$replace(target, /, \\)
|
||||
target ~= s,\\\\\\.?\\\\,\\,
|
||||
!isEqual(source,$$target) {
|
||||
!isEmpty(copyCommand):copyCommand += &&
|
||||
isEqual(QMAKE_DIR_SEP, \\) {
|
||||
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
|
||||
} else {
|
||||
source = $$replace(source, \\\\, /)
|
||||
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
|
||||
target = $$replace(target, \\\\, /)
|
||||
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
|
||||
}
|
||||
}
|
||||
}
|
||||
!isEmpty(copyCommand) {
|
||||
copyCommand = @echo Copying application data... && $$copyCommand
|
||||
copydeploymentfolders.commands = $$copyCommand
|
||||
first.depends = $(first) copydeploymentfolders
|
||||
export(first.depends)
|
||||
export(copydeploymentfolders.commands)
|
||||
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
|
||||
}
|
||||
} else:ios {
|
||||
copyCommand =
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
|
||||
source = $$replace(source, \\\\, /)
|
||||
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
|
||||
target = $$replace(target, \\\\, /)
|
||||
sourcePathSegments = $$split(source, /)
|
||||
targetFullPath = $$target/$$last(sourcePathSegments)
|
||||
targetFullPath ~= s,/\\.?/,/,
|
||||
!isEqual(source,$$targetFullPath) {
|
||||
!isEmpty(copyCommand):copyCommand += &&
|
||||
copyCommand += mkdir -p \"$$target\"
|
||||
copyCommand += && cp -r \"$$source\" \"$$target\"
|
||||
}
|
||||
}
|
||||
!isEmpty(copyCommand) {
|
||||
copyCommand = echo Copying application data... && $$copyCommand
|
||||
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
|
||||
QMAKE_POST_LINK += "$$copyCommand"
|
||||
export(QMAKE_POST_LINK)
|
||||
}
|
||||
} else:unix {
|
||||
maemo5 {
|
||||
desktopfile.files = $${TARGET}.desktop
|
||||
desktopfile.path = /usr/share/applications/hildon
|
||||
icon.files = $${TARGET}64.png
|
||||
icon.path = /usr/share/icons/hicolor/64x64/apps
|
||||
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
|
||||
desktopfile.files = $${TARGET}_harmattan.desktop
|
||||
desktopfile.path = /usr/share/applications
|
||||
icon.files = $${TARGET}80.png
|
||||
icon.path = /usr/share/icons/hicolor/80x80/apps
|
||||
} else { # Assumed to be a Desktop Unix
|
||||
copyCommand =
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
|
||||
source = $$replace(source, \\\\, /)
|
||||
macx {
|
||||
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
|
||||
} else {
|
||||
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
|
||||
}
|
||||
target = $$replace(target, \\\\, /)
|
||||
sourcePathSegments = $$split(source, /)
|
||||
targetFullPath = $$target/$$last(sourcePathSegments)
|
||||
targetFullPath ~= s,/\\.?/,/,
|
||||
!isEqual(source,$$targetFullPath) {
|
||||
!isEmpty(copyCommand):copyCommand += &&
|
||||
copyCommand += $(MKDIR) \"$$target\"
|
||||
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
|
||||
}
|
||||
}
|
||||
!isEmpty(copyCommand) {
|
||||
copyCommand = @echo Copying application data... && $$copyCommand
|
||||
copydeploymentfolders.commands = $$copyCommand
|
||||
first.depends = $(first) copydeploymentfolders
|
||||
export(first.depends)
|
||||
export(copydeploymentfolders.commands)
|
||||
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
|
||||
}
|
||||
}
|
||||
!isEmpty(target.path) {
|
||||
installPrefix = $${target.path}
|
||||
} else {
|
||||
installPrefix = /opt/$${TARGET}
|
||||
}
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
item = item$${deploymentfolder}
|
||||
itemfiles = $${item}.files
|
||||
$$itemfiles = $$eval($${deploymentfolder}.source)
|
||||
itempath = $${item}.path
|
||||
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
|
||||
export($$itemfiles)
|
||||
export($$itempath)
|
||||
INSTALLS += $$item
|
||||
}
|
||||
|
||||
!isEmpty(desktopfile.path) {
|
||||
export(icon.files)
|
||||
export(icon.path)
|
||||
export(desktopfile.files)
|
||||
export(desktopfile.path)
|
||||
INSTALLS += icon desktopfile
|
||||
}
|
||||
|
||||
isEmpty(target.path) {
|
||||
target.path = $${installPrefix}/bin
|
||||
export(target.path)
|
||||
}
|
||||
INSTALLS += target
|
||||
}
|
||||
|
||||
export (ICON)
|
||||
export (INSTALLS)
|
||||
export (DEPLOYMENT)
|
||||
export (LIBS)
|
||||
export (QMAKE_EXTRA_TARGETS)
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
TEMPLATE = lib
|
||||
CONFIG += shared
|
||||
CONFIG += warn_off
|
||||
CONFIG += precompile_header
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
VERSION = 0.1.4.7
|
||||
@ -8,7 +9,7 @@ VERSION = 0.1.4.7
|
||||
DESTDIR = ../../../Bin
|
||||
|
||||
LIBS += -L/usr/lib -lOpenCL
|
||||
LIBS += -L/usr/lib -lGL
|
||||
#LIBS += -L/usr/lib -lGL
|
||||
|
||||
INCLUDEPATH += /usr/include/CL
|
||||
INCLUDEPATH += /usr/include/GL
|
||||
@ -46,10 +47,12 @@ QMAKE_CXXFLAGS += -D_M_X64
|
||||
QMAKE_CXXFLAGS += -D_USRDLL
|
||||
QMAKE_CXXFLAGS += -DNDEBUG
|
||||
QMAKE_CXXFLAGS += -D_CONSOLE
|
||||
QMAKE_CXXFLAGS += -DBUILDING_EMBER
|
||||
QMAKE_CXXFLAGS += -BUILDING_EMBERCL
|
||||
|
||||
QMAKE_LFLAGS += -s
|
||||
|
||||
PRECOMPILED_HEADER = ../../../Source/EmberCL/EmberCLPch.h
|
||||
|
||||
SOURCES += \
|
||||
../../../Source/EmberCL/DllMain.cpp \
|
||||
../../../Source/EmberCL/FinalAccumOpenCLKernelCreator.cpp \
|
||||
|
77
Builds/QtCreator/EmberGenome/EmberGenome.pro
Normal file
77
Builds/QtCreator/EmberGenome/EmberGenome.pro
Normal file
@ -0,0 +1,77 @@
|
||||
TEMPLATE = app
|
||||
CONFIG += console
|
||||
CONFIG += warn_off
|
||||
CONFIG += precompile_header
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
VERSION = 0.1.4.7
|
||||
|
||||
DESTDIR = ../../../Bin
|
||||
|
||||
LIBS += -L/usr/lib -lOpenCL
|
||||
LIBS += -L/usr/lib -lGL
|
||||
LIBS += -L/usr/lib -ljpeg
|
||||
LIBS += -L/usr/lib -lpng
|
||||
LIBS += -L/usr/lib/x86_64-linux-gnu -lxml2
|
||||
LIBS += -L../../../Bin -lEmber
|
||||
LIBS += -L../../../Bin -lEmberCL
|
||||
|
||||
INCLUDEPATH += /usr/include/CL
|
||||
INCLUDEPATH += /usr/include/GL
|
||||
INCLUDEPATH += /usr/include/glm
|
||||
INCLUDEPATH += /usr/include/tbb
|
||||
INCLUDEPATH += /usr/include/libxml2
|
||||
INCLUDEPATH += ../../../Source/Ember
|
||||
INCLUDEPATH += ../../../Source/EmberCL
|
||||
INCLUDEPATH += ../../../Source/EmberCommon
|
||||
|
||||
QMAKE_CXXFLAGS += -O2
|
||||
QMAKE_CXXFLAGS += -march=k8
|
||||
QMAKE_CXXFLAGS += -fPIC
|
||||
QMAKE_CXXFLAGS += -fpermissive
|
||||
QMAKE_CXXFLAGS += -fomit-frame-pointer
|
||||
QMAKE_CXXFLAGS += -pedantic
|
||||
QMAKE_CXXFLAGS += -std=c++11
|
||||
QMAKE_CXXFLAGS += -Wnon-virtual-dtor
|
||||
QMAKE_CXXFLAGS += -Wshadow
|
||||
QMAKE_CXXFLAGS += -Winit-self
|
||||
QMAKE_CXXFLAGS += -Wredundant-decls
|
||||
QMAKE_CXXFLAGS += -Wcast-align
|
||||
QMAKE_CXXFLAGS += -Winline
|
||||
QMAKE_CXXFLAGS += -Wunreachable-code
|
||||
QMAKE_CXXFLAGS += -Wmissing-include-dirs
|
||||
QMAKE_CXXFLAGS += -Wswitch-enum
|
||||
QMAKE_CXXFLAGS += -Wswitch-default
|
||||
QMAKE_CXXFLAGS += -Wmain
|
||||
QMAKE_CXXFLAGS += -Wzero-as-null-pointer-constant
|
||||
QMAKE_CXXFLAGS += -Wfatal-errors
|
||||
QMAKE_CXXFLAGS += -Wall -fpermissive
|
||||
QMAKE_CXXFLAGS += -Wold-style-cast
|
||||
QMAKE_CXXFLAGS += -Wno-unused-parameter
|
||||
QMAKE_CXXFLAGS += -Wno-unused-function
|
||||
QMAKE_CXXFLAGS += -Wold-style-cast
|
||||
QMAKE_CXXFLAGS += -D_M_X64
|
||||
QMAKE_CXXFLAGS += -D_USRDLL
|
||||
QMAKE_CXXFLAGS += -DNDEBUG
|
||||
QMAKE_CXXFLAGS += -D_CONSOLE
|
||||
|
||||
QMAKE_LFLAGS += -s
|
||||
|
||||
PRECOMPILED_HEADER = ../../../Source/EmberCommon/EmberCommonPch.h
|
||||
|
||||
SOURCES += \
|
||||
../../../Source/EmberGenome/EmberGenome.cpp \
|
||||
../../../Source/EmberCommon/EmberCommonPch.cpp
|
||||
|
||||
include(deployment.pri)
|
||||
qtcAddDeployment()
|
||||
|
||||
HEADERS += \
|
||||
../../../Source/EmberGenome/EmberGenome.h \
|
||||
../../../Source/EmberCommon/EmberCommon.h \
|
||||
../../../Source/EmberCommon/EmberCommonPch.h \
|
||||
../../../Source/EmberCommon/EmberOptions.h \
|
||||
../../../Source/EmberCommon/JpegUtils.h \
|
||||
../../../Source/EmberCommon/SimpleGlob.h \
|
||||
../../../Source/EmberCommon/SimpleOpt.h
|
||||
|
191
Builds/QtCreator/EmberGenome/deployment.pri
Normal file
191
Builds/QtCreator/EmberGenome/deployment.pri
Normal file
@ -0,0 +1,191 @@
|
||||
# This file was generated by an application wizard of Qt Creator.
|
||||
# The code below handles deployment to Android and Maemo, aswell as copying
|
||||
# of the application data to shadow build directories on desktop.
|
||||
# It is recommended not to modify this file, since newer versions of Qt Creator
|
||||
# may offer an updated version of it.
|
||||
|
||||
defineTest(qtcAddDeployment) {
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
item = item$${deploymentfolder}
|
||||
greaterThan(QT_MAJOR_VERSION, 4) {
|
||||
itemsources = $${item}.files
|
||||
} else {
|
||||
itemsources = $${item}.sources
|
||||
}
|
||||
$$itemsources = $$eval($${deploymentfolder}.source)
|
||||
itempath = $${item}.path
|
||||
$$itempath= $$eval($${deploymentfolder}.target)
|
||||
export($$itemsources)
|
||||
export($$itempath)
|
||||
DEPLOYMENT += $$item
|
||||
}
|
||||
|
||||
MAINPROFILEPWD = $$PWD
|
||||
|
||||
android-no-sdk {
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
item = item$${deploymentfolder}
|
||||
itemfiles = $${item}.files
|
||||
$$itemfiles = $$eval($${deploymentfolder}.source)
|
||||
itempath = $${item}.path
|
||||
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
|
||||
export($$itemfiles)
|
||||
export($$itempath)
|
||||
INSTALLS += $$item
|
||||
}
|
||||
|
||||
target.path = /data/user/qt
|
||||
|
||||
export(target.path)
|
||||
INSTALLS += target
|
||||
} else:android {
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
item = item$${deploymentfolder}
|
||||
itemfiles = $${item}.files
|
||||
$$itemfiles = $$eval($${deploymentfolder}.source)
|
||||
itempath = $${item}.path
|
||||
$$itempath = /assets/$$eval($${deploymentfolder}.target)
|
||||
export($$itemfiles)
|
||||
export($$itempath)
|
||||
INSTALLS += $$item
|
||||
}
|
||||
|
||||
x86 {
|
||||
target.path = /libs/x86
|
||||
} else: armeabi-v7a {
|
||||
target.path = /libs/armeabi-v7a
|
||||
} else {
|
||||
target.path = /libs/armeabi
|
||||
}
|
||||
|
||||
export(target.path)
|
||||
INSTALLS += target
|
||||
} else:win32 {
|
||||
copyCommand =
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
|
||||
source = $$replace(source, /, \\)
|
||||
sourcePathSegments = $$split(source, \\)
|
||||
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
|
||||
target = $$replace(target, /, \\)
|
||||
target ~= s,\\\\\\.?\\\\,\\,
|
||||
!isEqual(source,$$target) {
|
||||
!isEmpty(copyCommand):copyCommand += &&
|
||||
isEqual(QMAKE_DIR_SEP, \\) {
|
||||
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
|
||||
} else {
|
||||
source = $$replace(source, \\\\, /)
|
||||
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
|
||||
target = $$replace(target, \\\\, /)
|
||||
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
|
||||
}
|
||||
}
|
||||
}
|
||||
!isEmpty(copyCommand) {
|
||||
copyCommand = @echo Copying application data... && $$copyCommand
|
||||
copydeploymentfolders.commands = $$copyCommand
|
||||
first.depends = $(first) copydeploymentfolders
|
||||
export(first.depends)
|
||||
export(copydeploymentfolders.commands)
|
||||
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
|
||||
}
|
||||
} else:ios {
|
||||
copyCommand =
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
|
||||
source = $$replace(source, \\\\, /)
|
||||
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
|
||||
target = $$replace(target, \\\\, /)
|
||||
sourcePathSegments = $$split(source, /)
|
||||
targetFullPath = $$target/$$last(sourcePathSegments)
|
||||
targetFullPath ~= s,/\\.?/,/,
|
||||
!isEqual(source,$$targetFullPath) {
|
||||
!isEmpty(copyCommand):copyCommand += &&
|
||||
copyCommand += mkdir -p \"$$target\"
|
||||
copyCommand += && cp -r \"$$source\" \"$$target\"
|
||||
}
|
||||
}
|
||||
!isEmpty(copyCommand) {
|
||||
copyCommand = echo Copying application data... && $$copyCommand
|
||||
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
|
||||
QMAKE_POST_LINK += "$$copyCommand"
|
||||
export(QMAKE_POST_LINK)
|
||||
}
|
||||
} else:unix {
|
||||
maemo5 {
|
||||
desktopfile.files = $${TARGET}.desktop
|
||||
desktopfile.path = /usr/share/applications/hildon
|
||||
icon.files = $${TARGET}64.png
|
||||
icon.path = /usr/share/icons/hicolor/64x64/apps
|
||||
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
|
||||
desktopfile.files = $${TARGET}_harmattan.desktop
|
||||
desktopfile.path = /usr/share/applications
|
||||
icon.files = $${TARGET}80.png
|
||||
icon.path = /usr/share/icons/hicolor/80x80/apps
|
||||
} else { # Assumed to be a Desktop Unix
|
||||
copyCommand =
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
|
||||
source = $$replace(source, \\\\, /)
|
||||
macx {
|
||||
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
|
||||
} else {
|
||||
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
|
||||
}
|
||||
target = $$replace(target, \\\\, /)
|
||||
sourcePathSegments = $$split(source, /)
|
||||
targetFullPath = $$target/$$last(sourcePathSegments)
|
||||
targetFullPath ~= s,/\\.?/,/,
|
||||
!isEqual(source,$$targetFullPath) {
|
||||
!isEmpty(copyCommand):copyCommand += &&
|
||||
copyCommand += $(MKDIR) \"$$target\"
|
||||
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
|
||||
}
|
||||
}
|
||||
!isEmpty(copyCommand) {
|
||||
copyCommand = @echo Copying application data... && $$copyCommand
|
||||
copydeploymentfolders.commands = $$copyCommand
|
||||
first.depends = $(first) copydeploymentfolders
|
||||
export(first.depends)
|
||||
export(copydeploymentfolders.commands)
|
||||
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
|
||||
}
|
||||
}
|
||||
!isEmpty(target.path) {
|
||||
installPrefix = $${target.path}
|
||||
} else {
|
||||
installPrefix = /opt/$${TARGET}
|
||||
}
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
item = item$${deploymentfolder}
|
||||
itemfiles = $${item}.files
|
||||
$$itemfiles = $$eval($${deploymentfolder}.source)
|
||||
itempath = $${item}.path
|
||||
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
|
||||
export($$itemfiles)
|
||||
export($$itempath)
|
||||
INSTALLS += $$item
|
||||
}
|
||||
|
||||
!isEmpty(desktopfile.path) {
|
||||
export(icon.files)
|
||||
export(icon.path)
|
||||
export(desktopfile.files)
|
||||
export(desktopfile.path)
|
||||
INSTALLS += icon desktopfile
|
||||
}
|
||||
|
||||
isEmpty(target.path) {
|
||||
target.path = $${installPrefix}/bin
|
||||
export(target.path)
|
||||
}
|
||||
INSTALLS += target
|
||||
}
|
||||
|
||||
export (ICON)
|
||||
export (INSTALLS)
|
||||
export (DEPLOYMENT)
|
||||
export (LIBS)
|
||||
export (QMAKE_EXTRA_TARGETS)
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
TEMPLATE = app
|
||||
CONFIG += console
|
||||
CONFIG += warn_off
|
||||
CONFIG += precompile_header
|
||||
CONFIG -= app_bundle
|
||||
CONFIG -= qt
|
||||
VERSION = 0.1.4.7
|
||||
@ -53,10 +54,11 @@ QMAKE_CXXFLAGS += -D_M_X64
|
||||
QMAKE_CXXFLAGS += -D_USRDLL
|
||||
QMAKE_CXXFLAGS += -DNDEBUG
|
||||
QMAKE_CXXFLAGS += -D_CONSOLE
|
||||
QMAKE_CXXFLAGS += -DBUILDING_EMBER
|
||||
|
||||
QMAKE_LFLAGS += -s
|
||||
|
||||
PRECOMPILED_HEADER = ../../../Source/EmberCommon/EmberCommonPch.h
|
||||
|
||||
SOURCES += \
|
||||
../../../Source/EmberRender/EmberRender.cpp \
|
||||
../../../Source/EmberCommon/EmberCommonPch.cpp
|
||||
|
135
Builds/QtCreator/Fractorium/Fractorium.pro
Normal file
135
Builds/QtCreator/Fractorium/Fractorium.pro
Normal file
@ -0,0 +1,135 @@
|
||||
#-------------------------------------------------
|
||||
#
|
||||
# Project created by QtCreator 2014-12-09T21:18:06
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += core gui opengl concurrent
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
TARGET = Fractorium
|
||||
TEMPLATE = app
|
||||
CONFIG += precompile_header
|
||||
VERSION = 0.1.4.7
|
||||
|
||||
DESTDIR = ../../../Bin
|
||||
|
||||
LIBS += -L/usr/lib -lOpenCL
|
||||
#LIBS += -L/usr/lib -lGL
|
||||
LIBS += -L/usr/lib -ljpeg
|
||||
LIBS += -L/usr/lib -lpng
|
||||
LIBS += -L/usr/lib -ltbb
|
||||
LIBS += -L/usr/lib/x86_64-linux-gnu -lxml2
|
||||
LIBS += -L../../../Bin -lEmber
|
||||
LIBS += -L../../../Bin -lEmberCL
|
||||
|
||||
INCLUDEPATH += /usr/include/CL
|
||||
INCLUDEPATH += /usr/include/GL
|
||||
INCLUDEPATH += /usr/include/glm
|
||||
INCLUDEPATH += /usr/include/tbb
|
||||
INCLUDEPATH += /usr/include/libxml2
|
||||
INCLUDEPATH += ../../../Source/Ember
|
||||
INCLUDEPATH += ../../../Source/EmberCL
|
||||
INCLUDEPATH += ../../../Source/EmberCommon
|
||||
INCLUDEPATH += ../../../Source/Fractorium
|
||||
|
||||
QMAKE_CXXFLAGS += -O2
|
||||
QMAKE_CXXFLAGS += -march=k8
|
||||
QMAKE_CXXFLAGS += -fPIC
|
||||
QMAKE_CXXFLAGS += -fpermissive
|
||||
QMAKE_CXXFLAGS += -fomit-frame-pointer
|
||||
QMAKE_CXXFLAGS += -pedantic
|
||||
QMAKE_CXXFLAGS += -std=c++11
|
||||
QMAKE_CXXFLAGS += -Wnon-virtual-dtor
|
||||
QMAKE_CXXFLAGS += -Wshadow
|
||||
QMAKE_CXXFLAGS += -Winit-self
|
||||
#QMAKE_CXXFLAGS += -Wredundant-decls
|
||||
QMAKE_CXXFLAGS += -Wcast-align
|
||||
#QMAKE_CXXFLAGS += -Winline
|
||||
QMAKE_CXXFLAGS += -Wunreachable-code
|
||||
QMAKE_CXXFLAGS += -Wmissing-include-dirs
|
||||
#QMAKE_CXXFLAGS += -Wswitch-enum
|
||||
#QMAKE_CXXFLAGS += -Wswitch-default
|
||||
QMAKE_CXXFLAGS += -Wmain
|
||||
#QMAKE_CXXFLAGS += -Wzero-as-null-pointer-constant
|
||||
#QMAKE_CXXFLAGS += -Wfatal-errors
|
||||
QMAKE_CXXFLAGS += -Wall -fpermissive
|
||||
QMAKE_CXXFLAGS += -Wold-style-cast
|
||||
QMAKE_CXXFLAGS += -Wno-unused-variable
|
||||
QMAKE_CXXFLAGS += -Wno-unused-parameter
|
||||
QMAKE_CXXFLAGS += -Wno-unused-function
|
||||
QMAKE_CXXFLAGS += -Wold-style-cast
|
||||
QMAKE_CXXFLAGS += -D_M_X64
|
||||
QMAKE_CXXFLAGS += -D_USRDLL
|
||||
QMAKE_CXXFLAGS += -DNDEBUG
|
||||
QMAKE_CXXFLAGS += -D_CONSOLE
|
||||
|
||||
QMAKE_LFLAGS += -s
|
||||
|
||||
PRECOMPILED_HEADER = ../../../Source/Fractorium/FractoriumPch.h
|
||||
|
||||
SOURCES += \
|
||||
../../../Source/Fractorium/AboutDialog.cpp \
|
||||
../../../Source/Fractorium/DoubleSpinBox.cpp \
|
||||
../../../Source/Fractorium/FinalRenderDialog.cpp \
|
||||
../../../Source/Fractorium/FinalRenderEmberController.cpp \
|
||||
../../../Source/Fractorium/Fractorium.cpp \
|
||||
../../../Source/Fractorium/FractoriumEmberController.cpp \
|
||||
../../../Source/Fractorium/FractoriumInfo.cpp \
|
||||
../../../Source/Fractorium/FractoriumLibrary.cpp \
|
||||
../../../Source/Fractorium/FractoriumMenus.cpp \
|
||||
../../../Source/Fractorium/FractoriumPalette.cpp \
|
||||
../../../Source/Fractorium/FractoriumParams.cpp \
|
||||
../../../Source/Fractorium/FractoriumPch.cpp \
|
||||
../../../Source/Fractorium/FractoriumRender.cpp \
|
||||
../../../Source/Fractorium/FractoriumSettings.cpp \
|
||||
../../../Source/Fractorium/FractoriumToolbar.cpp \
|
||||
../../../Source/Fractorium/FractoriumXforms.cpp \
|
||||
../../../Source/Fractorium/FractoriumXformsAffine.cpp \
|
||||
../../../Source/Fractorium/FractoriumXformsColor.cpp \
|
||||
../../../Source/Fractorium/FractoriumXformsVariations.cpp \
|
||||
../../../Source/Fractorium/FractoriumXformsXaos.cpp \
|
||||
../../../Source/Fractorium/GLEmberController.cpp \
|
||||
../../../Source/Fractorium/GLWidget.cpp \
|
||||
../../../Source/Fractorium/Main.cpp \
|
||||
../../../Source/Fractorium/OptionsDialog.cpp \
|
||||
../../../Source/Fractorium/SpinBox.cpp
|
||||
|
||||
HEADERS += \
|
||||
../../../Source/Fractorium/AboutDialog.h \
|
||||
../../../Source/Fractorium/DoubleSpinBox.h \
|
||||
../../../Source/Fractorium/EmberFile.h \
|
||||
../../../Source/Fractorium/EmberTreeWidgetItem.h \
|
||||
../../../Source/Fractorium/FinalRenderDialog.h \
|
||||
../../../Source/Fractorium/FinalRenderEmberController.h \
|
||||
../../../Source/Fractorium/Fractorium.h \
|
||||
../../../Source/Fractorium/FractoriumEmberController.h \
|
||||
../../../Source/Fractorium/FractoriumPch.h \
|
||||
../../../Source/Fractorium/FractoriumSettings.h \
|
||||
../../../Source/Fractorium/GLEmberController.h \
|
||||
../../../Source/Fractorium/GLWidget.h \
|
||||
../../../Source/Fractorium/OptionsDialog.h \
|
||||
../../../Source/Fractorium/resource.h \
|
||||
../../../Source/Fractorium/SpinBox.h \
|
||||
../../../Source/Fractorium/StealthComboBox.h \
|
||||
../../../Source/Fractorium/TableWidget.h \
|
||||
../../../Source/Fractorium/TwoButtonComboWidget.h \
|
||||
../../../Source/Fractorium/VariationTreeWidgetItem.h \
|
||||
../../../Source/EmberCommon/EmberCommon.h \
|
||||
../../../Source/EmberCommon/JpegUtils.h \
|
||||
../../../Source/EmberCommon/EmberCommonPch.h \
|
||||
../../../Source/Fractorium/FractoriumCommon.h
|
||||
|
||||
FORMS += \
|
||||
../../../Source/Fractorium/AboutDialog.ui \
|
||||
../../../Source/Fractorium/FinalRenderDialog.ui \
|
||||
../../../Source/Fractorium/Fractorium.ui \
|
||||
../../../Source/Fractorium/OptionsDialog.ui
|
||||
|
||||
OTHER_FILES += \
|
||||
../../../Source/Fractorium/Fractorium.aps \
|
||||
../../../Source/Fractorium/Fractorium.rc
|
||||
|
||||
RESOURCES += \
|
||||
../../../Source/Fractorium/Fractorium.qrc
|
@ -178,7 +178,7 @@ void Affine2D<T>::Rotate(T angle)
|
||||
/// </summary>
|
||||
/// <param name="v">The vec2 describing how far to move in the x and y directions</param>
|
||||
template <typename T>
|
||||
void Affine2D<T>::Translate(v2T& v)
|
||||
void Affine2D<T>::Translate(const v2T& v)
|
||||
{
|
||||
O(O() + v);
|
||||
}
|
||||
@ -188,7 +188,7 @@ void Affine2D<T>::Translate(v2T& v)
|
||||
/// </summary>
|
||||
/// <param name="v">The vec2 describing how much to rotate and scale the X and Y components</param>
|
||||
template <typename T>
|
||||
void Affine2D<T>::RotateScaleXTo(v2T& v)
|
||||
void Affine2D<T>::RotateScaleXTo(const v2T& v)
|
||||
{
|
||||
Affine2D<T> rs = CalcRotateScale(X(), v);
|
||||
|
||||
@ -201,7 +201,7 @@ void Affine2D<T>::RotateScaleXTo(v2T& v)
|
||||
/// </summary>
|
||||
/// <param name="v">The vec2 describing how much to rotate and scale the X and Y components</param>
|
||||
template <typename T>
|
||||
void Affine2D<T>::RotateScaleYTo(v2T& v)
|
||||
void Affine2D<T>::RotateScaleYTo(const v2T& v)
|
||||
{
|
||||
Affine2D<T> rs = CalcRotateScale(Y(), v);
|
||||
|
||||
|
@ -75,9 +75,9 @@ public:
|
||||
bool IsID() const;
|
||||
bool IsZero() const;
|
||||
void Rotate(T angle);
|
||||
void Translate(v2T& v);
|
||||
void RotateScaleXTo(v2T& v);
|
||||
void RotateScaleYTo(v2T& v);
|
||||
void Translate(const v2T& v);
|
||||
void RotateScaleXTo(const v2T& v);
|
||||
void RotateScaleYTo(const v2T& v);
|
||||
Affine2D<T> Inverse() const;
|
||||
v2T TransformNormal(const v2T& v) const;
|
||||
v2T TransformVector(const v2T& v) const;
|
||||
|
@ -36,7 +36,7 @@
|
||||
namespace EmberNs
|
||||
{
|
||||
bool Timing::m_TimingInit = false;
|
||||
int Timing::m_ProcessorCount;
|
||||
uint Timing::m_ProcessorCount;
|
||||
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>());
|
||||
|
||||
#define EXPORTPREPOSTREGVAR(varName, T) \
|
||||
|
@ -119,7 +119,7 @@ public:
|
||||
/// Return the number of cores in the system.
|
||||
/// </summary>
|
||||
/// <returns>The number of cores in the system</returns>
|
||||
static int ProcessorCount()
|
||||
static uint ProcessorCount()
|
||||
{
|
||||
Init();
|
||||
return m_ProcessorCount;
|
||||
@ -144,7 +144,7 @@ private:
|
||||
time_point<Clock> m_BeginTime;//The start of the timing, set with Tic().
|
||||
time_point<Clock> m_EndTime;//The end of the timing, set with Toc().
|
||||
static bool m_TimingInit;//Whether the performance info has bee queried.
|
||||
static int m_ProcessorCount;//The number of cores on the system, set in Init().
|
||||
static uint m_ProcessorCount;//The number of cores on the system, set in Init().
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
|
@ -79,30 +79,30 @@ static bool WriteJpeg(const char* filename, byte* image, size_t width, size_t he
|
||||
//Write comments to jpeg.
|
||||
if (enableComments)
|
||||
{
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(verString), (uint)strlen(verString));
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(verString), uint(strlen(verString)));
|
||||
|
||||
if (nick != "")
|
||||
{
|
||||
snprintf_s(nickString, 64, "flam3_nickname: %s", nick.c_str());
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(nickString), (uint)strlen(nickString));
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(nickString), uint(strlen(nickString)));
|
||||
}
|
||||
|
||||
if (url != "")
|
||||
{
|
||||
snprintf_s(urlString, 128, "flam3_url: %s", url.c_str());
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(urlString), (uint)strlen(urlString));
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(urlString), uint(strlen(urlString)));
|
||||
}
|
||||
|
||||
if (id != "")
|
||||
{
|
||||
snprintf_s(idString, 128, "flam3_id: %s", id.c_str());
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(idString), (uint)strlen(idString));
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(idString), uint(strlen(idString)));
|
||||
}
|
||||
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(bvString), (uint)strlen(bvString));
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(niString), (uint)strlen(niString));
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(rtString), (uint)strlen(rtString));
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(genomeString), (uint)strlen(genomeString));
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(bvString), uint(strlen(bvString)));
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(niString), uint(strlen(niString)));
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(rtString), uint(strlen(rtString)));
|
||||
jpeg_write_marker(&info, JPEG_COM, reinterpret_cast<byte*>(genomeString), uint(strlen(genomeString)));
|
||||
}
|
||||
|
||||
for (i = 0; i < height; i++)
|
||||
|
@ -5,10 +5,10 @@
|
||||
/// Constructor that takes a parent widget and passes it to the base, then
|
||||
/// sets up the GUI.
|
||||
/// </summary>
|
||||
/// <param name="parent">The parent widget. Default: NULL.</param>
|
||||
/// <param name="p">The parent widget. Default: NULL.</param>
|
||||
/// <param name="f">The window flags. Default: 0.</param>
|
||||
FractoriumAboutDialog::FractoriumAboutDialog(QWidget* parent, Qt::WindowFlags f)
|
||||
: QDialog(parent, f)
|
||||
FractoriumAboutDialog::FractoriumAboutDialog(QWidget* p, Qt::WindowFlags f)
|
||||
: QDialog(p, f)
|
||||
{
|
||||
ui.setupUi(this);
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ class FractoriumAboutDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
FractoriumAboutDialog(QWidget* parent = 0, Qt::WindowFlags f = 0);
|
||||
FractoriumAboutDialog(QWidget* p = 0, Qt::WindowFlags f = 0);
|
||||
|
||||
private:
|
||||
Ui::AboutDialog ui;
|
||||
|
@ -7,11 +7,11 @@
|
||||
/// and change its value using the mouse wheel without explicitly having to click
|
||||
/// inside of it.
|
||||
/// </summary>
|
||||
/// <param name="parent">The parent widget. Default: NULL.</param>
|
||||
/// <param name="p">The parent widget. Default: NULL.</param>
|
||||
/// <param name="height">The height of the spin box. Default: 16.</param>
|
||||
/// <param name="step">The step used to increment/decrement the spin box when using the mouse wheel. Default: 0.05.</param>
|
||||
DoubleSpinBox::DoubleSpinBox(QWidget* parent, int height, double step)
|
||||
: QDoubleSpinBox(parent)
|
||||
DoubleSpinBox::DoubleSpinBox(QWidget* p, int h, double step)
|
||||
: QDoubleSpinBox(p)
|
||||
{
|
||||
m_Select = false;
|
||||
m_DoubleClick = false;
|
||||
@ -23,8 +23,8 @@ DoubleSpinBox::DoubleSpinBox(QWidget* parent, int height, double step)
|
||||
setFrame(false);
|
||||
setButtonSymbols(QAbstractSpinBox::NoButtons);
|
||||
setFocusPolicy(Qt::StrongFocus);
|
||||
setMinimumHeight(height);//setGeometry() has no effect, so must set both of these instead.
|
||||
setMaximumHeight(height);
|
||||
setMinimumHeight(h);//setGeometry() has no effect, so must set both of these instead.
|
||||
setMaximumHeight(h);
|
||||
lineEdit()->installEventFilter(this);
|
||||
lineEdit()->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
|
||||
connect(this, SIGNAL(valueChanged(double)), this, SLOT(onSpinBoxValueChanged(double)), Qt::QueuedConnection);
|
||||
@ -151,9 +151,9 @@ bool DoubleSpinBox::eventFilter(QObject* o, QEvent* e)
|
||||
{
|
||||
//Take special action for shift to reduce the scroll amount. Control already
|
||||
//increases it automatically.
|
||||
if (QWheelEvent* wheelEvent = dynamic_cast<QWheelEvent*>(e))
|
||||
if (QWheelEvent* we = dynamic_cast<QWheelEvent*>(e))
|
||||
{
|
||||
Qt::KeyboardModifiers mod = wheelEvent->modifiers();
|
||||
Qt::KeyboardModifiers mod = we->modifiers();
|
||||
|
||||
if (mod.testFlag(Qt::ShiftModifier))
|
||||
setSingleStep(m_SmallStep);
|
||||
|
@ -62,14 +62,14 @@ public:
|
||||
/// <summary>
|
||||
/// Constructor that passes agruments to the base and assigns the m_Param and m_Variation members.
|
||||
/// </summary>
|
||||
/// <param name="parent">The parent widget</param>
|
||||
/// <param name="p">The parent widget</param>
|
||||
/// <param name="widgetItem">The widget item this spinner is contained in</param>
|
||||
/// <param name="var">The variation this spinner is for</param>
|
||||
/// <param name="param">The name of the parameter this is for</param>
|
||||
/// <param name="height">The height of the spin box. Default: 16.</param>
|
||||
/// <param name="h">The height of the spin box. Default: 16.</param>
|
||||
/// <param name="step">The step used to increment/decrement the spin box when using the mouse wheel. Default: 0.05.</param>
|
||||
explicit VariationTreeDoubleSpinBox(QWidget* parent, VariationTreeWidgetItem<T>* widgetItem, Variation<T>* var, string param, int height = 16, double step = 0.05)
|
||||
: DoubleSpinBox(parent, height, step)
|
||||
explicit VariationTreeDoubleSpinBox(QWidget* p, VariationTreeWidgetItem<T>* widgetItem, Variation<T>* var, string param, int h = 16, double step = 0.05)
|
||||
: DoubleSpinBox(p, h, step)
|
||||
{
|
||||
m_WidgetItem = widgetItem;
|
||||
m_Param = param;
|
||||
|
@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "FractoriumPch.h"
|
||||
#include "FractoriumCommon.h"
|
||||
|
||||
/// <summary>
|
||||
/// EmberFile class.
|
||||
|
@ -18,9 +18,9 @@ public:
|
||||
/// Constructor that takes a pointer to a QTreeWidget as a parent widget.
|
||||
/// This is meant to be a root level item.
|
||||
/// </summary>
|
||||
/// <param name="parent">The parent widget of this item</param>
|
||||
explicit EmberTreeWidgetItemBase(QTreeWidget* parent = 0)
|
||||
: QTreeWidgetItem(parent)
|
||||
/// <param name="p">The parent widget of this item</param>
|
||||
explicit EmberTreeWidgetItemBase(QTreeWidget* p = 0)
|
||||
: QTreeWidgetItem(p)
|
||||
{
|
||||
}
|
||||
|
||||
@ -28,9 +28,9 @@ public:
|
||||
/// Constructor that takes a pointer to a QTreeWidgetItem as a parent widget.
|
||||
/// This is meant to be the child of a root level item.
|
||||
/// </summary>
|
||||
/// <param name="parent">The parent widget of this item</param>
|
||||
explicit EmberTreeWidgetItemBase(QTreeWidgetItem* parent = 0)
|
||||
: QTreeWidgetItem(parent)
|
||||
/// <param name="p">The parent widget of this item</param>
|
||||
explicit EmberTreeWidgetItemBase(QTreeWidgetItem* p = 0)
|
||||
: QTreeWidgetItem(p)
|
||||
{
|
||||
}
|
||||
|
||||
@ -68,9 +68,9 @@ public:
|
||||
/// This is meant to be a root level item.
|
||||
/// </summary>
|
||||
/// <param name="ember">A pointer to the ember this item will represent</param>
|
||||
/// <param name="parent">The parent widget of this item</param>
|
||||
explicit EmberTreeWidgetItem(Ember<T>* ember, QTreeWidget* parent = 0)
|
||||
: EmberTreeWidgetItemBase(parent)
|
||||
/// <param name="p">The parent widget of this item</param>
|
||||
explicit EmberTreeWidgetItem(Ember<T>* ember, QTreeWidget* p = 0)
|
||||
: EmberTreeWidgetItemBase(p)
|
||||
{
|
||||
m_Ember = ember;
|
||||
}
|
||||
@ -80,9 +80,9 @@ public:
|
||||
/// This is meant to be the child of a root level item.
|
||||
/// </summary>
|
||||
/// <param name="ember">A pointer to the ember this item will represent</param>
|
||||
/// <param name="parent">The parent widget of this item</param>
|
||||
explicit EmberTreeWidgetItem(Ember<T>* ember, QTreeWidgetItem* parent = 0)
|
||||
: EmberTreeWidgetItemBase(parent)
|
||||
/// <param name="p">The parent widget of this item</param>
|
||||
explicit EmberTreeWidgetItem(Ember<T>* ember, QTreeWidgetItem* p = 0)
|
||||
: EmberTreeWidgetItemBase(p)
|
||||
{
|
||||
m_Ember = ember;
|
||||
}
|
||||
|
@ -8,10 +8,10 @@
|
||||
/// This function contains the render function as a lambda.
|
||||
/// </summary>
|
||||
/// <param name="settings">Pointer to the global settings object to use</param>
|
||||
/// <param name="parent">The parent widget</param>
|
||||
/// <param name="p">The parent widget</param>
|
||||
/// <param name="f">The window flags. Default: 0.</param>
|
||||
FractoriumFinalRenderDialog::FractoriumFinalRenderDialog(FractoriumSettings* settings, QWidget* parent, Qt::WindowFlags f)
|
||||
: QDialog(parent, f)
|
||||
FractoriumFinalRenderDialog::FractoriumFinalRenderDialog(FractoriumSettings* settings, QWidget* p, Qt::WindowFlags f)
|
||||
: QDialog(p, f)
|
||||
{
|
||||
ui.setupUi(this);
|
||||
|
||||
@ -21,7 +21,7 @@ FractoriumFinalRenderDialog::FractoriumFinalRenderDialog(FractoriumSettings* set
|
||||
QTableWidget* table = ui.FinalRenderParamsTable;
|
||||
QTableWidgetItem* item = NULL;
|
||||
|
||||
m_Fractorium = (Fractorium*)parent;
|
||||
m_Fractorium = dynamic_cast<Fractorium*>(p);
|
||||
m_Settings = settings;
|
||||
ui.FinalRenderThreadCountSpin->setRange(1, Timing::ProcessorCount());
|
||||
connect(ui.FinalRenderEarlyClipCheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnEarlyClipCheckBoxStateChanged(int)), Qt::QueuedConnection);
|
||||
@ -124,7 +124,7 @@ FractoriumFinalRenderDialog::FractoriumFinalRenderDialog(FractoriumSettings* set
|
||||
m_SupersampleSpin->setValue(m_Settings->FinalSupersample());
|
||||
m_StripsSpin->setValue(m_Settings->FinalStrips());
|
||||
|
||||
Scale((eScaleType)m_Settings->FinalScale());
|
||||
Scale(eScaleType(m_Settings->FinalScale()));
|
||||
|
||||
if (m_Settings->FinalExt() == "jpg")
|
||||
m_Tbcw->m_Combo->setCurrentIndex(0);
|
||||
@ -139,7 +139,7 @@ FractoriumFinalRenderDialog::FractoriumFinalRenderDialog(FractoriumSettings* set
|
||||
QSize s = size();
|
||||
int desktopHeight = qApp->desktop()->availableGeometry().height();
|
||||
|
||||
s.setHeight(min(s.height(), (int)((double)desktopHeight * 0.90)));
|
||||
s.setHeight(min(s.height(), int(double(desktopHeight * 0.90))));
|
||||
setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, s, qApp->desktop()->availableGeometry()));
|
||||
|
||||
QWidget* w = SetTabOrder(this, ui.FinalRenderEarlyClipCheckBox, ui.FinalRenderYAxisUpCheckBox);
|
||||
@ -647,20 +647,18 @@ bool FractoriumFinalRenderDialog::CreateControllerFromGUI(bool createRenderer)
|
||||
int index = Current() - 1;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
size_t size = Double() ? sizeof(double) : sizeof(float);
|
||||
size_t elementSize = Double() ? sizeof(double) : sizeof(float);
|
||||
#else
|
||||
size_t size = sizeof(float);
|
||||
size_t elementSize = sizeof(float);
|
||||
#endif
|
||||
|
||||
if (!m_Controller.get() || (m_Controller->SizeOfT() != size))
|
||||
|
||||
if (!m_Controller.get() || (m_Controller->SizeOfT() != elementSize))
|
||||
{
|
||||
#ifdef DO_DOUBLE
|
||||
size_t size = Double() ? sizeof(double) : sizeof(float);
|
||||
Ember<double> ed;
|
||||
Ember<double> orig;
|
||||
EmberFile<double> efd;
|
||||
#else
|
||||
size_t size = sizeof(float);
|
||||
Ember<float> ed;
|
||||
Ember<float> orig;
|
||||
EmberFile<float> efd;
|
||||
@ -711,8 +709,8 @@ bool FractoriumFinalRenderDialog::SetMemory()
|
||||
bool error = false;
|
||||
tuple<size_t, size_t, size_t> p = m_Controller->SyncAndComputeMemory();
|
||||
|
||||
ui.FinalRenderParamsTable->item(m_MemoryCellIndex, 1)->setText(ToString(get<1>(p)));
|
||||
ui.FinalRenderParamsTable->item(m_ItersCellIndex, 1)->setText(ToString(get<2>(p)));
|
||||
ui.FinalRenderParamsTable->item(m_MemoryCellIndex, 1)->setText(ToString<qulonglong>(get<1>(p)));
|
||||
ui.FinalRenderParamsTable->item(m_ItersCellIndex, 1)->setText(ToString<qulonglong>(get<2>(p)));
|
||||
|
||||
if (OpenCL())
|
||||
{
|
||||
@ -729,14 +727,14 @@ bool FractoriumFinalRenderDialog::SetMemory()
|
||||
|
||||
if (histSize > maxAlloc)
|
||||
{
|
||||
s = "Histogram/Accumulator memory size of " + ToString(histSize) +
|
||||
" is greater than the max OpenCL allocation size of " + ToString(maxAlloc);
|
||||
s = "Histogram/Accumulator memory size of " + ToString<qulonglong>(histSize) +
|
||||
" is greater than the max OpenCL allocation size of " + ToString<qulonglong>(maxAlloc);
|
||||
}
|
||||
|
||||
if (totalSize > totalAvail)
|
||||
{
|
||||
s += "\n\nTotal required memory size of " + ToString(totalSize) +
|
||||
" is greater than the max OpenCL available memory of " + ToString(totalAvail);
|
||||
s += "\n\nTotal required memory size of " + ToString<qulonglong>(totalSize) +
|
||||
" is greater than the max OpenCL available memory of " + ToString<qulonglong>(totalAvail);
|
||||
}
|
||||
|
||||
if (!s.isEmpty())
|
||||
|
@ -12,6 +12,8 @@
|
||||
/// </summary>
|
||||
|
||||
class Fractorium;//Forward declaration since Fractorium uses this dialog.
|
||||
class FinalRenderEmberControllerBase;
|
||||
template <typename T> class FinalRenderEmberController;
|
||||
|
||||
/// <summary>
|
||||
/// The final render dialog is for when the user is satisfied with the parameters they've
|
||||
@ -38,12 +40,13 @@ class FractoriumFinalRenderDialog : public QDialog
|
||||
friend Fractorium;
|
||||
friend FinalRenderEmberControllerBase;
|
||||
friend FinalRenderEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
friend FinalRenderEmberController<double>;
|
||||
#endif
|
||||
|
||||
public:
|
||||
FractoriumFinalRenderDialog(FractoriumSettings* settings, QWidget* parent, Qt::WindowFlags f = 0);
|
||||
FractoriumFinalRenderDialog(FractoriumSettings* settings, QWidget* p, Qt::WindowFlags f = 0);
|
||||
bool EarlyClip();
|
||||
bool YAxisUp();
|
||||
bool Transparency();
|
||||
|
@ -170,7 +170,7 @@ FinalRenderEmberController<T>::FinalRenderEmberController(FractoriumFinalRenderD
|
||||
m_Renderer->YAxisUp(m_GuiState.m_YAxisUp);
|
||||
m_Renderer->ThreadCount(m_GuiState.m_ThreadCount);
|
||||
m_Renderer->Transparency(m_GuiState.m_Transparency);
|
||||
m_Renderer->m_ProgressParameter = (void*)¤tStripForProgress;
|
||||
m_Renderer->m_ProgressParameter = reinterpret_cast<void*>(¤tStripForProgress);
|
||||
|
||||
if (path.endsWith(".png", Qt::CaseInsensitive) || m_Renderer->RendererType() == OPENCL_RENDERER)//This is creating the wrong thing.//TODO
|
||||
m_Renderer->NumChannels(4);
|
||||
@ -399,7 +399,6 @@ template <typename T>
|
||||
bool FinalRenderEmberController<T>::CreateRenderer(eRendererType renderType, uint platform, uint device, bool shared)
|
||||
{
|
||||
bool ok = true;
|
||||
vector<string> errorReport;
|
||||
uint channels = m_FinalRenderDialog->Ext() == "png" ? 4 : 3;
|
||||
|
||||
CancelRender();
|
||||
@ -465,10 +464,10 @@ template <typename T>
|
||||
int FinalRenderEmberController<T>::ProgressFunc(Ember<T>& ember, void* foo, double fraction, int stage, double etaMs)
|
||||
{
|
||||
static int count = 0;
|
||||
uint strip = *((uint*)m_Renderer->m_ProgressParameter);
|
||||
uint strip = *(reinterpret_cast<uint*>(m_Renderer->m_ProgressParameter));
|
||||
double fracPerStrip = ceil(100.0 / m_GuiState.m_Strips);
|
||||
double stripsfrac = ceil(fracPerStrip * strip) + ceil(fraction / m_GuiState.m_Strips);
|
||||
int intFract = (int)stripsfrac;
|
||||
int intFract = int(stripsfrac);
|
||||
|
||||
if (stage == 0)
|
||||
QMetaObject::invokeMethod(m_FinalRenderDialog->ui.FinalRenderIterationProgress, "setValue", Qt::QueuedConnection, Q_ARG(int, intFract));
|
||||
@ -531,14 +530,14 @@ void FinalRenderEmberController<T>::SyncCurrentToSizeSpinners(bool scale, bool s
|
||||
{
|
||||
if (scale)
|
||||
{
|
||||
m_FinalRenderDialog->m_WidthScaleSpin->SetValueStealth((double)m_Ember->m_FinalRasW / m_Ember->m_OrigFinalRasW);//Work backward to determine the scale.
|
||||
m_FinalRenderDialog->m_HeightScaleSpin->SetValueStealth((double)m_Ember->m_FinalRasH / m_Ember->m_OrigFinalRasH);
|
||||
m_FinalRenderDialog->m_WidthScaleSpin->SetValueStealth(double(m_Ember->m_FinalRasW) / m_Ember->m_OrigFinalRasW);//Work backward to determine the scale.
|
||||
m_FinalRenderDialog->m_HeightScaleSpin->SetValueStealth(double(m_Ember->m_FinalRasH) / m_Ember->m_OrigFinalRasH);
|
||||
}
|
||||
|
||||
if (size)
|
||||
{
|
||||
m_FinalRenderDialog->m_WidthScaleSpin->setSuffix(" (" + ToString(m_Ember->m_FinalRasW) + ")");
|
||||
m_FinalRenderDialog->m_HeightScaleSpin->setSuffix(" (" + ToString(m_Ember->m_FinalRasH) + ")");
|
||||
m_FinalRenderDialog->m_WidthScaleSpin->setSuffix(" (" + ToString<qulonglong>(m_Ember->m_FinalRasW) + ")");
|
||||
m_FinalRenderDialog->m_HeightScaleSpin->setSuffix(" (" + ToString<qulonglong>(m_Ember->m_FinalRasH) + ")");
|
||||
}
|
||||
}
|
||||
|
||||
@ -580,7 +579,7 @@ tuple<size_t, size_t, size_t> FinalRenderEmberController<T>::SyncAndComputeMemor
|
||||
[&](const string& s) { }, [&](const string& s) { }, [&](const string& s) { });
|
||||
|
||||
SyncGuiToEmbers();
|
||||
m_FinalRenderDialog->m_StripsSpin->setSuffix(" (" + ToString(strips) + ")");
|
||||
m_FinalRenderDialog->m_StripsSpin->setSuffix(" (" + ToString<qulonglong>(strips) + ")");
|
||||
m_Renderer->SetEmber(*m_Ember);
|
||||
m_Renderer->CreateSpatialFilter(b);
|
||||
m_Renderer->CreateTemporalFilter(b);
|
||||
@ -640,8 +639,8 @@ void FinalRenderEmberController<T>::RenderComplete(Ember<T>& ember)
|
||||
{
|
||||
string renderTimeString = m_RenderTimer.Format(m_RenderTimer.Toc()), totalTimeString;
|
||||
QString status, filename = ComposePath(QString::fromStdString(ember.m_Name));
|
||||
QString itersString = ToString(m_Stats.m_Iters);
|
||||
QString itersPerSecString = ToString(size_t(m_Stats.m_Iters / (m_Stats.m_IterMs / 1000.0)));
|
||||
QString itersString = ToString<qulonglong>(m_Stats.m_Iters);
|
||||
QString itersPerSecString = ToString<qulonglong>(size_t(m_Stats.m_Iters / (m_Stats.m_IterMs / 1000.0)));
|
||||
|
||||
//Save whatever options were specified on the GUI to the settings.
|
||||
m_Settings->FinalEarlyClip(m_GuiState.m_EarlyClip);
|
||||
@ -681,8 +680,8 @@ void FinalRenderEmberController<T>::RenderComplete(Ember<T>& ember)
|
||||
QMetaObject::invokeMethod(m_FinalRenderDialog->ui.FinalRenderIterationProgress, "setValue", Qt::QueuedConnection, Q_ARG(int, 100));//Just to be safe.
|
||||
QMetaObject::invokeMethod(m_FinalRenderDialog->ui.FinalRenderFilteringProgress, "setValue", Qt::QueuedConnection, Q_ARG(int, 100));
|
||||
QMetaObject::invokeMethod(m_FinalRenderDialog->ui.FinalRenderAccumProgress, "setValue", Qt::QueuedConnection, Q_ARG(int, 100));
|
||||
QMetaObject::invokeMethod(m_FinalRenderDialog->ui.FinalRenderTotalProgress, "setValue", Qt::QueuedConnection, Q_ARG(int, int(((float)m_FinishedImageCount / (float)m_ImageCount) * 100)));
|
||||
QMetaObject::invokeMethod(m_FinalRenderDialog->ui.FinalRenderImageCountLabel, "setText", Qt::QueuedConnection, Q_ARG(const QString&, ToString(m_FinishedImageCount) + " / " + ToString(m_ImageCount)));
|
||||
QMetaObject::invokeMethod(m_FinalRenderDialog->ui.FinalRenderTotalProgress, "setValue", Qt::QueuedConnection, Q_ARG(int, int((float(m_FinishedImageCount) / float(m_ImageCount)) * 100)));
|
||||
QMetaObject::invokeMethod(m_FinalRenderDialog->ui.FinalRenderImageCountLabel, "setText", Qt::QueuedConnection, Q_ARG(const QString&, ToString(m_FinishedImageCount) + " / " + ToString(m_ImageCount)));
|
||||
|
||||
status = "Pure render time: " + QString::fromStdString(renderTimeString);
|
||||
Output(status);
|
||||
@ -733,3 +732,9 @@ void FinalRenderEmberController<T>::SyncGuiToEmber(Ember<T>& ember, size_t width
|
||||
ember.m_Quality = m_FinalRenderDialog->m_QualitySpin->value();
|
||||
ember.m_Supersample = m_FinalRenderDialog->m_SupersampleSpin->value();
|
||||
}
|
||||
|
||||
template class FinalRenderEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FinalRenderEmberController<double>;
|
||||
#endif
|
||||
|
@ -13,6 +13,7 @@
|
||||
/// </summary>
|
||||
class Fractorium;
|
||||
class FractoriumFinalRenderDialog;
|
||||
//class FractoriumEmberControllerBase;
|
||||
|
||||
/// <summary>
|
||||
/// Used to hold the options specified in the current state of the Gui for performing the final render.
|
||||
@ -138,8 +139,3 @@ protected:
|
||||
unique_ptr<EmberNs::Renderer<T, T>> m_FinalPreviewRenderer;
|
||||
};
|
||||
|
||||
template class FinalRenderEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FinalRenderEmberController<double>;
|
||||
#endif
|
@ -7,10 +7,11 @@
|
||||
/// to the GUI widgets that are not possible to do through the designer. So if something
|
||||
/// is present here, it's safe to assume it can't be done in the designer.
|
||||
/// </summary>
|
||||
Fractorium::Fractorium(QWidget* parent)
|
||||
: QMainWindow(parent)
|
||||
/// <param name="p">The parent widget of this item</param>
|
||||
Fractorium::Fractorium(QWidget* p)
|
||||
: QMainWindow(p)
|
||||
{
|
||||
int spinHeight = 20, iconSize = 9;
|
||||
int spinHeight = 20, iconSize_ = 9;
|
||||
size_t i = 0;
|
||||
Timing t;
|
||||
ui.setupUi(this);
|
||||
@ -58,13 +59,13 @@ Fractorium::Fractorium(QWidget* parent)
|
||||
|
||||
for (i = 0; i < XFORM_COLOR_COUNT; i++)
|
||||
{
|
||||
QPixmap pixmap(iconSize, iconSize);
|
||||
QPixmap pixmap(iconSize_, iconSize_);
|
||||
|
||||
pixmap.fill(m_XformComboColors[i]);
|
||||
m_XformComboIcons[i] = QIcon(pixmap);
|
||||
}
|
||||
|
||||
QPixmap pixmap(iconSize, iconSize);
|
||||
QPixmap pixmap(iconSize_, iconSize_);
|
||||
|
||||
pixmap.fill(m_FinalXformComboColor);
|
||||
m_FinalXformComboIcon = QIcon(pixmap);
|
||||
@ -168,14 +169,14 @@ Fractorium::~Fractorium()
|
||||
/// <summary>
|
||||
/// Set the coordinate text in the status bar.
|
||||
/// </summary>
|
||||
/// <param name="x">The raster x coordinate</param>
|
||||
/// <param name="y">The raster y coordinate</param>
|
||||
/// <param name="rasX">The raster x coordinate</param>
|
||||
/// <param name="rasY">The raster y coordinate</param>
|
||||
/// <param name="worldX">The cartesian world x coordinate</param>
|
||||
/// <param name="worldY">The cartesian world y coordinate</param>
|
||||
void Fractorium::SetCoordinateStatus(int x, int y, float worldX, float worldY)
|
||||
void Fractorium::SetCoordinateStatus(int rasX, int rasY, float worldX, float worldY)
|
||||
{
|
||||
//Use sprintf rather than allocating and concatenating 6 QStrings for efficiency since this is called on every mouse move.
|
||||
sprintf_s(m_CoordinateString, 128, "Window: %4d, %4d World: %2.2f, %2.2f", x, y, worldX, worldY);
|
||||
sprintf_s(m_CoordinateString, 128, "Window: %4d, %4d World: %2.2f, %2.2f", rasX, rasY, worldX, worldY);
|
||||
m_CoordinateStatusLabel->setText(QString(m_CoordinateString));
|
||||
}
|
||||
|
||||
@ -711,3 +712,9 @@ int Fractorium::FlipDet(Affine2D<float>& affine)
|
||||
// if (incRow)
|
||||
// row++;
|
||||
//}
|
||||
|
||||
template class FractoriumEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FractoriumEmberController<double>;
|
||||
#endif
|
||||
|
@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "ui_Fractorium.h"
|
||||
#include "FractoriumCommon.h"
|
||||
#include "GLWidget.h"
|
||||
#include "EmberTreeWidgetItem.h"
|
||||
#include "VariationTreeWidgetItem.h"
|
||||
@ -14,6 +15,17 @@
|
||||
/// Fractorium class.
|
||||
/// </summary>
|
||||
|
||||
class GLWidget;
|
||||
class FractoriumOptionsDialog;
|
||||
class FractoriumFinalRenderDialog;
|
||||
class FractoriumAboutDialog;
|
||||
class GLEmberControllerBase;
|
||||
class FractoriumEmberControllerBase;
|
||||
class FinalRenderEmberControllerBase;
|
||||
template <typename T> class GLEmberController;
|
||||
template <typename T> class FractoriumEmberController;
|
||||
template <typename T> class FinalRenderEmberController;
|
||||
|
||||
/// <summary>
|
||||
/// Fractorium is the main window for the interactive renderer. The main viewable area
|
||||
/// is a derivation of QGLWidget named GLWidget. The design uses the concept of a controller
|
||||
@ -55,23 +67,26 @@ class Fractorium : public QMainWindow
|
||||
friend FractoriumAboutDialog;
|
||||
friend GLEmberControllerBase;
|
||||
friend GLEmberController<float>;
|
||||
friend GLEmberController<double>;
|
||||
friend FractoriumEmberControllerBase;
|
||||
friend FractoriumEmberController<float>;
|
||||
friend FractoriumEmberController<double>;
|
||||
friend FinalRenderEmberControllerBase;
|
||||
friend FinalRenderEmberController<float>;
|
||||
friend FinalRenderEmberController<double>;
|
||||
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
friend GLEmberController<double>;
|
||||
friend FractoriumEmberController<double>;
|
||||
friend FinalRenderEmberController<double>;
|
||||
#endif
|
||||
|
||||
public:
|
||||
Fractorium(QWidget* parent = 0);
|
||||
Fractorium(QWidget* p = 0);
|
||||
~Fractorium();
|
||||
|
||||
//Geometry.
|
||||
void SetCenter(float x, float y);
|
||||
void SetRotation(double rot, bool stealth);
|
||||
void SetScale(double scale);
|
||||
void SetCoordinateStatus(int x, int y, float worldX, float worldY);
|
||||
void SetCoordinateStatus(int rasX, int rasY, float worldX, float worldY);
|
||||
|
||||
//Xforms.
|
||||
void CurrentXform(uint i);
|
||||
@ -236,7 +251,7 @@ public slots:
|
||||
void ShowCritical(const QString& title, const QString& text, bool invokeRequired = false);
|
||||
|
||||
//Can't have a template function be a slot.
|
||||
void SetLibraryTreeItemData(EmberTreeWidgetItemBase* item, vector<byte>& v, uint width, uint height);
|
||||
void SetLibraryTreeItemData(EmberTreeWidgetItemBase* item, vector<byte>& v, uint w, uint h);
|
||||
|
||||
public:
|
||||
//template<typename spinType, typename valType>//See below.
|
||||
@ -290,7 +305,7 @@ private:
|
||||
|
||||
//Info.
|
||||
void UpdateHistogramBounds();
|
||||
void ErrorReportToQTextEdit(vector<string>& errors, QTextEdit* textEdit, bool clear = true);
|
||||
void ErrorReportToQTextEdit(const vector<string>& errors, QTextEdit* textEdit, bool clear = true);
|
||||
|
||||
//Rendering/progress.
|
||||
bool CreateRendererFromOptions();
|
||||
@ -406,112 +421,5 @@ private:
|
||||
Ui::FractoriumClass ui;
|
||||
};
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Setup a spinner to be placed in a table cell.
|
||||
/// Due to a serious compiler bug in MSVC, this must be declared as an outside function instead of a static member of Fractorium.
|
||||
/// The reason is that the default arguments of type valType will not be interpreted correctly by the compiler.
|
||||
/// If the bug is ever fixed, put it back as a static member function.
|
||||
/// </summary>
|
||||
/// <param name="table">The table the spinner belongs to</param>
|
||||
/// <param name="receiver">The receiver object</param>
|
||||
/// <param name="row">The row in the table where this spinner resides</param>
|
||||
/// <param name="col">The col in the table where this spinner resides</param>
|
||||
/// <param name="spinBox">Double pointer to spin box which will hold the spinner upon exit</param>
|
||||
/// <param name="height">The height of the spinner</param>
|
||||
/// <param name="min">The minimum value of the spinner</param>
|
||||
/// <param name="max">The maximum value of the spinner</param>
|
||||
/// <param name="step">The step of the spinner</param>
|
||||
/// <param name="signal">The signal the spinner emits</param>
|
||||
/// <param name="slot">The slot to receive the signal</param>
|
||||
/// <param name="incRow">Whether to increment the row value</param>
|
||||
/// <param name="val">The default value for the spinner</param>
|
||||
/// <param name="doubleClickZero">When the spinner has a value of zero and is double clicked, assign this value</param>
|
||||
/// <param name="doubleClickNonZero">When the spinner has a value of non-zero and is double clicked, assign this value</param>
|
||||
template<typename spinType, typename valType>
|
||||
static void SetupSpinner(QTableWidget* table, const QObject* receiver, int& row, int col, spinType*& spinBox, int height, valType min, valType max, valType step, const char* signal, const char* slot, bool incRow = true, valType val = 0, valType doubleClickZero = -999, valType doubleClickNonZero = -999)
|
||||
{
|
||||
spinBox = new spinType(table, height, step);
|
||||
spinBox->setRange(min, max);
|
||||
spinBox->setValue(val);
|
||||
|
||||
if (col >= 0)
|
||||
table->setCellWidget(row, col, spinBox);
|
||||
|
||||
if (string(signal) != "" && string(slot) != "")
|
||||
receiver->connect(spinBox, signal, receiver, slot, Qt::QueuedConnection);
|
||||
|
||||
if (doubleClickNonZero != -999 && doubleClickZero != -999)
|
||||
{
|
||||
spinBox->DoubleClick(true);
|
||||
spinBox->DoubleClickZero((valType)doubleClickZero);
|
||||
spinBox->DoubleClickNonZero((valType)doubleClickNonZero);
|
||||
}
|
||||
|
||||
if (incRow)
|
||||
row++;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Wrapper around QWidget::setTabOrder() to return the second widget.
|
||||
/// This makes it easy to chain multiple calls without having to retype
|
||||
/// all of them if the order changes or if a new widget is inserted.
|
||||
/// </summary>
|
||||
/// <param name="parent">The parent widget that w1 and w2 belong to</param>
|
||||
/// <param name="w1">The widget to come first in the tab order</param>
|
||||
/// <param name="w2">The widget to come second in the tab order</param>
|
||||
static QWidget* SetTabOrder(QWidget* parent, QWidget* w1, QWidget* w2)
|
||||
{
|
||||
parent->setTabOrder(w1, w2);
|
||||
return w2;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Wrapper around QLocale::system().toDouble().
|
||||
/// </summary>
|
||||
/// <param name="s">The string to convert</param>
|
||||
/// <param name="ok">Pointer to boolean which stores the success value of the conversion</param>
|
||||
/// <returns>The converted value if successful, else 0.</returns>
|
||||
static double ToDouble(const QString &s, bool *ok)
|
||||
{
|
||||
return QLocale::system().toDouble(s, ok);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Wrapper around QLocale::system().toString().
|
||||
/// </summary>
|
||||
/// <param name="s">The value to convert</param>
|
||||
/// <returns>The string value if successful, else "".</returns>
|
||||
template <typename T>
|
||||
static QString ToString(T val)
|
||||
{
|
||||
return QLocale::system().toString(val);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Force a QString to end with the specified value.
|
||||
/// </summary>
|
||||
/// <param name="s">The string to append a suffix to</param>
|
||||
/// <param name="e">The suffix to append</param>
|
||||
/// <returns>The original string value if it already ended in e, else the original value appended with e.</returns>
|
||||
template <typename T>
|
||||
static QString MakeEnd(const QString& s, T e)
|
||||
{
|
||||
if (!s.endsWith(e))
|
||||
return s + e;
|
||||
else
|
||||
return s;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if a path is not empty and exists on the file system.
|
||||
/// </summary>
|
||||
/// <param name="s">The path to check</param>
|
||||
/// <returns>True if s was not empty and existed, else false.</returns>
|
||||
static bool Exists(const QString& s)
|
||||
{
|
||||
return s != "" && QDir(s).exists();
|
||||
}
|
||||
|
||||
//template void Fractorium::SetupSpinner<SpinBox, int> (QTableWidget* table, const QObject* receiver, int& row, int col, SpinBox*& spinBox, int height, int min, int max, int step, const char* signal, const char* slot, bool incRow, int val, int doubleClickZero, int doubleClickNonZero);
|
||||
//template void Fractorium::SetupSpinner<DoubleSpinBox, double>(QTableWidget* table, const QObject* receiver, int& row, int col, DoubleSpinBox*& spinBox, int height, double min, double max, double step, const char* signal, const char* slot, bool incRow, double val, double doubleClickZero, double doubleClickNonZero);
|
||||
|
@ -5837,7 +5837,7 @@ SpinBox
|
||||
<customwidget>
|
||||
<class>GLWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>glwidget.h</header>
|
||||
<header>GLWidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
|
113
Source/Fractorium/FractoriumCommon.h
Normal file
113
Source/Fractorium/FractoriumCommon.h
Normal file
@ -0,0 +1,113 @@
|
||||
#pragma once
|
||||
|
||||
#include "FractoriumPch.h"
|
||||
|
||||
/// <summary>
|
||||
/// Fractorium global utility functions.
|
||||
/// </summary>
|
||||
|
||||
/// <summary>
|
||||
/// Setup a spinner to be placed in a table cell.
|
||||
/// Due to a serious compiler bug in MSVC, this must be declared as an outside function instead of a static member of Fractorium.
|
||||
/// The reason is that the default arguments of type valType will not be interpreted correctly by the compiler.
|
||||
/// If the bug is ever fixed, put it back as a static member function.
|
||||
/// </summary>
|
||||
/// <param name="table">The table the spinner belongs to</param>
|
||||
/// <param name="receiver">The receiver object</param>
|
||||
/// <param name="row">The row in the table where this spinner resides</param>
|
||||
/// <param name="col">The col in the table where this spinner resides</param>
|
||||
/// <param name="spinBox">Double pointer to spin box which will hold the spinner upon exit</param>
|
||||
/// <param name="height">The height of the spinner</param>
|
||||
/// <param name="min">The minimum value of the spinner</param>
|
||||
/// <param name="max">The maximum value of the spinner</param>
|
||||
/// <param name="step">The step of the spinner</param>
|
||||
/// <param name="signal">The signal the spinner emits</param>
|
||||
/// <param name="slot">The slot to receive the signal</param>
|
||||
/// <param name="incRow">Whether to increment the row value</param>
|
||||
/// <param name="val">The default value for the spinner</param>
|
||||
/// <param name="doubleClickZero">When the spinner has a value of zero and is double clicked, assign this value</param>
|
||||
/// <param name="doubleClickNonZero">When the spinner has a value of non-zero and is double clicked, assign this value</param>
|
||||
template<typename spinType, typename valType>
|
||||
static void SetupSpinner(QTableWidget* table, const QObject* receiver, int& row, int col, spinType*& spinBox, int height, valType min, valType max, valType step, const char* signal, const char* slot, bool incRow = true, valType val = 0, valType doubleClickZero = -999, valType doubleClickNonZero = -999)
|
||||
{
|
||||
spinBox = new spinType(table, height, step);
|
||||
spinBox->setRange(min, max);
|
||||
spinBox->setValue(val);
|
||||
|
||||
if (col >= 0)
|
||||
table->setCellWidget(row, col, spinBox);
|
||||
|
||||
if (string(signal) != "" && string(slot) != "")
|
||||
receiver->connect(spinBox, signal, receiver, slot, Qt::QueuedConnection);
|
||||
|
||||
if (doubleClickNonZero != -999 && doubleClickZero != -999)
|
||||
{
|
||||
spinBox->DoubleClick(true);
|
||||
spinBox->DoubleClickZero(valType(doubleClickZero));
|
||||
spinBox->DoubleClickNonZero(valType(doubleClickNonZero));
|
||||
}
|
||||
|
||||
if (incRow)
|
||||
row++;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Wrapper around QWidget::setTabOrder() to return the second widget.
|
||||
/// This makes it easy to chain multiple calls without having to retype
|
||||
/// all of them if the order changes or if a new widget is inserted.
|
||||
/// </summary>
|
||||
/// <param name="p">The parent widget that w1 and w2 belong to</param>
|
||||
/// <param name="w1">The widget to come first in the tab order</param>
|
||||
/// <param name="w2">The widget to come second in the tab order</param>
|
||||
static QWidget* SetTabOrder(QWidget* p, QWidget* w1, QWidget* w2)
|
||||
{
|
||||
p->setTabOrder(w1, w2);
|
||||
return w2;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Wrapper around QLocale::system().toDouble().
|
||||
/// </summary>
|
||||
/// <param name="s">The string to convert</param>
|
||||
/// <param name="ok">Pointer to boolean which stores the success value of the conversion</param>
|
||||
/// <returns>The converted value if successful, else 0.</returns>
|
||||
static double ToDouble(const QString &s, bool *ok)
|
||||
{
|
||||
return QLocale::system().toDouble(s, ok);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Wrapper around QLocale::system().toString().
|
||||
/// </summary>
|
||||
/// <param name="s">The value to convert</param>
|
||||
/// <returns>The string value if successful, else "".</returns>
|
||||
template <typename T>
|
||||
static QString ToString(T val)
|
||||
{
|
||||
return QLocale::system().toString(val);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Force a QString to end with the specified value.
|
||||
/// </summary>
|
||||
/// <param name="s">The string to append a suffix to</param>
|
||||
/// <param name="e">The suffix to append</param>
|
||||
/// <returns>The original string value if it already ended in e, else the original value appended with e.</returns>
|
||||
template <typename T>
|
||||
static QString MakeEnd(const QString& s, T e)
|
||||
{
|
||||
if (!s.endsWith(e))
|
||||
return s + e;
|
||||
else
|
||||
return s;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if a path is not empty and exists on the file system.
|
||||
/// </summary>
|
||||
/// <param name="s">The path to check</param>
|
||||
/// <returns>True if s was not empty and existed, else false.</returns>
|
||||
static bool Exists(const QString& s)
|
||||
{
|
||||
return s != "" && QDir(s).exists();
|
||||
}
|
@ -92,7 +92,7 @@ FractoriumEmberController<T>::FractoriumEmberController(Fractorium* fractorium)
|
||||
|
||||
m_PreviewRun = true;
|
||||
m_PreviewRunning = true;
|
||||
m_PreviewRenderer->ThreadCount(max(1, Timing::ProcessorCount() - 1));//Leave one processor free so the GUI can breathe.
|
||||
m_PreviewRenderer->ThreadCount(max(1u, Timing::ProcessorCount() - 1));//Leave one processor free so the GUI can breathe.
|
||||
QTreeWidget* tree = m_Fractorium->ui.LibraryTree;
|
||||
|
||||
if (QTreeWidgetItem* top = tree->topLevelItem(0))
|
||||
@ -116,7 +116,7 @@ FractoriumEmberController<T>::FractoriumEmberController(Fractorium* fractorium)
|
||||
//This ensures the events are processed in order as each preview is updated, and that control does not return here
|
||||
//until the update is complete.
|
||||
QMetaObject::invokeMethod(m_Fractorium, "SetLibraryTreeItemData", Qt::BlockingQueuedConnection,
|
||||
Q_ARG(EmberTreeWidgetItemBase*, (EmberTreeWidgetItemBase*)treeItem),
|
||||
Q_ARG(EmberTreeWidgetItemBase*, dynamic_cast<EmberTreeWidgetItemBase*>(treeItem)),
|
||||
Q_ARG(vector<byte>&, m_PreviewFinalImage),
|
||||
Q_ARG(uint, PREVIEW_SIZE),
|
||||
Q_ARG(uint, PREVIEW_SIZE));
|
||||
@ -260,4 +260,10 @@ void FractoriumEmberController<T>::SetEmberPrivate(const Ember<U>& ember, bool v
|
||||
|
||||
m_Fractorium->FillXforms();//Must do this first because the palette setup in FillParamTablesAndPalette() uses the xforms combo.
|
||||
FillParamTablesAndPalette();
|
||||
}
|
||||
}
|
||||
|
||||
template class FractoriumEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FractoriumEmberController<double>;
|
||||
#endif
|
||||
|
@ -456,8 +456,3 @@ private:
|
||||
std::function<void (uint, uint)> m_PreviewRenderFunc;
|
||||
};
|
||||
|
||||
template class FractoriumEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FractoriumEmberController<double>;
|
||||
#endif
|
@ -14,8 +14,8 @@ void Fractorium::UpdateHistogramBounds()
|
||||
sprintf_s(m_URString, 32, "UR: %3.3f, %3.3f", -r->LowerLeftX(), r->UpperRightY());
|
||||
sprintf_s(m_LRString, 32, "LR: %3.3f, %3.3f", -r->LowerLeftX(), r->LowerLeftY());
|
||||
sprintf_s(m_LLString, 32, "LL: %3.3f, %3.3f", r->LowerLeftX(), r->LowerLeftY());
|
||||
sprintf_s(m_WString, 16, "W: %4d" , r->SuperRasW());
|
||||
sprintf_s(m_HString, 16, "H: %4d" , r->SuperRasH());
|
||||
sprintf_s(m_WString, 16, "W: %4lu" , r->SuperRasW());
|
||||
sprintf_s(m_HString, 16, "H: %4lu" , r->SuperRasH());
|
||||
|
||||
ui.InfoBoundsLabelUL->setText(QString(m_ULString));
|
||||
ui.InfoBoundsLabelUR->setText(QString(m_URString));
|
||||
@ -24,7 +24,7 @@ void Fractorium::UpdateHistogramBounds()
|
||||
ui.InfoBoundsLabelW->setText(QString(m_WString));
|
||||
ui.InfoBoundsLabelH->setText(QString(m_HString));
|
||||
|
||||
ui.InfoBoundsTable->item(0, 1)->setText(ToString(r->GutterWidth()));
|
||||
ui.InfoBoundsTable->item(0, 1)->setText(ToString<qulonglong>(r->GutterWidth()));
|
||||
|
||||
if (r->GetDensityFilter())
|
||||
{
|
||||
@ -48,11 +48,11 @@ void Fractorium::UpdateHistogramBounds()
|
||||
/// <param name="errors">The vector of error strings</param>
|
||||
/// <param name="textEdit">The QTextEdit to fill</param>
|
||||
/// <param name="clear">Clear if true, else don't.</param>
|
||||
void Fractorium::ErrorReportToQTextEdit(vector<string>& errors, QTextEdit* textEdit, bool clear)
|
||||
void Fractorium::ErrorReportToQTextEdit(const vector<string>& errors, QTextEdit* textEdit, bool clear)
|
||||
{
|
||||
if (clear)
|
||||
QMetaObject::invokeMethod(textEdit, "clear", Qt::QueuedConnection);
|
||||
|
||||
for (size_t i = 0; i < errors.size(); i++)
|
||||
QMetaObject::invokeMethod(textEdit, "append", Qt::QueuedConnection, Q_ARG(const QString&, QString::fromStdString(errors[i]) + "\n"));
|
||||
}
|
||||
}
|
||||
|
@ -15,11 +15,11 @@ void Fractorium::InitLibraryUI()
|
||||
/// </summary>
|
||||
/// <param name="item">The item double clicked on</param>
|
||||
/// <param name="v">The vector holding the RGBA bitmap</param>
|
||||
/// <param name="width">The width of the bitmap</param>
|
||||
/// <param name="height">The height of the bitmap</param>
|
||||
void Fractorium::SetLibraryTreeItemData(EmberTreeWidgetItemBase* item, vector<byte>& v, uint width, uint height)
|
||||
/// <param name="w">The width of the bitmap</param>
|
||||
/// <param name="h">The height of the bitmap</param>
|
||||
void Fractorium::SetLibraryTreeItemData(EmberTreeWidgetItemBase* item, vector<byte>& v, uint w, uint h)
|
||||
{
|
||||
item->SetImage(v, width, height);
|
||||
item->SetImage(v, w, h);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -275,3 +275,9 @@ void FractoriumEmberController<T>::StopPreviewRender()
|
||||
QCoreApplication::sendPostedEvents(m_Fractorium->ui.LibraryTree);
|
||||
QCoreApplication::flush();
|
||||
}
|
||||
|
||||
template class FractoriumEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FractoriumEmberController<double>;
|
||||
#endif
|
||||
|
@ -191,7 +191,7 @@ void FractoriumEmberController<T>::OpenAndPrepFiles(const QStringList& filenames
|
||||
|
||||
//Also ensure it has a name.
|
||||
if (embers[i].m_Name == "" || embers[i].m_Name == "No name")
|
||||
embers[i].m_Name = ToString(i).toStdString();
|
||||
embers[i].m_Name = ToString<qulonglong>(i).toStdString();
|
||||
|
||||
embers[i].m_Quality = m_Fractorium->m_QualitySpin->value();
|
||||
embers[i].m_Supersample = m_Fractorium->m_SupersampleSpin->value();
|
||||
@ -504,13 +504,13 @@ void FractoriumEmberController<T>::PasteXmlAppend()
|
||||
|
||||
for (i = 0; i < b.size(); i++)
|
||||
{
|
||||
if ((uint)b[i] < 128u)
|
||||
if (uint(b[i]) < 128u)
|
||||
s.push_back(b[i]);
|
||||
}
|
||||
|
||||
b.clear();
|
||||
StopPreviewRender();
|
||||
parser.Parse((byte*)s.c_str(), "", embers);
|
||||
parser.Parse(reinterpret_cast<byte*>(const_cast<char*>(s.c_str())), "", embers);
|
||||
errors = parser.ErrorReportString();
|
||||
|
||||
if (errors != "")
|
||||
@ -527,7 +527,7 @@ void FractoriumEmberController<T>::PasteXmlAppend()
|
||||
|
||||
//Also ensure it has a name.
|
||||
if (embers[i].m_Name == "" || embers[i].m_Name == "No name")
|
||||
embers[i].m_Name = ToString(embers[i].m_Index).toStdString();
|
||||
embers[i].m_Name = ToString<qulonglong>(embers[i].m_Index).toStdString();
|
||||
|
||||
m_EmberFile.m_Embers.push_back(embers[i]);//Will invalidate the pointers contained in the EmberTreeWidgetItems, UpdateLibraryTree() will resync.
|
||||
}
|
||||
@ -559,14 +559,14 @@ void FractoriumEmberController<T>::PasteXmlOver()
|
||||
|
||||
for (i = 0; i < b.size(); i++)
|
||||
{
|
||||
if ((uint)b[i] < 128u)
|
||||
if (uint(b[i]) < 128u)
|
||||
s.push_back(b[i]);
|
||||
}
|
||||
|
||||
b.clear();
|
||||
StopPreviewRender();
|
||||
m_EmberFile.m_Embers.clear();//Will invalidate the pointers contained in the EmberTreeWidgetItems, UpdateLibraryTree() will resync.
|
||||
parser.Parse((byte*)s.c_str(), "", m_EmberFile.m_Embers);
|
||||
parser.Parse(reinterpret_cast<byte*>(const_cast<char*>(s.c_str())), "", m_EmberFile.m_Embers);
|
||||
errors = parser.ErrorReportString();
|
||||
|
||||
if (errors != "")
|
||||
@ -583,7 +583,7 @@ void FractoriumEmberController<T>::PasteXmlOver()
|
||||
|
||||
//Also ensure it has a name.
|
||||
if (m_EmberFile.m_Embers[i].m_Name == "" || m_EmberFile.m_Embers[i].m_Name == "No name")
|
||||
m_EmberFile.m_Embers[i].m_Name = ToString(m_EmberFile.m_Embers[i].m_Index).toStdString();
|
||||
m_EmberFile.m_Embers[i].m_Name = ToString<qulonglong>(m_EmberFile.m_Embers[i].m_Index).toStdString();
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -758,3 +758,9 @@ void Fractorium::OnActionAbout(bool checked)
|
||||
{
|
||||
m_AboutDialog->exec();
|
||||
}
|
||||
|
||||
template class FractoriumEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FractoriumEmberController<double>;
|
||||
#endif
|
||||
|
@ -111,11 +111,11 @@ void FractoriumEmberController<T>::ApplyPaletteToEmber()
|
||||
int i, rot = 0;
|
||||
uint blur = m_Fractorium->m_PaletteBlurSpin->value();
|
||||
uint freq = m_Fractorium->m_PaletteFrequencySpin->value();
|
||||
double sat = (double)m_Fractorium->m_PaletteSaturationSpin->value() / 100.0;
|
||||
double brightness = (double)m_Fractorium->m_PaletteBrightnessSpin->value() / 255.0;
|
||||
double contrast = (double)(m_Fractorium->m_PaletteContrastSpin->value() > 0 ? (m_Fractorium->m_PaletteContrastSpin->value() * 2) : m_Fractorium->m_PaletteContrastSpin->value()) / 100.0;
|
||||
double sat = double(m_Fractorium->m_PaletteSaturationSpin->value() / 100.0);
|
||||
double brightness = double(m_Fractorium->m_PaletteBrightnessSpin->value() / 255.0);
|
||||
double contrast = double(m_Fractorium->m_PaletteContrastSpin->value() > 0 ? (m_Fractorium->m_PaletteContrastSpin->value() * 2) : m_Fractorium->m_PaletteContrastSpin->value()) / 100.0;
|
||||
|
||||
m_Ember.m_Hue = (double)(m_Fractorium->m_PaletteHueSpin->value()) / 360.0;//This is the only palette adjustment value that gets saved with the ember, so just assign it here.
|
||||
m_Ember.m_Hue = double(m_Fractorium->m_PaletteHueSpin->value()) / 360.0;//This is the only palette adjustment value that gets saved with the ember, so just assign it here.
|
||||
|
||||
//Use the temp palette as the base and apply the adjustments gotten from the GUI and save the result in the ember palette.
|
||||
m_TempPalette.MakeAdjustedPalette(m_Ember.m_Palette, 0, m_Ember.m_Hue, sat, brightness, contrast, blur, freq);
|
||||
@ -235,7 +235,7 @@ void Fractorium::OnPaletteRandomSelectButtonClicked(bool checked)
|
||||
uint i = 0;
|
||||
int rowCount = ui.PaletteListTable->rowCount() - 1;
|
||||
|
||||
while ((i = QTIsaac<ISAAC_SIZE, ISAAC_INT>::GlobalRand->Rand(rowCount)) == m_PreviousPaletteRow);
|
||||
while ((i = QTIsaac<ISAAC_SIZE, ISAAC_INT>::GlobalRand->Rand(rowCount)) == uint(m_PreviousPaletteRow));
|
||||
|
||||
OnPaletteCellClicked(i, 1);
|
||||
}
|
||||
@ -282,3 +282,9 @@ void Fractorium::ResetPaletteControls()
|
||||
m_PaletteBlurSpin->SetValueStealth(0);
|
||||
m_PaletteFrequencySpin->SetValueStealth(1);
|
||||
}
|
||||
|
||||
template class FractoriumEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FractoriumEmberController<double>;
|
||||
#endif
|
||||
|
@ -523,7 +523,7 @@ void FractoriumEmberController<T>::FillParamTablesAndPalette()
|
||||
m_Fractorium->m_HighlightSpin->SetValueStealth(m_Ember.m_HighlightPower);
|
||||
m_Fractorium->m_ColorDialog->setCurrentColor(QColor(m_Ember.m_Background.r * 255, m_Ember.m_Background.g * 255, m_Ember.m_Background.b * 255));
|
||||
m_Fractorium->ui.ColorTable->item(5, 1)->setBackgroundColor(m_Fractorium->m_ColorDialog->currentColor());
|
||||
m_Fractorium->m_PaletteModeCombo->SetCurrentIndexStealth((int)m_Ember.m_PaletteMode);
|
||||
m_Fractorium->m_PaletteModeCombo->SetCurrentIndexStealth(int(m_Ember.m_PaletteMode));
|
||||
m_Fractorium->m_WidthSpin->SetValueStealth(m_Ember.m_FinalRasW);//Geometry.
|
||||
m_Fractorium->m_HeightSpin->SetValueStealth(m_Ember.m_FinalRasH);
|
||||
m_Fractorium->m_CenterXSpin->SetValueStealth(m_Ember.m_CenterX);
|
||||
@ -537,9 +537,9 @@ void FractoriumEmberController<T>::FillParamTablesAndPalette()
|
||||
m_Fractorium->m_YawSpin->SetValueStealth(m_Ember.m_CamYaw * RAD_2_DEG_T);
|
||||
m_Fractorium->m_DepthBlurSpin->SetValueStealth(m_Ember.m_CamDepthBlur);
|
||||
m_Fractorium->m_SpatialFilterWidthSpin->SetValueStealth(m_Ember.m_SpatialFilterRadius);//Filter.
|
||||
m_Fractorium->m_SpatialFilterTypeCombo->SetCurrentIndexStealth((int)m_Ember.m_SpatialFilterType);
|
||||
m_Fractorium->m_SpatialFilterTypeCombo->SetCurrentIndexStealth(int(m_Ember.m_SpatialFilterType));
|
||||
m_Fractorium->m_TemporalFilterWidthSpin->SetValueStealth(m_Ember.m_TemporalFilterWidth);
|
||||
m_Fractorium->m_TemporalFilterTypeCombo->SetCurrentIndexStealth((int)m_Ember.m_TemporalFilterType);
|
||||
m_Fractorium->m_TemporalFilterTypeCombo->SetCurrentIndexStealth(int(m_Ember.m_TemporalFilterType));
|
||||
m_Fractorium->m_DEFilterMinRadiusSpin->SetValueStealth(m_Ember.m_MinRadDE);
|
||||
m_Fractorium->m_DEFilterMaxRadiusSpin->SetValueStealth(m_Ember.m_MaxRadDE);
|
||||
m_Fractorium->m_DECurveSpin->SetValueStealth(m_Ember.m_CurveDE);
|
||||
@ -587,7 +587,7 @@ void FractoriumEmberController<T>::ParamsToEmber(Ember<T>& ember)
|
||||
ember.m_Background.r = color.red() / 255.0;
|
||||
ember.m_Background.g = color.green() / 255.0;
|
||||
ember.m_Background.b = color.blue() / 255.0;
|
||||
ember.m_PaletteMode = (ePaletteMode)m_Fractorium->m_PaletteModeCombo->currentIndex();
|
||||
ember.m_PaletteMode = ePaletteMode(m_Fractorium->m_PaletteModeCombo->currentIndex());
|
||||
ember.m_FinalRasW = m_Fractorium->m_WidthSpin->value();//Geometry.
|
||||
ember.m_FinalRasH = m_Fractorium->m_HeightSpin->value();
|
||||
ember.m_CenterX = m_Fractorium->m_CenterXSpin->value();
|
||||
@ -601,9 +601,9 @@ void FractoriumEmberController<T>::ParamsToEmber(Ember<T>& ember)
|
||||
ember.m_CamYaw = m_Fractorium->m_YawSpin->value() * DEG_2_RAD_T;
|
||||
ember.m_CamDepthBlur = m_Fractorium->m_DepthBlurSpin->value();
|
||||
ember.m_SpatialFilterRadius = m_Fractorium->m_SpatialFilterWidthSpin->value();//Filter.
|
||||
ember.m_SpatialFilterType = (eSpatialFilterType)m_Fractorium->m_SpatialFilterTypeCombo->currentIndex();
|
||||
ember.m_SpatialFilterType = eSpatialFilterType(m_Fractorium->m_SpatialFilterTypeCombo->currentIndex());
|
||||
ember.m_TemporalFilterWidth = m_Fractorium->m_TemporalFilterWidthSpin->value();
|
||||
ember.m_TemporalFilterType = (eTemporalFilterType)m_Fractorium->m_TemporalFilterTypeCombo->currentIndex();
|
||||
ember.m_TemporalFilterType = eTemporalFilterType(m_Fractorium->m_TemporalFilterTypeCombo->currentIndex());
|
||||
ember.m_MinRadDE = m_Fractorium->m_DEFilterMinRadiusSpin->value();
|
||||
ember.m_MaxRadDE = m_Fractorium->m_DEFilterMaxRadiusSpin->value();
|
||||
ember.m_CurveDE = m_Fractorium->m_DECurveSpin->value();
|
||||
@ -612,8 +612,8 @@ void FractoriumEmberController<T>::ParamsToEmber(Ember<T>& ember)
|
||||
ember.m_Quality = m_Fractorium->m_QualitySpin->value();
|
||||
ember.m_Supersample = m_Fractorium->m_SupersampleSpin->value();
|
||||
ember.m_TemporalSamples = m_Fractorium->m_TemporalSamplesSpin->value();
|
||||
ember.m_AffineInterp = (eAffineInterp)m_Fractorium->m_AffineInterpTypeCombo->currentIndex();
|
||||
ember.m_Interp = (eInterp)m_Fractorium->m_InterpTypeCombo->currentIndex();
|
||||
ember.m_AffineInterp = eAffineInterp(m_Fractorium->m_AffineInterpTypeCombo->currentIndex());
|
||||
ember.m_Interp = eInterp(m_Fractorium->m_InterpTypeCombo->currentIndex());
|
||||
|
||||
ember.SyncSize();
|
||||
}
|
||||
@ -644,3 +644,9 @@ void Fractorium::SetScale(double scale)
|
||||
{
|
||||
m_ScaleSpin->setValue(scale);
|
||||
}
|
||||
|
||||
template class FractoriumEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FractoriumEmberController<double>;
|
||||
#endif
|
||||
|
@ -1,18 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#define GL_GLEXT_PROTOTYPES
|
||||
#define GLM_FORCE_INLINE 1
|
||||
|
||||
#include "Renderer.h"
|
||||
#include "RendererCL.h"
|
||||
#include "VariationList.h"
|
||||
#include "OpenCLWrapper.h"
|
||||
#include "XmlToEmber.h"
|
||||
#include "EmberToXml.h"
|
||||
#include "SheepTools.h"
|
||||
#include "JpegUtils.h"
|
||||
#include "EmberCommon.h"
|
||||
#include <deque>
|
||||
#undef QT_OPENGL_ES_2//Make absolutely sure OpenGL ES is not used.
|
||||
#define QT_NO_OPENGL_ES_2
|
||||
#include <QtWidgets>
|
||||
@ -29,11 +17,23 @@
|
||||
#include <QSettings>
|
||||
#include <QStandardPaths>
|
||||
#include <QGLWidget>
|
||||
#include <QOpenGLFunctions_2_0.h>
|
||||
//#include <QOpenGLFunctions_2_0.h>
|
||||
#include <qopenglfunctions_2_0.h>
|
||||
#include <QtWidgets/QMainWindow>
|
||||
#include <QFuture>
|
||||
#include <QtConcurrentRun>
|
||||
|
||||
#include "Renderer.h"
|
||||
#include "RendererCL.h"
|
||||
#include "VariationList.h"
|
||||
#include "OpenCLWrapper.h"
|
||||
#include "XmlToEmber.h"
|
||||
#include "EmberToXml.h"
|
||||
#include "SheepTools.h"
|
||||
#include "JpegUtils.h"
|
||||
#include "EmberCommon.h"
|
||||
#include <deque>
|
||||
|
||||
#define GLM_FORCE_RADIANS
|
||||
|
||||
#include "glm/glm.hpp"
|
||||
@ -42,6 +42,10 @@
|
||||
|
||||
#define XFORM_COLOR_COUNT 14
|
||||
|
||||
#ifndef WIN32
|
||||
#undef Bool
|
||||
#endif
|
||||
|
||||
using namespace std;
|
||||
using namespace EmberNs;
|
||||
using namespace EmberCLns;
|
||||
using namespace EmberCLns;
|
||||
|
@ -224,7 +224,7 @@ int FractoriumEmberController<T>::ProgressFunc(Ember<T>& ember, void* foo, doubl
|
||||
{
|
||||
QString status;
|
||||
|
||||
m_Fractorium->m_ProgressBar->setValue((int)fraction);//Only really applies to iter and filter, because final accum only gives progress 0 and 100.
|
||||
m_Fractorium->m_ProgressBar->setValue(int(fraction));//Only really applies to iter and filter, because final accum only gives progress 0 and 100.
|
||||
|
||||
if (stage == 0)
|
||||
status = "Iterating";
|
||||
@ -275,7 +275,7 @@ bool FractoriumEmberController<T>::SyncSizes()
|
||||
gl->Allocate();
|
||||
gl->SetViewport();
|
||||
|
||||
if (m_Renderer->RendererType() == OPENCL_RENDERER && (rendererCL = (RendererCL<T>*)m_Renderer.get()))
|
||||
if (m_Renderer->RendererType() == OPENCL_RENDERER && (rendererCL = dynamic_cast<RendererCL<T>*>(m_Renderer.get())))
|
||||
rendererCL->SetOutputTexture(gl->OutputTexID());
|
||||
|
||||
changed = true;
|
||||
@ -300,7 +300,7 @@ bool FractoriumEmberController<T>::Render()
|
||||
eProcessAction action = CondenseAndClearProcessActions();
|
||||
|
||||
if (m_Renderer->RendererType() == OPENCL_RENDERER)
|
||||
rendererCL = (RendererCL<T>*)m_Renderer.get();
|
||||
rendererCL = dynamic_cast<RendererCL<T>*>(m_Renderer.get());
|
||||
|
||||
//Force temporal samples to always be 1. Perhaps change later when animation is implemented.
|
||||
m_Ember.m_TemporalSamples = 1;
|
||||
@ -378,8 +378,8 @@ bool FractoriumEmberController<T>::Render()
|
||||
if (ProcessState() == ACCUM_DONE)
|
||||
{
|
||||
EmberStats stats = m_Renderer->Stats();
|
||||
QString iters = ToString(stats.m_Iters);
|
||||
QString scaledQuality = ToString((uint)m_Renderer->ScaledQuality());
|
||||
QString iters = ToString<qulonglong>(stats.m_Iters);
|
||||
QString scaledQuality = ToString(uint(m_Renderer->ScaledQuality()));
|
||||
string renderTime = m_RenderElapsedTimer.Format(m_RenderElapsedTimer.Toc());
|
||||
|
||||
m_Fractorium->m_ProgressBar->setValue(100);
|
||||
@ -391,8 +391,8 @@ bool FractoriumEmberController<T>::Render()
|
||||
}
|
||||
else
|
||||
{
|
||||
double percent = (double)stats.m_Badvals / (double)stats.m_Iters;
|
||||
QString badVals = ToString(stats.m_Badvals);
|
||||
double percent = double(stats.m_Badvals) / double(stats.m_Iters);
|
||||
QString badVals = ToString<qulonglong>(stats.m_Badvals);
|
||||
QString badPercent = QLocale::system().toString(percent * 100, 'f', 2);
|
||||
|
||||
m_Fractorium->m_RenderStatusLabel->setText("Iters: " + iters + ". Scaled quality: " + scaledQuality + ". Bad values: " + badVals + " (" + badPercent + "%). Total time: " + QString::fromStdString(renderTime));
|
||||
@ -609,13 +609,13 @@ bool Fractorium::CreateControllerFromOptions()
|
||||
{
|
||||
bool ok = true;
|
||||
|
||||
size_t size =
|
||||
size_t elementSize =
|
||||
#ifdef DO_DOUBLE
|
||||
m_Settings->Double() ? sizeof(double) :
|
||||
#endif
|
||||
sizeof(float);
|
||||
|
||||
if (!m_Controller.get() || (m_Controller->SizeOfT() != size))
|
||||
if (!m_Controller.get() || (m_Controller->SizeOfT() != elementSize))
|
||||
{
|
||||
double hue = m_PaletteHueSpin->value();
|
||||
double sat = m_PaletteSaturationSpin->value();
|
||||
@ -703,3 +703,9 @@ void Fractorium::IdleTimer() { m_Controller->Render(); }
|
||||
/// </summary>
|
||||
/// <returns>True if the ember controller and GL controllers are both not NULL, else false.</returns>
|
||||
bool Fractorium::ControllersOk() { return m_Controller.get() && m_Controller->GLController(); }
|
||||
|
||||
template class FractoriumEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FractoriumEmberController<double>;
|
||||
#endif
|
||||
|
@ -5,9 +5,9 @@
|
||||
/// Constructor that passes the parent to the base and sets up reasonable defaults
|
||||
/// if the settings file was not present or corrupted.
|
||||
/// </summary>
|
||||
/// <param name="parent">The parent widget</param>
|
||||
FractoriumSettings::FractoriumSettings(QObject* parent)
|
||||
: QSettings(QSettings::IniFormat, QSettings::UserScope, "Fractorium", "Fractorium", parent)
|
||||
/// <param name="p">The parent widget</param>
|
||||
FractoriumSettings::FractoriumSettings(QObject* p)
|
||||
: QSettings(QSettings::IniFormat, QSettings::UserScope, "Fractorium", "Fractorium", p)
|
||||
{
|
||||
EnsureDefaults();
|
||||
}
|
||||
@ -39,7 +39,7 @@ void FractoriumSettings::EnsureDefaults()
|
||||
XmlSupersample(2);
|
||||
|
||||
if (ThreadCount() == 0 || ThreadCount() > Timing::ProcessorCount())
|
||||
ThreadCount(max(1, Timing::ProcessorCount() - 1));//Default to one less to keep the UI responsive for first time users.
|
||||
ThreadCount(max(1u, Timing::ProcessorCount() - 1));//Default to one less to keep the UI responsive for first time users.
|
||||
|
||||
if (FinalThreadCount() == 0 || FinalThreadCount() > Timing::ProcessorCount())
|
||||
FinalThreadCount(Timing::ProcessorCount());
|
||||
|
@ -66,7 +66,7 @@ class FractoriumSettings : public QSettings
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
FractoriumSettings(QObject* parent);
|
||||
FractoriumSettings(QObject* p);
|
||||
void EnsureDefaults();
|
||||
|
||||
bool EarlyClip();
|
||||
|
@ -48,7 +48,7 @@ Xform<T>* FractoriumEmberController<T>::CurrentXform()
|
||||
/// <param name="i">The index to set the current xform to</param>
|
||||
void Fractorium::CurrentXform(uint i)
|
||||
{
|
||||
if (i < ui.CurrentXformCombo->count())
|
||||
if (i < uint(ui.CurrentXformCombo->count()))
|
||||
ui.CurrentXformCombo->setCurrentIndex(i);
|
||||
}
|
||||
|
||||
@ -305,7 +305,7 @@ void FractoriumEmberController<T>::SetNormalizedWeightText(Xform<T>* xform)
|
||||
m_Ember.CalcNormalizedWeights(m_NormalizedWeights);
|
||||
|
||||
if (index != -1 && index < m_NormalizedWeights.size())
|
||||
m_Fractorium->m_XformWeightSpin->setSuffix(QString(" (") + QLocale::system().toString((double)m_NormalizedWeights[index], 'g', 3) + ")");
|
||||
m_Fractorium->m_XformWeightSpin->setSuffix(QString(" (") + QLocale::system().toString(double(m_NormalizedWeights[index]), 'g', 3) + ")");
|
||||
}
|
||||
}
|
||||
|
||||
@ -332,7 +332,7 @@ void Fractorium::FillXforms()
|
||||
combo->blockSignals(true);
|
||||
combo->clear();
|
||||
|
||||
for (i = 0; i < m_Controller->XformCount(); i++)
|
||||
for (i = 0; i < int(m_Controller->XformCount()); i++)
|
||||
{
|
||||
combo->addItem(ToString(i + 1));
|
||||
combo->setItemIcon(i, m_XformComboIcons[i % XFORM_COLOR_COUNT]);
|
||||
@ -350,3 +350,9 @@ void Fractorium::FillXforms()
|
||||
OnSoloXformCheckBoxStateChanged(Qt::Unchecked);
|
||||
OnCurrentXformComboChanged(0);//Make sure the event gets called, because it won't if the zero index is already selected.
|
||||
}
|
||||
|
||||
template class FractoriumEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FractoriumEmberController<double>;
|
||||
#endif
|
||||
|
@ -509,4 +509,10 @@ void Fractorium::SetupAffineSpinner(QTableWidget* table, const QObject* receiver
|
||||
|
||||
bool Fractorium::DrawAllPre() { return ui.ShowPreAffineAllRadio->isChecked(); }
|
||||
bool Fractorium::DrawAllPost() { return ui.ShowPostAffineAllRadio->isChecked(); }
|
||||
bool Fractorium::LocalPivot() { return ui.LocalPivotRadio->isChecked(); }
|
||||
bool Fractorium::LocalPivot() { return ui.LocalPivotRadio->isChecked(); }
|
||||
|
||||
template class FractoriumEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FractoriumEmberController<double>;
|
||||
#endif
|
||||
|
@ -68,7 +68,7 @@ void FractoriumEmberController<T>::XformScrollColorIndexChanged(int d)
|
||||
{
|
||||
UpdateCurrentXform([&] (Xform<T>* xform)
|
||||
{
|
||||
m_Fractorium->m_XformColorIndexSpin->setValue(d / (double)m_Fractorium->ui.XformColorScroll->maximum());//Will trigger an update.
|
||||
m_Fractorium->m_XformColorIndexSpin->setValue(d / double(m_Fractorium->ui.XformColorScroll->maximum()));//Will trigger an update.
|
||||
}, false);
|
||||
}
|
||||
|
||||
@ -163,7 +163,7 @@ void FractoriumEmberController<T>::SetCurrentXformColorIndex(double d)
|
||||
entry.g *= 255;
|
||||
entry.b *= 255;
|
||||
|
||||
QRgb rgb = (uint)entry.r << 16 | (uint)entry.g << 8 | (uint)entry.b;
|
||||
QRgb rgb = uint(entry.r) << 16 | uint(entry.g) << 8 | uint(entry.b);
|
||||
m_Fractorium->ui.XformColorIndexTable->item(0, 0)->setBackgroundColor(QColor::fromRgb(rgb));
|
||||
}, false);
|
||||
}
|
||||
@ -202,3 +202,9 @@ void FractoriumEmberControllerBase::SetPaletteRefTable(QPixmap* pixmap)
|
||||
m_Fractorium->m_PaletteRefItem->setData(Qt::DecorationRole, pixTemp.scaled(size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
|
||||
}
|
||||
}
|
||||
|
||||
template class FractoriumEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FractoriumEmberController<double>;
|
||||
#endif
|
||||
|
@ -115,7 +115,7 @@ void FractoriumEmberController<T>::ClearVariationsTree()
|
||||
|
||||
for (uint j = 0; j < item->childCount(); j++)//Iterate through all of the children, which will be the params.
|
||||
{
|
||||
if (spinBox = dynamic_cast<VariationTreeDoubleSpinBox<T>*>(tree->itemWidget(item->child(j), 1)))//Cast the child widget to the VariationTreeDoubleSpinBox type.
|
||||
if ((spinBox = dynamic_cast<VariationTreeDoubleSpinBox<T>*>(tree->itemWidget(item->child(j), 1))))//Cast the child widget to the VariationTreeDoubleSpinBox type.
|
||||
spinBox->SetValueStealth(0);
|
||||
}
|
||||
}
|
||||
@ -247,12 +247,12 @@ void FractoriumEmberController<T>::FillVariationTreeWithXform(Xform<T>* xform)
|
||||
|
||||
if (parVar)
|
||||
{
|
||||
if (param = parVar->GetParam(s.c_str()))//Retrieve pointer to the param.
|
||||
if ((param = parVar->GetParam(s.c_str())))//Retrieve pointer to the param.
|
||||
childSpinBox->SetValueStealth(*param);
|
||||
}
|
||||
else if (origParVar)//Parametric variation was not present in this xform, so set child values to defaults.
|
||||
{
|
||||
if (param = origParVar->GetParam(s.c_str()))
|
||||
if ((param = origParVar->GetParam(s.c_str())))
|
||||
childSpinBox->SetValueStealth(*param);
|
||||
else
|
||||
childSpinBox->SetValueStealth(0);//Will most likely never happen, but just to be safe.
|
||||
@ -293,7 +293,7 @@ void Fractorium::OnVariationsFilterLineEditTextChanged(const QString& text)
|
||||
|
||||
tree->setUpdatesEnabled(false);
|
||||
|
||||
for (uint i = 0; i < tree->topLevelItemCount(); i++)
|
||||
for (uint i = 0; i < uint(tree->topLevelItemCount()); i++)
|
||||
{
|
||||
QTreeWidgetItem* item = tree->topLevelItem(i);
|
||||
QString varName = item->text(0);
|
||||
@ -314,3 +314,9 @@ void Fractorium::OnVariationsFilterClearButtonClicked(bool checked)
|
||||
{
|
||||
ui.VariationsFilterLineEdit->clear();
|
||||
}
|
||||
|
||||
template class FractoriumEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FractoriumEmberController<double>;
|
||||
#endif
|
||||
|
@ -29,7 +29,7 @@ void FractoriumEmberController<T>::FillXaosWithCurrentXform()
|
||||
if (m_Fractorium->ui.XaosToRadio->isChecked())//"To": Single xform, advance index.
|
||||
spinBox->SetValueStealth(currXform->Xaos(i));
|
||||
else//"From": Advance xforms, single index.
|
||||
if (currXform = m_Ember.GetXform(i))
|
||||
if ((currXform = m_Ember.GetXform(i)))
|
||||
spinBox->SetValueStealth(currXform->Xaos(m_Fractorium->ui.CurrentXformCombo->currentIndex()));
|
||||
|
||||
//Fill in name column.
|
||||
@ -57,15 +57,15 @@ QString FractoriumEmberController<T>::MakeXaosNameString(uint i)
|
||||
|
||||
if (xform)
|
||||
{
|
||||
int i = m_Ember.GetXformIndex(xform) + 1;//GUI is 1 indexed to avoid confusing the user.
|
||||
int indexPlus1 = m_Ember.GetXformIndex(xform) + 1;//GUI is 1 indexed to avoid confusing the user.
|
||||
int curr = m_Fractorium->ui.CurrentXformCombo->currentIndex() + 1;
|
||||
|
||||
if (i != -1)
|
||||
if (indexPlus1 != -1)
|
||||
{
|
||||
if (m_Fractorium->ui.XaosToRadio->isChecked())
|
||||
name = QString("From ") + ToString(curr) + QString(" To ") + ToString(i);
|
||||
name = QString("From ") + ToString(curr) + QString(" To ") + ToString(indexPlus1);
|
||||
else
|
||||
name = QString("From ") + ToString(i) + QString(" To ") + ToString(curr);
|
||||
name = QString("From ") + ToString(indexPlus1) + QString(" To ") + ToString(curr);
|
||||
|
||||
//if (xform->m_Name != "")
|
||||
// name = name + " (" + QString::fromStdString(xform->m_Name) + ")";
|
||||
@ -103,7 +103,7 @@ void FractoriumEmberController<T>::XaosChanged(DoubleSpinBox* sender)
|
||||
}
|
||||
else//"From": Advance xforms, single index.
|
||||
{
|
||||
if (xform = m_Ember.GetXform(i))//Single = is intentional.
|
||||
if ((xform = m_Ember.GetXform(i)))//Single = is intentional.
|
||||
xform->SetXaos(m_Fractorium->ui.CurrentXformCombo->currentIndex(), spinBox->value());
|
||||
}
|
||||
|
||||
@ -137,10 +137,10 @@ void Fractorium::OnXaosFromToToggled(bool checked)
|
||||
void Fractorium::FillXaosTable()
|
||||
{
|
||||
int spinHeight = 20;
|
||||
QWidget* w;
|
||||
QWidget* w = nullptr;
|
||||
ui.XaosTable->setRowCount(m_Controller->XformCount());//This will grow or shrink the number of rows and call the destructor for previous DoubleSpinBoxes.
|
||||
|
||||
for (int i = 0; i < m_Controller->XformCount(); i++)
|
||||
for (int i = 0; i < int(m_Controller->XformCount()); i++)
|
||||
{
|
||||
DoubleSpinBox* spinBox = new DoubleSpinBox(ui.XaosTable, spinHeight, 0.1);
|
||||
QTableWidgetItem* xformNameItem = new QTableWidgetItem(m_Controller->MakeXaosNameString(i));
|
||||
@ -199,14 +199,14 @@ void FractoriumEmberController<T>::RandomXaos()
|
||||
{
|
||||
for (size_t i = 0; i < m_Ember.XformCount(); i++)
|
||||
{
|
||||
if (Xform<T>* xform = m_Ember.GetXform(i))
|
||||
if (Xform<T>* localXform = m_Ember.GetXform(i))
|
||||
{
|
||||
for (size_t j = 0; j < m_Ember.XformCount(); j++)
|
||||
{
|
||||
if (m_Rand.RandBit())
|
||||
xform->SetXaos(j, (T)m_Rand.RandBit());
|
||||
localXform->SetXaos(j, T(m_Rand.RandBit()));
|
||||
else
|
||||
xform->SetXaos(j, m_Rand.Frand<T>(0, 3));
|
||||
localXform->SetXaos(j, m_Rand.Frand<T>(0, 3));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -216,4 +216,10 @@ void FractoriumEmberController<T>::RandomXaos()
|
||||
FillXaosWithCurrentXform();
|
||||
}
|
||||
|
||||
void Fractorium::OnRandomXaosButtonClicked(bool checked) { m_Controller->RandomXaos(); }
|
||||
void Fractorium::OnRandomXaosButtonClicked(bool checked) { m_Controller->RandomXaos(); }
|
||||
|
||||
template class FractoriumEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FractoriumEmberController<double>;
|
||||
#endif
|
||||
|
@ -72,7 +72,7 @@ T GLEmberController<T>::CalcScale()
|
||||
{
|
||||
//Can't operate using world coords here because every time scale changes, the world bounds change.
|
||||
//So must instead calculate distance traveled based on window coords, which do not change outside of resize events.
|
||||
v2T windowCenter((T)m_GL->width() / T(2), (T)m_GL->height() / T(2));
|
||||
v2T windowCenter(T(m_GL->width()) / T(2), T(m_GL->height()) / T(2));
|
||||
v2T windowMousePosDistanceFromCenter(m_MousePos.x - windowCenter.x, m_MousePos.y - windowCenter.y);
|
||||
v2T windowMouseDownDistanceFromCenter(m_MouseDownPos.x - windowCenter.x, m_MouseDownPos.y - windowCenter.y);
|
||||
|
||||
@ -130,7 +130,7 @@ typename v3T GLEmberController<T>::SnapToNormalizedAngle(v3T& vec, uint division
|
||||
|
||||
for (uint i = 0; i < divisions; i++)
|
||||
{
|
||||
theta = 2.0 * M_PI * (T)i / (T)divisions;
|
||||
theta = 2.0 * M_PI * T(i) / T(divisions);
|
||||
c.x = cos(theta);
|
||||
c.y = sin(theta);
|
||||
rsq = glm::distance(vec, c);
|
||||
@ -251,4 +251,10 @@ void GLEmberController<T>::QueryMatrices(bool print)
|
||||
qDebug() << "Projection[" << i << "] = " << glm::value_ptr(m_Projection)[i] << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template class GLEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class GLEmberController<double>;
|
||||
#endif
|
||||
|
@ -54,8 +54,8 @@ public:
|
||||
virtual void DrawImage() { }
|
||||
virtual void DrawAffines(bool pre, bool post) { }
|
||||
virtual void ClearWindow() { }
|
||||
virtual bool KeyPress(QKeyEvent* e);
|
||||
virtual bool KeyRelease(QKeyEvent* e);
|
||||
virtual bool KeyPress_(QKeyEvent* e);
|
||||
virtual bool KeyRelease_(QKeyEvent* e);
|
||||
virtual void MousePress(QMouseEvent* e) { }
|
||||
virtual void MouseRelease(QMouseEvent* e) { }
|
||||
virtual void MouseMove(QMouseEvent* e) { }
|
||||
@ -139,8 +139,3 @@ private:
|
||||
T GridStep;
|
||||
};
|
||||
|
||||
template class GLEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class GLEmberController<double>;
|
||||
#endif
|
@ -8,9 +8,9 @@
|
||||
/// Constructor which passes parent widget to the base and initializes OpenGL profile.
|
||||
/// This will need to change in the future to implement all drawing as shader programs.
|
||||
/// </summary>
|
||||
/// <param name="parent">The parent widget</param>
|
||||
GLWidget::GLWidget(QWidget* parent)
|
||||
: QGLWidget(QGLFormat(QGL::SampleBuffers), parent)
|
||||
/// <param name="p">The parent widget</param>
|
||||
GLWidget::GLWidget(QWidget* p)
|
||||
: QGLWidget(QGLFormat(QGL::SampleBuffers), p)
|
||||
{
|
||||
QGLFormat qglFormat;
|
||||
|
||||
@ -59,7 +59,7 @@ void GLWidget::DrawQuad()
|
||||
glBindTexture(GL_TEXTURE_2D, m_OutputTexID);//The texture to draw to.
|
||||
|
||||
//Only draw if the dimensions match exactly.
|
||||
if (m_TexWidth == width() && m_TexHeight == height() && ((m_TexWidth * m_TexHeight * 4) == finalImage->size()))
|
||||
if (m_TexWidth == width() && m_TexHeight == height() && ((m_TexWidth * m_TexHeight * 4) == GLint(finalImage->size())))
|
||||
{
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
@ -363,7 +363,7 @@ void GLEmberController<T>::DrawAffines(bool pre, bool post)
|
||||
/// Set drag modifiers based on key press.
|
||||
/// </summary>
|
||||
/// <param name="e">The event</param>
|
||||
bool GLEmberControllerBase::KeyPress(QKeyEvent* e)
|
||||
bool GLEmberControllerBase::KeyPress_(QKeyEvent* e)
|
||||
{
|
||||
#ifdef OLDDRAG
|
||||
if (e->key() == Qt::Key_Shift)
|
||||
@ -388,12 +388,12 @@ bool GLEmberControllerBase::KeyPress(QKeyEvent* e)
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Call controller KeyPress().
|
||||
/// Call controller KeyPress_().
|
||||
/// </summary>
|
||||
/// <param name="e">The event</param>
|
||||
void GLWidget::keyPressEvent(QKeyEvent* e)
|
||||
{
|
||||
if (!GLController() || !GLController()->KeyPress(e))
|
||||
if (!GLController() || !GLController()->KeyPress_(e))
|
||||
QGLWidget::keyPressEvent(e);
|
||||
|
||||
update();
|
||||
@ -403,7 +403,7 @@ void GLWidget::keyPressEvent(QKeyEvent* e)
|
||||
/// Set drag modifiers based on key release.
|
||||
/// </summary>
|
||||
/// <param name="e">The event</param>
|
||||
bool GLEmberControllerBase::KeyRelease(QKeyEvent* e)
|
||||
bool GLEmberControllerBase::KeyRelease_(QKeyEvent* e)
|
||||
{
|
||||
#ifdef OLDDRAG
|
||||
if (e->key() == Qt::Key_Shift)
|
||||
@ -428,12 +428,12 @@ bool GLEmberControllerBase::KeyRelease(QKeyEvent* e)
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Call controller KeyRelease().
|
||||
/// Call controller KeyRelease_().
|
||||
/// </summary>
|
||||
/// <param name="e">The event</param>
|
||||
void GLWidget::keyReleaseEvent(QKeyEvent* e)
|
||||
{
|
||||
if (!GLController() || !GLController()->KeyRelease(e))
|
||||
if (!GLController() || !GLController()->KeyRelease_(e))
|
||||
QGLWidget::keyReleaseEvent(e);
|
||||
|
||||
update();
|
||||
@ -598,7 +598,7 @@ void GLEmberController<T>::MouseMove(QMouseEvent* e)
|
||||
|
||||
m_MousePos = mouse;
|
||||
m_MouseWorldPos = WindowToWorld(mouseFlipped, false);
|
||||
v3T mouseDelta = m_MouseWorldPos - m_MouseDownWorldPos;//Determine how far the mouse has moved in world cartesian coordinates.
|
||||
//v3T mouseDelta = m_MouseWorldPos - m_MouseDownWorldPos;//Determine how far the mouse has moved in world cartesian coordinates.
|
||||
|
||||
//Update status bar on main window, regardless of whether anything is being dragged.
|
||||
if (m_Fractorium->m_Controller->RenderTimerRunning())
|
||||
@ -752,8 +752,8 @@ void GLWidget::SetDimensions(int w, int h)
|
||||
bool GLWidget::Allocate(bool force)
|
||||
{
|
||||
bool alloc = false;
|
||||
bool resize = force || m_TexWidth != width() || m_TexHeight != height();
|
||||
bool doIt = resize || m_OutputTexID == 0;
|
||||
bool doResize = force || m_TexWidth != width() || m_TexHeight != height();
|
||||
bool doIt = doResize || m_OutputTexID == 0;
|
||||
|
||||
if (doIt)
|
||||
{
|
||||
@ -762,7 +762,7 @@ bool GLWidget::Allocate(bool force)
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||
|
||||
if (resize)
|
||||
if (doResize)
|
||||
{
|
||||
glBindTexture(GL_TEXTURE_2D, m_OutputTexID);
|
||||
Deallocate();
|
||||
@ -814,7 +814,7 @@ void GLWidget::SetViewport()
|
||||
{
|
||||
if (m_Init && (m_ViewWidth != m_TexWidth || m_ViewHeight != m_TexHeight))
|
||||
{
|
||||
glViewport(0, 0, (GLint)m_TexWidth, (GLint)m_TexHeight);
|
||||
glViewport(0, 0, GLint(m_TexWidth), GLint(m_TexHeight));
|
||||
m_ViewWidth = m_TexWidth;
|
||||
m_ViewHeight = m_TexHeight;
|
||||
}
|
||||
@ -863,16 +863,16 @@ void GLWidget::DrawGrid()
|
||||
{
|
||||
glColor4f(0.5f, 0.5f, 0.5f, 0.5f);
|
||||
|
||||
for (float x = xLow; x <= xHigh; x += GridStep)
|
||||
for (float fx = xLow; fx <= xHigh; fx += GridStep)
|
||||
{
|
||||
glVertex2f(x, yLow);
|
||||
glVertex2f(x, yHigh);
|
||||
glVertex2f(fx, yLow);
|
||||
glVertex2f(fx, yHigh);
|
||||
}
|
||||
|
||||
for (float y = yLow; y < yHigh; y += GridStep)
|
||||
for (float fy = yLow; fy < yHigh; fy += GridStep)
|
||||
{
|
||||
glVertex2f(xLow, y);
|
||||
glVertex2f(xHigh, y);
|
||||
glVertex2f(xLow, fy);
|
||||
glVertex2f(xHigh, fy);
|
||||
}
|
||||
}
|
||||
|
||||
@ -880,16 +880,16 @@ void GLWidget::DrawGrid()
|
||||
{
|
||||
glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
|
||||
|
||||
for (float x = xLow; x <= xHigh; x += 1.0f)
|
||||
for (float fx = xLow; fx <= xHigh; fx += 1.0f)
|
||||
{
|
||||
glVertex2f(x, yLow);
|
||||
glVertex2f(x, yHigh);
|
||||
glVertex2f(fx, yLow);
|
||||
glVertex2f(fx, yHigh);
|
||||
}
|
||||
|
||||
for (float y = yLow; y < yHigh; y += 1.0f)
|
||||
for (float fy = yLow; fy < yHigh; fy += 1.0f)
|
||||
{
|
||||
glVertex2f(xLow, y);
|
||||
glVertex2f(xHigh, y);
|
||||
glVertex2f(xLow, fy);
|
||||
glVertex2f(xHigh, fy);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1023,14 +1023,14 @@ void GLWidget::DrawAffineHelper(int index, bool selected, bool pre, bool final,
|
||||
{
|
||||
for (int i = 1; i <= 64; i++)//The circle.
|
||||
{
|
||||
float theta = (float)M_PI * 2.0f * (float)(i % 64) / 64.0f;
|
||||
float x = (float)cos(theta);
|
||||
float y = (float)sin(theta);
|
||||
float theta = float(M_PI) * 2.0f * float(i % 64) / 64.0f;
|
||||
float fx = float(cos(theta));
|
||||
float fy = float(sin(theta));
|
||||
|
||||
glVertex2f(px, py);
|
||||
glVertex2f(x, y);
|
||||
px = x;
|
||||
py = y;
|
||||
glVertex2f(fx, fy);
|
||||
px = fx;
|
||||
py = fy;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1445,3 +1445,9 @@ GLEmberControllerBase* GLWidget::GLController()
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
template class GLEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class GLEmberController<double>;
|
||||
#endif
|
||||
|
@ -7,6 +7,9 @@
|
||||
/// </summary>
|
||||
|
||||
class Fractorium;//Forward declaration since Fractorium uses this widget.
|
||||
class GLEmberControllerBase;
|
||||
template<typename T> class GLEmberController;
|
||||
template<typename T> class FractoriumEmberController;
|
||||
|
||||
static const float GridStep = 1.0f / 8.0f;
|
||||
|
||||
@ -31,13 +34,16 @@ class GLWidget : public QGLWidget, protected QOpenGLFunctions_2_0//QOpenGLFuncti
|
||||
|
||||
friend Fractorium;
|
||||
friend FractoriumEmberController<float>;
|
||||
friend FractoriumEmberController<double>;
|
||||
friend GLEmberControllerBase;
|
||||
friend GLEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
friend GLEmberController<double>;
|
||||
|
||||
friend FractoriumEmberController<double>;
|
||||
#endif
|
||||
|
||||
public:
|
||||
GLWidget(QWidget* parent);
|
||||
GLWidget(QWidget* p);
|
||||
~GLWidget();
|
||||
void DrawQuad();
|
||||
void SetMainWindow(Fractorium* f);
|
||||
|
@ -24,8 +24,13 @@ int main(int argc, char *argv[])
|
||||
|
||||
//Required for large allocs, else GPU memory usage will be severely limited to small sizes.
|
||||
//This must be done in the application and not in the EmberCL DLL.
|
||||
#ifdef WIN32
|
||||
_putenv_s("GPU_MAX_ALLOC_PERCENT", "100");
|
||||
#else
|
||||
putenv(const_cast<char*>("GPU_MAX_ALLOC_PERCENT=100"));
|
||||
#endif
|
||||
Fractorium w;
|
||||
w.show();
|
||||
return a.exec();
|
||||
}
|
||||
|
||||
|
@ -6,10 +6,10 @@
|
||||
/// Constructor that takes a pointer to the settings object and the parent widget.
|
||||
/// </summary>
|
||||
/// <param name="settings">A pointer to the settings object to use</param>
|
||||
/// <param name="parent">The parent widget. Default: NULL.</param>
|
||||
/// <param name="p">The parent widget. Default: NULL.</param>
|
||||
/// <param name="f">The window flags. Default: 0.</param>
|
||||
FractoriumOptionsDialog::FractoriumOptionsDialog(FractoriumSettings* settings, QWidget* parent, Qt::WindowFlags f)
|
||||
: QDialog(parent, f)
|
||||
FractoriumOptionsDialog::FractoriumOptionsDialog(FractoriumSettings* settings, QWidget* p, Qt::WindowFlags f)
|
||||
: QDialog(p, f)
|
||||
{
|
||||
int row = 0, spinHeight = 20;
|
||||
uint i;
|
||||
@ -203,4 +203,4 @@ void FractoriumOptionsDialog::reject()
|
||||
m_NickEdit->setText(m_Settings->Nick());
|
||||
|
||||
QDialog::reject();
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ class FractoriumOptionsDialog : public QDialog
|
||||
friend Fractorium;
|
||||
|
||||
public:
|
||||
FractoriumOptionsDialog(FractoriumSettings* settings, QWidget* parent = 0, Qt::WindowFlags f = 0);
|
||||
FractoriumOptionsDialog(FractoriumSettings* settings, QWidget* p = 0, Qt::WindowFlags f = 0);
|
||||
|
||||
public slots:
|
||||
void OnOpenCLCheckBoxStateChanged(int state);
|
||||
|
@ -7,11 +7,11 @@
|
||||
/// and change its value using the mouse wheel without explicitly having to click
|
||||
/// inside of it.
|
||||
/// </summary>
|
||||
/// <param name="parent">The parent widget. Default: NULL.</param>
|
||||
/// <param name="height">The height of the spin box. Default: 16.</param>
|
||||
/// <param name="p">The parent widget. Default: NULL.</param>
|
||||
/// <param name="h">The height of the spin box. Default: 16.</param>
|
||||
/// <param name="step">The step used to increment/decrement the spin box when using the mouse wheel. Default: 1.</param>
|
||||
SpinBox::SpinBox(QWidget* parent, int height, int step)
|
||||
: QSpinBox(parent)
|
||||
SpinBox::SpinBox(QWidget* p, int h, int step)
|
||||
: QSpinBox(p)
|
||||
{
|
||||
m_Select = false;
|
||||
m_DoubleClick = false;
|
||||
@ -23,8 +23,8 @@ SpinBox::SpinBox(QWidget* parent, int height, int step)
|
||||
setFrame(false);
|
||||
setButtonSymbols(QAbstractSpinBox::NoButtons);
|
||||
setFocusPolicy(Qt::StrongFocus);
|
||||
setMinimumHeight(height);//setGeometry() has no effect, so set both of these instead.
|
||||
setMaximumHeight(height);
|
||||
setMinimumHeight(h);//setGeometry() has no effect, so set both of these instead.
|
||||
setMaximumHeight(h);
|
||||
lineEdit()->installEventFilter(this);
|
||||
lineEdit()->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
|
||||
connect(this, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int)), Qt::QueuedConnection);
|
||||
@ -141,9 +141,9 @@ bool SpinBox::eventFilter(QObject* o, QEvent* e)
|
||||
{
|
||||
//Take special action for shift to reduce the scroll amount. Control already
|
||||
//increases it automatically.
|
||||
if (QWheelEvent* wheelEvent = dynamic_cast<QWheelEvent*>(e))
|
||||
if (QWheelEvent* wev = dynamic_cast<QWheelEvent*>(e))
|
||||
{
|
||||
Qt::KeyboardModifiers mod = wheelEvent->modifiers();
|
||||
Qt::KeyboardModifiers mod = wev->modifiers();
|
||||
|
||||
if (mod.testFlag(Qt::ShiftModifier))
|
||||
setSingleStep(m_SmallStep);
|
||||
|
@ -16,7 +16,7 @@ class SpinBox : public QSpinBox
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SpinBox(QWidget* parent = 0, int height = 16, int step = 1);
|
||||
explicit SpinBox(QWidget* p = 0, int height = 16, int step = 1);
|
||||
virtual ~SpinBox() { }
|
||||
void SetValueStealth(int d);
|
||||
void DoubleClick(bool b);
|
||||
|
@ -15,13 +15,13 @@ class StealthComboBox : public QComboBox
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit StealthComboBox(QWidget* parent = 0) : QComboBox(parent) { }
|
||||
explicit StealthComboBox(QWidget* p = 0) : QComboBox(p) { }
|
||||
|
||||
/// <summary>
|
||||
/// Set the current index of the combo box without triggering signals.
|
||||
/// </summary>
|
||||
/// <param name="index">The current index to set</param>
|
||||
void StealthComboBox::SetCurrentIndexStealth(int index)
|
||||
void SetCurrentIndexStealth(int index)
|
||||
{
|
||||
blockSignals(true);
|
||||
setCurrentIndex(index);
|
||||
|
@ -30,9 +30,9 @@ public:
|
||||
/// Constructor that passes the parent to the base and installs
|
||||
/// the event filter.
|
||||
/// </summary>
|
||||
/// <param name="parent">The parent widget</param>
|
||||
explicit TableWidget(QWidget* parent = 0)
|
||||
: QTableWidget(parent)
|
||||
/// <param name="p">The parent widget</param>
|
||||
explicit TableWidget(QWidget* p = 0)
|
||||
: QTableWidget(p)
|
||||
{
|
||||
viewport()->installEventFilter(this);
|
||||
}
|
||||
@ -54,4 +54,4 @@ protected:
|
||||
|
||||
return QTableWidget::eventFilter(obj, e);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
@ -26,14 +26,14 @@ public:
|
||||
/// <param name="w1">The width of the first button</param>
|
||||
/// <param name="w2">The width of the second button</param>
|
||||
/// <param name="h">The height of both buttons</param>
|
||||
/// <param name="parent">The parent widget</param>
|
||||
TwoButtonComboWidget(const QString& caption1, const QString& caption2, QStringList comboStrings, int w1, int w2, int h, QWidget* parent)
|
||||
: QWidget(parent)
|
||||
/// <param name="p">The parent widget</param>
|
||||
TwoButtonComboWidget(const QString& caption1, const QString& caption2, QStringList comboStrings, int w1, int w2, int h, QWidget* p)
|
||||
: QWidget(p)
|
||||
{
|
||||
QHBoxLayout* layout = new QHBoxLayout(this);
|
||||
m_Button1 = new QPushButton(caption1, parent);
|
||||
m_Button2 = new QPushButton(caption2, parent);
|
||||
m_Combo = new QComboBox(parent);
|
||||
QHBoxLayout* l = new QHBoxLayout(this);
|
||||
m_Button1 = new QPushButton(caption1, p);
|
||||
m_Button2 = new QPushButton(caption2, p);
|
||||
m_Combo = new QComboBox(p);
|
||||
|
||||
m_Combo->addItems(comboStrings);
|
||||
|
||||
@ -56,14 +56,14 @@ public:
|
||||
m_Combo->setMinimumHeight(h - 3);
|
||||
m_Combo->setMaximumHeight(h - 3);
|
||||
|
||||
layout->addWidget(m_Combo);
|
||||
layout->addWidget(m_Button1);
|
||||
layout->addWidget(m_Button2);
|
||||
layout->setAlignment(Qt::AlignLeft);
|
||||
layout->setMargin(0);
|
||||
layout->setSpacing(2);
|
||||
l->addWidget(m_Combo);
|
||||
l->addWidget(m_Button1);
|
||||
l->addWidget(m_Button2);
|
||||
l->setAlignment(Qt::AlignLeft);
|
||||
l->setMargin(0);
|
||||
l->setSpacing(2);
|
||||
|
||||
setLayout(layout);
|
||||
setLayout(l);
|
||||
}
|
||||
|
||||
QPushButton* m_Button1;
|
||||
@ -89,12 +89,12 @@ public:
|
||||
/// <param name="buttonCaption">The caption of the button</param>
|
||||
/// <param name="w">The width of the button</param>
|
||||
/// <param name="h">The height of the button</param>
|
||||
/// <param name="parent">The parent widget</param>
|
||||
SpinnerButtonWidget(DoubleSpinBox* spinBox, QString buttonCaption, int w, int h, QWidget* parent)
|
||||
: QWidget(parent)
|
||||
/// <param name="p">The parent widget</param>
|
||||
SpinnerButtonWidget(DoubleSpinBox* spinBox, QString buttonCaption, int w, int h, QWidget* p)
|
||||
: QWidget(p)
|
||||
{
|
||||
QHBoxLayout* layout = new QHBoxLayout(this);
|
||||
m_Button = new QPushButton(buttonCaption, parent);
|
||||
QHBoxLayout* l = new QHBoxLayout(this);
|
||||
m_Button = new QPushButton(buttonCaption, p);
|
||||
m_SpinBox = spinBox;
|
||||
|
||||
if (w != -1)
|
||||
@ -106,13 +106,13 @@ public:
|
||||
m_Button->setMinimumHeight(h);
|
||||
m_Button->setMaximumHeight(h);
|
||||
|
||||
layout->addWidget(spinBox);
|
||||
layout->addWidget(m_Button);
|
||||
layout->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
|
||||
layout->setMargin(0);
|
||||
layout->setSpacing(0);
|
||||
l->addWidget(spinBox);
|
||||
l->addWidget(m_Button);
|
||||
l->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
|
||||
l->setMargin(0);
|
||||
l->setSpacing(0);
|
||||
|
||||
setLayout(layout);
|
||||
setLayout(l);
|
||||
}
|
||||
|
||||
DoubleSpinBox* m_SpinBox;
|
||||
|
@ -1,2 +1,2 @@
|
||||
#include "FractoriumPch.h"
|
||||
#include "TwoButtonWidget.h"
|
||||
#include "TwoButtonComboWidget.h"
|
||||
|
@ -22,9 +22,9 @@ public:
|
||||
/// and passes it to the base.
|
||||
/// </summary>
|
||||
/// <param name="id">The ID of the variation this widget will represent</param>
|
||||
/// <param name="parent">The parent widget</param>
|
||||
VariationTreeWidgetItem(eVariationId id, QTreeWidget* parent = 0)
|
||||
: QTreeWidgetItem(parent)
|
||||
/// <param name="p">The parent widget</param>
|
||||
VariationTreeWidgetItem(eVariationId id, QTreeWidget* p = 0)
|
||||
: QTreeWidgetItem(p)
|
||||
{
|
||||
m_Id = id;
|
||||
}
|
||||
@ -35,9 +35,9 @@ public:
|
||||
/// This is used for making sub items for parametric variation parameters.
|
||||
/// </summary>
|
||||
/// <param name="id">The ID of the variation this widget will represent</param>
|
||||
/// <param name="parent">The parent widget</param>
|
||||
VariationTreeWidgetItem(eVariationId id, QTreeWidgetItem* parent = 0)
|
||||
: QTreeWidgetItem(parent)
|
||||
/// <param name="p">The parent widget</param>
|
||||
VariationTreeWidgetItem(eVariationId id, QTreeWidgetItem* p = 0)
|
||||
: QTreeWidgetItem(p)
|
||||
{
|
||||
m_Id = id;
|
||||
}
|
||||
@ -61,11 +61,11 @@ private:
|
||||
|
||||
QWidget* itemWidget1 = treeWidget()->itemWidget(const_cast<VariationTreeWidgetItem<T>*>(this), 1);//Get the widget for the second column.
|
||||
|
||||
if (spinBox1 = dynamic_cast<VariationTreeDoubleSpinBox<T>*>(itemWidget1))//Cast the widget to the VariationTreeDoubleSpinBox type.
|
||||
if ((spinBox1 = dynamic_cast<VariationTreeDoubleSpinBox<T>*>(itemWidget1)))//Cast the widget to the VariationTreeDoubleSpinBox type.
|
||||
{
|
||||
QWidget* itemWidget2 = treeWidget()->itemWidget(const_cast<QTreeWidgetItem*>(&other), 1);//Get the widget for the second column of the widget item passed in.
|
||||
|
||||
if (spinBox2 = dynamic_cast<VariationTreeDoubleSpinBox<T>*>(itemWidget2))//Cast the widget to the VariationTreeDoubleSpinBox type.
|
||||
if ((spinBox2 = dynamic_cast<VariationTreeDoubleSpinBox<T>*>(itemWidget2)))//Cast the widget to the VariationTreeDoubleSpinBox type.
|
||||
{
|
||||
if (spinBox1->IsParam() || spinBox2->IsParam())//Do not sort params, their order will always remain the same.
|
||||
return false;
|
||||
@ -93,4 +93,4 @@ private:
|
||||
}
|
||||
|
||||
eVariationId m_Id;
|
||||
};
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user