Incremental Engine  1.0.6
A 2D Game Engine to create Idle Games
IncrementalEngine::Text Class Reference

#include <Text.h>

Inheritance diagram for IncrementalEngine::Text:
IncrementalEngine::Actor IncrementalEngine::Transformable IncrementalEngine::Drawable

Public Types

enum  FontAlignment {
  TOP_LEFT = FW1_TOP | FW1_LEFT, TOP_CENTER = FW1_TOP | FW1_CENTER, TOP_RIGHT = FW1_TOP | FW1_RIGHT, CENTER_LEFT = FW1_VCENTER | FW1_LEFT,
  CENTER = FW1_VCENTER | FW1_CENTER, CENTER_RIGHT = FW1_VCENTER | FW1_RIGHT, BOTTOM_LEFT = FW1_BOTTOM | FW1_LEFT, BOTTOM_CENTER = FW1_BOTTOM | FW1_CENTER,
  BOTTOM_RIGHT = FW1_BOTTOM | FW1_RIGHT
}
 

Public Member Functions

 Text ()
 
 ~Text () override
 
virtual void Init () override
 
void SetFont (const std::wstring &fontFamily)
 
void SetFontSize (float fontSize)
 
void SetFontAlignment (FontAlignment alignment)
 
void SetText (const std::wstring &value)
 
void ClearText ()
 
void SetTextColor (const float r, const float g, const float b, const float a=1)
 
void SetTextColor (const D3DXVECTOR4 color)
 
void SetTextColor (const std::uint32_t color)
 
virtual FloatRect GetLocalBounds () override
 
virtual void Update (float dt) override
 
virtual HRESULT Draw (ID3D11DeviceContext *deviceContext) override
 
- Public Member Functions inherited from IncrementalEngine::Actor
virtual ~Actor ()
 
void UpdateRecursive (float dt)
 
HRESULT DrawRecursive (ID3D11DeviceContext *deviceContext)
 
FloatRect GetGlobalBounds ()
 
void Center ()
 
const Transform GetWorldTransform ()
 
const D3DXVECTOR2 GetWorldPosition ()
 
const D3DXVECTOR2 GetWorldScale ()
 
const float GetWorldRotation ()
 
void SetWorldPosition (D3DXVECTOR2 value)
 
virtual void SetPosition (float x, float y) override
 
virtual void SetPosition (const D3DXVECTOR2 &position) override
 
virtual const D3DXVECTOR2 & GetPosition () const override
 
ActorGetParent () const
 
virtual void SetParent (Actor *value, const bool fixWorldPosition=true)
 
void SetActive (bool active)
 
bool IsActive ()
 
- Public Member Functions inherited from IncrementalEngine::Transformable
 Transformable ()
 
virtual void SetScale (float factorX, float factorY)
 
virtual void SetScale (const D3DXVECTOR2 &factors)
 
virtual void SetOrigin (float x, float y)
 
virtual void SetOrigin (const D3DXVECTOR2 &origin)
 
virtual void SetRotation (float angle)
 
virtual float GetRotation () const
 
virtual const D3DXVECTOR2 & GetScale () const
 
virtual const D3DXVECTOR2 & GetOrigin () const
 
void Move (float offsetX, float offsetY)
 
void Move (const D3DXVECTOR2 &offset)
 
void Rotate (float angle)
 
void Scale (float factorX, float factorY)
 
void Scale (const D3DXVECTOR2 &factor)
 
const TransformGetTransform () const
 
const TransformGetInverseTransform () const
 

Private Member Functions

D3DXVECTOR2 GetTextExtent ()
 
XMMATRIX GetWorldMatrix (Actor *actor)
 

Private Attributes

IFW1FontWrapper * _fontWrapper
 
XMMATRIX _fontWrapperMatrix
 
std::wstring _value
 
std::wstring _fontFamily
 
float _fontSize
 
std::uint32_t _color
 
UINT _flags
 
bool _fontWrapperNeedUpdate
 
Transform _previousTransform
 

Additional Inherited Members

- Protected Member Functions inherited from IncrementalEngine::Drawable
void CopyParameters (Drawable *drawable)
 
- Protected Attributes inherited from IncrementalEngine::Transformable
bool _transformNeedUpdate
 
- Protected Attributes inherited from IncrementalEngine::Drawable
RenderWindow_renderWindow
 
