diff options
| author | Peter D'Hoye <peter.dhoye@gmail.com> | 2006-05-21 11:00:02 +0000 |
|---|---|---|
| committer | Peter D'Hoye <peter.dhoye@gmail.com> | 2006-05-21 11:00:02 +0000 |
| commit | 93b899d0fe3426ed50de06d20cdefb6d288e5ec2 (patch) | |
| tree | 0dd0af26a5797a02f9a1f0139fde9fb60e1844bb /apps/gui | |
| parent | 6ddb5f24294d68749e53c10a99ca09aca9f9f7eb (diff) | |
| download | rockbox-93b899d0fe3426ed50de06d20cdefb6d288e5ec2.zip rockbox-93b899d0fe3426ed50de06d20cdefb6d288e5ec2.tar.gz rockbox-93b899d0fe3426ed50de06d20cdefb6d288e5ec2.tar.bz2 rockbox-93b899d0fe3426ed50de06d20cdefb6d288e5ec2.tar.xz | |
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
Diffstat (limited to 'apps/gui')
| -rw-r--r-- | apps/gui/gwps-common.c | 52 | ||||
| -rw-r--r-- | apps/gui/gwps.c | 55 | ||||
| -rw-r--r-- | apps/gui/gwps.h | 4 |
3 files changed, 37 insertions, 74 deletions
diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c index 349c92b..5ab6ce8 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" diff --git a/apps/gui/gwps.c b/apps/gui/gwps.c index b84027c..d7a27e8 100644 --- a/apps/gui/gwps.c +++ b/apps/gui/gwps.c @@ -105,18 +105,8 @@ long gui_wps_show(void) gui_wps_set_margin(&gui_wps[i]); } #ifdef HAVE_LCD_COLOR - gui_wps[SCREEN_MAIN].data->old_backdrop = lcd_get_backdrop(); - if (gui_wps[SCREEN_MAIN].data->has_backdrop) - { - lcd_set_backdrop(&wps_backdrop[0][0]); - } - else - { - /* wps has no backdrop, so clear it in case we're switching wps */ - lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop); - } - -#endif + show_wps_backdrop(); +#endif /* HAVE_LCD_COLOR */ #endif #ifdef AB_REPEAT_ENABLE @@ -241,12 +231,11 @@ long gui_wps_show(void) case WPS_RC_CONTEXT: #endif #ifdef HAVE_LCD_COLOR - lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop); + show_main_backdrop(); #endif onplay(wps_state.id3->path, TREE_ATTR_MPA, CONTEXT_WPS); #ifdef HAVE_LCD_COLOR - if (gui_wps[SCREEN_MAIN].data->has_backdrop) - lcd_set_backdrop(&wps_backdrop[0][0]); + show_wps_backdrop(); #endif #ifdef HAVE_LCD_BITMAP FOR_NB_SCREENS(i) @@ -557,16 +546,12 @@ long gui_wps_show(void) gui_wps[i].display->stop_scroll(); #ifdef HAVE_LCD_COLOR - lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop); + show_main_backdrop(); #endif if (main_menu()) return true; #ifdef HAVE_LCD_COLOR - if(global_settings.backdrop_file[0] == 0) - gui_wps[SCREEN_MAIN].data->old_backdrop = NULL; - - if (gui_wps[SCREEN_MAIN].data->has_backdrop) - lcd_set_backdrop(&wps_backdrop[0][0]); + show_wps_backdrop(); #endif #ifdef HAVE_LCD_BITMAP FOR_NB_SCREENS(i) @@ -596,13 +581,12 @@ long gui_wps_show(void) case WPS_RC_QUICK: #endif #ifdef HAVE_LCD_COLOR - lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop); + show_main_backdrop(); #endif if (quick_screen_quick(button)) return SYS_USB_CONNECTED; #ifdef HAVE_LCD_COLOR - if (gui_wps[SCREEN_MAIN].data->has_backdrop) - lcd_set_backdrop(&wps_backdrop[0][0]); + show_wps_backdrop(); #endif #ifdef HAVE_LCD_BITMAP FOR_NB_SCREENS(i) @@ -629,13 +613,12 @@ long gui_wps_show(void) case BUTTON_ON | BUTTON_UP: case BUTTON_ON | BUTTON_DOWN: #ifdef HAVE_LCD_COLOR - lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop); + show_main_backdrop(); #endif if (1 == pitch_screen()) return SYS_USB_CONNECTED; #ifdef HAVE_LCD_COLOR - if (gui_wps[SCREEN_MAIN].data->has_backdrop) - lcd_set_backdrop(&wps_backdrop[0][0]); + show_wps_backdrop(); #endif restore = true; break; @@ -730,12 +713,11 @@ long gui_wps_show(void) #ifdef WPS_ID3 case WPS_ID3: #ifdef HAVE_LCD_COLOR - lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop); + show_main_backdrop(); #endif browse_id3(); #ifdef HAVE_LCD_COLOR - if (gui_wps[SCREEN_MAIN].data->has_backdrop) - lcd_set_backdrop(&wps_backdrop[0][0]); + show_wps_backdrop(); #endif #ifdef HAVE_LCD_BITMAP FOR_NB_SCREENS(i) @@ -754,19 +736,14 @@ long gui_wps_show(void) case SYS_POWEROFF: bookmark_autobookmark(); #ifdef HAVE_LCD_COLOR - lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop); + show_main_backdrop(); #endif default_event_handler(SYS_POWEROFF); break; default: if(default_event_handler(button) == SYS_USB_CONNECTED) - { -#ifdef HAVE_LCD_COLOR - lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop); -#endif return SYS_USB_CONNECTED; - } update_track = true; break; } @@ -887,9 +864,6 @@ void wps_data_init(struct wps_data *wps_data) wps_data->format_buffer[0] = '\0'; wps_data->wps_loaded = false; wps_data->peak_meter_enabled = false; -#ifdef HAVE_LCD_COLOR - wps_data->has_backdrop = false; -#endif } static void wps_reset(struct wps_data *data) @@ -1075,4 +1049,7 @@ void gui_sync_wps_init(void) gui_wps_set_data(&gui_wps[i], &wps_datas[i]); gui_wps_set_statusbar(&gui_wps[i], &statusbars.statusbars[i]); } +#ifdef HAVE_LCD_COLOR + unload_wps_backdrop(); +#endif } diff --git a/apps/gui/gwps.h b/apps/gui/gwps.h index 08299ac..3911ad1 100644 --- a/apps/gui/gwps.h +++ b/apps/gui/gwps.h @@ -367,10 +367,6 @@ struct wps_data int progress_end; bool wps_loaded; bool peak_meter_enabled; -#ifdef HAVE_LCD_COLOR - bool has_backdrop; - fb_data* old_backdrop; -#endif }; /* initial setup of wps_data */ |