Several things are changed to fix columns and rows calculation in de Export Sprite Sheet Dialog.
- onSizeChange() Conditions were added to consider padding and sprite sheet type in columns and rows calculation.
- onSheetTypeChange() Condition was added to consider best_fit mode, and consequent columns and rows calculation.
- On ExportSpriteSheetWindow creation, unnecessary conditions and onSizeChange execution were removed. Because, we need update columns, rows, fitWith and fitHeight according the current sprite data (done in onColumnsChange()), instead of the saved params.
- best_fit() function: type sprite sheet argument was added to fix columns and rows calculation when Columns type sprite sheet is selected in best fit mode.
- best_fit() function: it was simplified by removing the “for” iterations since they were unnecessary. We found a simpler way to do that.
- best_fit() function: it have no longer gfx::Region and gfx::Rect variables, because, the calculation is simpler now.
- MID macros were replaced by base::clamp() function.
The "Repeat Last Export" command needs to copy DocPref to params, even
when the UI not used (also we must copy the DocPref to the params only
if sprite sheet type is not defined, which means that a script didn't
specify it).
Merged #1978 (squashed). The only solved conflict was that now
ExportSpriteSheet use params, so we've added the "extrude" param to
ExportSpriteSheetParams.
With these new classes (Param/NewParams/CommandWithNewParams(Base)) we
can load parameters for commands from a Lua table directly without
converting to a string. So instead of
Lua value -> string -> C++ param type
We can do
Lua value -> C++ param type
directly.
New cmake flag -DENABLE_UI=OFF can be used to turn off the GUI
and compile a CLI-only version of Aseprite.
Requested here too:
https://community.aseprite.org/t/1351
Now we can use --layer multiple times to modify the --save-as and
--sheet behavior to render only the filtered/selected layers. This can
be combined with --split-layers too.
We have to propagate show/hide layers/groups visibility properly to
export them correctly. We use the same code that in the "Export Sprite
Sheet" for this (a new RestoreVisibleLayers class is separated for
this).
We cannot use the sprite sheet type to know if the last export was
already done/defined by the user for a new sprite. We need a special
field to indicate if the export was done and we can repeat it last
export with the same configuration.
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).