summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2011-11-08 10:09:33 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2011-11-08 10:09:33 +0000
commitf19f3efb078b2947638f6f7a7f209de44daf78b3 (patch)
tree46ddfc7234b2de6e848d5bcd7630821d91a84f37 /apps
parent452a3ce2742949e184d6bc9c9b1f7985dae3e874 (diff)
downloadrockbox-f19f3efb078b2947638f6f7a7f209de44daf78b3.tar.gz
rockbox-f19f3efb078b2947638f6f7a7f209de44daf78b3.tar.bz2
rockbox-f19f3efb078b2947638f6f7a7f209de44daf78b3.zip
Redo r30826 (and hopefully not reintroduce font issues) which cleans up the font API. FONT_UI is deprecated, use screens[screen].getuifont() instead (and .setuifont() to set it after a font has been loaded)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30932 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/filetree.c7
-rw-r--r--apps/gui/skin_engine/skin_parser.c12
-rw-r--r--apps/gui/skin_engine/skin_render.c2
-rw-r--r--apps/gui/statusbar-skinned.c2
-rw-r--r--apps/gui/usb_screen.c4
-rw-r--r--apps/gui/viewport.c2
-rw-r--r--apps/plugins/bubbles.c2
-rw-r--r--apps/recorder/keyboard.c2
-rw-r--r--apps/screen_access.c43
-rw-r--r--apps/screen_access.h3
-rw-r--r--apps/settings.c30
11 files changed, 74 insertions, 35 deletions
diff --git a/apps/filetree.c b/apps/filetree.c
index 2407be9d79..d33b823fc0 100644
--- a/apps/filetree.c
+++ b/apps/filetree.c
@@ -424,13 +424,10 @@ static void ft_load_font(char *file)
set_file(file, (char *)global_settings.font_file, MAX_FILENAME);
#endif
splash(0, ID2P(LANG_WAIT));
- current_font_id = global_status.font_id[screen];
+ current_font_id = screens[screen].getuifont();
if (current_font_id >= 0)
font_unload(current_font_id);
- current_font_id = font_load(file);
- if(screen==SCREEN_MAIN)
- font_set_ui(current_font_id);
- global_status.font_id[screen] = current_font_id;
+ screens[screen].setuifont(font_load(file));
viewportmanager_theme_changed(THEME_UI_VIEWPORT);
}
#endif
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index 1557783a7c..d207a1fb3e 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -246,10 +246,12 @@ static int parse_statusbar_tags(struct skin_element* element,
viewport_set_fullscreen(&default_vp->vp, curr_screen);
}
#ifdef HAVE_REMOTE_LCD
- /* viewport_set_defaults() sets the font to FONT_UI+curr_screen.
- * This parser requires font 1 to always be the UI font,
- * so force it back to FONT_UI and handle the screen number at the end */
- default_vp->vp.font = FONT_UI;
+ /* This parser requires viewports which will use the settings font to
+ * have font == 1, but the above viewport_set() calls set font to
+ * the current real font id. So force 1 here it will be set correctly
+ * at the end
+ */
+ default_vp->vp.font = 1;
#endif
}
return 0;
@@ -1645,7 +1647,7 @@ static bool skin_load_fonts(struct wps_data *data)
font_id = skin_vp->parsed_fontid;
if (font_id == 1)
{ /* the usual case -> built-in fonts */
- vp->font = global_status.font_id[curr_screen];
+ vp->font = screens[curr_screen].getuifont();
continue;
}
else if (font_id <= 0)
diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c
index 369bd46be5..4d41a6f9b7 100644
--- a/apps/gui/skin_engine/skin_render.c
+++ b/apps/gui/skin_engine/skin_render.c
@@ -658,7 +658,7 @@ void skin_render_viewport(struct skin_element* viewport, struct gui_wps *gwps,
/* fix font ID's */
if (skin_viewport->parsed_fontid == 1)
- skin_viewport->vp.font = global_status.font_id[display->screen_type];
+ skin_viewport->vp.font = display->getuifont();
#endif
while (line)
diff --git a/apps/gui/statusbar-skinned.c b/apps/gui/statusbar-skinned.c
index 7850e7cc27..f79672c0d9 100644
--- a/apps/gui/statusbar-skinned.c
+++ b/apps/gui/statusbar-skinned.c
@@ -128,7 +128,7 @@ struct viewport *sb_skin_get_info_vp(enum screen_type screen)
if (!vp)
return NULL;
if (vp->parsed_fontid == 1)
- vp->vp.font = global_status.font_id[screen];
+ vp->vp.font = screens[screen].getuifont();
return &vp->vp;
}
diff --git a/apps/gui/usb_screen.c b/apps/gui/usb_screen.c
index 06770b1b94..2b7d47209b 100644
--- a/apps/gui/usb_screen.c
+++ b/apps/gui/usb_screen.c
@@ -265,8 +265,8 @@ void gui_usb_screen_run(bool early_usb)
#ifdef HAVE_LCD_BITMAP
FOR_NB_SCREENS(i)
{
- font_unload(global_status.font_id[i]);
- global_status.font_id[i] = -1;
+ font_unload(screens[i].getuifont());
+ screens[i].setuifont(FONT_SYSFIXED);
}
skin_unload_all();
#endif
diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c
index 33ffed79f3..940f7f9cfa 100644
--- a/apps/gui/viewport.c
+++ b/apps/gui/viewport.c
@@ -319,7 +319,7 @@ void viewport_set_fullscreen(struct viewport *vp,
#ifndef __PCTOOL__
set_default_align_flags(vp);
#endif
- vp->font = global_status.font_id[screen];
+ vp->font = screens[screen].getuifont();
vp->line_height = 0; /* calculate from font height */
vp->drawmode = DRMODE_SOLID;
#if LCD_DEPTH > 1
diff --git a/apps/plugins/bubbles.c b/apps/plugins/bubbles.c
index d9f76f7f72..1c4bbca788 100644
--- a/apps/plugins/bubbles.c
+++ b/apps/plugins/bubbles.c
@@ -1435,7 +1435,7 @@ static void bubbles_drawboard(struct game_context* bb) {
/* clear screen */
rb->lcd_clear_display();
- int font = rb->screens[SCREEN_MAIN]->getfont();
+ int font = rb->screens[SCREEN_MAIN]->getuifont();
h = rb->font_get(font)->height + 1;
/* draw background */
#ifdef HAVE_LCD_COLOR
diff --git a/apps/recorder/keyboard.c b/apps/recorder/keyboard.c
index c4cfe48ad9..4910c74877 100644
--- a/apps/recorder/keyboard.c
+++ b/apps/recorder/keyboard.c
@@ -720,7 +720,7 @@ static void kbd_calc_params(struct keyboard_parameters *pm,
(touchscreen_get_mode() == TOUCHSCREEN_POINT));
#endif
- pm->curfont = pm->default_lines ? FONT_SYSFIXED : FONT_UI;
+ pm->curfont = pm->default_lines ? FONT_SYSFIXED : sc->getuifont();
font = font_get(pm->curfont);
pm->font_h = font->height;
diff --git a/apps/screen_access.c b/apps/screen_access.c
index 01fdebe0db..f07b906fda 100644
--- a/apps/screen_access.c
+++ b/apps/screen_access.c
@@ -77,6 +77,24 @@ void screen_helper_setfont(int font)
#endif
}
+int screen_helper_getuifont(void)
+{
+#ifdef HAVE_LCD_BITMAP
+ return global_status.font_id[SCREEN_MAIN];
+#else
+ return FONT_SYSFIXED;
+#endif
+}
+
+void screen_helper_setuifont(int font)
+{
+#ifdef HAVE_LCD_BITMAP
+ global_status.font_id[SCREEN_MAIN] = font;
+#else
+ (void)font;
+#endif
+}
+
#if NB_SCREENS == 2
static int screen_helper_remote_getcharwidth(void)
{
@@ -116,6 +134,23 @@ void screen_helper_remote_setfont(int font)
font = global_status.font_id[SCREEN_REMOTE];
lcd_remote_setfont(font);
}
+
+int screen_helper_remote_getuifont(void)
+{
+#ifdef HAVE_LCD_BITMAP
+ return global_status.font_id[SCREEN_REMOTE];
+#else
+ return FONT_SYSFIXED;
+#endif
+}
+
+void screen_helper_remote_setuifont(int font)
+{
+#ifdef HAVE_LCD_BITMAP
+ global_status.font_id[SCREEN_REMOTE] = font;
+#endif
+}
+
#endif
struct screen screens[NB_SCREENS] =
@@ -147,7 +182,8 @@ struct screen screens[NB_SCREENS] =
.getstringsize=&lcd_getstringsize,
#ifdef HAVE_LCD_BITMAP
.setfont=screen_helper_setfont,
- .getfont=&lcd_getfont,
+ .getuifont=screen_helper_getuifont,
+ .setuifont=screen_helper_setuifont,
.mono_bitmap=&lcd_mono_bitmap,
.mono_bitmap_part=&lcd_mono_bitmap_part,
.set_drawmode=&lcd_set_drawmode,
@@ -246,8 +282,9 @@ struct screen screens[NB_SCREENS] =
.getheight=&lcd_remote_getheight,
.getstringsize=&lcd_remote_getstringsize,
#if 1 /* all remote LCDs are bitmapped so far */
- .setfont=screen_helper_setfont,
- .getfont=&lcd_remote_getfont,
+ .setfont=screen_helper_remote_setfont,
+ .getuifont=screen_helper_remote_getuifont,
+ .setuifont=screen_helper_remote_setuifont,
.mono_bitmap=&lcd_remote_mono_bitmap,
.mono_bitmap_part=&lcd_remote_mono_bitmap_part,
.bitmap=(screen_bitmap_func*)&lcd_remote_bitmap,
diff --git a/apps/screen_access.h b/apps/screen_access.h
index 2713219811..04cc6f4f90 100644
--- a/apps/screen_access.h
+++ b/apps/screen_access.h
@@ -71,7 +71,8 @@ struct screen
int (*getstringsize)(const unsigned char *str, int *w, int *h);
#if defined(HAVE_LCD_BITMAP) || defined(HAVE_REMOTE_LCD) /* always bitmap */
void (*setfont)(int newfont);
- int (*getfont)(void);
+ int (*getuifont)(void);
+ void (*setuifont)(int newfont);
void (*scroll_step)(int pixels);
void (*puts_style_offset)(int x, int y, const unsigned char *str,
diff --git a/apps/settings.c b/apps/settings.c
index 7142cfb0c6..fbfa438ab5 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -876,37 +876,38 @@ void settings_apply(bool read_disk)
/* fonts need to be loaded before the WPS */
if (global_settings.font_file[0]
&& global_settings.font_file[0] != '-') {
- const char* loaded_font = font_filename(global_status.font_id[SCREEN_MAIN]);
+ int font_ui = screens[SCREEN_MAIN].getuifont();
+ const char* loaded_font = font_filename(font_ui);
snprintf(buf, sizeof buf, FONT_DIR "/%s.fnt",
global_settings.font_file);
if (!loaded_font || strcmp(loaded_font, buf))
{
CHART2(">font_load ", global_settings.font_file);
- if (global_status.font_id[SCREEN_MAIN] >= 0)
- font_unload(global_status.font_id[SCREEN_MAIN]);
+ if (font_ui >= 0)
+ font_unload(font_ui);
rc = font_load(buf);
- font_set_ui(rc);
CHART2("<font_load ", global_settings.font_file);
- global_status.font_id[SCREEN_MAIN] = rc;
- lcd_setfont(rc);
+ screens[SCREEN_MAIN].setuifont(rc);
+ screens[SCREEN_MAIN].setfont(rc);
}
}
#ifdef HAVE_REMOTE_LCD
if ( global_settings.remote_font_file[0]
&& global_settings.remote_font_file[0] != '-') {
- const char* loaded_font = font_filename(global_status.font_id[SCREEN_REMOTE]);
+ int font_ui = screens[SCREEN_REMOTE].getuifont();
+ const char* loaded_font = font_filename(font_ui);
snprintf(buf, sizeof buf, FONT_DIR "/%s.fnt",
global_settings.remote_font_file);
if (!loaded_font || strcmp(loaded_font, buf))
{
CHART2(">font_load_remoteui ", global_settings.remote_font_file);
- if (global_status.font_id[SCREEN_REMOTE] >= 0)
- font_unload(global_status.font_id[SCREEN_REMOTE]);
+ if (font_ui >= 0)
+ font_unload(font_ui);
rc = font_load(buf);
CHART2("<font_load_remoteui ", global_settings.remote_font_file);
- global_status.font_id[SCREEN_REMOTE] = rc;
- lcd_remote_setfont(rc);
+ screens[SCREEN_REMOTE].setuifont(rc);
+ screens[SCREEN_REMOTE].setfont(rc);
}
}
#endif
@@ -1076,10 +1077,11 @@ void settings_reset(void)
#ifdef HAVE_LCD_BITMAP
FOR_NB_SCREENS(i)
{
- if (global_status.font_id[i] > FONT_SYSFIXED)
+ if (screens[i].getuifont() > FONT_SYSFIXED)
{
- font_unload(global_status.font_id[i]);
- global_status.font_id[i] = FONT_SYSFIXED;
+ font_unload(screens[i].getuifont());
+ screens[i].setuifont(FONT_SYSFIXED);
+ screens[i].setfont(FONT_SYSFIXED);
}
}
#endif