From 93b899d0fe3426ed50de06d20cdefb6d288e5ec2 Mon Sep 17 00:00:00 2001 From: Peter D'Hoye Date: Sun, 21 May 2006 11:00:02 +0000 Subject: Reworked backdrop handling. Fixes a bug that wasn't in the tracker yet ;) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9970 a1c6a512-1295-4272-9138-f99709370657 --- apps/gui/gwps-common.c | 52 ++++++++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 31 deletions(-) (limited to 'apps/gui/gwps-common.c') diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c index 349c92b9a0..5ab6ce8c82 100644 --- a/apps/gui/gwps-common.c +++ b/apps/gui/gwps-common.c @@ -146,44 +146,31 @@ bool wps_data_preload_tags(struct wps_data *data, char *buf, case 'X': /* Backdrop image - must be the same size as the LCD */ { - int ret = 0; - struct bitmap bm; char *ptr = buf+2; char *pos = NULL; char imgname[MAX_PATH]; /* format: %X|filename.bmp| */ - { - /* get filename */ - pos = strchr(ptr, '|'); - if ((pos - ptr) < - (int)sizeof(imgname)-ROCKBOX_DIR_LEN-2) - { - memcpy(imgname, bmpdir, bmpdirlen); - imgname[bmpdirlen] = '/'; - memcpy(&imgname[bmpdirlen+1], - ptr, pos - ptr); - imgname[bmpdirlen+1+pos-ptr] = 0; - } - else - /* filename too long */ - imgname[0] = 0; - - ptr = pos+1; - /* load the image */ - bm.data=(char*)&wps_backdrop[0][0]; - ret = read_bmp_file(imgname, &bm, - sizeof(wps_backdrop), FORMAT_NATIVE); - - if ((ret > 0) && (bm.width == LCD_WIDTH) - && (bm.height == LCD_HEIGHT)) { - data->has_backdrop=true; - return true; - } else { - return false; - } + /* get filename */ + pos = strchr(ptr, '|'); + if ((pos - ptr) < + (int)sizeof(imgname)-ROCKBOX_DIR_LEN-2) + { + memcpy(imgname, bmpdir, bmpdirlen); + imgname[bmpdirlen] = '/'; + memcpy(&imgname[bmpdirlen+1], + ptr, pos - ptr); + imgname[bmpdirlen+1+pos-ptr] = 0; } + else + { + /* filename too long */ + imgname[0] = 0; + } + + /* load the image */ + return load_wps_backdrop(imgname); } break; @@ -2460,6 +2447,9 @@ bool gui_wps_display(void) if(i == 0) { #ifdef HAVE_LCD_BITMAP +#ifdef HAVE_LCD_COLOR + unload_wps_backdrop(); +#endif wps_data_load(gui_wps[i].data, "%s%?it<%?in<%in. |>%it|%fn>\n" "%s%?ia<%ia|%?d2<%d2|(root)>>\n" -- cgit v1.2.3