SDOM - Simple SDL Document Object Model
A lightweight, extensible Document Object Model for SDL-based applications.
Loading...
Searching...
No Matches
SDOM_TruetypeFont.hpp
Go to the documentation of this file.
1// SDOM_TruetypeFont.hpp
2#pragma once
3
4#include <SDL3/SDL.h>
8
9namespace SDOM
10{
12 {
13 using SUPER = IFontObject;
14
15 public:
16 // --- Type Info --- //
17 static constexpr const char* TypeName = "truetype";
18
19 // --- Construction & Initialization --- //
21 {
23 {
24 name = TypeName;
25 type = TypeName;
26 filename = TypeName; // Default filename, can be overridden
27 }
28 };
29
30 protected:
31 TruetypeFont(const InitStruct& init);
32 TruetypeFont(const sol::table& config);
33
34 public:
35 // --- Static Factory Methods --- //
36 static std::unique_ptr<IAssetObject> CreateFromLua(const sol::table& config) {
37 return std::unique_ptr<IAssetObject>(new TruetypeFont(config));
38 }
39 static std::unique_ptr<IAssetObject> CreateFromInitStruct(const IAssetObject::InitStruct& baseInit) {
40 const auto& fontInit = static_cast<const TruetypeFont::InitStruct&>(baseInit);
41 return std::unique_ptr<IAssetObject>(new TruetypeFont(fontInit));
42 }
43
44 virtual ~TruetypeFont() override;
45
46 // --- Override methods from IFontObject --- //
47 virtual bool onInit() override;
48 virtual void onQuit() override;
49
50 virtual void onLoad() override;
51 virtual void onUnload() override;
52 virtual void create(const sol::table& config) override;
53
54 virtual void drawGlyph(Uint32 ch, int x, int y, const FontStyle& style) override;
55 virtual void drawPhrase(const std::string& str, int x, int y, const FontStyle& style) override;
56 virtual void drawPhraseOutline(const std::string& str, int x, int y, const FontStyle& style) override;
57 virtual void drawPhraseDropshadow(const std::string& str, int x, int y, const FontStyle& style) override;
58
59 virtual bool getGlyphMetrics(Uint32 ch, int *minx, int *maxx, int *miny, int *maxy, int *advance) const override;
60 virtual int getGlyphHeight(Uint32 ch) const override;
61 virtual int getGlyphWidth(Uint32 ch) const override;
62
63 virtual int getFontAscent() override;
64 virtual int getFontSize() override; // TTF_GetFontSize(TTF_Font *font);
65 virtual void setFontSize(int p_size) override;
66 virtual void setFontStyle(const FontStyle& style) override;
67 virtual FontStyle getFontStyle() override;
68
69 // // --- Public TruetypeFont-specific methods --- //
71
72 // int getBitmapFontWidth() const { return bitmapFontWidth_; }
73 // int getBitmapFontHeight() const { return bitmapFontHeight_; }
74 // void setBitmapFontWidth(int width) { bitmapFontWidth_ = width; }
75 // void setBitmapFontHeight(int height) { bitmapFontHeight_ = height; }
76
77 protected:
78 // Bitmap-specific data members
80
81 TTF_Font* _getValidTTFFontPtr() const;
82
83 int last_size_ = 0; // last set font size (points)
84
85 // Active per-style overrides (set via setFontStyle) - do NOT replace
86 // the canonical sprite metrics (bitmapFontWidth_/bitmapFontHeight_).
87 // These are temporary overrides used during measurement/render passes.
90
91 void initializeOutlineGlyph(Uint32 ch, int x, int y);
92 void drawForegroundGlyph(Uint32 ch, int x, int y, const FontStyle& style);
93 void drawOutlineGlyph(Uint32 ch, int x, int y, const FontStyle& style);
94 void drawDropShadowGlyph(Uint32 ch, int x, int y, const FontStyle& style);
95
96 // --- Lua Registration --- //
97 virtual void _registerLuaBindings(const std::string& typeName, sol::state_view lua);
98
99 }; // END: class TruetypeFont
100
101} // END: namespace SDOM
Definition SDOM_AssetHandle.hpp:13
Definition SDOM_IFontObject.hpp:170
Definition SDOM_TruetypeFont.hpp:12
virtual void setFontStyle(const FontStyle &style) override
Definition SDOM_TruetypeFont.cpp:451
virtual void create(const sol::table &config) override
Definition SDOM_TruetypeFont.cpp:101
TTF_Font * _getValidTTFFontPtr() const
Definition SDOM_TruetypeFont.cpp:477
virtual void drawPhrase(const std::string &str, int x, int y, const FontStyle &style) override
Definition SDOM_TruetypeFont.cpp:251
int activeFontWidth_
Definition SDOM_TruetypeFont.hpp:88
static std::unique_ptr< IAssetObject > CreateFromLua(const sol::table &config)
Definition SDOM_TruetypeFont.hpp:36
virtual void _registerLuaBindings(const std::string &typeName, sol::state_view lua)
Definition SDOM_TruetypeFont.cpp:498
static std::unique_ptr< IAssetObject > CreateFromInitStruct(const IAssetObject::InitStruct &baseInit)
Definition SDOM_TruetypeFont.hpp:39
void drawOutlineGlyph(Uint32 ch, int x, int y, const FontStyle &style)
virtual void drawGlyph(Uint32 ch, int x, int y, const FontStyle &style) override
Definition SDOM_TruetypeFont.cpp:169
void drawForegroundGlyph(Uint32 ch, int x, int y, const FontStyle &style)
virtual void onQuit() override
Definition SDOM_TruetypeFont.cpp:69
virtual int getGlyphHeight(Uint32 ch) const override
Definition SDOM_TruetypeFont.cpp:384
virtual bool onInit() override
Definition SDOM_TruetypeFont.cpp:32
virtual int getFontAscent() override
Definition SDOM_TruetypeFont.cpp:419
int last_size_
Definition SDOM_TruetypeFont.hpp:83
virtual int getFontSize() override
Definition SDOM_TruetypeFont.cpp:430
virtual FontStyle getFontStyle() override
Definition SDOM_TruetypeFont.cpp:470
virtual void drawPhraseDropshadow(const std::string &str, int x, int y, const FontStyle &style) override
Definition SDOM_TruetypeFont.cpp:326
virtual ~TruetypeFont() override
Definition SDOM_TruetypeFont.cpp:21
AssetHandle ttf_font_handle_
Definition SDOM_TruetypeFont.hpp:79
virtual void setFontSize(int p_size) override
Definition SDOM_TruetypeFont.cpp:435
int activeFontHeight_
Definition SDOM_TruetypeFont.hpp:89
virtual void onLoad() override
Definition SDOM_TruetypeFont.cpp:76
void initializeOutlineGlyph(Uint32 ch, int x, int y)
void drawDropShadowGlyph(Uint32 ch, int x, int y, const FontStyle &style)
static constexpr const char * TypeName
Definition SDOM_TruetypeFont.hpp:17
virtual void drawPhraseOutline(const std::string &str, int x, int y, const FontStyle &style) override
Definition SDOM_TruetypeFont.cpp:288
AssetHandle getResourceHandle() const
Definition SDOM_TruetypeFont.hpp:70
virtual bool getGlyphMetrics(Uint32 ch, int *minx, int *maxx, int *miny, int *maxy, int *advance) const override
Definition SDOM_TruetypeFont.cpp:367
virtual void onUnload() override
Definition SDOM_TruetypeFont.cpp:94
virtual int getGlyphWidth(Uint32 ch) const override
Definition SDOM_TruetypeFont.cpp:395
Contains all core classes and utilities for the SDOM library.
Definition lua_BindHelpers.hpp:7
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
Definition SDOM_TruetypeFont.hpp:21
InitStruct()
Definition SDOM_TruetypeFont.hpp:22