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.c33
-rw-r--r--firmware/export/font.h5
3 files changed, 20 insertions, 19 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 13e2df5889..1ebfee2c04 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;
@@ -2082,6 +2074,7 @@ static bool skin_load_fonts(struct wps_data *data)
2082 /* don't spit out after the first failue to aid debugging */ 2074 /* don't spit out after the first failue to aid debugging */
2083 bool success = true; 2075 bool success = true;
2084 struct skin_token_list *vp_list; 2076 struct skin_token_list *vp_list;
2077 int font_id;
2085 /* walk though each viewport and assign its font */ 2078 /* walk though each viewport and assign its font */
2086 for(vp_list = data->viewports; vp_list; vp_list = vp_list->next) 2079 for(vp_list = data->viewports; vp_list; vp_list = vp_list->next)
2087 { 2080 {
@@ -2091,20 +2084,21 @@ static bool skin_load_fonts(struct wps_data *data)
2091 struct viewport *vp = &skin_vp->vp; 2084 struct viewport *vp = &skin_vp->vp;
2092 2085
2093 2086
2094 if (vp->font < SYSTEMFONTCOUNT) 2087 if (vp->font <= FONT_UI)
2095 { /* the usual case -> built-in fonts */ 2088 { /* the usual case -> built-in fonts */
2089#ifdef HAVE_REMOTE_LCD
2090 if (vp->font == FONT_UI)
2091 vp->font += curr_screen;
2092#endif
2096 continue; 2093 continue;
2097 } 2094 }
2098 2095 font_id = vp->font;
2099 /* decrement, because font has been incremented in viewport parsing
2100 * due to the FONT_UI_REMOTE ambiguity */
2101 int skin_font_id = vp->font-1;
2102 2096
2103 /* now find the corresponding skin_font */ 2097 /* now find the corresponding skin_font */
2104 struct skin_font *font = &skinfonts[skin_font_id-FONT_FIRSTUSERFONT]; 2098 struct skin_font *font = &skinfonts[font_id-FONT_FIRSTUSERFONT];
2105 if (!font) 2099 if (!font)
2106 { 2100 {
2107 DEBUGF("Could not find font %d\n", skin_font_id); 2101 DEBUGF("Could not find font %d\n", font_id);
2108 success = false; 2102 success = false;
2109 continue; 2103 continue;
2110 } 2104 }
@@ -2121,7 +2115,7 @@ static bool skin_load_fonts(struct wps_data *data)
2121 if (font->id < 0) 2115 if (font->id < 0)
2122 { 2116 {
2123 DEBUGF("Unable to load font %d: '%s.fnt'\n", 2117 DEBUGF("Unable to load font %d: '%s.fnt'\n",
2124 skin_font_id, font->name); 2118 font_id, font->name);
2125 success = false; 2119 success = false;
2126 continue; 2120 continue;
2127 } 2121 }
@@ -2154,6 +2148,12 @@ bool skin_data_load(enum screen_type screen, struct wps_data *wps_data,
2154 old_aa.width = wps_data->albumart->width; 2148 old_aa.width = wps_data->albumart->width;
2155 } 2149 }
2156#endif 2150#endif
2151 int i;
2152 for (i=0;i<MAXUSERFONTS;i++)
2153 {
2154 skinfonts[i].id = -1;
2155 skinfonts[i].name = NULL;
2156 }
2157 2157
2158 skin_data_reset(wps_data); 2158 skin_data_reset(wps_data);
2159 curr_screen = screen; 2159 curr_screen = screen;
@@ -2175,6 +2175,7 @@ bool skin_data_load(enum screen_type screen, struct wps_data *wps_data,
2175 curr_vp->lines = NULL; 2175 curr_vp->lines = NULL;
2176 2176
2177 viewport_set_defaults(&curr_vp->vp, screen); 2177 viewport_set_defaults(&curr_vp->vp, screen);
2178 curr_vp->vp.font = FONT_UI;
2178 2179
2179 curr_line = NULL; 2180 curr_line = NULL;
2180 if (!skin_start_new_line(curr_vp, 0)) 2181 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