aseprite/src
David Capello 845ff17788 Fix "Reset Scale" notification when there is enough workarea available
Instead of using the window size, we can use the available workarea to
know that the user can resize the main window to its full size and
there will be enough room to display some common dialogs like the
Preferences one.
2022-02-08 12:07:36 -03:00
..
app Fix "Reset Scale" notification when there is enough workarea available 2022-02-08 12:07:36 -03:00
cfg Use LOG() with the printf-like interface (the only way to be thread safe) 2020-06-17 17:05:43 -03:00
clip@c46c49141f 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
desktop Normalize some cmake options from WITH_* to ENABLE_* 2021-12-15 17:47:44 -03:00
dio Fix possible infinite loop reading broken .aseprite files (fix #3123) 2022-01-10 17:00:12 -03:00
doc Fix changing random values to transparent color for non-indexed sprite from cmd::SetPalette 2021-09-29 14:42:55 -03:00
filters Add addition mode back for Hue/Saturation filter (fix #1848) 2020-04-23 12:05:09 -03:00
fixmath Move base module to laf library 2016-11-01 12:47:48 -03:00
flic@876ef60df5 Update flic and tga modules 2021-04-07 11:24:39 -03:00
gen Add listitem support to the ui class generation tool 2021-10-15 10:44:30 -03:00
main Update copyright year 2022-01-05 20:45:08 -03:00
net Move base module to laf library 2016-11-01 12:47:48 -03:00
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
render Fix radial gradient when the gradient vector is close to (0,0) (fix #3126) 2022-02-07 19:03:40 -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@16b8bb25e3 Update flic and tga modules 2021-04-07 11:24:39 -03:00
ui Group several mouse movement in one on the Editor 2022-01-06 16:54:39 -03:00
undo@3cf8f20d08 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
updater Refactor updater::getUserAgent() using new base::get_platform() 2021-11-02 14:18:14 -03:00
ver Update copyright year 2022-01-05 20:45:08 -03:00
CMakeLists.txt Normalize some cmake options from WITH_* to ENABLE_* 2021-12-15 17:47:44 -03:00
config.h Move PACKAGE/VERSION, etc. to new ver-lib 2020-03-16 10:31:32 -03:00
README.md Use new laf flags to detect platform in main and App 2021-06-16 17:21:02 -03:00

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 new/old render engine.
  • 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