163 const Image<IndexPixel> &primary_tiles_png, std::size_t primary_tile_count, std::size_t total_capacity);
326 std::size_t primary_tile_count,
398 return anim_start_offset_;
412 return anim_end_offset_;
422 return anim_end_offset_ > anim_start_offset_;
501 void advance_cursor_to_next_transparent();
503 std::vector<CanonicalPixelTile<IndexPixel>> tiles_;
504 std::map<PixelTile<IndexPixel>, std::vector<std::size_t>> canonical_forms_;
506 std::size_t capacity_;
507 std::size_t anim_start_offset_{1};
508 std::size_t anim_end_offset_{1};
A PixelTile representation that stores the canonical (lexicographically minimal) orientation among al...
A template for two-dimensional images with arbitrarily typed pixel values.
A generic palette container for colors that support transparency checking.
A workspace for managing canonical IndexPixel tiles destined for tiles.png output.
bool at_capacity() const
Checks if the workspace has reached capacity and can no longer accept new tile insertions.
std::optional< std::size_t > find_contiguous_transparent_slots(std::size_t count) const
Finds the first contiguous run of transparent tiles that can accommodate the requested count.
Image< IndexPixel > export_secondary_image(std::size_t primary_tile_count, ExportFlipMode flip_mode=ExportFlipMode::canonical, ExportTrimMode trim_mode=ExportTrimMode::trim_trailing_transparent) const
Exports only the secondary portion of the workspace (tiles from primary_tile_count onward).
std::size_t capacity() const
Returns the maximum number of tiles this workspace can hold.
CanonicalPixelTile< IndexPixel > tile_at(std::size_t index) const
Retrieves the canonical tile at the specified index in the workspace.
std::size_t anim_start_offset() const
Returns the starting absolute index for animation tiles.
static TilesPngWorkspace for_secondary(const Image< IndexPixel > &primary_tiles_png, std::size_t primary_tile_count, std::size_t total_capacity)
Creates a workspace pre-loaded with primary tiles for secondary tileset compilation.
std::optional< std::size_t > first_occurrence_of_by_color(const CanonicalPixelTile< IndexPixel > &tile, const Palette< Rgba32, pal::max_size > &palette) const
Finds the first occurrence of a tile using color-equivalence comparison.
void place_tiles_at(std::size_t start_index, const std::vector< CanonicalPixelTile< IndexPixel > > &tiles)
Places tiles at specific positions for patch mode animation placement.
std::optional< std::size_t > find_existing_contiguous_tiles_by_color(const std::vector< CanonicalPixelTile< IndexPixel > > &tiles, const std::vector< const Palette< Rgba32, pal::max_size > * > &palettes) const
Checks if a sequence of tiles already exists contiguously using color-equivalence comparison.
std::size_t anim_end_offset() const
Returns the ending absolute index for animation tiles (exclusive).
bool has_anim_slots() const
Returns whether animation slots have been reserved.
std::optional< std::size_t > first_occurrence_of(const CanonicalPixelTile< IndexPixel > &tile) const
Finds the first occurrence index of a given canonical tile in the workspace.
static TilesPngWorkspace for_standalone_secondary(std::size_t primary_tile_count, std::size_t total_capacity)
Creates a workspace for standalone secondary compilation with no paired primary.
void place_anim_tile(std::size_t reserved_index, const CanonicalPixelTile< IndexPixel > &tile)
Places an animation keyframe tile at a specific reserved index.
void reserve_anim_slots(std::size_t anim_tile_count, std::size_t start_offset=1)
Reserves contiguous slots for animation keyframe tiles starting at start_offset.
std::size_t insert_tile(const CanonicalPixelTile< IndexPixel > &tile)
Attempts to insert a non-transparent tile into the workspace at the current cursor position.
Image< IndexPixel > export_image(ExportFlipMode flip_mode=ExportFlipMode::canonical, ExportTrimMode trim_mode=ExportTrimMode::trim_trailing_transparent) const
Exports the workspace tiles to an Image<IndexPixel> in tiles.png format.
ExportTrimMode
Defines how trailing transparent tiles should be handled during image export.
@ include_trailing_transparent
Include all tiles up to workspace capacity, even if trailing tiles are transparent.
@ trim_trailing_transparent
Trim trailing transparent tiles from the exported image.
ExportFlipMode
Defines whether flip transformations should be applied during image export.
@ original
Export tiles in original form by applying stored flip transformations.
@ canonical
Export tiles in canonical form without applying flip transformations.