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 VertexUI* GetVertices();
79 uint32_t GetNumCharactersAllocated() const;
80 uint32_t GetNumVisibleCharacters() const;
81
82 void MarkVerticesDirty();
83
84 float GetTextWidth();
85 float GetTextHeight();
86 glm::vec2 GetScaledMinExtent();
87 glm::vec2 GetScaledMaxExtent();
88
89 virtual bool ContainsPoint(int32_t x, int32_t y) override;
90
91 glm::vec2 GetJustifiedOffset();
92 static float GetJustificationRatio(Justification just);
93
94protected:
95
96 static bool HandlePropChange(Datum* datum, uint32_t index, const void* newValue);
97
98 void UpdateVertexData();
99 void UploadVertexData();
100 void JustifyLine(VertexUI* vertices, Justification just, int32_t& lineVertStart, int32_t numVerts);
101
103 std::string mText;
104 float mCutoff;
108 glm::vec4 mOutlineColor;
110 bool mWordWrap = false;
111
112 glm::vec2 mMinExtent = {};
113 glm::vec2 mMaxExtent = {};
114 int32_t mVisibleCharacters; // ( \n excluded )
118 bool mUploadVertices[MAX_FRAMES] = {};
119 bool mReconstructVertices = false;
120
121 // Graphics Resource
123};
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Justification
Definition Text.h:13
Definition AssetRef.h:18
Definition Button.h:21
Definition Datum.h:164
Definition Font.h:20
virtual DrawData GetDrawData()
Definition Node.cpp:1518
virtual void Create()
Definition Node.cpp:220
virtual void Destroy()
Definition Node.cpp:234
Definition Text.h:24
float mSoftness
Definition Text.h:107
std::string mText
Definition Text.h:103
VertexUI * mVertices
Definition Text.h:109
FontRef mFont
Definition Text.h:102
glm::vec4 mOutlineColor
Definition Text.h:108
float mCutoff
Definition Text.h:104
DECLARE_NODE(Text, Widget)
float mOutlineSize
Definition Text.h:105
TextResource mResource
Definition Text.h:122
int32_t mVisibleCharacters
Definition Text.h:114
uint32_t mNumCharactersAllocated
Definition Text.h:115
float mTextSize
Definition Text.h:106
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:963
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:199
Definition GraphicsTypes.h:293
Definition Vertex.h:37