diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2010-03-03 00:53:07 +0000 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2010-03-03 00:53:07 +0000 |
commit | f37b5078f69e8370a89e3adf53a6b9f98eb3a8cc (patch) | |
tree | 88d946d283f034411509e81436169002ff0d5d57 /apps/gui/skin_engine/skin_parser.c | |
parent | 9e611b1b009d6d5e02c10b5015cd4f2bc56f249e (diff) | |
download | rockbox-f37b5078f69e8370a89e3adf53a6b9f98eb3a8cc.tar.gz rockbox-f37b5078f69e8370a89e3adf53a6b9f98eb3a8cc.zip |
undo that last undo, make the font loader more forgiving to user errors
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24994 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui/skin_engine/skin_parser.c')
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index 76527f664a..d3d4911a16 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c | |||
@@ -935,14 +935,6 @@ static int parse_viewport(const char *wps_bufptr, | |||
935 | else | 935 | else |
936 | vp->flags &= ~VP_FLAG_ALIGN_RIGHT; /* ignore right-to-left languages */ | 936 | vp->flags &= ~VP_FLAG_ALIGN_RIGHT; /* ignore right-to-left languages */ |
937 | 937 | ||
938 | /* increment because font==2 and FONT_UI_REMOTE is ambiguous */ | ||
939 | if (vp->font > FONT_UI) | ||
940 | vp->font++; | ||
941 | #ifdef HAVE_REMOTE_LCD | ||
942 | if (vp->font == FONT_UI && curr_screen == SCREEN_REMOTE) | ||
943 | vp->font = FONT_UI_REMOTE; | ||
944 | #endif | ||
945 | |||
946 | struct skin_token_list *list = new_skin_token_list_item(NULL, skin_vp); | 938 | struct skin_token_list *list = new_skin_token_list_item(NULL, skin_vp); |
947 | if (!list) | 939 | if (!list) |
948 | return WPS_ERROR_INVALID_PARAM; | 940 | return WPS_ERROR_INVALID_PARAM; |
@@ -2088,6 +2080,7 @@ static bool skin_load_fonts(struct wps_data *data) | |||
2088 | /* don't spit out after the first failue to aid debugging */ | 2080 | /* don't spit out after the first failue to aid debugging */ |
2089 | bool success = true; | 2081 | bool success = true; |
2090 | struct skin_token_list *vp_list; | 2082 | struct skin_token_list *vp_list; |
2083 | int font_id; | ||
2091 | /* walk though each viewport and assign its font */ | 2084 | /* walk though each viewport and assign its font */ |
2092 | for(vp_list = data->viewports; vp_list; vp_list = vp_list->next) | 2085 | for(vp_list = data->viewports; vp_list; vp_list = vp_list->next) |
2093 | { | 2086 | { |
@@ -2097,20 +2090,21 @@ static bool skin_load_fonts(struct wps_data *data) | |||
2097 | struct viewport *vp = &skin_vp->vp; | 2090 | struct viewport *vp = &skin_vp->vp; |
2098 | 2091 | ||
2099 | 2092 | ||
2100 | if (vp->font < SYSTEMFONTCOUNT) | 2093 | if (vp->font <= FONT_UI) |
2101 | { /* the usual case -> built-in fonts */ | 2094 | { /* the usual case -> built-in fonts */ |
2095 | #ifdef HAVE_REMOTE_LCD | ||
2096 | if (vp->font == FONT_UI) | ||
2097 | vp->font += curr_screen; | ||
2098 | #endif | ||
2102 | continue; | 2099 | continue; |
2103 | } | 2100 | } |
2104 | 2101 | font_id = vp->font; | |
2105 | /* decrement, because font has been incremented in viewport parsing | ||
2106 | * due to the FONT_UI_REMOTE ambiguity */ | ||
2107 | int skin_font_id = vp->font-1; | ||
2108 | 2102 | ||
2109 | /* now find the corresponding skin_font */ | 2103 | /* now find the corresponding skin_font */ |
2110 | struct skin_font *font = &skinfonts[skin_font_id-FONT_FIRSTUSERFONT]; | 2104 | struct skin_font *font = &skinfonts[font_id-FONT_FIRSTUSERFONT]; |
2111 | if (!font) | 2105 | if (!font->name) |
2112 | { | 2106 | { |
2113 | DEBUGF("Could not find font %d\n", skin_font_id); | 2107 | DEBUGF("font %d not specified\n", font_id); |
2114 | success = false; | 2108 | success = false; |
2115 | continue; | 2109 | continue; |
2116 | } | 2110 | } |
@@ -2127,7 +2121,7 @@ static bool skin_load_fonts(struct wps_data *data) | |||
2127 | if (font->id < 0) | 2121 | if (font->id < 0) |
2128 | { | 2122 | { |
2129 | DEBUGF("Unable to load font %d: '%s.fnt'\n", | 2123 | DEBUGF("Unable to load font %d: '%s.fnt'\n", |
2130 | skin_font_id, font->name); | 2124 | font_id, font->name); |
2131 | success = false; | 2125 | success = false; |
2132 | continue; | 2126 | continue; |
2133 | } | 2127 | } |
@@ -2160,6 +2154,14 @@ bool skin_data_load(enum screen_type screen, struct wps_data *wps_data, | |||
2160 | old_aa.width = wps_data->albumart->width; | 2154 | old_aa.width = wps_data->albumart->width; |
2161 | } | 2155 | } |
2162 | #endif | 2156 | #endif |
2157 | #ifdef HAVE_LCD_BITMAP | ||
2158 | int i; | ||
2159 | for (i=0;i<MAXUSERFONTS;i++) | ||
2160 | { | ||
2161 | skinfonts[i].id = -1; | ||
2162 | skinfonts[i].name = NULL; | ||
2163 | } | ||
2164 | #endif | ||
2163 | 2165 | ||
2164 | skin_data_reset(wps_data); | 2166 | skin_data_reset(wps_data); |
2165 | curr_screen = screen; | 2167 | curr_screen = screen; |
@@ -2181,6 +2183,9 @@ bool skin_data_load(enum screen_type screen, struct wps_data *wps_data, | |||
2181 | curr_vp->lines = NULL; | 2183 | curr_vp->lines = NULL; |
2182 | 2184 | ||
2183 | viewport_set_defaults(&curr_vp->vp, screen); | 2185 | viewport_set_defaults(&curr_vp->vp, screen); |
2186 | #ifdef HAVE_LCD_BITMAP | ||
2187 | curr_vp->vp.font = FONT_UI; | ||
2188 | #endif | ||
2184 | 2189 | ||
2185 | curr_line = NULL; | 2190 | curr_line = NULL; |
2186 | if (!skin_start_new_line(curr_vp, 0)) | 2191 | if (!skin_start_new_line(curr_vp, 0)) |