SDOM - Simple SDL Document Object Model
A lightweight, extensible Document Object Model for SDL-based applications.
Loading...
Searching...
No Matches
SDOM_Texture.hpp
Go to the documentation of this file.
1// SDOM_Texture.hpp
2#pragma once
3
5
6namespace SDOM
7{
8 class Factory;
9 class Core;
10
11 // internal 8x8 bitmap font sprite sheet
12 extern unsigned char internal_font_8x8[];
13 extern int internal_font_8x8_len;
14
15 // internal 8x12 bitmap font sprite sheet
16 extern unsigned char internal_font_8x12[];
17 extern int internal_font_8x12_len;
18
19 // internal 8x8 icon sprite sheet
20 extern unsigned char internal_icon_8x8[];
21 extern int internal_icon_8x8_len;
22
23
24
25 class Texture : public IAssetObject
26 {
27 using SUPER = IAssetObject;
28
29 public:
30 // --- Type Info --- //
31 static constexpr const char* TypeName = "Texture";
32
33 // --- Initialization Struct --- //
35 {
37 {
38 name = TypeName;
39 type = TypeName;
40 filename = TypeName; // Default filename, can be overridden
41 }
42 // add texture-specific initialization parameters here
43 // ...
44 };
45
46 protected:
47 // --- Constructors --- //
48 Texture(const InitStruct& init);
49 Texture(const sol::table& config);
50
51 public:
52 // --- Static Factory Methods --- //
53 static std::unique_ptr<IAssetObject> CreateFromLua(const sol::table& config) {
54 return std::unique_ptr<IAssetObject>(new Texture(config));
55 }
56 static std::unique_ptr<IAssetObject> CreateFromInitStruct(const IAssetObject::InitStruct& baseInit) {
57 const auto& textureInit = static_cast<const Texture::InitStruct&>(baseInit);
58 return std::unique_ptr<IAssetObject>(new Texture(textureInit));
59 }
60
61 Texture() = default;
62 virtual ~Texture() = default;
63 virtual bool onInit() override;
64 virtual void onQuit() override;
65 virtual void onLoad() override;
66 virtual void onUnload() override;
67 virtual bool onUnitTest() override;
68
69 SDL_Texture* getTexture() const { return texture_; }
70 float getTextureWidth() const { return textureWidth_; }
71 float getTextureHeight() const { return textureHeight_; }
72
73 protected:
74 friend Factory;
75 friend Core;
76
77 SDL_Texture* texture_ = nullptr;
78 float textureWidth_ = 0;
79 float textureHeight_ = 0;
80
81 // --- Lua Registration --- //
82 virtual void _registerLuaBindings(const std::string& typeName, sol::state_view lua);
83
84
85 }; // END class Texture
86
87} // END namespace SDOM
Definition SDOM_IAssetObject.hpp:10
IAssetObject()
Definition SDOM_IAssetObject.cpp:29
Definition SDOM_Texture.hpp:26
static std::unique_ptr< IAssetObject > CreateFromLua(const sol::table &config)
Definition SDOM_Texture.hpp:53
Texture()=default
friend Core
Definition SDOM_Texture.hpp:75
virtual void onLoad() override
Definition SDOM_Texture.cpp:50
virtual ~Texture()=default
float getTextureHeight() const
Definition SDOM_Texture.hpp:71
SDL_Texture * texture_
Definition SDOM_Texture.hpp:77
virtual void onQuit() override
Definition SDOM_Texture.cpp:42
virtual bool onInit() override
Definition SDOM_Texture.cpp:34
float getTextureWidth() const
Definition SDOM_Texture.hpp:70
float textureWidth_
Definition SDOM_Texture.hpp:78
virtual void _registerLuaBindings(const std::string &typeName, sol::state_view lua)
Definition SDOM_Texture.cpp:143
virtual void onUnload() override
Definition SDOM_Texture.cpp:119
static std::unique_ptr< IAssetObject > CreateFromInitStruct(const IAssetObject::InitStruct &baseInit)
Definition SDOM_Texture.hpp:56
SDL_Texture * getTexture() const
Definition SDOM_Texture.hpp:69
virtual bool onUnitTest() override
Runs unit tests for this object.
Definition SDOM_Texture.cpp:133
float textureHeight_
Definition SDOM_Texture.hpp:79
friend Factory
Definition SDOM_Texture.hpp:74
static constexpr const char * TypeName
Definition SDOM_Texture.hpp:31
Contains all core classes and utilities for the SDOM library.
Definition lua_BindHelpers.hpp:7
unsigned char internal_font_8x8[]
Definition SDOM_internal_font_8x8.cpp:9
int internal_font_8x12_len
Definition SDOM_internal_font_8x12.cpp:290
int internal_icon_8x8_len
Definition SDOM_internal_icon_8x8.cpp:119
unsigned char internal_font_8x12[]
Definition SDOM_internal_font_8x12.cpp:9
int internal_font_8x8_len
Definition SDOM_internal_font_8x8.cpp:253
unsigned char internal_icon_8x8[]
Definition SDOM_internal_icon_8x8.cpp:8
Definition SDOM_IAssetObject.hpp:18
std::string name
Definition SDOM_IAssetObject.hpp:19
std::string type
Definition SDOM_IAssetObject.hpp:20
std::string filename
Definition SDOM_IAssetObject.hpp:21
Definition SDOM_Texture.hpp:35
InitStruct()
Definition SDOM_Texture.hpp:36