77 Commits

Author SHA1 Message Date
Gaspar Capello
116201d8a1 Add custom data to Sprite Properties Window (fix #1306) 2020-12-16 12:40:05 -03:00
David Capello
15541412a4 Fix Ctrl+click to pick tilemaps correctly using the tile pixels
Before this we picked tilemaps only by bounds of the cel.
2020-11-02 18:53:24 -03:00
David Capello
c2e5e69882 Simplify tilesets impl using tile index 0 = an empty tile
In this way we always have an empty tile available in the drawing
process. We've also added the Tileset::firstVisibleIndex field to
change the visible index of the tile 1 so we can offset the visible
number by the user (just as a visual aid / simulate old tilesets with
index=0=non-empty tile).
2020-10-30 16:33:34 -03:00
David Capello
50fd450e5e Fix remap of tiles when we delete a tile from the tileset 2020-10-19 16:30:15 -03:00
David Capello
515dace441 Merge branch 'beta' into tilemap-editor 2020-07-13 17:32:42 -03:00
David Capello
db4504e816 Refactor laf-os memory handling 2020-07-07 19:06:48 -03:00
David Capello
a80af2b304 Merge branch 'master' into tilemap-editor 2020-05-18 20:24:22 -03:00
Gaspar Capello
966daf5e34 Add RgbMap algorithm option in RGB -> Indexed color mode conversion dialog 2020-04-15 15:36:50 -03:00
Gaspar Capello
886fdf8b3f Add OctreeMap as an alternative RgbMap implementation to RgbMapRGB53A
There is a new experimental option to switch between both RgbMap
implementations.
2020-04-10 15:47:24 -03:00
David Capello
ad31c9b7a8 Convert RgbMap into an interface and rename the old class to RgbMapRGB53A 2020-04-10 10:15:04 -03:00
David Capello
b628e21e76 Replace MIN/MAX() macros with std::min/max() functions 2020-04-08 12:20:53 -03:00
David Capello
86259a64fc Replace MID() macro with base::clamp() function
In the future we will replace base::clamp() with std::clamp().
2020-04-07 19:47:16 -03:00
David Capello
92b794d457 Add the final TilesetModes UI: Manual/Semi/Auto 2020-02-17 09:06:01 -03:00
David Capello
6616f0d327 Fix Remap palette colors for tilesets/tilemaps 2020-02-17 09:06:01 -03:00
David Capello
7331f50d9a Fix color mode conversion on sprites with tilemaps/tilesets 2020-02-17 09:06:01 -03:00
David Capello
26139c4ae2 Add tilemap layers (#977)
This is the first commit with a simple tilemap editor. Still buggy but
functional in several ways. Several changes were made:

* NewLayer command can receive a tilemap=true to create a new tilemap
  layer
* New ToggleTilesMode command added to switch between the palette and
  the tileset in the ColorBar (the ColorBar was expanded to show
  colors or tilesets with a generic AbstractPaletteViewAdapter)
* All commands to create new layers were moved to Layer >
  New... submenu
* There are a new tileset chunk to save tilesets in .aseprite files,
  and a new kind of cels to save tilemaps
* Added doc::LayerTilemap, doc::Tileset, etc. and several other types
  to handle tilesets/tilemaps in the doc layer.
* Added doc::Grid class with grid specifications that indicates how a
  tilemap <-> tileset must be drawn
* Added and expanded cel operations to work with tilemaps and
  conversions between regular LayerImage cels <-> LayerTilemap cels
  (e.g. copy cels in the timeline between layer types)
2020-02-17 09:06:00 -03:00
David Capello
6cab7b208c Fix using default preferences on new documents (fix #2198)
Fixed regression introduced in 002abc92452d89dabe601af0bfedf81e3e2ab0fd.
Bug reports:
* https://github.com/aseprite/aseprite/issues/2198
* https://steamcommunity.com/app/431730/discussions/2/1657817111845334892/
* https://community.aseprite.org/t/grid-size-for-new-documents-not-applied/4305

Added new ASEPRITE_USER_FOLDER environment variable to test
preferences from a clean folder.
2019-12-02 19:13:27 -03:00
David Capello
536a4c5d3a Simplify Export Sprite Sheet with preview + changes to the UI
These changes include an option to split layers and tags
by rows (fix #1118)
2019-10-18 17:00:35 -03:00
David Capello
30b2585037 Save grid bounds inside .aseprite files and doc::Sprite (fix #688) 2019-10-10 15:08:59 -03:00
David Capello
1c8b8051a8 Rename FrameTag -> Tag 2019-10-01 14:55:08 -03:00
David Capello
744bd36408 Fix transparent color for sprites created w/NewSpriteFromSelection
Fixes https://community.aseprite.org/t/3629
2019-08-06 16:18:01 -03:00
David Capello
b1dccb1843 Fix setting duration of first frame when we call Sprite::addFrame(0) 2018-12-06 13:00:01 -03:00
David N Campo
f6bb446031 Combination of CLI args results in jumbled layer order (fix #1644)
- The order is fixed because we now iterate a LayerList (a
  std::vector) instead of a SelectedLayers (a std::set)
- This can be an issue each time we iterate over a std::set (and
  SelectedLayers is a std::set) because it depends on the specific STL
  impl details (which vary depending on msvc/clang/gcc compiler).
- This fix iterates over layers, no matter if are visible or not
  (SelectedLayers::toLayerList() returns only browseable layers)
2018-11-12 09:06:59 -03:00
David Capello
c657038b1a Support --ignore-empty for --save-as (fix #551) 2018-11-07 16:56:32 -03:00
David Capello
43a603cea9 Update color profiles from image sprites in Sprite::setColorSpace()
This is needed for cmd::AssignColorProfile() to change the color space
of all images when we update the color space of the sprite.
2018-10-25 17:28:03 -03:00
David Capello
81965b904f Use current working color space in new created files
* Added the gfx::ColorSpace field in doc::ImageSpec
* Removed some methods like Sprites::add(width, height, etc.)
* Prefer methods with ImageSpec as argument (which now includes the color space)
2018-10-25 15:23:01 -03:00
David Capello
a4d8fc52bf Manage color profiles (fix #1576) 2018-10-19 15:30:30 -03:00
David Capello
f2ed45e795 Replace base::UniquePtr -> std::unique_ptr 2018-08-08 17:27:26 -03:00
David Capello
4d885b5b8a Use old render engine when there are visible ref layers in zoom > 100% 2018-06-28 16:56:35 -03:00
David Capello
744e40b4b7 Show full animation length/tag length on status bar (fix #1528) 2018-06-08 16:41:24 -03:00
David Capello
cc7bde6cd1 Fix some compiler warnings (implicit casts & unused vars) 2017-04-19 19:26:23 -03:00
David Capello
643cad5c97 Add basic implementation of slice tool (#721) to modify theme parts
It still need support to export to .aseprite-data as <slice> XML elements, and animation support.
2017-03-06 19:27:43 -03:00
David Capello
2e66b227f6 Merge branch 'beta' into ref-layer 2016-10-31 20:15:41 -03:00
David Capello
c60e0b915c Merge branch 'master' into beta 2016-10-27 13:00:57 -03:00
David Capello
bc939d5638 New eyedropper mode to pick colors from reference layers 2016-10-13 21:19:25 -03:00
David Capello
1b053de2f2 Fix eyedropper/move tool for reference layers 2016-10-13 19:58:42 -03:00
David Capello
1de5837676 Remove fflush() call from Sprite::pickCels()
Probably from an infamous printf() debugging session.
2016-10-13 19:37:04 -03:00
David Capello
f2f1c1008b Add support to move/copy non-adjacent layers/frames
Changes:
* With this patch we finally removed the LayerIndex class and member
  functions to access layers by index (like Sprite::firstLayer/layerLayer
  /layer/indexToLayer/layerToIndex() etc.). As layer groups can be
  expanded/collapsed, it doesn't make sense to use layer index to
  access layers directly from sprite.
* Now we use a layer_t (int) to access a list of browsable layers each
  time we want to iterate visible layers in the timeline.
* Replaced CelsRange() and Sprite::uniqueCels() param with
  SelectedFrames to iterate non-adjacent cels.
* Updated clipboard operations (copy/paste) in timeline to support
  layer groups.
* Updated Timeline control to support selecting multiple layer/frame
  ranges with Ctrl+ or Alt+click (fix #1157)
* Added more test units for DocumentRange operations (mainly for
  non-adjacent ranges).
2016-08-25 12:31:00 -03:00
David Capello
8971c8857a Remove Sprite::countLayers() member function 2016-08-12 14:21:15 -03:00
David Capello
e5ef4be54a Add allLayersCount() to LayerGroup and Sprite
This will give us the total number of layers + children.
2016-08-11 14:53:51 -03:00
David Capello
2d6412357c Remove Sprite::getLayersList() member 2016-06-29 10:59:37 -03:00
David Capello
7f4fbb0e85 Fix 'auto select layer' in Move tool for groups 2016-06-21 12:17:18 -03:00
David Capello
7b55037abb Replace LayersRange with Sprite::all*Layers() members 2016-06-21 12:02:31 -03:00
David Capello
0f77bf0712 Move selected layers into the new group
If the Timeline has an active selected range of layers and the user
creates a new layer group, the selected layers will be be grouped as
children of the new layer 'group'.
2016-06-21 00:02:13 -03:00
David Capello
58f8ed6476 Prefer LayerGroup::layers() instead of iterators 2016-06-08 16:46:15 -03:00
David Capello
2f91122c26 Rename layer folder/set -> layer group 2016-06-07 19:38:56 -03:00
David Capello
87ef12fbea Add pixel ratio field into doc::Sprite 2016-05-23 17:30:34 -03:00
David Capello
18a901a5cf Add doc::ImageSpec type 2016-05-13 17:08:07 -03:00
David Capello
5f97e66a8b Include base/base.h on files that use MIN/MID/MAX 2016-03-03 19:18:46 -03:00
David Capello
be57d0332f Fix setting opacity or user data of linked cels when the first cel isn't included in the active range 2016-02-01 18:05:40 -03:00