21 const std::vector<TilemapEntry> &entries,
25 std::vector<Metatile<Rgba32>> decompiled;
29 panic(
"entry vector size was not divisible 12");
34 tiles, tileizer.tileize(tiles_png), std::vector<
Metatile<Rgba32>>,
"Failed to tileize tiles.png.");
44 const auto &entry = entries[base_entry_idx + i];
45 const auto &index_tile = tiles[entry.tile_index()];
46 auto flipped_tile = index_tile.flip(entry.h_flip(), entry.v_flip());
48 metatile.set_bottom(i, std::move(rgba_tile));
54 const auto &index_tile = tiles[entry.tile_index()];
55 auto flipped_tile = index_tile.flip(entry.h_flip(), entry.v_flip());
57 metatile.set_middle(i, std::move(rgba_tile));
63 const auto &index_tile = tiles[entry.tile_index()];
64 auto flipped_tile = index_tile.flip(entry.h_flip(), entry.v_flip());
66 metatile.set_top(i, std::move(rgba_tile));
69 decompiled.push_back(std::move(metatile));
#define PT_TRY_ASSIGN_CHAIN_ERR(var, expr, return_type,...)
Unwraps a ChainableResult, chaining a new error message on failure.
A result type that maintains a chainable sequence of errors for debugging and error reporting.
Service for converting images into collections of 8x8 tiles.
A template for two-dimensional images with arbitrarily typed pixel values.
A generic palette container for colors that support transparency checking.
constexpr std::size_t num_pals
void panic(const StringViewSourceLoc &s)
Unconditionally terminates the program with a panic message.
PixelTile< ColorType > color_tile_from_index_tile(const PixelTile< IndexPixel > &index_tile, const Palette< ColorType, N > &palette)
Converts a PixelTile<IndexPixel> to a PixelTile<ColorType> using a palette (intrinsic transparency).