aseprite/src
Martín Capello a6556bb4f2 Fix exit frame handling for "PlayAll" playback mode
Without this when the playback cue is on the highest frame in "PlayAll"
mode it doesn't take into account the direction of the current tag that
is being played and assumes the end of the animation was reached
2024-02-02 17:52:58 -03:00
..
app Fix "ping-pong reverse" ordering of frames when exporting 2024-02-02 17:52:58 -03:00
cfg Add displayName property for language extensions (fix #3964) 2023-07-12 12:25:30 -03:00
clip@94693e2414 Update clip submodule 2023-10-30 15:43:25 -03:00
desktop Add suppor for doc::Image row stride size > width size 2023-08-07 15:27:39 -03:00
dio Fix crash reading corrupted files with invalid compressed data (fix #4171) 2023-11-26 22:27:14 -03:00
doc Fix exit frame handling for "PlayAll" playback mode 2024-02-02 17:52:58 -03:00
filters Use a task_token to cancel a filter when we are processing a row 2023-05-15 13:23:24 -03:00
fixmath Add required include directory to use doc/dio/fixmath libraries 2022-03-04 23:53:43 -03:00
flic@876ef60df5 Update flic and tga modules 2021-04-07 11:24:39 -03:00
gen Check strings only from en.ini file 2023-12-06 14:57:17 -03:00
main Update copyright year to 2024 2024-01-04 14:10:07 -03:00
net
observable@8e03c3cb06 Rename src/tests/test.h -> src/tests/app_test.h to avoid confusion with observable tests/test.h 2021-12-23 21:38:17 -03:00
psd@5a357fb964 Merge branch 'beta-psd' into beta 2021-12-15 17:28:00 -03:00
render Fix eyedropper to pick colors/tiles correctly from flipped tiles 2023-11-09 16:44:46 -03:00
steam Fix compilation with g++ 2020-06-11 17:15:21 -03:00
tests Rename src/tests/test.h -> src/tests/app_test.h to avoid confusion with observable tests/test.h 2021-12-23 21:38:17 -03:00
tga@cd3420c3a5 Fix unused variable warnings 2023-09-27 19:57:41 -03:00
ui Possible fix for crash in Window::limitPosition() when parent is nullptr (fix #4261) 2024-01-08 15:07:36 -03:00
undo@c868a02389 Show saved undo state in Edit > Undo History window (fix #3578) 2022-11-02 09:57:52 -03:00
updater Refactor updater::getUserAgent() using new base::get_platform() 2021-11-02 14:18:14 -03:00
ver Update copyright year to 2024 2024-01-04 14:10:07 -03:00
CMakeLists.txt Merge branch 'main' into beta 2022-07-13 19:49:03 -03:00
README.md Add initial (incomplete) version of ShaderRenderer 2023-04-03 15:59:29 -03:00
config.h Move PACKAGE/VERSION, etc. to new ver-lib 2020-03-16 10:31:32 -03:00

README.md

Aseprite Source Code

If you are here is because you want to learn about Aseprite source code. We'll try to write in these README.md files a summary of each module/library.

Modules & Libraries

Aseprite is separated in the following layers/modules:

Level 0: Completely independent modules

These libraries are easy to be used and embedded in other software because they don't depend on any other component.

  • clip: Clipboard library.
  • fixmath: Fixed point operations (original code from Allegro code by Shawn Hargreaves).
  • flic: Library to load/save FLI/FLC files.
  • laf/base: Core/basic stuff, multithreading, utf8, sha1, file system, memory, etc.
  • laf/gfx: Abstract graphics structures like point, size, rectangle, region, color, etc.
  • observable: Signal/slot functions.
  • scripting: JavaScript engine.
  • steam: Steam API wrapper to avoid static linking to the .lib file.
  • undo: Generic library to manage a history of undoable commands.

Level 1

  • cfg (base): Library to load/save .ini files.
  • gen (base): Helper utility to generate C++ files from different XMLs.
  • net (base): Networking library to send HTTP requests.
  • laf/os (base, gfx, wacom): OS input/output.

Level 2

  • doc (base, fixmath, gfx): Document model library.
  • ui (base, gfx, os): Portable UI library (buttons, windows, text fields, etc.)
  • updater (base, cfg, net): Component to check for updates.

Level 3

  • dio (base, doc, fixmath, flic): Load/save sprites/documents.
  • filters (base, doc, gfx): Effects for images.
  • render (base, doc, gfx): Library to render documents.

Level 4

  • app (base, doc, dio, filters, fixmath, flic, gfx, pen, render, scripting, os, ui, undo, updater)
  • desktop (base, doc, dio, render): Integration with the desktop (Windows Explorer, Finder, GNOME, KDE, etc.)

Level 5

  • main (app, base, os, ui)

Debugging Tricks

When Aseprite is compiled with ENABLE_DEVMODE, you have the following extra commands/features available:

  • F5: On Windows shows the amount of used memory.
  • F1: Switch between new/old/shader renderers.
  • Ctrl+F1: Switch/test Screen/UI Scaling values.
  • Ctrl+Alt+Shift+Q: crashes the application in case that you want to test the anticrash feature or your need a memory dump file.
  • Ctrl+Alt+Shift+R: recover the active document from the data recovery store.
  • aseprite.ini: [perf] show_render_time=true shows a performance clock in the Editor.

In Debug mode (_DEBUG):

  • TRACEARGS: in debug mode, it prints in the terminal/console each given argument

Detect Platform

You can check the platform using some laf macros:

#if LAF_WINDOWS
  // ...
#elif LAF_MACOS
  // ...
#elif LAF_LINUX
  // ...
#endif

Or using platform-specific macros:

#ifdef _WIN32
  #ifdef _WIN64
    // Windows x64
  #else
    // Windows x86
  #endif
#elif defined(__APPLE__)
    // macOS
#else
    // Linux
#endif