ShaderManager_shaderManager
 
ID3D11Device * _device
 

Detailed Description

Definition at line 12 of file Text.h.

Member Enumeration Documentation

◆ FontAlignment

Enumerator
TOP_LEFT 
TOP_CENTER 
TOP_RIGHT 
CENTER_LEFT 
CENTER 
CENTER_RIGHT 
BOTTOM_LEFT 
BOTTOM_CENTER 
BOTTOM_RIGHT 

Definition at line 17 of file Text.h.

18  {
19  TOP_LEFT = FW1_TOP | FW1_LEFT,
20  TOP_CENTER = FW1_TOP | FW1_CENTER,
21  TOP_RIGHT = FW1_TOP | FW1_RIGHT,
22  CENTER_LEFT = FW1_VCENTER | FW1_LEFT,
23  CENTER = FW1_VCENTER | FW1_CENTER,
24  CENTER_RIGHT = FW1_VCENTER | FW1_RIGHT,
25  BOTTOM_LEFT = FW1_BOTTOM | FW1_LEFT,
26  BOTTOM_CENTER = FW1_BOTTOM | FW1_CENTER,
27  BOTTOM_RIGHT = FW1_BOTTOM | FW1_RIGHT
28  };

Constructor & Destructor Documentation

◆ Text()

IncrementalEngine::Text::Text ( )

Definition at line 10 of file Text.cpp.

10  :
11  _fontWrapper(NULL),
12  _fontFamily(L""),
13  _value(L""),
14  _fontSize(12),
15  _color(0)
16  {
17  _flags = FontAlignment::CENTER;
18  }

◆ ~Text()

IncrementalEngine::Text::~Text ( )
override

Definition at line 20 of file Text.cpp.

21  {
22  CHECKED_RELEASE(_fontWrapper);
23  }

Member Function Documentation

◆ ClearText()

void IncrementalEngine::Text::ClearText ( )

Definition at line 72 of file Text.cpp.

73  {
74  _value = L"";
75  Center();
77  }

◆ Draw()

HRESULT IncrementalEngine::Text::Draw ( ID3D11DeviceContext *  deviceContext)
overridevirtual

Reimplemented from IncrementalEngine::Actor.

Definition at line 126 of file Text.cpp.

127  {
128  FW1_RECTF rect = { 0.f, 0.f, 0.f, 0.f };
129 
130  _fontWrapper->DrawString(
131  deviceContext,
132  _value.c_str(),
133  _fontFamily.c_str(),
134  _fontSize,
135  &rect,
136  _color,
137  NULL,
138  reinterpret_cast<FLOAT*>(&_fontWrapperMatrix),
139  _flags | FW1_NOWORDWRAP | FW1_RESTORESTATE
140  );
141 
142  return S_OK;
143  }

◆ GetLocalBounds()

FloatRect IncrementalEngine::Text::GetLocalBounds ( )
overridevirtual

Reimplemented from IncrementalEngine::Actor.

Definition at line 94 of file Text.cpp.

95  {
96  D3DXVECTOR2 extent = GetTextExtent();
97  FloatRect bounds = {
98  0.f,
99  0.f,
100  extent.x,
101  extent.y
102  };
103 
104  return bounds;
105  }

◆ GetTextExtent()

D3DXVECTOR2 IncrementalEngine::Text::GetTextExtent ( )
private

Definition at line 145 of file Text.cpp.

146  {
147  FW1_RECTF nullRect = { 0.f, 0.f, 0.f, 0.f };
148  FW1_RECTF rect = _fontWrapper->MeasureString(
149  _value.c_str(),
150  _fontFamily.c_str(),
151  _fontSize,
152  &nullRect,
153  FW1_NOWORDWRAP
154  );
155 
156  return { rect.Right - rect.Left, rect.Bottom - rect.Top };
157  }

◆ GetWorldMatrix()

XMMATRIX IncrementalEngine::Text::GetWorldMatrix ( Actor actor)
private

Definition at line 159 of file Text.cpp.

