Age | Commit message (Collapse) | Author |
|
|
|
We're using QPainterPath and its bezier curves. However, we
supply it a plethora of intermediate values to mitigate
different results in interpolation.
|
|
|
|
In the last line of the blocks we're reducing the precision to
reduce rounding errors. It's actually proper to use round rather
than truncate here.
|
|
Since we're already adding snap_x/2, truncation is the correct
choice here.
|
|
|
|
Only apply snap for closeness check.
|
|
It was still possible to reorder points by dragging one of them.
Also get rid of the iteration. It was previously introduced to
try converge one of the points to another position.
Allow for changing Y value while the point is dragged.
Take snap into account.
Use newly introduced "iround<t>".
|
|
The linear things should be drawn in drawFunction() since they
change only when some control point is moved and the spline is
recalculated anyway.
Introduce spline::get_value_no_save to avoid clobbering the
tracked value.
Draw linear helper before the spline to avoid occluding it.
Remove some redundant checks for whether _config exists when all
calling sites ensure it already.
I still need to de-camel-case these two classes.
|
|
|
|
Found-by: valgrind
|
|
|
|
Unfortunately now spline widgets grab keyboard focus. Qt doesn't seem to have a
better way to detect whether some other application gained focus.
|
|
Tooltip shows current cursor/point position.
Factor out common functions. Use QPoint/QPointF appropriately.
Remove rounding that led to snapping to integral values. Allow for non-integral
snapping amounts.
Issue: #436
|
|
|
|
In case mem<settings> is still used elsewhere we still have a use-after-free
otherwise.
|
|
|
|
- add missing locking
- bundle and settings ptr are never null following initialization;
sentinel objects get created if there's no bundle, thus don't branch
outside initialization functions. the sentinel object doesn't load or
save to the .ini file
- connect spline refresh to any bundle change
- connect spline widget refresh to spline refresh
- few caveat comments
- spline_widget::setConfig now only takes the spline as argument,
eliminating most of the complex logic there
- clarify spline::set_bundle vs newly introduced spline::recompute
|
|
- spline widgets reload when spline bundle reloads
- every bundle reloads when profile gets changed
Importing old spline settings hasn't been implemented.
Control point positions are stored as raw floats. This is bad.
|
|
Adjust usages.
|
|
Adjust usages.
|
|
Adjust usages.
|