summaryrefslogtreecommitdiff
path: root/apps/gui
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui')
-rw-r--r--apps/gui/skin_engine/skin_parser.c21
-rw-r--r--apps/gui/skin_engine/skin_render.c4
-rw-r--r--apps/gui/skin_engine/wps_internals.h8
3 files changed, 18 insertions, 15 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index 90c5938e23..8bc7edf9c3 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -116,13 +116,13 @@ static void add_to_ll_chain(struct skin_token_list **list, struct skin_token_lis
116} 116}
117 117
118/* traverse the image linked-list for an image */ 118/* traverse the image linked-list for an image */
119struct gui_img* find_image(char label, struct wps_data *data) 119struct gui_img* find_image(const char *label, struct wps_data *data)
120{ 120{
121 struct skin_token_list *list = data->images; 121 struct skin_token_list *list = data->images;
122 while (list) 122 while (list)
123 { 123 {
124 struct gui_img *img = (struct gui_img *)list->token->value.data; 124 struct gui_img *img = (struct gui_img *)list->token->value.data;
125 if (img->label == label) 125 if (!strcmp(img->label,label))
126 return img; 126 return img;
127 list = list->next; 127 list = list->next;
128 } 128 }
@@ -132,7 +132,7 @@ struct gui_img* find_image(char label, struct wps_data *data)
132#endif 132#endif
133 133
134/* traverse the viewport linked list for a viewport */ 134/* traverse the viewport linked list for a viewport */
135struct skin_viewport* find_viewport(char *label, bool uivp, struct wps_data *data) 135struct skin_viewport* find_viewport(const char *label, bool uivp, struct wps_data *data)
136{ 136{
137 struct skin_element *list = data->tree; 137 struct skin_element *list = data->tree;
138 while (list) 138 while (list)
@@ -227,18 +227,21 @@ static int parse_image_display(struct skin_element *element,
227 struct wps_token *token, 227 struct wps_token *token,
228 struct wps_data *wps_data) 228 struct wps_data *wps_data)
229{ 229{
230 char *text = element->params[0].data.text; 230 char *label = element->params[0].data.text;
231 char label = text[0]; 231 char sublabel = label[1];
232 char sublabel = text[1];
233 int subimage; 232 int subimage;
234 struct gui_img *img; 233 struct gui_img *img;
235 struct image_display *id = skin_buffer_alloc(sizeof(struct image_display)); 234 struct image_display *id = skin_buffer_alloc(sizeof(struct image_display));
236 235
236 if (element->params_count == 1)
237 {
238 /* backwards compatability. Allow %xd(Aa) to still work */
239 label[1] = '\0';
240 }
237 /* sanity check */ 241 /* sanity check */
238 img = find_image(label, wps_data); 242 img = find_image(label, wps_data);
239 if (!img || !id) 243 if (!img || !id)
240 { 244 {
241 token->value.i = label; /* so debug works */
242 return WPS_ERROR_INVALID_PARAM; 245 return WPS_ERROR_INVALID_PARAM;
243 } 246 }
244 id->label = label; 247 id->label = label;
@@ -297,7 +300,7 @@ static int parse_image_load(struct skin_element *element,
297 y = element->params[3].data.number; 300 y = element->params[3].data.number;
298 301
299 /* check the image number and load state */ 302 /* check the image number and load state */
300 if(find_image(*id, wps_data)) 303 if(find_image(id, wps_data))
301 { 304 {
302 /* Invalid image ID */ 305 /* Invalid image ID */
303 return WPS_ERROR_INVALID_PARAM; 306 return WPS_ERROR_INVALID_PARAM;
@@ -307,7 +310,7 @@ static int parse_image_load(struct skin_element *element,
307 return WPS_ERROR_INVALID_PARAM; 310 return WPS_ERROR_INVALID_PARAM;
308 /* save a pointer to the filename */ 311 /* save a pointer to the filename */
309 img->bm.data = (char*)filename; 312 img->bm.data = (char*)filename;
310 img->label = *id; 313 img->label = id;
311 img->x = x; 314 img->x = x;
312 img->y = y; 315 img->y = y;
313 img->num_subimages = 1; 316 img->num_subimages = 1;
diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c
index 47cc9c8ad0..3cc506b800 100644
--- a/apps/gui/skin_engine/skin_render.c
+++ b/apps/gui/skin_engine/skin_render.c
@@ -146,8 +146,8 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info,
146 case SKIN_TOKEN_IMAGE_PRELOAD_DISPLAY: 146 case SKIN_TOKEN_IMAGE_PRELOAD_DISPLAY:
147 { 147 {
148 struct image_display *id = token->value.data; 148 struct image_display *id = token->value.data;
149 char n = id->label; 149 const char* label = id->label;
150 struct gui_img *img = find_image(n, data); 150 struct gui_img *img = find_image(label, data);
151 if (img && img->loaded) 151 if (img && img->loaded)
152 { 152 {
153 if (id->token == NULL) 153 if (id->token == NULL)
diff --git a/apps/gui/skin_engine/wps_internals.h b/apps/gui/skin_engine/wps_internals.h
index d42977ff19..e1516bd8fd 100644
--- a/apps/gui/skin_engine/wps_internals.h
+++ b/apps/gui/skin_engine/wps_internals.h
@@ -77,7 +77,7 @@ struct gui_img {
77 short int num_subimages; /* number of sub-images */ 77 short int num_subimages; /* number of sub-images */
78 short int subimage_height; /* height of each sub-image */ 78 short int subimage_height; /* height of each sub-image */
79 struct bitmap bm; 79 struct bitmap bm;
80 char label; 80 const char *label;
81 bool loaded; /* load state */ 81 bool loaded; /* load state */
82 bool always_display; /* not using the preload/display mechanism */ 82 bool always_display; /* not using the preload/display mechanism */
83 int display; 83 int display;
@@ -85,7 +85,7 @@ struct gui_img {
85}; 85};
86 86
87struct image_display { 87struct image_display {
88 char label; 88 const char *label;
89 int subimage; 89 int subimage;
90 struct wps_token *token; /* the token to get the subimage number from */ 90 struct wps_token *token; /* the token to get the subimage number from */
91 int offset; /* offset into the bitmap strip to start */ 91 int offset; /* offset into the bitmap strip to start */
@@ -348,8 +348,8 @@ const char *get_radio_token(struct wps_token *token, int preset_offset,
348 char *buf, int buf_size, int limit, int *intval); 348 char *buf, int buf_size, int limit, int *intval);
349#endif 349#endif
350 350
351struct gui_img* find_image(char label, struct wps_data *data); 351struct gui_img* find_image(const char *label, struct wps_data *data);
352struct skin_viewport* find_viewport(char *label, bool uivp, struct wps_data *data); 352struct skin_viewport* find_viewport(const char *label, bool uivp, struct wps_data *data);
353 353
354 354
355#ifdef SIMULATOR 355#ifdef SIMULATOR