Font:hasGlyphs;

This commit is contained in:
bjorn 2018-11-11 17:29:41 -08:00
parent 20ddad4a9e
commit 112d775635
3 changed files with 21 additions and 0 deletions

View File

@ -59,6 +59,21 @@ int l_lovrFontSetPixelDensity(lua_State* L) {
return 0; return 0;
} }
int l_lovrFontHasGlyphs(lua_State* L) {
Font* font = luax_checktype(L, 1, Font);
Rasterizer* rasterizer = lovrFontGetRasterizer(font);
bool hasGlyphs = true;
for (int i = 2; i <= lua_gettop(L); i++) {
if (lua_type(L, i) == LUA_TSTRING) {
hasGlyphs &= lovrRasterizerHasGlyphs(rasterizer, lua_tostring(L, i));
} else {
hasGlyphs &= lovrRasterizerHasGlyph(rasterizer, luaL_checkinteger(L, i));
}
}
lua_pushboolean(L, hasGlyphs);
return 1;
}
const luaL_Reg lovrFont[] = { const luaL_Reg lovrFont[] = {
{ "getWidth", l_lovrFontGetWidth }, { "getWidth", l_lovrFontGetWidth },
{ "getHeight", l_lovrFontGetHeight }, { "getHeight", l_lovrFontGetHeight },
@ -69,5 +84,6 @@ const luaL_Reg lovrFont[] = {
{ "setLineHeight", l_lovrFontSetLineHeight }, { "setLineHeight", l_lovrFontSetLineHeight },
{ "getPixelDensity", l_lovrFontGetPixelDensity }, { "getPixelDensity", l_lovrFontGetPixelDensity },
{ "setPixelDensity", l_lovrFontSetPixelDensity }, { "setPixelDensity", l_lovrFontSetPixelDensity },
{ "hasGlyphs", l_lovrFontHasGlyphs },
{ NULL, NULL } { NULL, NULL }
}; };

View File

@ -68,6 +68,10 @@ void lovrFontDestroy(void* ref) {
free(font); free(font);
} }
Rasterizer* lovrFontGetRasterizer(Font* font) {
return font->rasterizer;
}
void lovrFontRender(Font* font, const char* str, float wrap, HorizontalAlign halign, VerticalAlign valign, VertexPointer vertices, float* offsety, uint32_t* vertexCount) { void lovrFontRender(Font* font, const char* str, float wrap, HorizontalAlign halign, VerticalAlign valign, VertexPointer vertices, float* offsety, uint32_t* vertexCount) {
FontAtlas* atlas = &font->atlas; FontAtlas* atlas = &font->atlas;

View File

@ -41,6 +41,7 @@ typedef struct {
Font* lovrFontCreate(Rasterizer* rasterizer); Font* lovrFontCreate(Rasterizer* rasterizer);
void lovrFontDestroy(void* ref); void lovrFontDestroy(void* ref);
Rasterizer* lovrFontGetRasterizer(Font* font);
void lovrFontRender(Font* font, const char* str, float wrap, HorizontalAlign halign, VerticalAlign valign, VertexPointer vertices, float* offsety, uint32_t* vertexCount); void lovrFontRender(Font* font, const char* str, float wrap, HorizontalAlign halign, VerticalAlign valign, VertexPointer vertices, float* offsety, uint32_t* vertexCount);
float lovrFontGetWidth(Font* font, const char* string, float wrap); float lovrFontGetWidth(Font* font, const char* string, float wrap);
float lovrFontGetHeight(Font* font); float lovrFontGetHeight(Font* font);