summaryrefslogtreecommitdiff
path: root/apps/gui/gwps-common.c
diff options
context:
space:
mode:
authorPeter D'Hoye <peter.dhoye@gmail.com>2006-05-21 11:00:02 +0000
committerPeter D'Hoye <peter.dhoye@gmail.com>2006-05-21 11:00:02 +0000
commit93b899d0fe3426ed50de06d20cdefb6d288e5ec2 (patch)
tree0dd0af26a5797a02f9a1f0139fde9fb60e1844bb /apps/gui/gwps-common.c
parent6ddb5f24294d68749e53c10a99ca09aca9f9f7eb (diff)
downloadrockbox-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.c52
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"