Fix border padding on the right and bottom sides not being placed (fix #3993)

Prior to this fix, border padding was clipped to the edge of sprites
on the right and bottom in all export sprite sheet types.

This commit includes tests for 'Export Sprite Sheet' command using
shape padding, border padding, inner padding with 'Packed' sheet type
+ 'Trim Cels' = true.
This commit is contained in:
Gaspar Capello 2023-08-08 11:18:27 -03:00 committed by David Capello
parent a0331743de
commit bcbe61c882
5 changed files with 54 additions and 3 deletions

2
laf

@ -1 +1 @@
Subproject commit 076a52afca497866eb5862b928d4db39783abe59
Subproject commit cbb157c9dc021bf8474e8d00a3145ae7a322528c

View File

@ -1302,7 +1302,11 @@ void DocExporter::trimTexture(const Samples& samples,
sample.isEmpty())
continue;
bounds |= sample.inTextureBounds();
// We add the border padding in the sample size to do an union
// between full bounds and sample's inTextureBounds (it
// shouldn't make full bounds bigger).
bounds |= gfx::Rect(
sample.inTextureBounds()).inflate(m_borderPadding);
}
if (m_textureWidth == 0) {

View File

@ -1,4 +1,4 @@
-- Copyright (C) 2019-2020 Igara Studio S.A.
-- Copyright (C) 2019-2023 Igara Studio S.A.
-- Copyright (C) 2018 David Capello
--
-- This file is released under the terms of the MIT license.
@ -54,6 +54,51 @@ do -- ExportSpriteSheet
11,8,11,21,11,8,11,
11,8,11,21,11,11,8,
})
local s = Sprite{ fromFile="sprites/4f-index-4x4.aseprite" }
app.command.ExportSpriteSheet {
type=SpriteSheetType.PACKED,
textureFilename="_test_export_spritesheet2.png",
borderPadding=1,
shapePadding=1,
trim=true,
}
local i = Image{ fromFile="_test_export_spritesheet2.png" }
expect_img(i, {
0,0,0,0,0,0,0,
0,1,0,2,0,3,0,
0,1,0,2,0,3,0,
0,1,0,0,0,0,0,
0,0,0,4,4,0,0,
0,0,0,0,0,0,0,
})
app.sprite = s
app.command.ExportSpriteSheet {
type=SpriteSheetType.PACKED,
textureFilename="_test_export_spritesheet3.png",
borderPadding=2,
shapePadding=1,
innerPadding=1,
trim=true,
}
local i = Image{ fromFile="_test_export_spritesheet3.png" }
expect_img(i, {
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,
0,0,0,1, 0,0,0,2, 0,0,0,3, 0,0,0,
0,0,0,1, 0,0,0,2, 0,0,0,3, 0,0,0,
0,0,0,1, 0,0,0,0, 0,0,0,0, 0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,
0,0,0,0, 0,0,0,4, 4,0,0,0, 0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,
})
end
do -- NewLayer/RemoveLayer

Binary file not shown.

View File

@ -25,6 +25,8 @@
merged in the same texture atlas.
* `2f-index-3x3.aseprite`: Indexed, 2 frames, 1 layer, mask color set
to index 21.
* `4f-index-4x4.aseprite`: Indexed, 4 frames, 1 layer, mask color set
to index 0.
* `file-tests-props.aseprite`: Indexed, 64x64, 6 frames, 4 layers (one
of them is a tilemap), 13 cels, 1 tag.
* `slices.aseprite`: Indexed, 4x4, background layer, 2 slices.