3DS: Scale font based on glyph heights (fixes #961)
Vicki Pfau vi@endrift.com
Mon, 15 Jan 2018 05:48:19 -0800
2 files changed,
7 insertions(+),
8 deletions(-)
M
CHANGES
→
CHANGES
@@ -58,6 +58,7 @@ - GBA Cheats: Allow multiple ROM patches in the same slot
- GB: Skip BIOS option now works - Libretro: Add frameskip option - GBA Memory: 64 MiB GBA Video cartridge support + - 3DS: Scale font based on glyph heights (fixes mgba.io/i/961) 0.6.1: (2017-10-01) Bugfixes:
M
src/platform/3ds/gui-font.c
→
src/platform/3ds/gui-font.c
@@ -11,13 +11,12 @@ #include "icons.h"
#include "ctr-gpu.h" -#define CELL_HEIGHT 16 -#define CELL_WIDTH 16 -#define FONT_SIZE 0.52f +#define FONT_SIZE 15.6f struct GUIFont { C3D_Tex* sheets; C3D_Tex icons; + float size; }; struct GUIFont* GUIFontCreate(void) {@@ -29,6 +28,7 @@ }
C3D_Tex* tex; TGLP_s* glyphInfo = fontGetGlyphInfo(); + guiFont->size = FONT_SIZE / glyphInfo->cellHeight; guiFont->sheets = malloc(sizeof(*guiFont->sheets) * glyphInfo->nSheets); int i;@@ -59,16 +59,14 @@ free(font);
} unsigned GUIFontHeight(const struct GUIFont* font) { - UNUSED(font); - return fontGetInfo()->lineFeed * FONT_SIZE; + return fontGetInfo()->lineFeed * font->size; } unsigned GUIFontGlyphWidth(const struct GUIFont* font, uint32_t glyph) { - UNUSED(font); int index = fontGlyphIndexFromCodePoint(glyph); charWidthInfo_s* info = fontGetCharWidthInfo(index); if (info) { - return info->charWidth * FONT_SIZE; + return info->charWidth * font->size; } return 0; }@@ -108,7 +106,7 @@ u16 u = tex->width * data.texcoord.left;
u16 v = tex->height * data.texcoord.bottom; ctrAddRectEx(color, x, y, - tex->width * width * FONT_SIZE, tex->height * height * -FONT_SIZE, + tex->width * width * font->size, tex->height * height * -font->size, u, v, tex->width * width, tex->height * height, 0); }