diff --git a/apps/plugins/helloworld.lua b/apps/plugins/helloworld.lua index 047e31a644..c0e75540c7 100644 --- a/apps/plugins/helloworld.lua +++ b/apps/plugins/helloworld.lua @@ -35,7 +35,10 @@ function draw_image(img) local func = rb.lcd_bitmap_transparent_part if(func == nil) then - func = rb.lcd_bitmap_part -- Fallback version for mono targets + func = rb.lcd_bitmap_part -- Fallback version for grayscale targets + if(func == nil) then + func = rb.lcd_mono_bitmap_part -- Fallback version for mono targets + end end func(img, 0, 0, img:width(), x, y, img:width(), img:height()) rb.lcd_update() @@ -120,6 +123,9 @@ end local backdrop = rb.read_bmp_file("/.rockbox/icons/tango_small_viewers.bmp") -- This image should always be present? if(backdrop == nil) then backdrop = rb.read_bmp_file("/.rockbox/icons/tango_small_viewers_mono.bmp") -- Try using the mono version + if(backdrop == nil) then + backdrop = rb.read_bmp_file("/.rockbox/icons/viewers.bmp") -- Try using the builtin version + end end -- Draws the image using our own draw_image() function; see up draw_image(backdrop) diff --git a/apps/plugins/lua/rocklib.c b/apps/plugins/lua/rocklib.c index d501694b46..c64275c5b6 100644 --- a/apps/plugins/lua/rocklib.c +++ b/apps/plugins/lua/rocklib.c @@ -414,6 +414,33 @@ RB_WRAP(lcd_fillrect) return 0; } +RB_WRAP(lcd_mono_bitmap_part) +{ + struct rocklua_image *src = rli_checktype(L, 1); + int src_x = luaL_checkint(L, 2); + int src_y = luaL_checkint(L, 3); + int stride = luaL_checkint(L, 4); + int x = luaL_checkint(L, 5); + int y = luaL_checkint(L, 6); + int width = luaL_checkint(L, 7); + int height = luaL_checkint(L, 8); + + rb->lcd_mono_bitmap_part(src->data, src_x, src_y, stride, x, y, width, height); + return 0; +} + +RB_WRAP(lcd_mono_bitmap) +{ + struct rocklua_image *src = rli_checktype(L, 1); + int x = luaL_checkint(L, 2); + int y = luaL_checkint(L, 3); + int width = luaL_checkint(L, 4); + int height = luaL_checkint(L, 5); + + rb->lcd_mono_bitmap(src->data, x, y, width, height); + return 0; +} + #if LCD_DEPTH > 1 RB_WRAP(lcd_set_foreground) { @@ -871,6 +898,8 @@ static const luaL_Reg rocklib[] = R(lcd_vline), R(lcd_drawrect), R(lcd_fillrect), + R(lcd_mono_bitmap_part), + R(lcd_mono_bitmap), #if LCD_DEPTH > 1 R(lcd_set_foreground), R(lcd_get_foreground),