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 00000000..2d7b07f8 Binary files /dev/null and b/test/gfx/trim_with_bg.out.2bpp differ diff --git a/test/gfx/trim_with_bg.out.attrmap b/test/gfx/trim_with_bg.out.attrmap new file mode 100644 index 00000000..593f4708 Binary files /dev/null and b/test/gfx/trim_with_bg.out.attrmap differ diff --git a/test/gfx/trim_with_bg.out.palmap b/test/gfx/trim_with_bg.out.palmap new file mode 100644 index 00000000..593f4708 Binary files /dev/null and b/test/gfx/trim_with_bg.out.palmap differ diff --git a/test/gfx/trim_with_bg.out.tilemap b/test/gfx/trim_with_bg.out.tilemap new file mode 100644 index 00000000..fb194a50 Binary files /dev/null and b/test/gfx/trim_with_bg.out.tilemap differ diff --git a/test/gfx/trim_with_bg.png b/test/gfx/trim_with_bg.png new file mode 100644 index 00000000..e2ec037e Binary files /dev/null and b/test/gfx/trim_with_bg.png differ diff --git a/test/gfx/trim_with_bg_dedup.flags b/test/gfx/trim_with_bg_dedup.flags new file mode 100644 index 00000000..8067608f --- /dev/null +++ b/test/gfx/trim_with_bg_dedup.flags @@ -0,0 +1,4 @@ +-B #ff00ff +-x 1 +-u + \ No newline at end of file diff --git a/test/gfx/trim_with_bg_dedup.out.2bpp b/test/gfx/trim_with_bg_dedup.out.2bpp new file mode 100644 index 00000000..2d7b07f8 Binary files /dev/null and b/test/gfx/trim_with_bg_dedup.out.2bpp differ diff --git a/test/gfx/trim_with_bg_dedup.out.attrmap b/test/gfx/trim_with_bg_dedup.out.attrmap new file mode 100644 index 00000000..593f4708 Binary files /dev/null and b/test/gfx/trim_with_bg_dedup.out.attrmap differ diff --git a/test/gfx/trim_with_bg_dedup.out.palmap b/test/gfx/trim_with_bg_dedup.out.palmap new file mode 100644 index 00000000..593f4708 Binary files /dev/null and b/test/gfx/trim_with_bg_dedup.out.palmap differ diff --git a/test/gfx/trim_with_bg_dedup.out.tilemap b/test/gfx/trim_with_bg_dedup.out.tilemap new file mode 100644 index 00000000..fb194a50 Binary files /dev/null and b/test/gfx/trim_with_bg_dedup.out.tilemap differ diff --git a/test/gfx/trim_with_bg_dedup.png b/test/gfx/trim_with_bg_dedup.png new file mode 100644 index 00000000..e2ec037e Binary files /dev/null and b/test/gfx/trim_with_bg_dedup.png differ