mirror of https://github.com/bjornbytes/lovr.git
Font pixel densities;
This commit is contained in:
parent
390220f945
commit
0b57b48702
|
@ -14,8 +14,23 @@ int l_lovrFontSetLineHeight(lua_State* L) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int l_lovrFontGetPixelDensity(lua_State* L) {
|
||||||
|
Font* font = luax_checktype(L, 1, Font);
|
||||||
|
lua_pushnumber(L, lovrFontGetPixelDensity(font));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int l_lovrFontSetPixelDensity(lua_State* L) {
|
||||||
|
Font* font = luax_checktype(L, 1, Font);
|
||||||
|
float pixelDensity = luaL_optnumber(L, 2, -1);
|
||||||
|
lovrFontSetPixelDensity(font, pixelDensity);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
const luaL_Reg lovrFont[] = {
|
const luaL_Reg lovrFont[] = {
|
||||||
{ "getLineHeight", l_lovrFontGetLineHeight },
|
{ "getLineHeight", l_lovrFontGetLineHeight },
|
||||||
{ "setLineHeight", l_lovrFontSetLineHeight },
|
{ "setLineHeight", l_lovrFontSetLineHeight },
|
||||||
|
{ "getPixelDensity", l_lovrFontGetPixelDensity },
|
||||||
|
{ "setPixelDensity", l_lovrFontSetPixelDensity },
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
|
@ -29,6 +29,7 @@ Font* lovrFontCreate(FontData* fontData) {
|
||||||
font->fontData = fontData;
|
font->fontData = fontData;
|
||||||
font->texture = NULL;
|
font->texture = NULL;
|
||||||
font->lineHeight = 1.f;
|
font->lineHeight = 1.f;
|
||||||
|
font->pixelDensity = font->fontData->height;
|
||||||
vec_init(&font->vertices);
|
vec_init(&font->vertices);
|
||||||
map_init(&font->kerning);
|
map_init(&font->kerning);
|
||||||
|
|
||||||
|
@ -73,7 +74,7 @@ void lovrFontPrint(Font* font, const char* str, mat4 transform, float wrap, Hori
|
||||||
float cy = -font->fontData->height * .8;
|
float cy = -font->fontData->height * .8;
|
||||||
float u = atlas->width;
|
float u = atlas->width;
|
||||||
float v = atlas->height;
|
float v = atlas->height;
|
||||||
float scale = 1 / (float) font->fontData->height;
|
float scale = 1 / font->pixelDensity;
|
||||||
|
|
||||||
int len = strlen(str);
|
int len = strlen(str);
|
||||||
const char* start = str;
|
const char* start = str;
|
||||||
|
@ -191,6 +192,18 @@ int lovrFontGetKerning(Font* font, unsigned int left, unsigned int right) {
|
||||||
return kerning;
|
return kerning;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float lovrFontGetPixelDensity(Font* font) {
|
||||||
|
return font->pixelDensity;
|
||||||
|
}
|
||||||
|
|
||||||
|
void lovrFontSetPixelDensity(Font* font, float pixelDensity) {
|
||||||
|
if (pixelDensity <= 0) {
|
||||||
|
pixelDensity = font->fontData->height;
|
||||||
|
}
|
||||||
|
|
||||||
|
font->pixelDensity = pixelDensity;
|
||||||
|
}
|
||||||
|
|
||||||
Glyph* lovrFontGetGlyph(Font* font, uint32_t codepoint) {
|
Glyph* lovrFontGetGlyph(Font* font, uint32_t codepoint) {
|
||||||
char key[6];
|
char key[6];
|
||||||
snprintf(key, 6, "%d", codepoint);
|
snprintf(key, 6, "%d", codepoint);
|
||||||
|
|
|
@ -38,6 +38,7 @@ typedef struct {
|
||||||
map_int_t kerning;
|
map_int_t kerning;
|
||||||
vec_float_t vertices;
|
vec_float_t vertices;
|
||||||
float lineHeight;
|
float lineHeight;
|
||||||
|
float pixelDensity;
|
||||||
} Font;
|
} Font;
|
||||||
|
|
||||||
Font* lovrFontCreate(FontData* fontData);
|
Font* lovrFontCreate(FontData* fontData);
|
||||||
|
@ -46,6 +47,8 @@ void lovrFontPrint(Font* font, const char* str, mat4 transform, float wrap, Hori
|
||||||
float lovrFontGetLineHeight(Font* font);
|
float lovrFontGetLineHeight(Font* font);
|
||||||
void lovrFontSetLineHeight(Font* font, float lineHeight);
|
void lovrFontSetLineHeight(Font* font, float lineHeight);
|
||||||
int lovrFontGetKerning(Font* font, unsigned int a, unsigned int b);
|
int lovrFontGetKerning(Font* font, unsigned int a, unsigned int b);
|
||||||
|
float lovrFontGetPixelDensity(Font* font);
|
||||||
|
void lovrFontSetPixelDensity(Font* font, float pixelDensity);
|
||||||
Glyph* lovrFontGetGlyph(Font* font, uint32_t codepoint);
|
Glyph* lovrFontGetGlyph(Font* font, uint32_t codepoint);
|
||||||
void lovrFontAddGlyph(Font* font, Glyph* glyph);
|
void lovrFontAddGlyph(Font* font, Glyph* glyph);
|
||||||
void lovrFontExpandTexture(Font* font);
|
void lovrFontExpandTexture(Font* font);
|
||||||
|
|
Loading…
Reference in New Issue