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/gwps-common.c | |
parent | 6ddb5f24294d68749e53c10a99ca09aca9f9f7eb (diff) | |
download | rockbox-93b899d0fe3426ed50de06d20cdefb6d288e5ec2.tar.gz rockbox-93b899d0fe3426ed50de06d20cdefb6d288e5ec2.zip |
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/gwps-common.c')
-rw-r--r-- | apps/gui/gwps-common.c | 52 |
1 files changed, 21 insertions, 31 deletions
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, | |||
146 | case 'X': | 146 | case 'X': |
147 | /* Backdrop image - must be the same size as the LCD */ | 147 | /* Backdrop image - must be the same size as the LCD */ |
148 | { | 148 | { |
149 | int ret = 0; | ||
150 | struct bitmap bm; | ||
151 | char *ptr = buf+2; | 149 | char *ptr = buf+2; |
152 | char *pos = NULL; | 150 | char *pos = NULL; |
153 | char imgname[MAX_PATH]; | 151 | char imgname[MAX_PATH]; |
154 | 152 | ||
155 | /* format: %X|filename.bmp| */ | 153 | /* format: %X|filename.bmp| */ |
156 | { | ||
157 | /* get filename */ | ||
158 | pos = strchr(ptr, '|'); | ||
159 | if ((pos - ptr) < | ||
160 | (int)sizeof(imgname)-ROCKBOX_DIR_LEN-2) | ||
161 | { | ||
162 | memcpy(imgname, bmpdir, bmpdirlen); | ||
163 | imgname[bmpdirlen] = '/'; | ||
164 | memcpy(&imgname[bmpdirlen+1], | ||
165 | ptr, pos - ptr); | ||
166 | imgname[bmpdirlen+1+pos-ptr] = 0; | ||
167 | } | ||
168 | else | ||
169 | /* filename too long */ | ||
170 | imgname[0] = 0; | ||
171 | |||
172 | ptr = pos+1; | ||
173 | 154 | ||
174 | /* load the image */ | 155 | /* get filename */ |
175 | bm.data=(char*)&wps_backdrop[0][0]; | 156 | pos = strchr(ptr, '|'); |
176 | ret = read_bmp_file(imgname, &bm, | 157 | if ((pos - ptr) < |
177 | sizeof(wps_backdrop), FORMAT_NATIVE); | 158 | (int)sizeof(imgname)-ROCKBOX_DIR_LEN-2) |
178 | 159 | { | |
179 | if ((ret > 0) && (bm.width == LCD_WIDTH) | 160 | memcpy(imgname, bmpdir, bmpdirlen); |
180 | && (bm.height == LCD_HEIGHT)) { | 161 | imgname[bmpdirlen] = '/'; |
181 | data->has_backdrop=true; | 162 | memcpy(&imgname[bmpdirlen+1], |
182 | return true; | 163 | ptr, pos - ptr); |
183 | } else { | 164 | imgname[bmpdirlen+1+pos-ptr] = 0; |
184 | return false; | ||
185 | } | ||
186 | } | 165 | } |
166 | else | ||
167 | { | ||
168 | /* filename too long */ | ||
169 | imgname[0] = 0; | ||
170 | } | ||
171 | |||
172 | /* load the image */ | ||
173 | return load_wps_backdrop(imgname); | ||
187 | } | 174 | } |
188 | 175 | ||
189 | break; | 176 | break; |
@@ -2460,6 +2447,9 @@ bool gui_wps_display(void) | |||
2460 | if(i == 0) | 2447 | if(i == 0) |
2461 | { | 2448 | { |
2462 | #ifdef HAVE_LCD_BITMAP | 2449 | #ifdef HAVE_LCD_BITMAP |
2450 | #ifdef HAVE_LCD_COLOR | ||
2451 | unload_wps_backdrop(); | ||
2452 | #endif | ||
2463 | wps_data_load(gui_wps[i].data, | 2453 | wps_data_load(gui_wps[i].data, |
2464 | "%s%?it<%?in<%in. |>%it|%fn>\n" | 2454 | "%s%?it<%?in<%in. |>%it|%fn>\n" |
2465 | "%s%?ia<%ia|%?d2<%d2|(root)>>\n" | 2455 | "%s%?ia<%ia|%?d2<%d2|(root)>>\n" |