Sparkle 0.0.1
Loading...
Searching...
No Matches
spk_nine_slice_background.hpp
1#pragma once
2
3#include "structure/graphics/painter/spk_texture_painter.hpp"
4#include "structure/graphics/spk_extend_2d.hpp"
5#include "structure/graphics/spk_sprite_sheet.hpp"
6#include "structure/widget/spk_widget.hpp"
7
8#include <optional>
9
10namespace spk
11{
25 {
26 private:
27 std::optional<spk::SpriteSheet> _spriteSheet;
28 spk::Vector2UInt _cornerSize{8, 8};
29 spk::Extend2D _geometry{};
30
31 TextureMesh _mesh;
32 TexturePainter _painter;
33
34 void _validateSpriteSheet(const spk::SpriteSheet &p_spriteSheet) const;
35 void _rebuildMesh();
36
37 public:
42
47 void setTexture(const spk::SpriteSheet *p_spriteSheet);
52 const spk::SpriteSheet *texture() const;
53
58 void setCornerSize(const spk::Vector2UInt &p_cornerSize);
63 const spk::Vector2UInt &cornerSize() const;
64
69 void setGeometry(const spk::Extend2D &p_geometry);
74 const spk::Extend2D &geometry() const;
75
80 void setLayer(const float &p_layer);
85 const float &layer() const;
86
90 void render();
91 };
92}
void render()
Renders the nine-slice background.
Definition spk_nine_slice_background.cpp:133
void setTexture(const spk::SpriteSheet *p_spriteSheet)
Sets the sprite sheet texture used for the background.
Definition spk_nine_slice_background.cpp:75
const spk::Vector2UInt & cornerSize() const
Returns the current corner size.
Definition spk_nine_slice_background.cpp:107
const spk::SpriteSheet * texture() const
Returns the current sprite sheet texture.
Definition spk_nine_slice_background.cpp:91
const float & layer() const
Returns the current layer value.
Definition spk_nine_slice_background.cpp:128
NineSliceBackground()
Builds an empty nine-slice background.
Definition spk_nine_slice_background.cpp:8
void setGeometry(const spk::Extend2D &p_geometry)
Sets the geometry used to render the background.
Definition spk_nine_slice_background.cpp:112
const spk::Extend2D & geometry() const
Returns the current render geometry.
Definition spk_nine_slice_background.cpp:118
void setCornerSize(const spk::Vector2UInt &p_cornerSize)
Sets the corner size for slicing.
Definition spk_nine_slice_background.cpp:101
void setLayer(const float &p_layer)
Sets the rendering layer.
Definition spk_nine_slice_background.cpp:123
Loads an image and exposes individual sprite regions.
Definition spk_sprite_sheet.hpp:21
Mesh specialization for textured vertices.
Definition spk_texture_painter.hpp:42
Painter that renders textured meshes.
Definition spk_texture_painter.hpp:204
Axis-aligned rectangle defined by an anchor point and size.
Definition spk_extend_2d.hpp:24