Porytiles
Loading...
Searching...
No Matches
porytiles::PackingStrategy Class Referenceabstract

Abstract interface for palette packing algorithms. More...

#include <packing_strategy.hpp>

Inheritance diagram for porytiles::PackingStrategy:
[legend]

Public Member Functions

virtual ~PackingStrategy ()=default
 
virtual ChainableResult< PackingOutputpack (const PackingInput &input) const =0
 Packs tile colors into palettes according to the strategy's algorithm.
 
virtual std::string name () const =0
 Returns the human-readable name of this strategy.
 

Detailed Description

Abstract interface for palette packing algorithms.

PackingStrategy defines the interface for algorithms that solve the "Pagination Problem" (Bin Packing with Overlapping Items, aka "VM packing"). Different strategies may use different approaches such as greedy algorithms (Best Fusion) or non-greedy algorithms with backtracking (Overload-and-Remove, Classic DFS, Classic BFS).

Implementations should be stateless - all state needed for packing is provided via the PackingInput parameter.

Definition at line 113 of file packing_strategy.hpp.

Constructor & Destructor Documentation

◆ ~PackingStrategy()

virtual porytiles::PackingStrategy::~PackingStrategy ( )
virtualdefault

Member Function Documentation

◆ name()

virtual std::string porytiles::PackingStrategy::name ( ) const
pure virtual

Returns the human-readable name of this strategy.

Returns
The strategy name (e.g., "Best Fusion", "Overload-and-Remove")

Implemented in porytiles::BacktrackingStrategy, porytiles::BestFusionStrategy, and porytiles::OverloadAndRemoveStrategy.

◆ pack()

virtual ChainableResult< PackingOutput > porytiles::PackingStrategy::pack ( const PackingInput input) const
pure virtual

Packs tile colors into palettes according to the strategy's algorithm.

Attempts to assign all tiles from the input to palettes such that each tile's colors fit within at least one palette's capacity.

Parameters
inputThe packing input containing tiles, hints, fixed slots, and constraints
Returns
A PackingOutput on success, or an error if packing is not possible

Implemented in porytiles::BacktrackingStrategy, porytiles::BestFusionStrategy, and porytiles::OverloadAndRemoveStrategy.


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