summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2010-03-03 00:53:07 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2010-03-03 00:53:07 +0000
commitf37b5078f69e8370a89e3adf53a6b9f98eb3a8cc (patch)
tree88d946d283f034411509e81436169002ff0d5d57 /apps
parent9e611b1b009d6d5e02c10b5015cd4f2bc56f249e (diff)
downloadrockbox-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')
-rw-r--r--apps/gui/skin_engine/skin_fonts.h1
-rw-r--r--apps/gui/skin_engine/skin_parser.c39
2 files changed, 22 insertions, 18 deletions
diff --git a/apps/gui/skin_engine/skin_fonts.h b/apps/gui/skin_engine/skin_fonts.h
index 0a847ee64c..095083818c 100644
--- a/apps/gui/skin_engine/skin_fonts.h
+++ b/apps/gui/skin_engine/skin_fonts.h
@@ -32,7 +32,6 @@
32#ifndef _SKINFONTS_H_ 32#ifndef _SKINFONTS_H_
33#define _SKINFONTS_H_ 33#define _SKINFONTS_H_
34 34
35#define MAXUSERFONTS (MAXFONTS - SYSTEMFONTCOUNT)
36 35
37void skin_font_init(void); 36void skin_font_init(void);
38 37
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))