Add string length in pixel func, add button label

This commit is contained in:
2016-08-19 00:25:43 +10:00
parent c33b37b0ea
commit 90068d2c64
9 changed files with 110 additions and 28 deletions
+26
View File
@@ -455,6 +455,10 @@ const i32 asset_loadTTFont(AssetManager *assetManager, MemoryArena *arena,
font->tex = &assetManager->textures[texlist_font];
font->atlas = &assetManager->texAtlas[texlist_font];
// NOTE(doyle): Formula derived from STB Font
font->verticalSpacing =
font->metrics.ascent - font->metrics.descent + font->metrics.lineGap;
for (i32 i = 0; i < numGlyphs; i++)
{
i32 glyphBitmapSizeInBytes = CAST(i32) glyphBitmaps[i].dimensions.w *
@@ -489,3 +493,25 @@ void asset_addAnimation(AssetManager *assetManager, MemoryArena *arena,
assetManager->anims[animId] = anim;
}
v2 asset_stringDimInPixels(const Font *const font, const char *const string)
{
v2 stringDim = V2(0, 0);
for (i32 i = 0; i < common_strlen(string); i++)
{
i32 codepoint = string[i];
#ifdef DENGINE_DEBUG
ASSERT(codepoint >= font->codepointRange.x &&
codepoint <= font->codepointRange.y)
#endif
i32 relativeIndex = CAST(i32)(codepoint - font->codepointRange.x);
v2 charDim = font->charMetrics[relativeIndex].trueSize;
stringDim.x += charDim.x;
stringDim.y = (charDim.y > stringDim.y) ? charDim.y : stringDim.y;
}
return stringDim;
}