Animated sprite editor & pixel art tool (Windows, macOS, Linux)
Go to file
David Capello ce77a38303 Fix base::Observers impl: Copy the whole list of observers before we start iterating them (fix issue 427)
There are cases where we need to modify the list of observers of certain
entity when we are in a notification loop (i.e. iterating its observers).
E.g. A general update notification about the current document to all its
observers could create the mini editor, which is a DocumentObserver, so
a new observer is added to the list in the same notification loop.

Anyway, as we cannot modify the observer list (std::vector) when we are
notifying them (any modification in the std::vector invalidates
its iterators), the fix is quite easy (but not optimal): we can create
a copy of the observers list so we can iterate the list.

Note: If we have performance issues about this, we could try a std::list,
but at the moment this fix is quite enough.
2014-07-21 01:39:01 -03:00
cmake Add missing FindV8.cmake to use find_package(V8) 2012-09-05 21:22:47 -03:00
data Add options to save GIF files (how to quantize palettes mainly) 2014-07-19 22:01:39 -03:00
docs Remove quickref.odt file 2014-03-29 15:54:21 -03:00
scripts Mac OS X: Update create_release.sh script to compile several files in parallel 2014-06-10 00:58:28 -03:00
src Fix base::Observers impl: Copy the whole list of observers before we start iterating them (fix issue 427) 2014-07-21 01:39:01 -03:00
third_party Update giflib to 5.1.0 2014-06-02 22:10:08 -03:00
.gitignore
CMakeLists.txt Add "gen" utility to generate UI widget wrappers from XML files 2014-07-13 13:24:57 -03:00
CONTRIBUTING.md Update CONTRIBUTING.md and INSTALL.md 2013-11-23 16:32:13 -03:00
INSTALL.md Update CONTRIBUTING.md and INSTALL.md 2013-11-23 16:32:13 -03:00
LICENSE.txt
README.md Add she::Font class (wrapper of Allegro FONT) 2014-06-22 18:53:14 -03:00
TODO.md Remove item from TODO that is already done 2014-06-15 04:08:27 -03:00

Aseprite

Copyright (C) 2001-2014 David Capello

THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY
See the license section for more information.

Introduction

Aseprite is an open source program to create animated sprites. Its main features are:

  • Sprites are composed by layers & frames (as separated concepts).
  • Supported color modes: RGBA, Indexed (palettes up to 256 colors), and Grayscale.
  • Load/save sequence of PNG files and GIF animations (also FLC, FLI, JPG, BMP, PCX, TGA).
  • Export/import animations to/from Sprite Sheets.
  • Tiled drawing mode, useful to draw patterns and textures.
  • Undo/Redo for every operation.
  • Mini-editor with real-time animation preview.
  • Multiple editors support.
  • Pixel art specific tools like filled Contour & Polygon.
  • Onion skinning

Issues

There are a list of Known Issues (things to be fixed or that aren't yet implemented).

If you found a bug, or you have a new idea/feature for the program, you can report them using the following links:

Support

You can ask for help in:

License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Authors

Thanks to all the people who have contributed ideas, patches, bugs report, feature requests, donations, and help me developing Aseprite.

Credits

Aseprite uses libraries or parts of the original source code of the following projects created by third-parties:

Other parts of code by:

  • Gary Oberbrunner
    Code to quantize RGB images with ordered dither method.