160  {
161  XMMATRIX parentMatrix = XMMatrixIdentity();
162 
163  auto parent = actor->GetParent();
164  if (parent != nullptr)
165  {
166  parentMatrix = GetWorldMatrix(parent);
167  }
168 
169  D3DXVECTOR2 origin = actor->GetOrigin();
170  D3DXVECTOR2 scale = actor->GetScale();
171  D3DXVECTOR2 position = actor->GetPosition();
172  float rotation = DEG2RAD(actor->GetRotation());
173 
174  XMMATRIX originMatrix = XMMatrixTranslation(
175  origin.x,
176  origin.y,
177  0.f
178  );
179 
180  XMMATRIX rotationMatrix = XMMatrixRotationZ(rotation);
181 
182  XMMATRIX translationMatrix = XMMatrixTranslation(
183  position.x,
184  position.y,
185  1.f
186  );
187 
188  XMMATRIX scaleMatrix = XMMatrixScaling(
189  scale.x,
190  scale.y,
191  1.f
192  );
193 
194  XMMATRIX actorMatrix = scaleMatrix
195  * rotationMatrix
196  * translationMatrix;
197 
198  return actorMatrix * parentMatrix;
199  }

◆ Init()

void IncrementalEngine::Text::Init ( )
overridevirtual

Reimplemented from IncrementalEngine::Actor.

Definition at line 25 of file Text.cpp.

26  {
27  if (_fontFamily.empty())
28  {
29  _fontFamily = DEFAULT_FONT_FAMILY;
30  }
31 
32  HRESULT result = FontFactory::Get()->CreateFontWrapper(
33  _device,
34  _fontFamily.c_str(),
36  );
37 
38  if (FAILED(result))
39  {
40  MessageBox(NULL, TEXT("CreateFontWrapper"), TEXT("Error"), MB_OK);
41  }
42 
44  }

◆ SetFont()

void IncrementalEngine::Text::SetFont ( const std::wstring &  fontFamily)

Definition at line 46 of file Text.cpp.

47  {
48  _fontFamily = fontFamily;
49  Center();
51  }

◆ SetFontAlignment()

void IncrementalEngine::Text::SetFontAlignment ( FontAlignment  alignment)

Definition at line 60 of file Text.cpp.

61  {
62  _flags = alignment;
63  }

◆ SetFontSize()

void IncrementalEngine::Text::SetFontSize ( float  fontSize)

Definition at line 53 of file Text.cpp.

54  {
55  _fontSize = fontSize;
56  Center();
58  }

◆ SetText()

void IncrementalEngine::Text::SetText ( const std::wstring &  value)

Definition at line 65 of file Text.cpp.

66  {
67  _value = value;
68  Center();
70  }

◆ SetTextColor() [1/3]

void IncrementalEngine::Text::SetTextColor ( const D3DXVECTOR4  color)

Definition at line 84 of file Text.cpp.

85  {
86  SetTextColor(color.x, color.y, color.z, color.w);
87  }

◆ SetTextColor() [2/3]

void IncrementalEngine::Text::SetTextColor ( const float  r,
const float  g,
const float  b,
const float  a = 1 
)

Definition at line 79 of file Text.cpp.

80  {
81  _color = DirectX::PackedVector::XMCOLOR::XMCOLOR(b / 255, g / 255, r / 255, a);
82  }

◆ SetTextColor() [3/3]

void IncrementalEngine::Text::SetTextColor ( const std::uint32_t  color)

Definition at line 89 of file Text.cpp.

90  {
91  _color = color;
92  }

◆ Update()

void IncrementalEngine::Text::Update ( float  dt)
overridevirtual

Reimplemented from IncrementalEngine::Actor.

Definition at line 107 of file Text.cpp.

108  {
109  Transform transform = GetWorldTransform();
110  if (_fontWrapperNeedUpdate || transform != _previousTransform)
111  {
112  _previousTransform = transform;
113 
114  XMMATRIX orthoProjectionMatrix = XMMatrixOrthographicLH(
119  );
120 
121  _fontWrapperMatrix = GetWorldMatrix(this) * orthoProjectionMatrix;
122  _fontWrapperNeedUpdate = false;
123  }
124  }

Member Data Documentation

◆ _color

std::uint32_t IncrementalEngine::Text::_color
private

Definition at line 59 of file Text.h.

◆ _flags

UINT IncrementalEngine::Text::_flags
private

Definition at line 60 of file Text.h.

◆ _fontFamily

std::wstring IncrementalEngine::Text::_fontFamily
private

Definition at line 57 of file Text.h.

◆ _fontSize

