summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/gui/skin_engine/skin_fonts.h1
-rw-r--r--apps/gui/skin_engine/skin_parser.c37
-rw-r--r--firmware/export/font.h5
3 files changed, 19 insertions, 24 deletions
diff --git a/apps/gui/skin_engine/skin_fonts.h b/apps/gui/skin_engine/skin_fonts.h
index 095083818c..0a847ee64c 100644
--- a/apps/gui/skin_engine/skin_fonts.h
+++ b/apps/gui/skin_engine/skin_fonts.h
@@ -32,6 +32,7 @@
32#ifndef _SKINFONTS_H_ 32#ifndef _SKINFONTS_H_
33#define _SKINFONTS_H_ 33#define _SKINFONTS_H_
34 34
35#define MAXUSERFONTS (MAXFONTS - SYSTEMFONTCOUNT)
35 36
36void skin_font_init(void); 37void skin_font_init(void);
37 38
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index c4f8d1a8ca..76527f664a 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -935,6 +935,14 @@ 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
938 struct skin_token_list *list = new_skin_token_list_item(NULL, skin_vp); 946 struct skin_token_list *list = new_skin_token_list_item(NULL, skin_vp);
939 if (!list) 947 if (!list)
940 return WPS_ERROR_INVALID_PARAM; 948 return WPS_ERROR_INVALID_PARAM;
@@ -2080,7 +2088,6 @@ static bool skin_load_fonts(struct wps_data *data)
2080 /* don't spit out after the first failue to aid debugging */ 2088 /* don't spit out after the first failue to aid debugging */
2081 bool success = true; 2089 bool success = true;
2082 struct skin_token_list *vp_list; 2090 struct skin_token_list *vp_list;
2083 int font_id;
2084 /* walk though each viewport and assign its font */ 2091 /* walk though each viewport and assign its font */
2085 for(vp_list = data->viewports; vp_list; vp_list = vp_list->next) 2092 for(vp_list = data->viewports; vp_list; vp_list = vp_list->next)
2086 { 2093 {
@@ -2090,21 +2097,20 @@ static bool skin_load_fonts(struct wps_data *data)
2090 struct viewport *vp = &skin_vp->vp; 2097 struct viewport *vp = &skin_vp->vp;
2091 2098
2092 2099
2093 if (vp->font <= FONT_UI) 2100 if (vp->font < SYSTEMFONTCOUNT)
2094 { /* the usual case -> built-in fonts */ 2101 { /* the usual case -> built-in fonts */
2095#ifdef HAVE_REMOTE_LCD
2096 if (vp->font == FONT_UI)
2097 vp->font += curr_screen;
2098#endif
2099 continue; 2102 continue;
2100 } 2103 }
2101 font_id = vp->font; 2104
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;
2102 2108
2103 /* now find the corresponding skin_font */ 2109 /* now find the corresponding skin_font */
2104 struct skin_font *font = &skinfonts[font_id-FONT_FIRSTUSERFONT]; 2110 struct skin_font *font = &skinfonts[skin_font_id-FONT_FIRSTUSERFONT];
2105 if (!font) 2111 if (!font)
2106 { 2112 {
2107 DEBUGF("Could not find font %d\n", font_id); 2113 DEBUGF("Could not find font %d\n", skin_font_id);
2108 success = false; 2114 success = false;
2109 continue; 2115 continue;
2110 } 2116 }
@@ -2121,7 +2127,7 @@ static bool skin_load_fonts(struct wps_data *data)
2121 if (font->id < 0) 2127 if (font->id < 0)
2122 { 2128 {
2123 DEBUGF("Unable to load font %d: '%s.fnt'\n", 2129 DEBUGF("Unable to load font %d: '%s.fnt'\n",
2124 font_id, font->name); 2130 skin_font_id, font->name);
2125 success = false; 2131 success = false;
2126 continue; 2132 continue;
2127 } 2133 }
@@ -2154,14 +2160,6 @@ bool skin_data_load(enum screen_type screen, struct wps_data *wps_data,
2154 old_aa.width = wps_data->albumart->width; 2160 old_aa.width = wps_data->albumart->width;
2155 } 2161 }
2156#endif 2162#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
2165 2163
2166 skin_data_reset(wps_data); 2164 skin_data_reset(wps_data);
2167 curr_screen = screen; 2165 curr_screen = screen;
@@ -2183,9 +2181,6 @@ bool skin_data_load(enum screen_type screen, struct wps_data *wps_data,
2183 curr_vp->lines = NULL; 2181 curr_vp->lines = NULL;
2184 2182
2185 viewport_set_defaults(&curr_vp->vp, screen); 2183 viewport_set_defaults(&curr_vp->vp, screen);
2186#ifdef HAVE_LCD_BITMAP
2187 curr_vp->vp.font = FONT_UI;
2188#endif
2189 2184
2190 curr_line = NULL; 2185 curr_line = NULL;
2191 if (!skin_start_new_line(curr_vp, 0)) 2186 if (!skin_start_new_line(curr_vp, 0))
diff --git a/firmware/export/font.h b/firmware/export/font.h
index 406901d072..307db6967d 100644
--- a/firmware/export/font.h
+++ b/firmware/export/font.h
@@ -54,10 +54,9 @@ 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
58 57
59/* SYSFONT, FONT_UI, FONT_UI_REMOTE + MAXUSERFONTS fonts in skins */ 58/* SYSFONT, FONT_UI, FONT_UI_REMOTE + 8 fonts in skins */
60#define MAXFONTS (SYSTEMFONTCOUNT + MAXUSERFONTS) 59#define MAXFONTS 11
61 60
62/* 61/*
63 * .fnt loadable font file format definition 62 * .fnt loadable font file format definition