diff options
-rw-r--r-- | apps/gui/skin_engine/skin_fonts.h | 1 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 39 | ||||
-rw-r--r-- | firmware/export/font.h | 5 |
3 files changed, 25 insertions, 20 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 | ||
37 | void skin_font_init(void); | 36 | void 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)) |
diff --git a/firmware/export/font.h b/firmware/export/font.h index 307db6967d..406901d072 100644 --- a/firmware/export/font.h +++ b/firmware/export/font.h | |||
@@ -54,9 +54,10 @@ enum { | |||
54 | SYSTEMFONTCOUNT, /* Number of fonts reserved for the system and ui */ | 54 | SYSTEMFONTCOUNT, /* Number of fonts reserved for the system and ui */ |
55 | FONT_FIRSTUSERFONT = 2 | 55 | FONT_FIRSTUSERFONT = 2 |
56 | }; | 56 | }; |
57 | #define MAXUSERFONTS 8 | ||
57 | 58 | ||
58 | /* SYSFONT, FONT_UI, FONT_UI_REMOTE + 8 fonts in skins */ | 59 | /* SYSFONT, FONT_UI, FONT_UI_REMOTE + MAXUSERFONTS fonts in skins */ |
59 | #define MAXFONTS 11 | 60 | #define MAXFONTS (SYSTEMFONTCOUNT + MAXUSERFONTS) |
60 | 61 | ||
61 | /* | 62 | /* |
62 | * .fnt loadable font file format definition | 63 | * .fnt loadable font file format definition |