From 153ac73c04ec06a2402c78cf24b8a8908749c70d Mon Sep 17 00:00:00 2001 From: Maurus Cuelenaere Date: Mon, 15 Jun 2009 13:46:10 +0000 Subject: Fix helloworld.lua for mono targets (+ add lcd_mono_bitmap() & lcd_mono_bitmap_part() to Lua API) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21291 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/helloworld.lua | 8 +++++++- apps/plugins/lua/rocklib.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) 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), -- cgit v1.2.3