--User changes

-Add buttons to copy and paste affine transforms.
 -Show xform names on the column headers of the xaos table.
 -Add a color-coded third column to the variations tree which shows any properties of each variation which are non-standard.
 -Draw a transparent circle over hovered xforms.
 -Change how xforms respond to dragging. Rotate only is now the default, and scale will only happen with shift.
 --Optionally do scale and rotate when holding shift, via a setting in the options dialog.

--Bug fixes
 -Snapping when dragging was wrong sometimes.
 -The program would very rarely crash on startup due to some values being in an uninitialized state.

--Code changes
 -Change almost every variation to use fma() in OpenCL when doing computations of the form a * b + c. This provides a slight speedup, mostly in double precision mode.
 -Also apply fma() to affine calcs.
 -Cleanup of OpenGL affine drawing code.
 -Separate the concept of hovering and selecting xforms.
This commit is contained in:
Person
2018-09-15 03:11:12 -07:00
parent dee4304bf2
commit 15fdc860b8
34 changed files with 2149 additions and 1698 deletions

View File

@ -3233,7 +3233,7 @@
<enum>QTabWidget::Triangular</enum>
</property>
<property name="currentIndex">
<number>3</number>
<number>2</number>
</property>
<widget class="QWidget" name="XformColorTab">
<property name="sizePolicy">
@ -4572,6 +4572,50 @@
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="PreCopyButton">
<property name="minimumSize">
<size>
<width>0</width>
<height>24</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>41</width>
<height>24</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Copy the pre affine values, which can then be pasted into other pre/post affines&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Copy</string>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QPushButton" name="PrePasteButton">
<property name="minimumSize">
<size>
<width>0</width>
<height>24</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>41</width>
<height>24</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Paste the pre/post affine values which were previously copied&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Paste</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
@ -4617,6 +4661,13 @@
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="ShowPreAffineSelectedRadio">
<property name="text">
<string>Selected</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="ShowPreAffineAllRadio">
<property name="text">
@ -5402,6 +5453,50 @@
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="PostCopyButton">
<property name="minimumSize">
<size>
<width>0</width>
<height>24</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>41</width>
<height>24</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Copy the post affine values, which can then be pasted into other pre/post affines&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Copy</string>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QPushButton" name="PostPasteButton">
<property name="minimumSize">
<size>
<width>0</width>
<height>24</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>41</width>
<height>24</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Paste the pre/post affine values which were previously copied&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Paste</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
@ -5444,6 +5539,13 @@
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="ShowPostAffineSelectedRadio">
<property name="text">
<string>Selected</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="ShowPostAffineAllRadio">
<property name="enabled">
@ -5675,7 +5777,7 @@
<bool>false</bool>
</property>
<property name="columnCount">
<number>2</number>
<number>3</number>
</property>
<attribute name="headerDefaultSectionSize">
<number>70</number>
@ -5702,6 +5804,14 @@
<string>Weight</string>
</property>
</column>
<column>
<property name="text">
<string>Type</string>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Red: Uses non-standard assignment which means direct assignment for regular variations, sum for pre/post.&lt;/p&gt;&lt;p&gt;Green: Uses direct color.&lt;/p&gt;&lt;p&gt;Blue: Uses an internal variation state.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</column>
<item>
<property name="text">
<string>Spherical</string>