From 7fdfa56454c0fab8cbdfcf50d852dc6fa90d4435 Mon Sep 17 00:00:00 2001 From: Nicolas Pennequin Date: Wed, 25 Apr 2007 21:44:56 +0000 Subject: Add backdrop support for LCD remotes with depth > 1-bit. Only WPS backdrops, but the groundwork is laid for main backdrops too (all that's really needed are menus to set/clear them). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13263 a1c6a512-1295-4272-9138-f99709370657 --- apps/recorder/backdrop.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'apps/recorder/backdrop.c') diff --git a/apps/recorder/backdrop.c b/apps/recorder/backdrop.c index e31543549d..0d023602be 100644 --- a/apps/recorder/backdrop.c +++ b/apps/recorder/backdrop.c @@ -20,6 +20,9 @@ #include #include "config.h" #include "lcd.h" +#ifdef HAVE_REMOTE_LCD +#include "lcd-remote.h" +#endif #include "backdrop.h" #if LCD_DEPTH >= 8 @@ -30,6 +33,11 @@ static fb_data main_backdrop[LCD_FBHEIGHT][LCD_FBWIDTH]; static fb_data wps_backdrop[LCD_FBHEIGHT][LCD_FBWIDTH]; #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 +static fb_remote_data remote_wps_backdrop[LCD_REMOTE_FBHEIGHT][LCD_REMOTE_FBWIDTH]; +static bool remote_wps_backdrop_valid = false; +#endif + static bool main_backdrop_valid = false; static bool wps_backdrop_valid = false; @@ -93,3 +101,55 @@ void show_wps_backdrop(void) show_main_backdrop(); } } + +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + +static bool load_remote_backdrop(char* filename, fb_remote_data* backdrop_buffer) +{ + struct bitmap bm; + int ret; + + /* load the image */ + bm.data=(char*)backdrop_buffer; + ret = read_bmp_file(filename, &bm, sizeof(main_backdrop), + FORMAT_NATIVE | FORMAT_DITHER | FORMAT_REMOTE); + + if ((ret > 0) && (bm.width == LCD_REMOTE_WIDTH) && (bm.height == LCD_REMOTE_HEIGHT)) + { + return true; + } + else + { + return false; + } +} + +bool load_remote_wps_backdrop(char* filename) +{ + remote_wps_backdrop_valid = load_remote_backdrop(filename, &remote_wps_backdrop[0][0]); + return remote_wps_backdrop_valid; +} + +void unload_remote_wps_backdrop(void) +{ + remote_wps_backdrop_valid = false; +} + +void show_remote_wps_backdrop(void) +{ + /* if no wps backdrop, fall back to main backdrop */ + if(remote_wps_backdrop_valid) + { + lcd_remote_set_backdrop(&remote_wps_backdrop[0][0]); + } + else + { + show_remote_main_backdrop(); + } +} + +void show_remote_main_backdrop(void) +{ + lcd_remote_set_backdrop(NULL); +} +#endif -- cgit v1.2.3