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:
* Move FreehandAlgorithm/InkType/RotationAlgorithm/SelectionMode to
app::tools namespace
* Removed ISettings, IToolSettings, IBrushSettings, ISelectionSettings,
and IColorSwatchesStore (and implementations from UISettingsImpl)
* Added app::tools::PreferenceGlue to do some adjustments that
UIToolSettingsImpl was doing
* Remove signals from App related to brush size/angle changes, and current
tool change (there events can be observed directly from Preferences)
* Remove ColorBar::FgColor/BgColor, these options can be observed from
Preferences::colorBar.fg/bgColor
* UI scale is an experimental option (it needs app restart)
* We can change the Screen Scale without restarting the app now
* Hide reloading of skin data in SkinTheme::onRegenerate()
* Now setFontOfAllWidgets() is called from Theme::regenerate()
* Remove reload_default_font()
* Simplify gui_setup_screen()
With this change we don't adapt the UI Scale automatically depending of
the display size, as it cannot be adjusted dynamically anyway (as the app
must be restarted to take this change correctly).
* Add LinkLabel::onClick()
* Use Widget instead of ListItem in ListBox API
* Add TextRule::padding() and use it to calculate the preferred size
for a skin::Style's rules
Undoers were little objects to swap/revert an action. They didn't
execute the action itself, they just revert its previous state. Now
undoers were replaced with cmds: A cmd is an object that
executes/undoes/redoes just one action.
Changes:
* Remove old undo library and app/objects_container_impl.cpp
(now we use the doc::ObjectId directly to store undo info)
* Remove all Undoers from app/undoers/
* Replace DocumentApi impl with little Cmds in app/cmd/, these
cmds handle execute/undo/redo of each action at the logic layer
* Remove doc::Dirty object
* Remove doc::Settings: all undo configuration is in the app side
* Move undo options from app:ISettings to app::Preferences
* Rename UndoTransaction to Transaction
* Create a CmdSequence to store a sequence of Cmds (as now the new
undo library doesn't support open/close groups)
* Add doc::get<T>(ObjectId) function to get any kind of object
from the doc library by its ID
* Add Cel::document() and Sprite::document() members
* Add Sprite::cels(frame_t) to get all cels in the given frame
* Add Layer::displaceFrames() member function
* Move the "allow non-linear history" flag from undo2::UndoHistory
to app::DocumentUndo
Changes:
* Create render library (move util/render.cpp to render/render.cpp)
* Move app::Zoom class to render::Zoom
* Remove doc::Image::merge() member function
* Add gfx::Clip helper class (to clip dst/src rectangles before a blit)
* Move doc::composite_image() to render::composite_image()
* Remove doc::Sprite::render()
* Replace Sprite::getPixel() with render::get_sprite_pixel()
* Remove doc::layer_render() function
* Convert DitheringMethod to a enum class
* Add AppRender to configure a render::Render with the app configuration
* Move checked background preferences as document-specific configuration
* Add doc::Sprite::layer() and palette() member functions
* Add doc::Layer::cel() member function
* Add doc::Palette::entry() member function()
* Add doc::frame_t type
* Move create_palette_from_rgb/convert_pixel_format to render library
* ExportSpriteSheet doesn't need a temporary image now that we can specify
the source rectangle in the render routine
Changes:
* Add a class (Option<T>) to get/set/listen changes to one specific
preference option
* Add data/pref.xml with the metadata to generate types/classes (not it's
quite easy to add new preferences)
* Modify the generator to support generation of .h and .cpp files of
preference types
* Add code to migrate old options to new ones (and functions to delete
old values)
* Only a couple of options were migrated at the moment, it is a WIP, in the
future we should completely remove ISettings and direct calls
to set/get_config_*
Changing the mouse position isn't user-friendly in desktop apps, and
has several problems in some platforms (Mac OS X). In this way we've
changed the approach to handle the mouse position when it goes outside
the ui::Editor viewport.
- Fixed issue #46: open .png files with Unicode chars
- Fixed issue #150: ability to uncompress program in folders w/Unicode chars
- Added base::utf8_iterator
- Added base::FileHandle
- Added base::get_app_path()
- Modified ui::KeyMessage::ascii() -> unicodeChar()
- Removed JI_NOTEXT flag
- Added app::XmlDocumentRef class and app::open_xml() function
- Added support for Unicode text exchange with Win32 clipboard
- Add HAVE_CONFIG_H wrapper to #include "config.h"
- Removed widgets namespace (it's in app now)
- Move some functions from src/file/file.h to src/base/cfile.h
- Move Vector2d to base library
- Rename MenuItem2 to AppMenuItem