SDOM - Simple SDL Document Object Model
A lightweight, extensible Document Object Model for SDL-based applications.
Loading...
Searching...
No Matches
SDOM_BitmapFont.hpp
Go to the documentation of this file.
1// SDOM_BitmapFont.hpp
2#pragma once
3
4#include <SDL3/SDL.h>
7
8namespace SDOM
9{
10 class SpriteSheet;
11
12 class BitmapFont : public IFontObject
13 {
14 using SUPER = IFontObject;
15
16 public:
17 // --- Type Info --- //
18 static constexpr const char* TypeName = "bitmap";
19
20 // --- Construction & Initialization --- //
22 {
24 {
25 name = TypeName;
26 type = TypeName;
27 filename = TypeName; // Default filename, can be overridden
28 }
29 int fontSize = 8; // Font size property for TrueType fonts (and BitmapFont scaling)
30 int fontWidth = -1; // Optional: non-uniform width (bitmap only)
31 int fontHeight = -1; // Optional: non-uniform height (bitmap only
32 };
33
34 protected:
35 BitmapFont(const InitStruct& init);
36 BitmapFont(const sol::table& config);
37
38 public:
39 // --- Static Factory Methods --- //
40 static std::unique_ptr<IAssetObject> CreateFromLua(const sol::table& config) {
41 return std::unique_ptr<IAssetObject>(new BitmapFont(config));
42 }
43 static std::unique_ptr<IAssetObject> CreateFromInitStruct(const IAssetObject::InitStruct& baseInit) {
44 const auto& fontInit = static_cast<const BitmapFont::InitStruct&>(baseInit);
45 return std::unique_ptr<IAssetObject>(new BitmapFont(fontInit));
46 }
47
48 virtual ~BitmapFont() override;
49
50 // Override methods from IGlyphObject
51 virtual bool onInit() override;
52 virtual void onQuit() override;
53
54 virtual void onLoad() override;
55 virtual void onUnload() override;
56 virtual void create(const sol::table& config) override;
57
58 virtual void drawGlyph(Uint32 ch, int x, int y, const FontStyle& style) override;
59 virtual void drawPhrase(const std::string& str, int x, int y, const FontStyle& style) override;
60 virtual void drawPhraseOutline(const std::string& str, int x, int y, const FontStyle& style) override;
61 virtual void drawPhraseDropshadow(const std::string& str, int x, int y, const FontStyle& style) override;
62
63 virtual bool getGlyphMetrics(Uint32 ch, int *minx, int *maxx, int *miny, int *maxy, int *advance) const override;
64 virtual int getFontSize() override;
65 virtual int getGlyphHeight(Uint32 ch) const override;
66 virtual int getGlyphWidth(Uint32 ch) const override;
67
68 virtual int getFontAscent() override;
69 virtual void setFontSize(int p_size) override;
70 virtual void setFontStyle(const FontStyle& style) override;
71 virtual FontStyle getFontStyle() override;
72
73 // --- Public BitmapFont-specific methods --- //
75
76 int getBitmapFontWidth() const { return bitmapFontWidth_; }
77 int getBitmapFontHeight() const { return bitmapFontHeight_; }
78 void setBitmapFontWidth(int width) { bitmapFontWidth_ = width; }
79 void setBitmapFontHeight(int height) { bitmapFontHeight_ = height; }
80
81 protected:
82
83 // Bitmap-specific data members
87
88 std::vector<std::vector<SDL_Texture*>> outlineTextures;
89
90 // Active per-style overrides (set via setFontStyle) - do NOT replace
91 // the canonical sprite metrics (bitmapFontWidth_/bitmapFontHeight_).
92 // These are temporary overrides used during measurement/render passes.
95
96 void initializeOutlineGlyph(Uint32 ch, int x, int y);
97 void drawForegroundGlyph(Uint32 ch, int x, int y, const FontStyle& style);
98 void drawOutlineGlyph(Uint32 ch, int x, int y, const FontStyle& style);
99 void drawDropShadowGlyph(Uint32 ch, int x, int y, const FontStyle& style);
100
101 // --- Lua Registration --- //
102 virtual void _registerLuaBindings(const std::string& typeName, sol::state_view lua);
103 };
104}
Definition SDOM_AssetHandle.hpp:13
Definition SDOM_BitmapFont.hpp:13
int getBitmapFontHeight() const
Definition SDOM_BitmapFont.hpp:77
static std::unique_ptr< IAssetObject > CreateFromLua(const sol::table &config)
Definition SDOM_BitmapFont.hpp:40
virtual void create(const sol::table &config) override
Definition SDOM_BitmapFont.cpp:310
int activeFontHeight_
Definition SDOM_BitmapFont.hpp:94
int bitmapFontHeight_
Definition SDOM_BitmapFont.hpp:86
virtual void drawPhrase(const std::string &str, int x, int y, const FontStyle &style) override
Definition SDOM_BitmapFont.cpp:402
int activeFontWidth_
Definition SDOM_BitmapFont.hpp:93
virtual void drawPhraseDropshadow(const std::string &str, int x, int y, const FontStyle &style) override
Definition SDOM_BitmapFont.cpp:431
virtual void setFontSize(int p_size) override
Definition SDOM_BitmapFont.cpp:493
void drawOutlineGlyph(Uint32 ch, int x, int y, const FontStyle &style)
Definition SDOM_BitmapFont.cpp:681
virtual int getFontAscent() override
Definition SDOM_BitmapFont.cpp:482
static constexpr const char * TypeName
Definition SDOM_BitmapFont.hpp:18
virtual void onQuit() override
Definition SDOM_BitmapFont.cpp:107
AssetHandle getResourceHandle() const
Definition SDOM_BitmapFont.hpp:74
void setBitmapFontHeight(int height)
Definition SDOM_BitmapFont.hpp:79
virtual int getGlyphHeight(Uint32 ch) const override
Definition SDOM_BitmapFont.cpp:466
void setBitmapFontWidth(int width)
Definition SDOM_BitmapFont.hpp:78
virtual void setFontStyle(const FontStyle &style) override
Definition SDOM_BitmapFont.cpp:498
virtual bool onInit() override
Definition SDOM_BitmapFont.cpp:59
virtual FontStyle getFontStyle() override
Definition SDOM_BitmapFont.cpp:507
void drawForegroundGlyph(Uint32 ch, int x, int y, const FontStyle &style)
Definition SDOM_BitmapFont.cpp:550
int bitmapFontWidth_
Definition SDOM_BitmapFont.hpp:85
virtual void onLoad() override
Definition SDOM_BitmapFont.cpp:125
virtual int getGlyphWidth(Uint32 ch) const override
Definition SDOM_BitmapFont.cpp:474
virtual bool getGlyphMetrics(Uint32 ch, int *minx, int *maxx, int *miny, int *maxy, int *advance) const override
Definition SDOM_BitmapFont.cpp:447
virtual int getFontSize() override
Definition SDOM_BitmapFont.cpp:488
AssetHandle spriteSheet_
Definition SDOM_BitmapFont.hpp:84
int getBitmapFontWidth() const
Definition SDOM_BitmapFont.hpp:76
void initializeOutlineGlyph(Uint32 ch, int x, int y)
Definition SDOM_BitmapFont.cpp:516
virtual void _registerLuaBindings(const std::string &typeName, sol::state_view lua)
Definition SDOM_BitmapFont.cpp:802
void drawDropShadowGlyph(Uint32 ch, int x, int y, const FontStyle &style)
Definition SDOM_BitmapFont.cpp:739
std::vector< std::vector< SDL_Texture * > > outlineTextures
Definition SDOM_BitmapFont.hpp:88
virtual void drawGlyph(Uint32 ch, int x, int y, const FontStyle &style) override
Definition SDOM_BitmapFont.cpp:384
virtual void drawPhraseOutline(const std::string &str, int x, int y, const FontStyle &style) override
Definition SDOM_BitmapFont.cpp:415
static std::unique_ptr< IAssetObject > CreateFromInitStruct(const IAssetObject::InitStruct &baseInit)
Definition SDOM_BitmapFont.hpp:43
virtual ~BitmapFont() override
Definition SDOM_BitmapFont.cpp:50
virtual void onUnload() override
Definition SDOM_BitmapFont.cpp:286
Definition SDOM_IFontObject.hpp:170
Contains all core classes and utilities for the SDOM library.
Definition lua_BindHelpers.hpp:7
Definition SDOM_BitmapFont.hpp:22
int fontHeight
Definition SDOM_BitmapFont.hpp:31
int fontSize
Definition SDOM_BitmapFont.hpp:29
int fontWidth
Definition SDOM_BitmapFont.hpp:30
InitStruct()
Definition SDOM_BitmapFont.hpp:23
Definition SDOM_IFontObject.hpp:35
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_IFontObject.hpp:192