More linux work.

This commit is contained in:
mfeemster 2014-12-10 21:50:15 -08:00
parent 0438827ba5
commit a9ecb6a78e
61 changed files with 1415 additions and 627 deletions

View File

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

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

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

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

View 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 \

View 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

View 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)
}

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

View 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

View 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)
}

View File

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

View 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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
#pragma once
#include "FractoriumPch.h"
#include "FractoriumCommon.h"
/// <summary>
/// EmberFile class.

View File

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

View File

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

View File

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

View File

@ -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*)&currentStripForProgress;
m_Renderer->m_ProgressParameter = reinterpret_cast<void*>(&currentStripForProgress);
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

View File

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

View File

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

View File

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

View File

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

View 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();
}

View File

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

View File

@ -456,8 +456,3 @@ private:
std::function<void (uint, uint)> m_PreviewRenderFunc;
};
template class FractoriumEmberController<float>;
#ifdef DO_DOUBLE
template class FractoriumEmberController<double>;
#endif

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -66,7 +66,7 @@ class FractoriumSettings : public QSettings
{
Q_OBJECT
public:
FractoriumSettings(QObject* parent);
FractoriumSettings(QObject* p);
void EnsureDefaults();
bool EarlyClip();

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,2 +1,2 @@
#include "FractoriumPch.h"
#include "TwoButtonWidget.h"
#include "TwoButtonComboWidget.h"

View File

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