- 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
- If we use a RGB color in a background layer (indexed image),
and the first palette entry (transparent color) matches that RGB color,
we can use that entry, because this is the background (the transparent
color isn't transparent at all in the background layer).
- If we use the same RGB color in a transparent color, we've to avoid the
transparent color, because the user want to paint with that specific
solid color.
- Palette::findBestfit() receives a mask_index now, so we can find what
color best matches a specific RGB avoiding that specific mask color,
or we can use -1 to use any color (e.g. for background layers).
- Added app::ColorTarget() to simplify and fix color_utils::color_for_layer
and app_get_color_to_clear_layer(), so now we can use the new findBestfit
to return the transparent color for background layers (if a RGB color
matches the transparent color RGB values).
- Removed fixup_color_for_layer/background() functions in color_utils
- Fix NewImageFromMask() to use the mask color to clear the image
- Improve the Editor pen preview (cursor.cpp) to draw the bounds of the
pen when it will paint with the transparent color.
This field is disabled, and the program isn't ready to support less than
256 colors in Indexed mode, so it's better if we remove this field to avoid
confusion.
We have to wait to validate not-scrolled regions before we can use
Widget::scrollRegion() or Window::moveWindow() again. This is an issue
to see in the future (to avoid lossing mouse move messages). At the moment,
one solution is to use the last received mouse move message.
There were problems calling a pure virtual function (IFileOpProgress
implemented by OpenFileJob) when we are already in ~Job() dtor. So we've
to wait the background thread (added Job::waitJob() function) to join
the thread so it can use IFileOpProgress safely.
Also the save process of .ase files now can be cancelled (it wasn't
possible before).