summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2010-08-14 11:40:20 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2010-08-14 11:40:20 +0000
commitff8d43ddad6e26f14218c212503c551f5a7d6b26 (patch)
treedb93afcaa8299032019e169de30afbb338d11b71
parent863d239aa2d1585a13b5610d1a8619d5fb9e3554 (diff)
downloadrockbox-ff8d43ddad6e26f14218c212503c551f5a7d6b26.zip
rockbox-ff8d43ddad6e26f14218c212503c551f5a7d6b26.tar.gz
rockbox-ff8d43ddad6e26f14218c212503c551f5a7d6b26.tar.bz2
rockbox-ff8d43ddad6e26f14218c212503c551f5a7d6b26.tar.xz
Change %xl/%xd to use proper labels instead of single letter labels. i.e %xl(playmode, playmode.bmp, 0, 0, 4) ... %xd(playmode, %mm). You can of course still use one letter labels if you really want. %xd(Aa) will only work with one letter labels.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27813 a1c6a512-1295-4272-9138-f99709370657
-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 90c5938..8bc7edf 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
}
/* traverse the image linked-list for an image */
-struct gui_img* find_image(char label, struct wps_data *data)
+struct gui_img* find_image(const char *label, struct wps_data *data)
{
struct skin_token_list *list = data->images;
while (list)
{
struct gui_img *img = (struct gui_img *)list->token->value.data;
- if (img->label == label)
+ if (!strcmp(img->label,label))
return img;
list = list->next;
}
@@ -132,7 +132,7 @@ struct gui_img* find_image(char label, struct wps_data *data)
#endif
/* traverse the viewport linked list for a viewport */
-struct skin_viewport* find_viewport(char *label, bool uivp, struct wps_data *data)
+struct skin_viewport* find_viewport(const char *label, bool uivp, struct wps_data *data)
{
struct skin_element *list = data->tree;
while (list)
@@ -227,18 +227,21 @@ static int parse_image_display(struct skin_element *element,
struct wps_token *token,
struct wps_data *wps_data)
{
- char *text = element->params[0].data.text;
- char label = text[0];
- char sublabel = text[1];
+ char *label = element->params[0].data.text;
+ char sublabel = label[1];
int subimage;
struct gui_img *img;
struct image_display *id = skin_buffer_alloc(sizeof(struct image_display));
+ if (element->params_count == 1)
+ {
+ /* backwards compatability. Allow %xd(Aa) to still work */
+ label[1] = '\0';
+ }
/* sanity check */
img = find_image(label, wps_data);
if (!img || !id)
{
- token->value.i = label; /* so debug works */
return WPS_ERROR_INVALID_PARAM;
}
id->label = label;
@@ -297,7 +300,7 @@ static int parse_image_load(struct skin_element *element,
y = element->params[3].data.number;
/* check the image number and load state */
- if(find_image(*id, wps_data))
+ if(find_image(id, wps_data))
{
/* Invalid image ID */
return WPS_ERROR_INVALID_PARAM;
@@ -307,7 +310,7 @@ static int parse_image_load(struct skin_element *element,
return WPS_ERROR_INVALID_PARAM;
/* save a pointer to the filename */
img->bm.data = (char*)filename;
- img->label = *id;
+ img->label = id;
img->x = x;
img->y = y;
img->num_subimages = 1;
diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c
index 47cc9c8..3cc506b 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,
case SKIN_TOKEN_IMAGE_PRELOAD_DISPLAY:
{
struct image_display *id = token->value.data;
- char n = id->label;
- struct gui_img *img = find_image(n, data);
+ const char* label = id->label;
+ struct gui_img *img = find_image(label, data);
if (img && img->loaded)
{
if (id->token == NULL)
diff --git a/apps/gui/skin_engine/wps_internals.h b/apps/gui/skin_engine/wps_internals.h
index d42977f..e1516bd 100644
--- a/apps/gui/skin_engine/wps_internals.h
+++ b/apps/gui/skin_engine/wps_internals.h
@@ -77,7 +77,7 @@ struct gui_img {
short int num_subimages; /* number of sub-images */
short int subimage_height; /* height of each sub-image */
struct bitmap bm;
- char label;
+ const char *label;
bool loaded; /* load state */
bool always_display; /* not using the preload/display mechanism */
int display;
@@ -85,7 +85,7 @@ struct gui_img {
};
struct image_display {
- char label;
+ const char *label;
int subimage;
struct wps_token *token; /* the token to get the subimage number from */
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,
char *buf, int buf_size, int limit, int *intval);
#endif
-struct gui_img* find_image(char label, struct wps_data *data);
-struct skin_viewport* find_viewport(char *label, bool uivp, struct wps_data *data);
+struct gui_img* find_image(const char *label, struct wps_data *data);
+struct skin_viewport* find_viewport(const char *label, bool uivp, struct wps_data *data);
#ifdef SIMULATOR