Polyphase Game Engine
Loading...
Searching...
No Matches
Text.h
Go to the documentation of this file.
1#pragma once
2
4#include "Vertex.h"
5
6#include "AssetRef.h"
7
8#include "Graphics/Graphics.h"
9
10class Font;
11
12enum class Justification : uint8_t
13{
14 Left,
15 Center,
16 Right,
17 Top = 0,
18 Bottom = 2,
19
20 Count
21};
22
24{
25public:
26
28
29 friend class Button;
30
31 Text();
32 virtual ~Text();
33
34 virtual void Create() override;
35 virtual void Destroy() override;
36
37 TextResource* GetResource();
38
39 virtual void GatherProperties(std::vector<Property>& outProps) override;
40 void GatherTextProperties(std::vector<Property>& outProps);
41
42 virtual DrawData GetDrawData() override;
43
44 virtual void PreRender() override;
45
46 virtual void Render() override;
47
48 virtual void SetColor(glm::vec4 color) override;
49
50 virtual void MarkDirty();
51
52 void SetFont(Font* font);
53 Font* GetFont();
54
55 void SetOutlineColor(glm::vec4 color);
56 glm::vec4 GetOutlineColor() const;
57
58 void SetTextSize(float size);
59 float GetTextSize() const;
60 float GetScaledTextSize() const;
61
62 float GetOutlineSize() const;
63 float GetSoftness() const;
64 float GetCutoff() const;
65
66 void SetHorizontalJustification(Justification just);
67 Justification GetHorizontalJustification() const;
68 void SetVerticalJustification(Justification just);
69 Justification GetVerticalJustification() const;
70
71 bool IsWordWrapEnabled() const;
72 void EnableWordWrap(bool wrap);
73
74 void SetText(const std::string& text);
75 void SetText(const char* text);
76 const std::string& GetText() const;
77
78 // When non-zero, UpdateVertexData renders this single Unicode codepoint
79 // instead of walking mText character-by-character. Bypasses the ASCII
80 // filter that would otherwise drop PUA-range glyphs (e.g. Kenney input
81 // prompt fonts at U+E000+). Reuses the Font asset's existing atlas
82 // binding so no GFX path changes are needed.
83 void SetGlyphCodepoint(uint32_t codepoint);
84 uint32_t GetGlyphCodepoint() const { return mGlyphCodepoint; }
85
86 VertexUI* GetVertices();
87 uint32_t GetNumCharactersAllocated() const;
88 uint32_t GetNumVisibleCharacters() const;
89
90 void MarkVerticesDirty();
91
92 float GetTextWidth();
93 float GetTextHeight();
94 glm::vec2 GetScaledMinExtent();
95 glm::vec2 GetScaledMaxExtent();
96
97 virtual bool ContainsPoint(int32_t x, int32_t y) override;
98
99 glm::vec2 GetJustifiedOffset();
100 static float GetJustificationRatio(Justification just);
101
102protected:
103
104 static bool HandlePropChange(Datum* datum, uint32_t index, const void* newValue);
105
106 void UpdateVertexData();
107 void UploadVertexData();
108 void JustifyLine(VertexUI* vertices, Justification just, int32_t& lineVertStart, int32_t numVerts);
109
111 std::string mText;
112 float mCutoff;
116 glm::vec4 mOutlineColor;
118 bool mWordWrap = false;
119
120 glm::vec2 mMinExtent = {};
121 glm::vec2 mMaxExtent = {};
122 int32_t mVisibleCharacters; // ( \n excluded )
126 bool mUploadVertices[MAX_FRAMES] = {};
127 bool mReconstructVertices = false;
128
129 // Non-zero -> single-codepoint glyph mode (see SetGlyphCodepoint).
130 uint32_t mGlyphCodepoint = 0;
131
132 // Graphics Resource
134};
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Justification
Definition Text.h:13
Definition AssetRef.h:18
Definition Button.h:21
Definition Datum.h:169
Definition Font.h:20
virtual DrawData GetDrawData()
Definition Node.cpp:1533
virtual void Create()
Definition Node.cpp:235
virtual void Destroy()
Definition Node.cpp:249
Definition Text.h:24
float mSoftness
Definition Text.h:115
std::string mText
Definition Text.h:111
VertexUI * mVertices
Definition Text.h:117
FontRef mFont
Definition Text.h:110
glm::vec4 mOutlineColor
Definition Text.h:116
float mCutoff
Definition Text.h:112
DECLARE_NODE(Text, Widget)
float mOutlineSize
Definition Text.h:113
TextResource mResource
Definition Text.h:133
int32_t mVisibleCharacters
Definition Text.h:122
uint32_t GetGlyphCodepoint() const
Definition Text.h:84
uint32_t mNumCharactersAllocated
Definition Text.h:123
float mTextSize
Definition Text.h:114
Definition Widget.h:53
virtual void SetColor(glm::vec4 color)
Definition Widget.cpp:869
static bool HandlePropChange(Datum *datum, uint32_t index, const void *newValue)
Definition Widget.cpp:45
virtual void MarkDirty()
Definition Widget.cpp:910
virtual bool ContainsPoint(int32_t x, int32_t y)
Definition Widget.cpp:977
virtual void Render() override
Definition Widget.cpp:158
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition Widget.cpp:115
virtual void PreRender()
Definition Widget.cpp:226
Definition EngineTypes.h:206
Definition GraphicsTypes.h:340
Definition Vertex.h:37