aseprite/src
2017-05-22 14:37:29 -03:00
..
allegro
app Move RenderTaskJob impl to render_task_job.cpp 2017-05-22 14:37:29 -03:00
cfg
clip@926e3cf0ae
doc Add progress dialog/bar when we change color mode 2017-05-17 16:40:19 -03:00
docio
filters
fixmath
flic@65a6072fa0
ft ft lib needs harfbuzz lib/include dirs 2017-03-30 10:00:14 -03:00
gen Try fix gcc compiler error 2017-04-07 11:23:52 -03:00
gfx Add gradient tool (fix #418) 2017-05-04 10:38:34 -03:00
main
net
observable@27fa7f6a4b
render Add --dithering-matrix CLI option 2017-05-19 15:49:31 -03:00
script Fix some compiler warnings (implicit casts & unused vars) 2017-04-19 19:26:23 -03:00
she osx/skia: Add support for X1/X2Button 2017-04-25 21:42:46 -03:00
steam
tests Fix several issues with UI Scaling > 100% (fix #1456) 2017-04-15 08:13:20 -03:00
ui Change Entry::maxSize property from size_t to int 2017-04-19 17:51:03 -03:00
undo@f39b188e29
updater
wacom
webserver
CMakeLists.txt
config.h
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.

  • allegro: Modified version of Allegro library, used for keyboard/mouse input, and drawing 2D graphics on screen.
  • clip: Clipboard library.
  • fixmath: Fixed point operations (original code from Allegro code by Shawn Hargreaves).
  • flic: Library to load/save FLI/FLC files.
  • gfx: Abstract graphics structures like point, size, rectangle, region, color, etc.
  • laf: Core/basic stuff, multithreading, utf8, sha1, file system, memory, 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.
  • wacom: Wacom definitions to use Wintab API.

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.
  • webserver (base): HTTP web server

Level 2

  • doc (base, fixmath, gfx): Document model library.
  • she (allegro, base, gfx, wacom): A wrapper for the Allegro library.

Level 3

  • filters (base, doc, gfx): Effects for images.
  • render (base, doc, gfx): Library to render documents.
  • ui (base, gfx, she): Portable UI library (buttons, windows, text fields, etc.)
  • updater (base, net): Component to check for updates.

Level 4

  • docio (base, flic): Load/save documents.

Level 5

  • app (allegro, base, doc, docio, filters, fixmath, flic, gfx, pen, render, scripting, she, ui, undo, updater, webserver)

Level 6

  • main (app, base, she, ui)

Debugging Tricks

  • On Windows, you can use F5 to show the amount of used memory.
  • On debug mode (when _DEBUG is defined), Ctrl+Alt+Shift+Q crashes the application in case that you want to test the anticrash feature or your need a memory dump file.
  • On debug mode, you can use Ctrl+Alt+Shift+R to recover the active document from the data recovery store.