implement drawXBM
This commit is contained in:
parent
4fd11fdfa9
commit
a287020096
|
@ -576,6 +576,26 @@ static int lu8g_drawVLine( lua_State *L )
|
|||
return 0;
|
||||
}
|
||||
|
||||
// Lua: u8g.drawXBM( self, x, y, width, height, data )
|
||||
static int lu8g_drawXBM( lua_State *L )
|
||||
{
|
||||
lu8g_userdata_t *lud;
|
||||
|
||||
if ((lud = get_lud( L )) == NULL)
|
||||
return 0;
|
||||
|
||||
u8g_uint_t args[4];
|
||||
lu8g_get_int_args( L, 2, 4, args );
|
||||
|
||||
const char *xbm_data = luaL_checkstring( L, (1+4) + 1 );
|
||||
if (xbm_data == NULL)
|
||||
return 0;
|
||||
|
||||
u8g_DrawXBM( lud, args[0], args[1], args[2], args[3], (const uint8_t *)xbm_data );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Lua: u8g.setScale2x2( self )
|
||||
static int lu8g_setScale2x2( lua_State *L )
|
||||
{
|
||||
|
@ -931,6 +951,7 @@ static const LUA_REG_TYPE lu8g_display_map[] =
|
|||
{ LSTRKEY( "drawPixel" ), LFUNCVAL( lu8g_drawPixel ) },
|
||||
{ LSTRKEY( "drawHLine" ), LFUNCVAL( lu8g_drawHLine ) },
|
||||
{ LSTRKEY( "drawVLine" ), LFUNCVAL( lu8g_drawVLine ) },
|
||||
{ LSTRKEY( "drawXBM" ), LFUNCVAL( lu8g_drawXBM ) },
|
||||
{ LSTRKEY( "setScale2x2" ), LFUNCVAL( lu8g_setScale2x2 ) },
|
||||
{ LSTRKEY( "undoScale" ), LFUNCVAL( lu8g_undoScale ) },
|
||||
{ LSTRKEY( "firstPage" ), LFUNCVAL( lu8g_firstPage ) },
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
|
||||
-- setup I2c and connect display
|
||||
function init_i2c_display()
|
||||
sda = 5
|
||||
scl = 6
|
||||
sla = 0x3c
|
||||
i2c.setup(0, sda, scl, i2c.SLOW)
|
||||
disp = u8g.ssd1306_128x64_i2c(sla)
|
||||
end
|
||||
|
||||
function xbm_picture()
|
||||
disp:setFont(u8g.font_6x10)
|
||||
disp:drawStr( 0, 10, "XBM picture")
|
||||
|
||||
disp:drawXBM( 0, 20, 38, 24, xbm_data )
|
||||
end
|
||||
|
||||
function bitmap_picture()
|
||||
disp:setFont(u8g.font_6x10)
|
||||
disp:drawStr( 0, 10, "Bitmap picture")
|
||||
|
||||
--disp:drawXBM( 0, 20, 38, 24, bitmap_data )
|
||||
end
|
||||
|
||||
-- the draw() routine
|
||||
function draw(draw_state)
|
||||
local component = bit.rshift(draw_state, 3)
|
||||
|
||||
if (component == 0) then
|
||||
xbm_picture(bit.band(draw_state, 7))
|
||||
elseif (component == 1) then
|
||||
bitmap_picture(bit.band(draw_state, 7))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function bitmap_test()
|
||||
init_i2c_display()
|
||||
|
||||
-- read XBM picture
|
||||
file.open("u8glib_logo.xbm", "r")
|
||||
xbm_data = file.read()
|
||||
file.close()
|
||||
|
||||
print("--- Starting Bitmap Test ---")
|
||||
dir = 0
|
||||
next_rotation = 0
|
||||
|
||||
local draw_state
|
||||
for draw_state = 1, 7 + 0*8, 1 do
|
||||
disp:firstPage()
|
||||
repeat
|
||||
draw(draw_state)
|
||||
until disp:nextPage() == false
|
||||
|
||||
tmr.wdclr()
|
||||
end
|
||||
|
||||
print("--- Bitmap Test done ---")
|
||||
end
|
||||
|
||||
bitmap_test()
|
Binary file not shown.
Loading…
Reference in New Issue