SDOM - Simple SDL Document Object Model
A lightweight, extensible Document Object Model for SDL-based applications.
Loading...
Searching...
No Matches
SDOM_TTFAsset.hpp
Go to the documentation of this file.
1// SDOM_TTFAsset.hpp
2#pragma once
3
4#include <SDL3_ttf/SDL_ttf.h>
6
7namespace SDOM
8{
9 class Factory;
10 class Core;
11
12 // internal 8x8 bitmap font sprite sheet
13 extern unsigned char internal_ttf[];
14 extern int internal_ttf_len;
15
16 class TTFAsset : public IAssetObject
17 {
18 using SUPER = IAssetObject;
19
20 public:
21 // --- Type Info --- //
22 static constexpr const char* TypeName = "TTFAsset";
23
24 // --- Initialization Struct --- //
26 {
28 {
29 name = TypeName;
30 type = TypeName;
31 filename = "internal_ttf"; // Default filename, can be overridden
32 }
33 int internalFontSize = 10; // Font size property for TrueType fonts
34 };
35
36
37 protected:
38 // --- Constructors --- //
39 TTFAsset(const InitStruct& init);
40 TTFAsset(const sol::table& config);
41
42 public:
43 // --- Static Factory Methods --- //
44 static std::unique_ptr<IAssetObject> CreateFromLua(const sol::table& config) {
45 return std::unique_ptr<IAssetObject>(new TTFAsset(config));
46 }
47 static std::unique_ptr<IAssetObject> CreateFromInitStruct(const IAssetObject::InitStruct& baseInit) {
48 const auto& ttfInit = static_cast<const TTFAsset::InitStruct&>(baseInit);
49 return std::unique_ptr<IAssetObject>(new TTFAsset(ttfInit));
50 }
51
52 TTFAsset() = default;
53 virtual ~TTFAsset();
54 virtual bool onInit() override;
55 virtual void onQuit() override;
56 virtual void onLoad() override;
57 virtual void onUnload() override;
58 virtual bool onUnitTest() override;
59
60 TTF_Font* _getTTFFontPtr() const { return ttf_font_; }
61 int getFontSize() const { return internalFontSize_; }
62
63 protected:
64 friend Factory;
65 friend Core;
66
67 int internalFontSize_ = 10; // Uniform scaling for both font types
68
69 TTF_Font* ttf_font_ = nullptr;
70
71 // --- Lua Registration --- //
72 virtual void _registerLuaBindings(const std::string& typeName, sol::state_view lua);
73
74 }; // END class TTFAsset
75
76} // END namespace SDOM
Definition SDOM_IAssetObject.hpp:10
IAssetObject()
Definition SDOM_IAssetObject.cpp:29
Definition SDOM_TTFAsset.hpp:17
virtual bool onInit() override
Definition SDOM_TTFAsset.cpp:45
static std::unique_ptr< IAssetObject > CreateFromInitStruct(const IAssetObject::InitStruct &baseInit)
Definition SDOM_TTFAsset.hpp:47
virtual void onUnload() override
Definition SDOM_TTFAsset.cpp:95
virtual bool onUnitTest() override
Runs unit tests for this object.
Definition SDOM_TTFAsset.cpp:105
virtual void onQuit() override
Definition SDOM_TTFAsset.cpp:50
virtual void onLoad() override
Definition SDOM_TTFAsset.cpp:55
virtual void _registerLuaBindings(const std::string &typeName, sol::state_view lua)
Definition SDOM_TTFAsset.cpp:117
int getFontSize() const
Definition SDOM_TTFAsset.hpp:61
static constexpr const char * TypeName
Definition SDOM_TTFAsset.hpp:22
friend Core
Definition SDOM_TTFAsset.hpp:65
TTF_Font * _getTTFFontPtr() const
Definition SDOM_TTFAsset.hpp:60
static std::unique_ptr< IAssetObject > CreateFromLua(const sol::table &config)
Definition SDOM_TTFAsset.hpp:44
virtual ~TTFAsset()
Definition SDOM_TTFAsset.cpp:37
int internalFontSize_
Definition SDOM_TTFAsset.hpp:67
TTF_Font * ttf_font_
Definition SDOM_TTFAsset.hpp:69
friend Factory
Definition SDOM_TTFAsset.hpp:64
TTFAsset()=default
Contains all core classes and utilities for the SDOM library.
Definition lua_BindHelpers.hpp:7
unsigned char internal_ttf[]
Definition SDOM_internal_ttf.cpp:8
int internal_ttf_len
Definition SDOM_internal_ttf.cpp:37944
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_TTFAsset.hpp:26
InitStruct()
Definition SDOM_TTFAsset.hpp:27
int internalFontSize
Definition SDOM_TTFAsset.hpp:33