Porytiles
Loading...
Searching...
No Matches
porytiles2::LayerImageMetatileizer< T > Class Template Reference

Service for converting layer images into collections of metatiles. More...

#include <layer_image_metatileizer.hpp>

Public Member Functions

ChainableResult< std::vector< Metatile< T > > > metatileize (const Image< T > &bottom, const Image< T > &middle, const Image< T > &top) const
 Converts three layer images into a vector of metatiles.
 
ChainableResult< std::tuple< Image< T >, Image< T >, Image< T > > > demetatileize (const std::vector< Metatile< T > > &metatiles, std::size_t metatiles_per_row) const
 Converts a vector of metatiles back into three separate layer images.
 

Detailed Description

template<typename T>
class porytiles2::LayerImageMetatileizer< T >

Service for converting layer images into collections of metatiles.

The LayerImageMetatileizer service provides functionality to convert three layer images (bottom, middle, top) into a collection of 16x16 pixel metatiles. Each metatile contains a 2x2 arrangement of 8x8 tiles from each layer.

This service handles the validation of input dimensions, tileization of each layer, and the construction of metatiles by combining corresponding tiles from each layer. Returns Metatile<T> objects.

Template Parameters
TThe pixel type (e.g., Rgba32, IndexPixel)

Definition at line 31 of file layer_image_metatileizer.hpp.

Member Function Documentation

◆ demetatileize()

template<typename T >
ChainableResult< std::tuple< Image< T >, Image< T >, Image< T > > > porytiles2::LayerImageMetatileizer< T >::demetatileize ( const std::vector< Metatile< T > > &  metatiles,
std::size_t  metatiles_per_row 
) const
inline

Converts a vector of metatiles back into three separate layer images.

This method performs the inverse of metatileize, reconstructing the original three layer images from a collection of metatiles. The process involves:

  1. Computing the number of metatile rows based on the input vector size and metatiles_per_row
  2. Extracting tiles from each metatile and organizing them by layer
  3. Reconstructing the full images by combining tiles back into pixel data
  4. Padding incomplete final rows with transparent pixels when necessary
Parameters
metatilesThe vector of Metatile<T> objects to convert back to images
metatiles_per_rowThe number of metatiles per row (width in metatiles)
Returns
A ChainableResult containing either:
  • Success: A tuple of three Image<T> objects (bottom, middle, top)
  • Error: A FormattableError describing why demetatileization failed

Definition at line 143 of file layer_image_metatileizer.hpp.

◆ metatileize()

template<typename T >
ChainableResult< std::vector< Metatile< T > > > porytiles2::LayerImageMetatileizer< T >::metatileize ( const Image< T > &  bottom,
const Image< T > &  middle,
const Image< T > &  top 
) const
inline

Converts three layer images into a vector of metatiles.

This method takes three images representing the bottom, middle, and top layers and converts them into metatiles. The process involves:

  1. Validating that all images have identical dimensions
  2. Tileizing each layer into 8x8 tiles
  3. Validating that dimensions are multiples of 16 (metatile size)
  4. Constructing 16x16 metatiles by combining 2x2 groups of tiles from each layer
Parameters
bottomThe bottom layer image
middleThe middle layer image
topThe top layer image
Returns
A ChainableResult containing either:
  • Success: A vector of Metatile<T> objects in row-major order
  • Error: A FormattableError describing why metatileization failed

Definition at line 52 of file layer_image_metatileizer.hpp.


The documentation for this class was generated from the following file: