Commit 32774d42 authored by devsaurus's avatar devsaurus
Browse files

handle font data as light userdata

parent 7ae293d5
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#define LNUMKEY LRO_NUMKEY #define LNUMKEY LRO_NUMKEY
#define LNILKEY LRO_NILKEY #define LNILKEY LRO_NILKEY
#define LFUNCVAL LRO_FUNCVAL #define LFUNCVAL LRO_FUNCVAL
#define LUDATA LRO_LUDATA
#define LNUMVAL LRO_NUMVAL #define LNUMVAL LRO_NUMVAL
#define LROVAL LRO_ROVAL #define LROVAL LRO_ROVAL
#define LNILVAL LRO_NILVAL #define LNILVAL LRO_NILVAL
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
/* Macros one can use to define rotable entries */ /* Macros one can use to define rotable entries */
#ifndef LUA_PACK_VALUE #ifndef LUA_PACK_VALUE
#define LRO_FUNCVAL(v) {{.p = v}, LUA_TLIGHTFUNCTION} #define LRO_FUNCVAL(v) {{.p = v}, LUA_TLIGHTFUNCTION}
#define LRO_LUDATA(v) {{.p = v}, LUA_TLIGHTUSERDATA}
#define LRO_NUMVAL(v) {{.n = v}, LUA_TNUMBER} #define LRO_NUMVAL(v) {{.n = v}, LUA_TNUMBER}
#define LRO_ROVAL(v) {{.p = (void*)v}, LUA_TROTABLE} #define LRO_ROVAL(v) {{.p = (void*)v}, LUA_TROTABLE}
#define LRO_NILVAL {{.p = NULL}, LUA_TNIL} #define LRO_NILVAL {{.p = NULL}, LUA_TNIL}
...@@ -18,10 +19,12 @@ ...@@ -18,10 +19,12 @@
#define LRO_NUMVAL(v) {.value.n = v} #define LRO_NUMVAL(v) {.value.n = v}
#ifdef ELUA_ENDIAN_LITTLE #ifdef ELUA_ENDIAN_LITTLE
#define LRO_FUNCVAL(v) {{(int)v, add_sig(LUA_TLIGHTFUNCTION)}} #define LRO_FUNCVAL(v) {{(int)v, add_sig(LUA_TLIGHTFUNCTION)}}
#define LRO_LUDATA(v) {{(int)v, add_sig(LUA_TLIGHTUSERDATA)}}
#define LRO_ROVAL(v) {{(int)v, add_sig(LUA_TROTABLE)}} #define LRO_ROVAL(v) {{(int)v, add_sig(LUA_TROTABLE)}}
#define LRO_NILVAL {{0, add_sig(LUA_TNIL)}} #define LRO_NILVAL {{0, add_sig(LUA_TNIL)}}
#else // #ifdef ELUA_ENDIAN_LITTLE #else // #ifdef ELUA_ENDIAN_LITTLE
#define LRO_FUNCVAL(v) {{add_sig(LUA_TLIGHTFUNCTION), (int)v}} #define LRO_FUNCVAL(v) {{add_sig(LUA_TLIGHTFUNCTION), (int)v}}
#define LRO_LUDATA(v) {{add_sig(LUA_TLIGHTUSERDATA), (int)v}}
#define LRO_ROVAL(v) {{add_sig(LUA_TROTABLE), (int)v}} #define LRO_ROVAL(v) {{add_sig(LUA_TROTABLE), (int)v}}
#define LRO_NILVAL {{add_sig(LUA_TNIL), 0}} #define LRO_NILVAL {{add_sig(LUA_TNIL), 0}}
#endif // #ifdef ELUA_ENDIAN_LITTLE #endif // #ifdef ELUA_ENDIAN_LITTLE
......
...@@ -95,5 +95,9 @@ LUALIB_API int ( luaopen_ow )( lua_State *L ); ...@@ -95,5 +95,9 @@ LUALIB_API int ( luaopen_ow )( lua_State *L );
lua_pushnumber( L, val );\ lua_pushnumber( L, val );\
lua_setfield( L, -2, name ) lua_setfield( L, -2, name )
#define MOD_REG_LUDATA( L, name, val )\
lua_pushlightuserdata( L, val );\
lua_setfield( L, -2, name )
#endif #endif
...@@ -26,13 +26,13 @@ typedef struct _lu8g_userdata_t lu8g_userdata_t; ...@@ -26,13 +26,13 @@ typedef struct _lu8g_userdata_t lu8g_userdata_t;
// Font look-up array // Font look-up array
static const u8g_fntpgm_uint8_t *font_array[] = //static const u8g_fntpgm_uint8_t *font_array[] =
{ //{
#undef U8G_FONT_TABLE_ENTRY //#undef U8G_FONT_TABLE_ENTRY
#define U8G_FONT_TABLE_ENTRY(font) u8g_ ## font , //#define U8G_FONT_TABLE_ENTRY(font) u8g_ ## font ,
U8G_FONT_TABLE // U8G_FONT_TABLE
NULL // NULL
}; //};
static uint32_t *u8g_pgm_cached_iadr = NULL; static uint32_t *u8g_pgm_cached_iadr = NULL;
...@@ -102,9 +102,9 @@ static int lu8g_setFont( lua_State *L ) ...@@ -102,9 +102,9 @@ static int lu8g_setFont( lua_State *L )
if ((lud = get_lud( L )) == NULL) if ((lud = get_lud( L )) == NULL)
return 0; return 0;
lua_Integer fontnr = luaL_checkinteger( L, 2 ); u8g_fntpgm_uint8_t *font = (u8g_fntpgm_uint8_t *)lua_touserdata( L, 2 );
if ((fontnr >= 0) && (fontnr < (sizeof( font_array ) / sizeof( u8g_fntpgm_uint8_t )))) if (font != NULL)
u8g_SetFont( LU8G, font_array[fontnr] ); u8g_SetFont( LU8G, font );
return 0; return 0;
} }
...@@ -1128,7 +1128,7 @@ const LUA_REG_TYPE lu8g_map[] = ...@@ -1128,7 +1128,7 @@ const LUA_REG_TYPE lu8g_map[] =
// Register fonts // Register fonts
#undef U8G_FONT_TABLE_ENTRY #undef U8G_FONT_TABLE_ENTRY
#define U8G_FONT_TABLE_ENTRY(font) { LSTRKEY( #font ), LNUMVAL( __COUNTER__ ) }, #define U8G_FONT_TABLE_ENTRY(font) { LSTRKEY( #font ), LUDATA( (void *)(u8g_ ## font) ) },
U8G_FONT_TABLE U8G_FONT_TABLE
// Options for circle/ ellipse drwing // Options for circle/ ellipse drwing
...@@ -1164,7 +1164,7 @@ LUALIB_API int luaopen_u8g( lua_State *L ) ...@@ -1164,7 +1164,7 @@ LUALIB_API int luaopen_u8g( lua_State *L )
// Register fonts // Register fonts
#undef U8G_FONT_TABLE_ENTRY #undef U8G_FONT_TABLE_ENTRY
#define U8G_FONT_TABLE_ENTRY(font) MOD_REG_NUMBER( L, #font, __COUNTER__ ); #define U8G_FONT_TABLE_ENTRY(font) MOD_REG_LUDATA( L, #font, (void *)(u8g_ ## font) );
U8G_FONT_TABLE U8G_FONT_TABLE
// Options for circle/ ellipse drawing // Options for circle/ ellipse drawing
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment