Changes:
* Added "icon_search" part in the skin
* Added app::SearchEntry widget
* Fixed Separator widget to handle a custom background color, because
now we use Separators inside a ListBox too
* Added Entry::(on)getEntryTextBounds() to specify a customized area
to show text (as SearchEntry needs space for search and close icons)
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.
Changes:
- Added ui::ScrollableViewDelegate so ui::ScrollBar can be child of
a non-ui::View widget.
- Added a generic ui::setup_scrollbars() utility to locate
horizontal/vertical scrollbars depending on the scrollable area and
the available viewport area.
- Replaced Timeline::m_scroll_x/y ints with m_hbar/m_vbar widgets.
- Added transparent scrollbar look & feel.
- Added a "hover" state to mini-scrollbars used in sprite editors.
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.
Some changes needed to do this:
* Added support to show icon+text in ButtonSet items
* Added an extra parameter in Graphics::drawUIString() to avoid drawing
the underscore
* Fixed expansion of ButtonSet items when the grid is resized
* Added support for Alt+mnemonic shortcuts in ButtonSet items
With this change now we add a "mask" image/parameter in rotation
functions. In this way we can identify which specific pixels are
inside the original mask/selection, and in opaque mode we can
include/scale/rotate all those pixels inside the mask, whatever
value they are, even if they are the mask color.
Fixes#730
Now that we have alpha channel in color selector and palette entries, it's
nice to have as a default ink a more pixel-art friendly, i.e.
an ink that just replace RGBA values instead of doing alpha compositing.
Issue #286
Now the ContextBar contains a set of brushes. The ChangeBrushCommand
supports a new "slot" parameter and "change" = "custom" to select a
specific custom brush from the ContextBar. Alt+1, Alt+2, etc. are mapped
to this ChangeBrushCommand (see changes in gui.xml).
Also, as the ButtonSet that represent different brushes in the ContextBar
uses icons generated from the brush, we don't need the skin parts that
represent each brush type (we can generate those icons from some standard
brushes). Those skin parts were removed.
Changes:
* Paint FrameTags in Timeline with labels
* Add app::ui::FrameTagWindow
* Fix FrameTag::m_aniDir initialization
* Add warning for files that doesn't support frame tags
* Remove document preferences related to the active loop
- Added canvas icons to change the expansion direction in CanvasSizeCommand
- Added Widget::at() and Widget::offerCapture() member functions
- Improved ButtonSet widget
Simplified the color selector UI. Now RGB/HSV colors are shown correctly
and a new warning icon/button is visible when the color is not part of
the current palette. This button can be used to quickly add the new entry
to the palette.
- Add ContextBarObserver (and MovingPixelsState implements this interface)
- PixelMovements::discardImage() receives a "commit" flag to do a rollback
of the operation if the user needs it.
- Add red/blue onion skin type
- Add app::calculate_next_frame() function to calculate the next frame
depending of the timeline configuration (loop range, animation direction)
- Add app::finder() to simplify the access to widgets loaded from xml files