#pragma once #include #include #include class TexturePacker { public: using Position = glm::uvec2; using Size = glm::uvec2; struct Area { Position position; Size size; bool operator<(const Area & other) const { return area(size) < area(other.size); } }; using Image = Size; using Space = Area; using Positions = std::vector; using Result = std::pair; TexturePacker(std::vector); Result pack(Size) const; Result pack() const; Size minSize() const; static decltype(Size::x) area(const Size & size); private: std::vector inputImages; };