diff options
Diffstat (limited to 'lib/luavgl/src/font.c')
| -rw-r--r-- | lib/luavgl/src/font.c | 44 |
1 files changed, 9 insertions, 35 deletions
diff --git a/lib/luavgl/src/font.c b/lib/luavgl/src/font.c index 87e0bbef..7751e0c7 100644 --- a/lib/luavgl/src/font.c +++ b/lib/luavgl/src/font.c @@ -1,49 +1,23 @@ #include "luavgl.h" #include "private.h" -static char *to_lower(char *str) -{ - for (char *s = str; *s; ++s) - *s = *s >= 'A' && *s <= 'Z' ? *s | 0x60 : *s; - return str; -} - -static char *luavgl_strchr(const char *s, char c) -{ - while (*s) { - if (c == *s) { - return (char *)s; - } - s++; - } - return NULL; -} - -/** - * Dynamic font family fallback is not supported. - * The fallback only happen when font creation fails and continue to try next - * one. Fallback logic in lvgl is supposed to be system wide. - * - * lvgl.Font("MiSansW medium, montserrat", 24, "normal") - */ static int luavgl_font_create(lua_State *L) { - if (!lua_isstring(L, 1)) { return luaL_argerror(L, 1, "expect string"); } - const char *name = lua_tostring(L, 1); - const lv_font_t *font = NULL; + if (!lua_isfunction(L, 2)) { + return luaL_argerror(L, 1, "expect function"); + } luavgl_ctx_t *ctx = luavgl_context(L); - if (ctx->make_font) { - font = ctx->make_font(name); + if (!ctx->make_font) { + return luaL_error(L, "cannot create font"); } - if (font) { - lua_pushlightuserdata(L, (void *)font); - return 1; - } + const char *name = lua_tostring(L, 1); + int cb_ref = luaL_ref(L, LUA_REGISTRYINDEX); + ctx->make_font(L, name, cb_ref); - return luaL_error(L, "cannot create font"); + return 0; } |
