https://github.com/libsdl-org/Maelstrom/commit/00090e866f7c181ebbd72eba643697efbb77c9ed
From 00090e866f7c181ebbd72eba643697efbb77c9ed Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 22 Oct 2012 23:20:16 -0700
Subject: [PATCH] Added support for hi-res fonts
---
game/MaelstromUI.cpp | 9 +++++++--
screenlib/UIDrawEngine.cpp | 4 ++--
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/game/MaelstromUI.cpp b/game/MaelstromUI.cpp
index c02063ab..42302359 100644
--- a/game/MaelstromUI.cpp
+++ b/game/MaelstromUI.cpp
@@ -127,6 +127,11 @@ MaelstromUI::CreateText(const char *text, const char *fontName, int fontSize, UI
char *key;
int keysize;
SDL_Texture *texture;
+ float logicalScale;
+
+ /* Adjust the font size by our logical scale */
+ logicalScale = m_screen->GetLogicalScale();
+ fontSize = (int)(fontSize * logicalScale);
/* First see if we can find it in our cache */
keysize = strlen(fontName)+1+2+1+1+1+8+1+strlen(text)+1;
@@ -134,7 +139,7 @@ MaelstromUI::CreateText(const char *text, const char *fontName, int fontSize, UI
SDL_snprintf(key, keysize, "%s:%d:%c:%8.8x:%s", fontName, fontSize, '0'+fontStyle, color, text);
if (hash_find(m_strings, key, (const void**)&texture)) {
SDL_stack_free(key);
- return new UITexture(texture);
+ return new UITexture(texture, logicalScale);
}
font = GetFont(fontName, fontSize);
@@ -165,7 +170,7 @@ MaelstromUI::CreateText(const char *text, const char *fontName, int fontSize, UI
}
SDL_stack_free(key);
- return new UITexture(texture);
+ return new UITexture(texture, logicalScale);
}
void
diff --git a/screenlib/UIDrawEngine.cpp b/screenlib/UIDrawEngine.cpp
index 29402f0c..cd7dad94 100644
--- a/screenlib/UIDrawEngine.cpp
+++ b/screenlib/UIDrawEngine.cpp
@@ -139,12 +139,12 @@ UIDrawEngine::OnDraw()
m_screen->GetRGB(m_element->GetTextShadowColor(), &r, &g, &b);
SDL_SetTextureColorMod(m_textImage->Texture(), r, g, b);
- m_screen->QueueBlit(m_textImage->Texture(), area->X()+x, area->Y()+y, NOCLIP);
+ m_screen->QueueBlit(m_textImage->Texture(), area->X()+x, area->Y()+y, area->Width(), area->Height(), NOCLIP);
m_screen->GetRGB(m_element->GetCurrentColor(), &r, &g, &b);
SDL_SetTextureColorMod(m_textImage->Texture(), r, g, b);
}
- m_screen->QueueBlit(m_textImage->Texture(), area->X(), area->Y(), NOCLIP);
+ m_screen->QueueBlit(m_textImage->Texture(), area->X(), area->Y(), area->Width(), area->Height(), NOCLIP);
}
}