summaryrefslogtreecommitdiff
path: root/apps/plugins
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2011-09-24 13:19:34 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2011-09-24 13:19:34 +0000
commitaa0f4a4bbe370032d8166628f456709be1330118 (patch)
tree597c91fb16493881d7a281ef3c28e274a899022b /apps/plugins
parentf323300b82aa945dd4cadb20d8d7e23a6602ef49 (diff)
downloadrockbox-aa0f4a4bbe370032d8166628f456709be1330118.zip
rockbox-aa0f4a4bbe370032d8166628f456709be1330118.tar.gz
rockbox-aa0f4a4bbe370032d8166628f456709be1330118.tar.bz2
rockbox-aa0f4a4bbe370032d8166628f456709be1330118.tar.xz
FS#12273 - use buflib for font storage. thanks to the testers :)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30589 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins')
-rw-r--r--apps/plugins/beatbox/beatbox.c2
-rw-r--r--apps/plugins/doom/rockdoom.c4
-rw-r--r--apps/plugins/lua/rocklib.c5
-rw-r--r--apps/plugins/midi/midiplay.c2
-rw-r--r--apps/plugins/mikmod/mikmod.c4
-rw-r--r--apps/plugins/rockboy/menu.c2
-rw-r--r--apps/plugins/rockboy/rockboy.c2
-rw-r--r--apps/plugins/rockpaint.c15
-rw-r--r--apps/plugins/text_viewer/tv_display.c18
-rw-r--r--apps/plugins/text_viewer/tv_preferences.c10
-rw-r--r--apps/plugins/text_viewer/tv_preferences.h4
-rw-r--r--apps/plugins/text_viewer/tv_settings.c2
-rw-r--r--apps/plugins/text_viewer/tv_text_processor.c2
13 files changed, 49 insertions, 23 deletions
diff --git a/apps/plugins/beatbox/beatbox.c b/apps/plugins/beatbox/beatbox.c
index b09464a..8ecbabd 100644
--- a/apps/plugins/beatbox/beatbox.c
+++ b/apps/plugins/beatbox/beatbox.c
@@ -265,7 +265,7 @@ enum plugin_status plugin_start(const void* parameter)
{
int retval = 0;
- rb->lcd_setfont(0);
+ rb->lcd_setfont(FONT_SYSFIXED);
#if defined(HAVE_ADJUSTABLE_CPU_FREQ)
rb->cpu_boost(true);
diff --git a/apps/plugins/doom/rockdoom.c b/apps/plugins/doom/rockdoom.c
index 1c2777a..85e3225 100644
--- a/apps/plugins/doom/rockdoom.c
+++ b/apps/plugins/doom/rockdoom.c
@@ -667,7 +667,7 @@ enum plugin_status plugin_start(const void* parameter)
rb->cpu_boost(true);
#endif
- rb->lcd_setfont(0);
+ rb->lcd_setfont(FONT_SYSFIXED);
// We're using doom's memory management since it implements a proper free (and re-uses the memory)
// and now with prboom's code: realloc and calloc
@@ -712,7 +712,7 @@ enum plugin_status plugin_start(const void* parameter)
Dhandle_ver( namemap[ result ] );
- rb->lcd_setfont(0);
+ rb->lcd_setfont(FONT_SYSFIXED);
rb->lcd_clear_display();
diff --git a/apps/plugins/lua/rocklib.c b/apps/plugins/lua/rocklib.c
index 4657201..ddd4081 100644
--- a/apps/plugins/lua/rocklib.c
+++ b/apps/plugins/lua/rocklib.c
@@ -433,6 +433,11 @@ RB_WRAP(font_getstringsize)
int fontnumber = luaL_checkint(L, 2);
int w, h;
+ if (fontnumber == FONT_UI)
+ fontnumber = rb->global_status->font_id[SCREEN_MAIN];
+ else
+ fontnumber = FONT_SYSFIXED;
+
int result = rb->font_getstringsize(str, &w, &h, fontnumber);
lua_pushinteger(L, result);
lua_pushinteger(L, w);
diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c
index 9bf4d50..16d153a 100644
--- a/apps/plugins/midi/midiplay.c
+++ b/apps/plugins/midi/midiplay.c
@@ -470,7 +470,7 @@ enum plugin_status plugin_start(const void* parameter)
rb->splash(HZ*2, " Play .MID file ");
return PLUGIN_OK;
}
- rb->lcd_setfont(0);
+ rb->lcd_setfont(FONT_SYSFIXED);
#if defined(HAVE_ADJUSTABLE_CPU_FREQ)
rb->cpu_boost(true);
diff --git a/apps/plugins/mikmod/mikmod.c b/apps/plugins/mikmod/mikmod.c
index 5f19b43..a7eeb50 100644
--- a/apps/plugins/mikmod/mikmod.c
+++ b/apps/plugins/mikmod/mikmod.c
@@ -823,7 +823,7 @@ int playfile(char* filename)
retval = menureturn;
}
}
- rb->lcd_setfont(0);
+ rb->lcd_setfont(FONT_SYSFIXED);
screenupdated = false;
break;
@@ -877,7 +877,7 @@ enum plugin_status plugin_start(const void* parameter)
return PLUGIN_OK;
}
- rb->lcd_setfont(0);
+ rb->lcd_setfont(FONT_SYSFIXED);
rb->pcm_play_stop();
#if INPUT_SRC_CAPS != 0
diff --git a/apps/plugins/rockboy/menu.c b/apps/plugins/rockboy/menu.c
index 54a0db7..3cd231c 100644
--- a/apps/plugins/rockboy/menu.c
+++ b/apps/plugins/rockboy/menu.c
@@ -125,7 +125,7 @@ int do_user_menu(void) {
}
}
- rb->lcd_setfont(0); /* Reset the font */
+ rb->lcd_setfont(FONT_SYSFIXED); /* Reset the font */
rb->lcd_clear_display(); /* Clear display for screen size changes */
/* Keep the RTC in sync */
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c
index 4dc88fd..8882881 100644
--- a/apps/plugins/rockboy/rockboy.c
+++ b/apps/plugins/rockboy/rockboy.c
@@ -409,7 +409,7 @@ static int gnuboy_main(const char *rom)
/* this is the plugin entry point */
enum plugin_status plugin_start(const void* parameter)
{
- rb->lcd_setfont(0);
+ rb->lcd_setfont(FONT_SYSFIXED);
rb->lcd_clear_display();
diff --git a/apps/plugins/rockpaint.c b/apps/plugins/rockpaint.c
index d1cc8f2..7938273 100644
--- a/apps/plugins/rockpaint.c
+++ b/apps/plugins/rockpaint.c
@@ -1016,7 +1016,6 @@ static bool browse_fonts( char *dst, int dst_size )
size_t siz;
reset_font = true;
rb->snprintf( bbuf, MAX_PATH, FONT_DIR "/%s", e->name );
- rb->font_load(NULL, bbuf );
rb->font_getstringsize( e->name, &fw, &fh, FONT_UI );
if( fw > LCD_WIDTH ) fw = LCD_WIDTH;
siz = (sizeof(struct font_preview) + fw*fh*FB_DATA_SZ+3) & ~3;
@@ -1083,7 +1082,7 @@ static bool browse_fonts( char *dst, int dst_size )
li = tree->filesindir-1;
if( reset_font )
{
- rb->font_load(NULL, bbuf_s );
+ // fixme rb->font_load(NULL, bbuf_s );
reset_font = false;
}
if( lvi-fvi+1 < tree->filesindir )
@@ -1636,6 +1635,7 @@ static void show_grid( bool update )
static void draw_text( int x, int y )
{
int selected = 0;
+ int current_font_id = rb->global_status->font_id[SCREEN_MAIN];
buffer->text.text[0] = '\0';
buffer->text.font[0] = '\0';
while( 1 )
@@ -1648,9 +1648,12 @@ static void draw_text( int x, int y )
break;
case TEXT_MENU_FONT:
- if( browse_fonts( buffer->text.font, MAX_PATH ) )
+ if (current_font_id != rb->global_status->font_id[SCREEN_MAIN])
+ rb->font_unload(current_font_id);
+ if(browse_fonts( buffer->text.font, MAX_PATH ) )
{
- rb->font_load(NULL, buffer->text.font );
+ current_font_id = rb->font_load(buffer->text.font );
+ rb->lcd_setfont(current_font_id);
}
break;
@@ -1704,7 +1707,9 @@ static void draw_text( int x, int y )
rb->snprintf( buffer->text.font, MAX_PATH,
FONT_DIR "/%s.fnt",
rb->global_settings->font_file );
- rb->font_load(NULL, buffer->text.font );
+ if (current_font_id != rb->global_status->font_id[SCREEN_MAIN])
+ rb->font_unload(current_font_id);
+ rb->lcd_setfont(FONT_UI);
}
return;
}
diff --git a/apps/plugins/text_viewer/tv_display.c b/apps/plugins/text_viewer/tv_display.c
index d38f1b5..2cf240d 100644
--- a/apps/plugins/text_viewer/tv_display.c
+++ b/apps/plugins/text_viewer/tv_display.c
@@ -255,7 +255,7 @@ void tv_set_layout(bool show_scrollbar)
int scrollbar_height = (show_scrollbar && preferences->horizontal_scrollbar)?
TV_SCROLLBAR_HEIGHT + 1 : 0;
- row_height = preferences->font->height;
+ row_height = rb->font_get(preferences->font_id)->height;
header.x = 0;
header.y = 0;
@@ -282,6 +282,7 @@ void tv_set_layout(bool show_scrollbar)
vp_text.y += vertical_scrollbar.y;
vp_text.width = horizontal_scrollbar.w;
vp_text.height = vertical_scrollbar.h;
+ vp_text.font = preferences->font_id;
#else
(void) show_scrollbar;
@@ -334,16 +335,20 @@ static void tv_change_viewport(void)
static bool tv_set_font(const unsigned char *font)
{
unsigned char path[MAX_PATH];
-
if (font != NULL && *font != '\0')
{
rb->snprintf(path, MAX_PATH, "%s/%s.fnt", FONT_DIR, font);
- if (rb->font_load(NULL, path) < 0)
+ if (preferences->font_id >= 0 &&
+ (preferences->font_id != rb->global_status->font_id[SCREEN_MAIN]))
+ rb->font_unload(preferences->font_id);
+ tv_change_fontid(rb->font_load(path));
+ if (preferences->font_id < 0)
{
rb->splash(HZ/2, "font load failed");
return false;
}
}
+ vp_text.font = preferences->font_id;
return true;
}
#endif
@@ -375,7 +380,7 @@ static int tv_change_preferences(const struct tv_preferences *oldp)
return (tv_set_preferences(&new_prefs))? TV_CALLBACK_STOP : TV_CALLBACK_ERROR;
}
- col_width = 2 * rb->font_get_width(preferences->font, ' ');
+ col_width = 2 * rb->font_get_width(rb->font_get(preferences->font_id), ' ');
font_changing = false;
}
#else
@@ -402,9 +407,10 @@ void tv_finalize_display(void)
{
#ifdef HAVE_LCD_BITMAP
/* restore font */
- if (rb->strcmp(rb->global_settings->font_file, preferences->font_name))
+ if (preferences->font_id >= 0 &&
+ (preferences->font_id != rb->global_status->font_id[SCREEN_MAIN]))
{
- tv_set_font(rb->global_settings->font_file);
+ rb->font_unload(preferences->font_id);
}
/* undo viewport */
diff --git a/apps/plugins/text_viewer/tv_preferences.c b/apps/plugins/text_viewer/tv_preferences.c
index 6d5c112..86719ae 100644
--- a/apps/plugins/text_viewer/tv_preferences.c
+++ b/apps/plugins/text_viewer/tv_preferences.c
@@ -114,7 +114,7 @@ void tv_set_default_preferences(struct tv_preferences *p)
p->footer_mode = true;
p->statusbar = true;
rb->strlcpy(p->font_name, rb->global_settings->font_file, MAX_PATH);
- p->font = rb->font_get(FONT_UI);
+ p->font_id = rb->global_status->font_id[SCREEN_MAIN];
#else
p->header_mode = false;
p->footer_mode = false;
@@ -133,3 +133,11 @@ void tv_add_preferences_change_listner(int (*listner)(const struct tv_preference
if (listner_count < TV_MAX_LISTNERS)
listners[listner_count++] = listner;
}
+
+void tv_change_fontid(int id)
+{
+ (void)id;
+#ifdef HAVE_LCD_BITMAP
+ prefs.font_id = id;
+#endif
+}
diff --git a/apps/plugins/text_viewer/tv_preferences.h b/apps/plugins/text_viewer/tv_preferences.h
index bb448b0..f3b2aeb 100644
--- a/apps/plugins/text_viewer/tv_preferences.h
+++ b/apps/plugins/text_viewer/tv_preferences.h
@@ -95,7 +95,7 @@ struct tv_preferences {
#ifdef HAVE_LCD_BITMAP
unsigned char font_name[MAX_PATH];
- struct font *font;
+ int font_id;
#endif
unsigned char file_name[MAX_PATH];
};
@@ -151,4 +151,6 @@ void tv_set_default_preferences(struct tv_preferences *p);
*/
void tv_add_preferences_change_listner(int (*listner)(const struct tv_preferences *oldp));
+
+void tv_change_fontid(int id);
#endif
diff --git a/apps/plugins/text_viewer/tv_settings.c b/apps/plugins/text_viewer/tv_settings.c
index 3ed1576..895f162 100644
--- a/apps/plugins/text_viewer/tv_settings.c
+++ b/apps/plugins/text_viewer/tv_settings.c
@@ -218,7 +218,7 @@ static bool tv_read_preferences(int pfd, int version, struct tv_preferences *pre
#ifdef HAVE_LCD_BITMAP
rb->strlcpy(prefs->font_name, buf + read_size - MAX_PATH, MAX_PATH);
- prefs->font = rb->font_get(FONT_UI);
+ prefs->font_id = rb->global_status->font_id[SCREEN_MAIN];
#endif
return true;
diff --git a/apps/plugins/text_viewer/tv_text_processor.c b/apps/plugins/text_viewer/tv_text_processor.c
index edb2ad0..d027a9a 100644
--- a/apps/plugins/text_viewer/tv_text_processor.c
+++ b/apps/plugins/text_viewer/tv_text_processor.c
@@ -95,7 +95,7 @@ static int tv_glyph_width(int ch)
if (rb->is_diacritic(ch, NULL))
return 0;
- return rb->font_get_width(preferences->font, ch);
+ return rb->font_get_width(rb->font_get(preferences->font_id), ch);
#else
return 1;
#endif