From ace8db1b730c64b797eb4ce0beec5a9c4e153ce0 Mon Sep 17 00:00:00 2001 From: Rangi <35663410+Rangi42@users.noreply.github.com> Date: Sun, 20 Sep 2026 15:05:06 -0400 Subject: [PATCH] Fix RGBGFX `-t/--trim-end` combined with `-B/--background-color` for non-deduplicated output (#2130) --- src/gfx/process.cpp | 18 ++++++++---------- test/gfx/trim_with_bg.flags | 3 +++ test/gfx/trim_with_bg.out.2bpp | Bin 0 -> 16 bytes test/gfx/trim_with_bg.out.attrmap | Bin 0 -> 4 bytes test/gfx/trim_with_bg.out.palmap | Bin 0 -> 4 bytes test/gfx/trim_with_bg.out.tilemap | Bin 0 -> 4 bytes test/gfx/trim_with_bg.png | Bin 0 -> 400 bytes test/gfx/trim_with_bg_dedup.flags | 4 ++++ test/gfx/trim_with_bg_dedup.out.2bpp | Bin 0 -> 16 bytes test/gfx/trim_with_bg_dedup.out.attrmap | Bin 0 -> 4 bytes test/gfx/trim_with_bg_dedup.out.palmap | Bin 0 -> 4 bytes test/gfx/trim_with_bg_dedup.out.tilemap | Bin 0 -> 4 bytes test/gfx/trim_with_bg_dedup.png | Bin 0 -> 400 bytes 13 files changed, 15 insertions(+), 10 deletions(-) create mode 100644 test/gfx/trim_with_bg.flags create mode 100644 test/gfx/trim_with_bg.out.2bpp create mode 100644 test/gfx/trim_with_bg.out.attrmap create mode 100644 test/gfx/trim_with_bg.out.palmap create mode 100644 test/gfx/trim_with_bg.out.tilemap create mode 100644 test/gfx/trim_with_bg.png create mode 100644 test/gfx/trim_with_bg_dedup.flags create mode 100644 test/gfx/trim_with_bg_dedup.out.2bpp create mode 100644 test/gfx/trim_with_bg_dedup.out.attrmap create mode 100644 test/gfx/trim_with_bg_dedup.out.palmap create mode 100644 test/gfx/trim_with_bg_dedup.out.tilemap create mode 100644 test/gfx/trim_with_bg_dedup.png diff --git a/src/gfx/process.cpp b/src/gfx/process.cpp index bbd86b02..06678845 100644 --- a/src/gfx/process.cpp +++ b/src/gfx/process.cpp @@ -689,17 +689,15 @@ static void outputUnoptimizedTileData( // LCOV_EXCL_STOP } - uint64_t widthTiles = options.inputSlice.width ? options.inputSlice.width : image.png.width / 8; - uint64_t heightTiles = - options.inputSlice.height ? options.inputSlice.height : image.png.height / 8; - uint64_t nbTiles = widthTiles * heightTiles; - uint64_t nbKeptTiles = nbTiles > options.trim ? nbTiles - options.trim : 0; - uint64_t tileIdx = 0; + size_t nbTiles = std::count_if(RANGE(attrmap), [](AttrmapEntry const &attr) { + return !attr.isBackgroundTile(); + }); + size_t nbKeptTiles = nbTiles > options.trim ? nbTiles - options.trim : 0; + size_t tileIdx = 0; for (auto const &[tile, attr] : zip(image.visitAsTiles(), attrmap)) { // Do not emit fully-background tiles. if (attr.isBackgroundTile()) { - ++tileIdx; continue; } @@ -918,9 +916,9 @@ static void outputTileData(UniqueTiles const &tiles) { // LCOV_EXCL_STOP } - uint64_t nbTiles = tiles.size(); - uint64_t nbKeptTiles = nbTiles > options.trim ? nbTiles - options.trim : 0; - uint64_t tileIdx = 0; + size_t nbTiles = tiles.size(); + size_t nbKeptTiles = nbTiles > options.trim ? nbTiles - options.trim : 0; + size_t tileIdx = 0; for (TileData const *tile : tiles) { assume(tile->tileID == tileIdx); diff --git a/test/gfx/trim_with_bg.flags b/test/gfx/trim_with_bg.flags new file mode 100644 index 00000000..2f817917 --- /dev/null +++ b/test/gfx/trim_with_bg.flags @@ -0,0 +1,3 @@ +-B #ff00ff +-x 1 + \ No newline at end of file diff --git a/test/gfx/trim_with_bg.out.2bpp b/test/gfx/trim_with_bg.out.2bpp new file mode 100644 index 0000000000000000000000000000000000000000..2d7b07f8cf2e1c18831ad4c84d6e2aaa53adf03b GIT binary patch literal 16 RcmZQzuwh7pLK_AK1^^PE0ucZJ literal 0 HcmV?d00001 diff --git a/test/gfx/trim_with_bg.out.attrmap b/test/gfx/trim_with_bg.out.attrmap new file mode 100644 index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4 GIT binary patch literal 4 LcmZQzU|;|M00aO5 literal 0 HcmV?d00001 diff --git a/test/gfx/trim_with_bg.out.palmap b/test/gfx/trim_with_bg.out.palmap new file mode 100644 index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4 GIT binary patch literal 4 LcmZQzU|;|M00aO5 literal 0 HcmV?d00001 diff --git a/test/gfx/trim_with_bg.out.tilemap b/test/gfx/trim_with_bg.out.tilemap new file mode 100644 index 0000000000000000000000000000000000000000..fb194a503dc5f97fbc8b18f5da315d352a9f2767 GIT binary patch literal 4 LcmZQzWMBXQ00#g9 literal 0 HcmV?d00001 diff --git a/test/gfx/trim_with_bg.png b/test/gfx/trim_with_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e2ec037e343ebbc1a09ffb1a7d9596d32fc8863d GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFL5h);ff2~^0%B<> z8{{MnMrN=$6Oe7l$iyHBq@#d1vz-Mjo&#iqKmrhh^uuU$TNxOD{+z(hzyefbU}S8- zxBy}L5h);ff2~^0%B<> z8{{MnMrN=$6Oe7l$iyHBq@#d1vz-Mjo&#iqKmrhh^uuU$TNxOD{+z(hzyefbU}S8- zxBy}