diff --git a/src/app/doc_exporter.cpp b/src/app/doc_exporter.cpp index 4a1b888da5..d096a2637a 100644 --- a/src/app/doc_exporter.cpp +++ b/src/app/doc_exporter.cpp @@ -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) { diff --git a/tests/scripts/app_command.lua b/tests/scripts/app_command.lua index 42d66c89cd..7e87f2e38c 100644 --- a/tests/scripts/app_command.lua +++ b/tests/scripts/app_command.lua @@ -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 diff --git a/tests/sprites/4f-index-4x4.aseprite b/tests/sprites/4f-index-4x4.aseprite new file mode 100644 index 0000000000..e98a603e02 Binary files /dev/null and b/tests/sprites/4f-index-4x4.aseprite differ diff --git a/tests/sprites/README.md b/tests/sprites/README.md index 495f072b32..c03b92f493 100644 --- a/tests/sprites/README.md +++ b/tests/sprites/README.md @@ -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.