3font_class::font_class()
15font_class::~font_class()
19bool font_class::Initialize(ID3D11Device* device, ID3D11DeviceContext* deviceContext,
int fontChoice)
21 Logger::Get().
Log(
"Initializing font class", __FILE__, __LINE__, Logger::LogLevel::Initialize);
23 char fontFilename[128];
24 char fontTextureFilename[128];
32 strcpy_s(fontFilename,
"font01.txt");
33 strcpy_s(fontTextureFilename,
"font01.tga");
40 strcpy_s(fontFilename,
"font01.txt");
41 strcpy_s(fontTextureFilename,
"font01.tga");
49 result = LoadFontData(fontFilename);
52 Logger::Get().
Log(
"Failed to load font data", __FILE__, __LINE__, Logger::LogLevel::Error);
57 result = LoadTexture(device, deviceContext, fontTextureFilename);
60 Logger::Get().
Log(
"Failed to load font texture", __FILE__, __LINE__, Logger::LogLevel::Error);
64 Logger::Get().
Log(
"Font class initialized", __FILE__, __LINE__, Logger::LogLevel::Initialize);
69void font_class::Shutdown()
80bool font_class::LoadFontData(
char* filename)
82 Logger::Get().
Log((
"Loading font data from %s", filename), __FILE__, __LINE__);
89 m_Font =
new FontType[95];
95 Logger::Get().
Log(
"Failed to open font file", __FILE__, __LINE__, Logger::LogLevel::Error);
100 for (i = 0; i < 95; i++)
113 fin >> m_Font[i].left;
114 fin >> m_Font[i].right;
115 fin >> m_Font[i].size;
126void font_class::ReleaseFontData()
138bool font_class::LoadTexture(ID3D11Device* device, ID3D11DeviceContext* deviceContext,
char* filename)
140 Logger::Get().
Log((
"Loading font texture from %s", filename), __FILE__, __LINE__);
148 result = m_Texture->Initialize(device, deviceContext, filename);
151 Logger::Get().
Log(
"Failed to initialize font texture", __FILE__, __LINE__, Logger::LogLevel::Error);
160void font_class::ReleaseTexture()
165 m_Texture->Shutdown();
173ID3D11ShaderResourceView* font_class::GetTexture()
175 return m_Texture->GetTexture();
178void font_class::BuildVertexArray(
void* vertices,
char* sentence,
float drawX,
float drawY)
180 VertexType* vertexPtr;
181 int numLetters, index, i, letter;
185 vertexPtr = (VertexType*)vertices;
188 numLetters = (int)strlen(sentence);
194 for (i = 0; i < numLetters; i++)
196 letter = ((int)sentence[i]) - 32;
201 drawX = drawX + m_spaceSize;
206 vertexPtr[index].position = XMFLOAT3(drawX, drawY, 0.0f);
207 vertexPtr[index].texture = XMFLOAT2(m_Font[letter].left, 0.0f);
210 vertexPtr[index].position = XMFLOAT3((drawX + m_Font[letter].size), (drawY - m_fontHeight), 0.0f);
211 vertexPtr[index].texture = XMFLOAT2(m_Font[letter].right, 1.0f);
214 vertexPtr[index].position = XMFLOAT3(drawX, (drawY - m_fontHeight), 0.0f);
215 vertexPtr[index].texture = XMFLOAT2(m_Font[letter].left, 1.0f);
219 vertexPtr[index].position = XMFLOAT3(drawX, drawY, 0.0f);
220 vertexPtr[index].texture = XMFLOAT2(m_Font[letter].left, 0.0f);
223 vertexPtr[index].position = XMFLOAT3(drawX + m_Font[letter].size, drawY, 0.0f);
224 vertexPtr[index].texture = XMFLOAT2(m_Font[letter].right, 0.0f);
227 vertexPtr[index].position = XMFLOAT3((drawX + m_Font[letter].size), (drawY - m_fontHeight), 0.0f);
228 vertexPtr[index].texture = XMFLOAT2(m_Font[letter].right, 1.0f);
232 drawX = drawX + m_Font[letter].size + 1.0f;
239int font_class::GetSentencePixelLength(
char* sentence)
241 int pixelLength, numLetters, i, letter;
245 numLetters = (int)strlen(sentence);
247 for (i = 0; i < numLetters; i++)
249 letter = ((int)sentence[i]) - 32;
254 pixelLength += m_spaceSize;
258 pixelLength += (m_Font[letter].size + 1);
265int font_class::GetFontHeight()
267 return (
int)m_fontHeight;
void Log(const std::string &message, const std::string &fileName, int lineNumber, LogLevel level=LogLevel::Info)