float IncrementalEngine::Text::_fontSize
private

Definition at line 58 of file Text.h.

◆ _fontWrapper

IFW1FontWrapper* IncrementalEngine::Text::_fontWrapper
private

Definition at line 53 of file Text.h.

◆ _fontWrapperMatrix

XMMATRIX IncrementalEngine::Text::_fontWrapperMatrix
private

Definition at line 54 of file Text.h.

◆ _fontWrapperNeedUpdate

bool IncrementalEngine::Text::_fontWrapperNeedUpdate
mutableprivate

Definition at line 62 of file Text.h.

◆ _previousTransform

Transform IncrementalEngine::Text::_previousTransform
private

Definition at line 63 of file Text.h.

◆ _value

std::wstring IncrementalEngine::Text::_value
private

Definition at line 56 of file Text.h.

IncrementalEngine::Text::_previousTransform
Transform _previousTransform
Definition: Text.h:63
IncrementalEngine::Drawable::_device
ID3D11Device * _device
Definition: Drawable.h:18
IncrementalEngine::Text::TOP_LEFT
@ TOP_LEFT
Definition: Text.h:19
IncrementalEngine::Text::TOP_CENTER
@ TOP_CENTER
Definition: Text.h:20
IncrementalEngine::Text::SetTextColor
void SetTextColor(const float r, const float g, const float b, const float a=1)
Definition: Text.cpp:79
IncrementalEngine::Text::_fontWrapper
IFW1FontWrapper * _fontWrapper
Definition: Text.h:53
IncrementalEngine::Actor::GetWorldTransform
const Transform GetWorldTransform()
Definition: Actor.cpp:93
IncrementalEngine::Text::CENTER_RIGHT
@ CENTER_RIGHT
Definition: Text.h:24
IncrementalEngine::Text::BOTTOM_RIGHT
@ BOTTOM_RIGHT
Definition: Text.h:27
IncrementalEngine::Text::GetWorldMatrix
XMMATRIX GetWorldMatrix(Actor *actor)
Definition: Text.cpp:159
IncrementalEngine::Text::_value
std::wstring _value
Definition: Text.h:56
IncrementalEngine::Text::BOTTOM_LEFT
@ BOTTOM_LEFT
Definition: Text.h:25
IncrementalEngine::Text::GetTextExtent
D3DXVECTOR2 GetTextExtent()
Definition: Text.cpp:145
IncrementalEngine::FontFactory::Get
static IFW1Factory * Get()
Definition: FontFactory.cpp:8
IncrementalEngine::Text::_fontWrapperMatrix
XMMATRIX _fontWrapperMatrix
Definition: Text.h:54
IncrementalEngine::Text::_flags
UINT _flags
Definition: Text.h:60
IncrementalEngine::Text::BOTTOM_CENTER
@ BOTTOM_CENTER
Definition: Text.h:26
IncrementalEngine::Text::_fontSize
float _fontSize
Definition: Text.h:58
IncrementalEngine::Actor::Center
void Center()
Definition: Actor.cpp:77
IncrementalEngine::Text::_fontFamily
std::wstring _fontFamily
Definition: Text.h:57
IncrementalEngine::Text::_fontWrapperNeedUpdate
bool _fontWrapperNeedUpdate
Definition: Text.h:62
IncrementalEngine::Text::_color
std::uint32_t _color
Definition: Text.h:59
IncrementalEngine::Text::CENTER_LEFT
@ CENTER_LEFT
Definition: Text.h:22
IncrementalEngine::RenderWindow::GetScreenDepth
float GetScreenDepth()
Definition: RenderWindow.cpp:130
IncrementalEngine::RenderWindow::GetScreenHeight
int GetScreenHeight()
Definition: RenderWindow.cpp:120
IncrementalEngine::Text::TOP_RIGHT
@ TOP_RIGHT
Definition: Text.h:21
IncrementalEngine::Drawable::_renderWindow
RenderWindow * _renderWindow
Definition: Drawable.h:16
IncrementalEngine::RenderWindow::GetScreenWidth
int GetScreenWidth()
Definition: RenderWindow.cpp:115
IncrementalEngine::Text::CENTER
@ CENTER
Definition: Text.h:23
IncrementalEngine::RenderWindow::GetScreenNear
float GetScreenNear()
Definition: RenderWindow.cpp:125