This allows users to change the color of the background grid e.g if they
are using a projector or other low-contrast display.
The settings are in the `Board` category and are named `CrossColorDarkBackground`
and `CrossColorLightBackground`. They take strings representing the
color in any of the following formats:
- #RGB (Hexadecimal digits)
- #RRGGBB
- #AARRGGBB
- #RRRGGGBBB
- #RRRRGGGGBBBB
- Any SVG color keyword name (as defined by W3C)
If enabled in the preferences menu, pen and marker strokes will be
replaced by a simplified stroke after they are drawn.
The algorithm is very basic (for now): if three points are almost lined
up (the threshold angle can be specified in the config file), then the
middle one is removed. This is repeated over the whole stroke; new
polygons are then generated based on the simplified stroke points.
This typically cuts down on number of points and polygons by a factor of
about 10, while having minimal visual impact.
Several issues remain with multi-screen mode on Linux. The behavior is
inconsistent from one desktop evironment to the next, making it hard to
work around these problems. Among the known issues at this stage:
On Ubuntu 14.04, a call to QWidget::setGeometry requires the widget to
be hidden on KDE, but visible on MATE, for the geometry changes to take
effect.
Despite the widget's geometry being updated by this call, the windows
aren't necessarily moved. Meaning that the control and display widgets
will tend to be displayed on the same monitor, even though their
positions are correctly set to different areas on the extended screen.
In the current state, this behavior is observed on MATE. Unity works
fine and KDE only has transient positioning issues (for example,
swapping control and display windows in multi-screen mode leads to both
windows being placed on the same monitor, until multi-screen mode is
turned off then on again).
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch dev
# Your branch is ahead of 'origin/dev' by 29 commits.
# (use "git push" to publish your local commits)
#
# Changes to be committed:
# modified: src/core/UBApplicationController.cpp
# modified: src/core/UBDisplayManager.cpp
# modified: src/core/UBDisplayManager.h
#
# Changes not staged for commit:
# modified: release_scripts/linux/build.sh
# modified: release_scripts/linux/package.sh
#
# Untracked files:
# release_scripts/linux/generateDependencies.sh
#
- The background selection palette now includes a slider to change the
size of the background grid. Default min/max values are 16 and 64px,
defined in UBSettings. Grid resizes dynamically as the slider is moved.
- Measuring tools' (ruler, triangle) markers follow grid size: 1 square
of the background grid corresponds to 1cm
- Grid size can be different for each page of a document
- Grid size is saved in the .svg
- Documents with a background grid but no specified grid size follow the
default size defined in UBSettings.
Previously, grid size was calculated based on DPI, which can vary from
one OS, computer or display to the next. This new setting allows
documents to be migrated from one machine to another with no unexpected
changes in grid size happening. It also makes it easy to correct any
problems importing old documents (whose grid size might be smaller or
larger than expected when imported on a new version of OpenBoard).
This fixes an issue where if one document was imported with a different
DPI than the current one, any document created thereafter would have
this same value (which could then cause problems if a PDF was added to
that new document).
Saving this value to UBDocumentProxy not only makes more sense, it also
fixes this issue.
- 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)
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.
- Defined constants in UBSettings for highlighter preview circle colors
- Switch between light and dark colors when changing backgrounds
- For eraser: use color settings that were defined in UBSettings (they
were ignored since the preview circle was added)
The documents' metadata.rdf file is now persisted only when a scene in
the document is also persisted; as well as when the document is modified
(trashed / path changed) in the the Documents pane.
Code was cleaned-up a bit too (added a forgotten return value, etc)
Some settings were changed between v1.02 and 1.10 (current), and some
of these changes cause OpenBoard to crash at launch. This commit adds
a function to check for these specific new settings, and wipe the old
values if they are found.
This avoids problems when the user upgrades from 1.02 without deleting
their configuration file.
(This is an alternative to having a post-install script, which would be
ineffective in a multi-user configuration)
This should cut down on disk access. Instead of loading and saving
settings directly through QSettings instances (which occasionally
read and write to their associated file; but there is no way to control
how often this happens), they are now added to a QHash for in-app
access.
Save() and load() functions were also added to enable manually saving
the settings, and loading all settings from file, respectively.
- Removed inheritance of UBGraphicsProxyWidget; cleaned up related code
- Added two children classes: UBGraphicsVideoItem and
UBGraphicsAudioItem. UBGraphicsMediaItem is now an abstract class.
- Better encapsulation; the Scene and other external classes no longer
access the mediaObject directly
There is now less distinction between audio and video items to outside
code: apart from the UBSvgSubsetAdaptor, there is no need to know
whether a media item holds a video or audio file. Creation is handled
through the static function `UBGraphicsMediaItem::createMediaItem(URL,
parent)`