- Added a curveToPolygon function that creates a curved polygon,
eliminating the need to generate lots of small ones to make a curve look
smooth.
- Cleaned up the rest of the code a bit
- UBGraphicsScene calls UBGraphicsStroke::addPoint, which returns a list
of points that can be drawn. It may be none (e.g we discard very small
segments), one (if we do no interpolation) or several.
- Added a UBInterpolator base, abstract class. Various interpolation
methods can be added easily.
- Current methods: Basic spline (custom), Catmull-Rom spline (based on
alglib), and Bézier
- Added a setting to toggle interpolation. Added this to the UI as well
Caused problems e.g with podcast mode, where if the control and display
views were swapped in the preferences, the wrong screen would be recorded
when switching to desktop mode during recording of the podcast.
This happened even if only one screen was plugged in, so a black screen
was recorded in that case (at least on OS X 10.10)
(widgets' size and position weren't necessarily calculated based on
their current screen, but on the entire desktop geometry)
This also fixes the skewing observed during podcast recording
- Display a meaningful error message to the user when adding or trying
to play a video
- Make sure the video placeholder is visible even after switching pages
The previous solution didn't really have any effect; only a handful of
settings were in the mUserSettings or mAppSettings at the moment it was
called. The better solution is to just call value() in the constructor
of UBSetting, which means the setting is cached as soon as it is
created.
- Sort by Z before duplicating a selection (so that relative Z's are
kept)
- in UBZLayerController, iterate only through UBGraphicsScene's fast
access items, not QGraphicsScene::items