With this patch now the context bar shows the real active tool
preferences. For example, if we choose the option to use the Eraser
tool with right-click, now right-clicking will draw with the Eraser
brush size (instead of using the selected tool/left-click tool brush
size).
Changes:
* Removed the toolBox.activeTool() field from preferences
(as the option isn't persisted between sessions)
* Added an observable app::tools::ActiveToolManager class to sync all
UI elements that depend on the active tool and ink.
* Moved a lot of "active tool" logic from app::Editor to the
new ActiveToolManager
* Moved app::tools::ToolLoopManager::Pointer as an indepedent
app::tools::Pointer class
The "real" current tool is the one in the editor returned by
getCurrentEditorTool() (which depends on quicktool modifiers
and right-click configuration).
Some changes:
- Now ui::Keys aren't processed in app::tools side, they are processed
in Editor side and converted to ToolLoopModifiers flags.
- Replace ToolLoop::getSelectionMode -> ToolLoop::getModifiers()
This is a work-in-progress to create a consistent API and finally
separate the whole Aseprite base/gfx/ui libs into a reusable C++ library.
Classes:
app::IFileItem, app::AppMenuItem, app::skin::SkinPart,
gfx::Rect, gfx::Border, she::FileDialog,
ui::IButtonIcon, ui::Graphics, ui::Overlay, ui::Widget,
ui::ScrollableViewDelegate, and UI events
Changes:
* Added new ui::IconButton widget to create widgets with one skin icon
that is colored depending on the button state.
* ContextBar::InkShadesField was divided into a couple widgets (ShadeWidget
and IconButton to drop-down a little menu with saved shades)
* Fixed CommonLockedSurface::drawColoredRgbaSurface() impl.
* Removed invalid gfx::setr/g/b/a() functions.
This is a first iteration of the feature, it doesn’t have handles to
move the symmetry line and it only contains two symmetry modes:
horizontal or vertical.
As an extra change, we have added the new Stroke type to wrap a vector
of gfx::Points and simplify some existing code in the ToolLoop.
This ink behaves as alpha compositing but doesn't use the opacity slider
(opacity is used from current color's alpha channel). Also, in case that
we pick the mask color, it behaves as the eraser tool.