Khaotic Engine Reborn
Loading...
Searching...
No Matches
font_class Class Reference

Public Member Functions

 font_class (const font_class &)
 
bool Initialize (ID3D11Device *, ID3D11DeviceContext *, int)
 
void Shutdown ()
 
ID3D11ShaderResourceView * GetTexture ()
 
void BuildVertexArray (void *, char *, float, float)
 
int GetSentencePixelLength (char *)
 
int GetFontHeight ()
 

Detailed Description

Definition at line 22 of file font_class.h.

Constructor & Destructor Documentation

◆ font_class() [1/2]

font_class::font_class ( )

Definition at line 3 of file font_class.cpp.

4{
5 m_Font = 0;
6 m_Texture = 0;
7}

◆ font_class() [2/2]

font_class::font_class ( const font_class & other)

Definition at line 10 of file font_class.cpp.

11{
12}

◆ ~font_class()

font_class::~font_class ( )

Definition at line 15 of file font_class.cpp.

16{
17}

Member Function Documentation

◆ BuildVertexArray()

void font_class::BuildVertexArray ( void * vertices,
char * sentence,
float drawX,
float drawY )

Definition at line 178 of file font_class.cpp.

179{
180 VertexType* vertexPtr;
181 int numLetters, index, i, letter;
182
183
184 // Coerce the input vertices into a VertexType structure.
185 vertexPtr = (VertexType*)vertices;
186
187 // Get the number of letters in the sentence.
188 numLetters = (int)strlen(sentence);
189
190 // Initialize the index to the vertex array.
191 index = 0;
192
193 // Draw each letter onto a quad.
194 for (i = 0; i < numLetters; i++)
195 {
196 letter = ((int)sentence[i]) - 32;
197
198 // If the letter is a space then just move over three pixels.
199 if (letter == 0)
200 {
201 drawX = drawX + m_spaceSize;
202 }
203 else
204 {
205 // First triangle in quad.
206 vertexPtr[index].position = XMFLOAT3(drawX, drawY, 0.0f); // Top left.
207 vertexPtr[index].texture = XMFLOAT2(m_Font[letter].left, 0.0f);
208 index++;
209
210 vertexPtr[index].position = XMFLOAT3((drawX + m_Font[letter].size), (drawY - m_fontHeight), 0.0f); // Bottom right.
211 vertexPtr[index].texture = XMFLOAT2(m_Font[letter].right, 1.0f);
212 index++;
213
214 vertexPtr[index].position = XMFLOAT3(drawX, (drawY - m_fontHeight), 0.0f); // Bottom left.
215 vertexPtr[index].texture = XMFLOAT2(m_Font[letter].left, 1.0f);
216 index++;
217
218 // Second triangle in quad.
219 vertexPtr[index].position = XMFLOAT3(drawX, drawY, 0.0f); // Top left.
220 vertexPtr[index].texture = XMFLOAT2(m_Font[letter].left, 0.0f);
221 index++;
222
223 vertexPtr[index].position = XMFLOAT3(drawX + m_Font[letter].size, drawY, 0.0f); // Top right.
224 vertexPtr[index].texture = XMFLOAT2(m_Font[letter].right, 0.0f);
225 index++;
226
227 vertexPtr[index].position = XMFLOAT3((drawX + m_Font[letter].size), (drawY - m_fontHeight), 0.0f); // Bottom right.
228 vertexPtr[index].texture = XMFLOAT2(m_Font[letter].right, 1.0f);
229 index++;
230
231 // Update the x location for drawing by the size of the letter and one pixel.
232 drawX = drawX + m_Font[letter].size + 1.0f;
233 }
234 }
235
236 return;
237}

◆ GetFontHeight()

int font_class::GetFontHeight ( )

Definition at line 265 of file font_class.cpp.

266{
267 return (int)m_fontHeight;
268}

◆ GetSentencePixelLength()

int font_class::GetSentencePixelLength ( char * sentence)

Definition at line 239 of file font_class.cpp.

240{
241 int pixelLength, numLetters, i, letter;
242
243
244 pixelLength = 0;
245 numLetters = (int)strlen(sentence);
246
247 for (i = 0; i < numLetters; i++)
248 {
249 letter = ((int)sentence[i]) - 32;
250
251 // If the letter is a space then count it as three pixels.
252 if (letter == 0)
253 {
254 pixelLength += m_spaceSize;
255 }
256 else
257 {
258 pixelLength += (m_Font[letter].size + 1);
259 }
260 }
261
262 return pixelLength;
263}

◆ GetTexture()

ID3D11ShaderResourceView * font_class::GetTexture ( )

Definition at line 173 of file font_class.cpp.

174{
175 return m_Texture->GetTexture();
176}

◆ Initialize()

bool font_class::Initialize ( ID3D11Device * device,
ID3D11DeviceContext * deviceContext,
int fontChoice )

Definition at line 19 of file font_class.cpp.

20{
21 Logger::Get().Log("Initializing font class", __FILE__, __LINE__, Logger::LogLevel::Initialize);
22
23 char fontFilename[128];
24 char fontTextureFilename[128];
25 bool result;
26
27 // Choose one of the available fonts, and default to the first font otherwise.
28 switch (fontChoice)
29 {
30 case 0:
31 {
32 strcpy_s(fontFilename, "font01.txt");
33 strcpy_s(fontTextureFilename, "font01.tga");
34 m_fontHeight = 32.0f;
35 m_spaceSize = 3;
36 break;
37 }
38 default:
39 {
40 strcpy_s(fontFilename, "font01.txt");
41 strcpy_s(fontTextureFilename, "font01.tga");
42 m_fontHeight = 32.0f;
43 m_spaceSize = 3;
44 break;
45 }
46 }
47
48 // Load in the text file containing the font data.
49 result = LoadFontData(fontFilename);
50 if (!result)
51 {
52 Logger::Get().Log("Failed to load font data", __FILE__, __LINE__, Logger::LogLevel::Error);
53 return false;
54 }
55
56 // Load the texture that has the font characters on it.
57 result = LoadTexture(device, deviceContext, fontTextureFilename);
58 if (!result)
59 {
60 Logger::Get().Log("Failed to load font texture", __FILE__, __LINE__, Logger::LogLevel::Error);
61 return false;
62 }
63
64 Logger::Get().Log("Font class initialized", __FILE__, __LINE__, Logger::LogLevel::Initialize);
65
66 return true;
67}
static Logger & Get()
Definition Logger.h:20
void Log(const std::string &message, const std::string &fileName, int lineNumber, LogLevel level=LogLevel::Info)
Definition Logger.h:158

◆ Shutdown()

void font_class::Shutdown ( )

Definition at line 69 of file font_class.cpp.

70{
71 // Release the font texture.
72 ReleaseTexture();
73
74 // Release the font data.
75 ReleaseFontData();
76
77 return;
78}

The documentation for this class was generated from the following files: