fonts..
This commit is contained in:
parent
21bcbf9a97
commit
8d1281b316
|
@ -69,7 +69,6 @@ void Engine::run()
|
|||
update(ticks, 0);
|
||||
lastUpdateTicks = ticks;
|
||||
|
||||
Font *font = g_fonts.getDefault();
|
||||
Point fpsPos(10,10);
|
||||
|
||||
while(!m_stopping) {
|
||||
|
@ -90,7 +89,7 @@ void Engine::run()
|
|||
// render only when visible
|
||||
if(Platform::isWindowVisible()) {
|
||||
// calculate and fps
|
||||
if(m_calculateFps && font) {
|
||||
if(m_calculateFps) {
|
||||
frameCount++;
|
||||
if(ticks - lastFpsTicks >= 1000) {
|
||||
lastFpsTicks = ticks;
|
||||
|
@ -102,8 +101,8 @@ void Engine::run()
|
|||
render();
|
||||
|
||||
// render fps
|
||||
if(m_calculateFps && font) {
|
||||
font->renderText(fpsPos, format("FPS: %d", fps));
|
||||
if(m_calculateFps) {
|
||||
g_defaultFont->renderText(fpsPos, format("FPS: %d", fps));
|
||||
}
|
||||
|
||||
// swap buffers
|
||||
|
|
|
@ -136,25 +136,28 @@ void Font::renderText(const Point& pos, const std::string& text)
|
|||
// end texture redering
|
||||
g_graphics._endTextureRender();
|
||||
g_graphics.resetColor();
|
||||
|
||||
// debug box
|
||||
//g_graphics.drawBoundingRect(Rect(pos, calculateTextSize(text)).expanded(1), Color(0xFF00FF00), 1);
|
||||
}
|
||||
|
||||
Size Font::calculateTextSize(const std::string& text)
|
||||
{
|
||||
int textLenght = text.length();
|
||||
Size size;
|
||||
Point currentPos;
|
||||
Point currentPos(0,m_lineHeight);
|
||||
|
||||
for(int i = 0; i < textLenght; ++i) {
|
||||
int glyph = (int)text[i];
|
||||
|
||||
if(glyph == (uchar)'\n') {
|
||||
currentPos.y += m_lineHeight;
|
||||
size.expandedTo(currentPos.toSize());
|
||||
currentPos.x = 0;
|
||||
}
|
||||
else if(glyph > 32) {
|
||||
else if(glyph >= 32) {
|
||||
currentPos.x += m_glyphsSize[glyph].width();
|
||||
}
|
||||
size = size.expandedTo(currentPos.toSize());
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
|
|
@ -27,9 +27,11 @@
|
|||
#include "resources.h"
|
||||
|
||||
Fonts g_fonts;
|
||||
Font *g_defaultFont = NULL;
|
||||
|
||||
void Fonts::init()
|
||||
{
|
||||
// load all fonts
|
||||
std::list<std::string> files = g_resources.getDirectoryFiles("fonts");
|
||||
foreach(const std::string& file, files) {
|
||||
if(boost::ends_with(file, ".yml")) {
|
||||
|
@ -40,24 +42,22 @@ void Fonts::init()
|
|||
m_fonts[name] = font;
|
||||
}
|
||||
}
|
||||
|
||||
// set default font
|
||||
g_defaultFont = get("tibia-12px-rounded");
|
||||
if(!g_defaultFont)
|
||||
logFatal("Default font not found!");
|
||||
}
|
||||
|
||||
Font* Fonts::get(const std::string& fontName)
|
||||
{
|
||||
// find font by name
|
||||
auto it = m_fonts.find(fontName);
|
||||
if(it != m_fonts.end()) {
|
||||
return it->second.get();
|
||||
}
|
||||
|
||||
logError("Font \"%s\" not found", fontName.c_str());
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Font *Fonts::getDefault()
|
||||
{
|
||||
Font *font = get("tibia-10px-rounded");
|
||||
if(font) {
|
||||
return font;
|
||||
}
|
||||
logFatal("Default font not found!");
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -39,9 +39,6 @@ public:
|
|||
/// Get a font by name
|
||||
Font *get(const std::string& fontName);
|
||||
|
||||
/// Get default font
|
||||
Font *getDefault();
|
||||
|
||||
/// Terminate all fonts
|
||||
void terminate() { }
|
||||
|
||||
|
@ -50,5 +47,6 @@ private:
|
|||
};
|
||||
|
||||
extern Fonts g_fonts;
|
||||
extern Font *g_defaultFont;
|
||||
|
||||
#endif // FONTS_H
|
||||
|
|
|
@ -185,7 +185,7 @@ void Graphics::drawColoredRect(const Rect& screenCoords, const Color& color)
|
|||
{
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
|
||||
glColor4ubv(color.rgbaPtr());
|
||||
setColor(color);
|
||||
|
||||
// rect correction for opengl
|
||||
int right = screenCoords.right() + 1;
|
||||
|
@ -201,6 +201,8 @@ void Graphics::drawColoredRect(const Rect& screenCoords, const Color& color)
|
|||
glEnd();
|
||||
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
|
||||
resetColor();
|
||||
}
|
||||
|
||||
|
||||
|
@ -211,7 +213,7 @@ void Graphics::drawBoundingRect(const Rect& screenCoords, const Color& color, in
|
|||
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
|
||||
glColor4ubv(color.rgbaPtr());
|
||||
setColor(color);
|
||||
|
||||
// rect correction for opengl
|
||||
int right = screenCoords.right()+1;
|
||||
|
@ -246,4 +248,6 @@ void Graphics::drawBoundingRect(const Rect& screenCoords, const Color& color, in
|
|||
glEnd();
|
||||
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
|
||||
resetColor();
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ public:
|
|||
// high level rendering
|
||||
void drawTexturedRect(const Rect& screenCoords, const Texture *texture, const Rect& texCoords = Rect());
|
||||
void drawColoredRect(const Rect& screenCoords, const Color& color);
|
||||
void drawBoundingRect(const Rect& screenCoords, const Color& color, int innerLineWidth);
|
||||
void drawBoundingRect(const Rect& screenCoords, const Color& color, int innerLineWidth = 1);
|
||||
|
||||
// lower level rendering
|
||||
void _beginTextureRender(const Texture *texture);
|
||||
|
|
|
@ -98,6 +98,8 @@ public:
|
|||
inline TRect<T> translated(int x, int y) const { return TRect<T>(TPoint<T>(x1 + x, y1 + y), TPoint<T>(x2 + x, y2 + y)); }
|
||||
inline TRect<T> translated(const TPoint<T> &p) const { return TRect<T>(TPoint<T>(x1 + p.x(), y1 + p.y()), TPoint<T>(x2 + p.x(), y2 + p.y())); }
|
||||
|
||||
inline TRect<T> expanded(T pixels) { return TRect<T>(TPoint<T>(x1 - pixels, y1 - pixels), TPoint<T>(x2 + pixels, y2 + pixels)); }
|
||||
|
||||
inline void moveCenter(const TPoint<T> &p) {
|
||||
T w = x2 - x1;
|
||||
T h = y2 - y1;
|
||||
|
|
|
@ -67,7 +67,9 @@ void MenuState::render()
|
|||
Rect texCoords(0, 0, texCoordsSize);
|
||||
texCoords.moveBottomRight(texSize.toPoint());
|
||||
g_graphics.drawTexturedRect(Rect(0, 0, screenSize), m_background.get(), texCoords);
|
||||
g_fonts.getDefault()->renderText(Point(10,screenSize.height() - 20), "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam ac orci id quam condimentum semper.");
|
||||
g_defaultFont->renderText(Point(10,screenSize.height() - 50), "Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n"
|
||||
"Sed blandit justo in lectus ornare ultricies.\n"
|
||||
"Integer faucibus magna quis metus fermentum suscipit.");
|
||||
}
|
||||
|
||||
void MenuState::update(int ticks, int elapsedTicks)
|
||||
|
|
Loading…
Reference in New Issue