Sparkle 0.0.1
Loading...
Searching...
No Matches
spk_sprite_sheet.hpp
1#pragma once
2
3#include "structure/graphics/spk_image.hpp"
4
5#include <filesystem>
6#include <vector>
7
8namespace spk
9{
20 class SpriteSheet : public Image
21 {
22 public:
25
26 private:
27 spk::Vector2UInt _nbSprite{};
28 spk::Vector2 _unit{};
29 std::vector<Sprite> _sprites;
30
31 void _composeSprites(const spk::Vector2UInt &p_nbSprite);
32
33 public:
37 SpriteSheet() = default;
38
47 SpriteSheet(const std::filesystem::path &p_path, const spk::Vector2UInt &p_nbSprite, Filter p_filter = Filter{Filtering::Linear, Filtering::Linear}, Wrapper p_wrapper = Wrapper{Wrap::Repeat, Wrap::Repeat}, Mipmap p_mipmap = Mipmap::Activated);
48
58 static SpriteSheet fromRawData(const std::vector<uint8_t> &p_pixelsAndEncodingData, const spk::Vector2UInt &p_nbSprite, Filter p_filter = Filter{Filtering::Linear, Filtering::Linear}, Wrapper p_wrapper = Wrapper{Wrap::Repeat, Wrap::Repeat}, Mipmap p_mipmap = Mipmap::Activated);
59
69 static SpriteSheet fromFile(const std::filesystem::path &p_path, const spk::Vector2UInt &p_nbSprite, Filter p_filter = Filter{Filtering::Linear, Filtering::Linear}, Wrapper p_wrapper = Wrapper{Wrap::Repeat, Wrap::Repeat}, Mipmap p_mipmap = Mipmap::Activated);
70
75 const spk::Vector2UInt &nbSprite() const;
80 const spk::Vector2 &unit() const;
85 const std::vector<Sprite> &sprites() const;
86
92 std::size_t spriteID(const spk::Vector2UInt &p_spriteCoord) const;
93
99 const Sprite &sprite(const spk::Vector2UInt &p_spriteCoord) const;
105 const Sprite &sprite(const std::size_t &p_spriteID) const;
106 };
107}
Image(const std::vector< uint8_t > &p_pixelsAndEncodingData, Filter p_filter=Filter{Filtering::Linear, Filtering::Linear}, Wrapper p_wrapper=Wrapper{Wrap::Repeat, Wrap::Repeat}, Mipmap p_mipmap=Mipmap::Activated)
Builds an image from encoded pixel data already in memory.
Definition spk_image.cpp:21
OpenGL::TextureObject::Mipmap Mipmap
Mipmap generation policy.
Definition spk_image.hpp:34
OpenGL::TextureObject::Filter Filter
Pairing of min and mag filtering options.
Definition spk_image.hpp:28
OpenGL::TextureObject::Wrapper Wrapper
Pairing of wrap modes for the U and V axes.
Definition spk_image.hpp:32
static SpriteSheet fromRawData(const std::vector< uint8_t > &p_pixelsAndEncodingData, const spk::Vector2UInt &p_nbSprite, Filter p_filter=Filter{Filtering::Linear, Filtering::Linear}, Wrapper p_wrapper=Wrapper{Wrap::Repeat, Wrap::Repeat}, Mipmap p_mipmap=Mipmap::Activated)
Builds a sprite sheet directly from encoded pixel data.
Definition spk_sprite_sheet.cpp:48
const spk::Vector2 & unit() const
Provides the normalized unit step separating sprites.
Definition spk_sprite_sheet.cpp:71
static SpriteSheet fromFile(const std::filesystem::path &p_path, const spk::Vector2UInt &p_nbSprite, Filter p_filter=Filter{Filtering::Linear, Filtering::Linear}, Wrapper p_wrapper=Wrapper{Wrap::Repeat, Wrap::Repeat}, Mipmap p_mipmap=Mipmap::Activated)
Loads a sprite sheet from a file on disk.
Definition spk_sprite_sheet.cpp:61
Image::Region Sprite
Alias describing a rectangular sprite region.
Definition spk_sprite_sheet.hpp:24
const spk::Vector2UInt & nbSprite() const
Retrieves the number of sprites along each axis.
Definition spk_sprite_sheet.cpp:66
const Sprite & sprite(const spk::Vector2UInt &p_spriteCoord) const
Provides a sprite region by grid coordinate.
Definition spk_sprite_sheet.cpp:90
const std::vector< Sprite > & sprites() const
Accesses every sprite region composing the sheet.
Definition spk_sprite_sheet.cpp:76
SpriteSheet()=default
Builds an empty sprite sheet with no image data loaded.
std::size_t spriteID(const spk::Vector2UInt &p_spriteCoord) const
Converts a sprite coordinate to its linear index.
Definition spk_sprite_sheet.cpp:81
Normalized sub-area within the texture.
Definition spk_image.hpp:41
Filtering modes applied on minification and magnification.
Definition spk_texture_object.hpp:53
Wrapping policy along each texture axis.
Definition spk_texture_object.hpp:77