summaryrefslogtreecommitdiff
path: root/lib/luavgl/src/font.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/luavgl/src/font.c')
-rw-r--r--lib/luavgl/src/font.c44
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;
}