Porytiles
Loading...
Searching...
No Matches
porytiles::metatile Namespace Reference

Enumerations

enum class  Layer : std::uint8_t { bottom = 0 , middle = 1 , top = 2 }
 
enum class  Subtile : std::uint8_t { northwest = 0 , northeast = 1 , southwest = 2 , southeast = 3 }
 

Functions

std::string to_string (Layer layer)
 
std::ostream & operator<< (std::ostream &os, const Layer &layer)
 
Subtile subtile_from_index (std::size_t i)
 
std::string to_string (Subtile layer)
 
std::ostream & operator<< (std::ostream &os, const Subtile &subtile)
 
std::tuple< std::size_t, Layer, Subtilefrom_tile_index (std::size_t tile_index)
 Decomposes a global tile index into its metatile index, layer, and subtile position.
 
std::tuple< Layer, Subtilefrom_internal_tile_index (std::size_t tile_index)
 Decomposes an internal tile index into its layer and subtile position within a metatile.
 
std::string message_header (const TextFormatter &format, std::size_t index, Layer layer, Subtile subtile, std::size_t subtile_row, std::size_t subtile_col)
 
std::string message_header (const TextFormatter &format, std::size_t index, Layer layer, Subtile subtile)
 
std::string message_header (const TextFormatter &format, std::size_t index, Subtile subtile)
 

Variables

constexpr std::size_t tiles_per_side = 2
 
constexpr std::size_t tiles_per_metatile_layer = tiles_per_side * tiles_per_side
 
constexpr std::size_t tiles_per_metatile = tiles_per_metatile_layer * 3
 
constexpr std::size_t side_length_pix = tiles_per_side * tile::side_length_pix
 
constexpr std::size_t entries_per_metatile_dual = 8
 
constexpr std::size_t entries_per_metatile_triple = 12
 
constexpr std::size_t metatiles_per_row = 8
 

Enumeration Type Documentation

◆ Layer

enum class porytiles::metatile::Layer : std::uint8_t
strong
Enumerator
bottom 
middle 
top 

Definition at line 24 of file metatile.hpp.

◆ Subtile

enum class porytiles::metatile::Subtile : std::uint8_t
strong
Enumerator
northwest 
northeast 
southwest 
southeast 

Definition at line 45 of file metatile.hpp.

Function Documentation

◆ from_internal_tile_index()

std::tuple< Layer, Subtile > porytiles::metatile::from_internal_tile_index ( std::size_t  tile_index)
inline

Decomposes an internal tile index into its layer and subtile position within a metatile.

Converts a tile index local to a single metatile (range 0-11) into two components:

  • The layer within the metatile (bottom, middle, or top)
  • The subtile position within that layer (northwest, northeast, southwest, or southeast)

Tiles within a metatile are indexed in layer-major order: bottom layer tiles (0-3), followed by middle layer tiles (4-7), then top layer tiles (8-11).

Parameters
tile_indexThe internal tile index to decompose (must be in range [0, tiles_per_metatile))
Precondition
tile_index < tiles_per_metatile (i.e., tile_index must be in range [0, 11])
Returns
A tuple containing (layer, subtile)
See also
from_tile_index() for decomposing global tile indices

Definition at line 117 of file metatile.hpp.

◆ from_tile_index()

std::tuple< std::size_t, Layer, Subtile > porytiles::metatile::from_tile_index ( std::size_t  tile_index)
inline

Decomposes a global tile index into its metatile index, layer, and subtile position.

Converts a linear tile index from the global tileset into three components:

  • The metatile index (which metatile this tile belongs to)
  • The layer within that metatile (bottom, middle, or top)
  • The subtile position within that layer (northwest, northeast, southwest, or southeast)

Tiles are indexed in metatile-major order: all tiles of metatile 0 come first (bottom layer, then middle layer, then top layer), followed by all tiles of metatile 1, and so on.

Parameters
tile_indexThe global tile index to decompose
Returns
A tuple containing (metatile_index, layer, subtile)
See also
from_internal_tile_index() for decomposing indices within a single metatile

Definition at line 90 of file metatile.hpp.

◆ message_header() [1/3]

std::string porytiles::metatile::message_header ( const TextFormatter format,
std::size_t  index,
Layer  layer,
Subtile  subtile 
)
inline

Definition at line 150 of file metatile.hpp.

◆ message_header() [2/3]

std::string porytiles::metatile::message_header ( const TextFormatter format,
std::size_t  index,
Layer  layer,
Subtile  subtile,
std::size_t  subtile_row,
std::size_t  subtile_col 
)
inline

Definition at line 130 of file metatile.hpp.

◆ message_header() [3/3]

std::string porytiles::metatile::message_header ( const TextFormatter format,
std::size_t  index,
Subtile  subtile 
)
inline

Definition at line 161 of file metatile.hpp.

◆ operator<<() [1/2]

std::ostream & porytiles::metatile::operator<< ( std::ostream &  os,
const Layer layer 
)
inline

Definition at line 39 of file metatile.hpp.

◆ operator<<() [2/2]

std::ostream & porytiles::metatile::operator<< ( std::ostream &  os,
const Subtile subtile 
)
inline

Definition at line 67 of file metatile.hpp.

◆ subtile_from_index()

Subtile porytiles::metatile::subtile_from_index ( std::size_t  i)
inline

Definition at line 47 of file metatile.hpp.

◆ to_string() [1/2]

std::string porytiles::metatile::to_string ( Layer  layer)
inline

Definition at line 26 of file metatile.hpp.

◆ to_string() [2/2]

std::string porytiles::metatile::to_string ( Subtile  layer)
inline

Definition at line 52 of file metatile.hpp.

Variable Documentation

◆ entries_per_metatile_dual

constexpr std::size_t porytiles::metatile::entries_per_metatile_dual = 8
inlineconstexpr

Definition at line 20 of file metatile.hpp.

◆ entries_per_metatile_triple

constexpr std::size_t porytiles::metatile::entries_per_metatile_triple = 12
inlineconstexpr

Definition at line 21 of file metatile.hpp.

◆ metatiles_per_row

constexpr std::size_t porytiles::metatile::metatiles_per_row = 8
inlineconstexpr

Definition at line 22 of file metatile.hpp.

◆ side_length_pix

constexpr std::size_t porytiles::metatile::side_length_pix = tiles_per_side * tile::side_length_pix
inlineconstexpr

Definition at line 19 of file metatile.hpp.

◆ tiles_per_metatile

constexpr std::size_t porytiles::metatile::tiles_per_metatile = tiles_per_metatile_layer * 3
inlineconstexpr

Definition at line 18 of file metatile.hpp.

◆ tiles_per_metatile_layer

constexpr std::size_t porytiles::metatile::tiles_per_metatile_layer = tiles_per_side * tiles_per_side
inlineconstexpr

Definition at line 17 of file metatile.hpp.

◆ tiles_per_side

constexpr std::size_t porytiles::metatile::tiles_per_side = 2
inlineconstexpr

Definition at line 16 of file metatile.hpp.