From 3646c313679c4bd16c9eec98c2e35c7a7bf5c961 Mon Sep 17 00:00:00 2001 From: Dave Chapman Date: Tue, 8 Jan 2008 01:22:14 +0000 Subject: Add the viewport functions to the screens API, including a new getfont() function to return the font used by the current viewport. A change to the screens API makes the plugin API incompatible, so we bump version and sort. Also commit the test_viewports plugin (not built by default). This is some more of FS#8385. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16022 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugin.c | 7 +- apps/plugin.h | 13 +- apps/plugins/CATEGORIES | 1 + apps/plugins/test_viewports.c | 309 ++++++++++++++++++++++++++++++++++ apps/screen_access.c | 20 ++- apps/screen_access.h | 9 + firmware/drivers/lcd-16bit.c | 5 + firmware/drivers/lcd-1bit-vert.c | 5 + firmware/drivers/lcd-2bit-horz.c | 5 + firmware/drivers/lcd-2bit-vert.c | 5 + firmware/drivers/lcd-remote-1bit-v.c | 5 + firmware/drivers/lcd-remote-2bit-vi.c | 5 + firmware/export/lcd-remote.h | 1 + firmware/export/lcd.h | 1 + 14 files changed, 379 insertions(+), 12 deletions(-) create mode 100644 apps/plugins/test_viewports.c diff --git a/apps/plugin.c b/apps/plugin.c index 6d48329111..2149fdaee8 100644 --- a/apps/plugin.c +++ b/apps/plugin.c @@ -181,6 +181,9 @@ static const struct plugin_api rockbox_api = { lcd_remote_bitmap, #endif +#if defined(HAVE_LCD_BITMAP) && (LCD_DEPTH < 4) && !defined(SIMULATOR) + lcd_grey_phase_blit, +#endif #if defined(HAVE_LCD_COLOR) lcd_yuv_blit, #endif @@ -583,10 +586,6 @@ static const struct plugin_api rockbox_api = { sound_unit, sound_val2phys, #endif /* CONFIG_CODEC == SWCODEC */ - -#if defined(HAVE_LCD_BITMAP) && (LCD_DEPTH < 4) && !defined(SIMULATOR) - lcd_grey_phase_blit, -#endif }; int plugin_load(const char* plugin, void* parameter) diff --git a/apps/plugin.h b/apps/plugin.h index f782b7a20c..849c10bb89 100644 --- a/apps/plugin.h +++ b/apps/plugin.h @@ -119,12 +119,12 @@ #define PLUGIN_MAGIC 0x526F634B /* RocK */ /* increase this every time the api struct changes */ -#define PLUGIN_API_VERSION 94 +#define PLUGIN_API_VERSION 95 /* update this to latest version if a change to the api struct breaks backwards compatibility (and please take the opportunity to sort in any new function which are "waiting" at the end of the function table) */ -#define PLUGIN_MIN_API_VERSION 88 +#define PLUGIN_MIN_API_VERSION 95 /* plugin return codes */ enum plugin_status { @@ -267,6 +267,10 @@ struct plugin_api { void (*lcd_remote_bitmap)(const fb_remote_data *src, int x, int y, int width, int height); #endif +#if defined(HAVE_LCD_BITMAP) && (LCD_DEPTH < 4) && !defined(SIMULATOR) + void (*lcd_grey_phase_blit)(const struct grey_data *data, int bx, int by, + int bwidth, int bheight, int stride); +#endif #if defined(HAVE_LCD_COLOR) void (*lcd_yuv_blit)(unsigned char * const src[3], int src_x, int src_y, int stride, @@ -718,11 +722,6 @@ struct plugin_api { const char * (*sound_unit)(int setting); int (*sound_val2phys)(int setting, int value); #endif /* CONFIG_CODEC == SWCODEC */ - -#if defined(HAVE_LCD_BITMAP) && (LCD_DEPTH < 4) && !defined(SIMULATOR) - void (*lcd_grey_phase_blit)(const struct grey_data *data, int bx, int by, - int bwidth, int bheight, int stride); -#endif }; /* plugin header */ diff --git a/apps/plugins/CATEGORIES b/apps/plugins/CATEGORIES index 9a6cc93faa..ee28614da0 100644 --- a/apps/plugins/CATEGORIES +++ b/apps/plugins/CATEGORIES @@ -81,6 +81,7 @@ test_disk,apps test_fps,apps test_sampr,apps test_scanrate,apps +test_viewports,apps text_editor,apps vbrfix,viewers video,viewers diff --git a/apps/plugins/test_viewports.c b/apps/plugins/test_viewports.c new file mode 100644 index 0000000000..3cb8afb519 --- /dev/null +++ b/apps/plugins/test_viewports.c @@ -0,0 +1,309 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id: helloworld.c 12807 2007-03-16 21:56:08Z amiconn $ + * + * Copyright (C) 2007 Dave Chapman + * + * All files in this archive are subject to the GNU General Public License. + * See the file COPYING in the source tree root for full license agreement. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +#include "plugin.h" + +PLUGIN_HEADER + +static struct plugin_api* rb; + +#ifdef HAVE_LCD_BITMAP + +#ifdef HAVE_LCD_COLOR +#define BGCOLOR_1 LCD_RGBPACK(255,255,0) +#define BGCOLOR_2 LCD_RGBPACK(0,255,0) +#define FGCOLOR_1 LCD_RGBPACK(0,0,255) +#else if LCD_DEPTH > 1 +#define BGCOLOR_1 LCD_DARKGRAY +#define BGCOLOR_2 LCD_LIGHTGRAY +#define FGCOLOR_1 LCD_WHITE +#endif + +static struct viewport vp0 = +{ + .x = 0, + .y = 0, + .width = LCD_WIDTH, + .height = 20, + .font = FONT_UI, + .drawmode = DRMODE_SOLID, + .xmargin = 0, + .ymargin = 0, +#if LCD_DEPTH > 1 + .fg_pattern = LCD_DEFAULT_FG, + .bg_pattern = BGCOLOR_1, +#endif +#ifdef HAVE_LCD_COLOR + .lss_pattern = LCD_DEFAULT_BG, + .lse_pattern = LCD_DEFAULT_BG, + .lst_pattern = LCD_DEFAULT_BG, +#endif +}; + +static struct viewport vp1 = +{ + .x = LCD_WIDTH / 10, + .y = 20, + .width = LCD_WIDTH / 3, + .height = LCD_HEIGHT / 2, + .font = FONT_SYSFIXED, + .drawmode = DRMODE_SOLID, + .xmargin = 0, + .ymargin = 0, +#if LCD_DEPTH > 1 + .fg_pattern = LCD_DEFAULT_FG, + .bg_pattern = LCD_DEFAULT_BG, +#ifdef HAVE_LCD_COLOR + .lss_pattern = LCD_DEFAULT_BG, + .lse_pattern = LCD_DEFAULT_BG, + .lst_pattern = LCD_DEFAULT_BG, +#endif +#endif +}; + +static struct viewport vp2 = +{ + .x = LCD_WIDTH / 2, + .y = 40, + .width = LCD_WIDTH / 3, + .height = (LCD_HEIGHT / 2), + .font = FONT_UI, + .drawmode = DRMODE_SOLID, + .xmargin = 0, + .ymargin = 0, +#if LCD_DEPTH > 1 + .fg_pattern = FGCOLOR_1, + .bg_pattern = BGCOLOR_2, +#ifdef HAVE_LCD_COLOR + .lss_pattern = LCD_DEFAULT_BG, + .lse_pattern = LCD_DEFAULT_BG, + .lst_pattern = LCD_DEFAULT_BG, +#endif +#endif +}; + + +static struct viewport vp3 = +{ + .x = LCD_WIDTH / 4, + .y = (5 * LCD_HEIGHT) / 8, + .width = LCD_WIDTH / 2, + .height = (LCD_HEIGHT / 4), + .font = FONT_SYSFIXED, + .drawmode = DRMODE_SOLID, + .xmargin = 0, + .ymargin = 0, +#if LCD_DEPTH > 1 + .fg_pattern = LCD_BLACK, + .bg_pattern = LCD_WHITE, +#ifdef HAVE_LCD_COLOR + .lss_pattern = LCD_DEFAULT_BG, + .lse_pattern = LCD_DEFAULT_BG, + .lst_pattern = LCD_DEFAULT_BG, +#endif +#endif +}; + + +#ifdef HAVE_REMOTE_LCD +static struct viewport rvp0 = +{ + .x = 0, + .y = 10, + .width = LCD_REMOTE_WIDTH / 3, + .height = LCD_REMOTE_HEIGHT - 10, + .font = FONT_SYSFIXED, + .drawmode = DRMODE_SOLID, + .xmargin = 0, + .ymargin = 0, +#if LCD_REMOTE_DEPTH > 1 + .fg_pattern = LCD_REMOTE_BLACK, + .bg_pattern = LCD_REMOTE_LIGHTGRAY, +#endif +}; + +static struct viewport rvp1 = +{ + .x = LCD_REMOTE_WIDTH / 2, + .y = 0, + .width = LCD_REMOTE_WIDTH / 3, + .height = LCD_REMOTE_HEIGHT - 10, + .font = FONT_SYSFIXED, + .drawmode = DRMODE_SOLID, + .xmargin = 0, + .ymargin = 0, +#if LCD_REMOTE_DEPTH > 1 + .fg_pattern = LCD_REMOTE_DEFAULT_FG, + .bg_pattern = LCD_REMOTE_DEFAULT_BG +#endif +}; + +#endif + + +enum plugin_status plugin_start(struct plugin_api* api, void* parameter) +{ + (void)parameter; + char buf[80]; + int i,y; + + rb = api; + + rb->screens[SCREEN_MAIN]->set_viewport(&vp0); + rb->screens[SCREEN_MAIN]->clear_viewport(); + rb->screens[SCREEN_MAIN]->puts_scroll(0,0,"Viewport testing plugin - this is a scrolling title"); + + rb->screens[SCREEN_MAIN]->set_viewport(&vp1); + rb->screens[SCREEN_MAIN]->clear_viewport(); + + for (i = 0 ; i < 3; i++) + { + rb->snprintf(buf,sizeof(buf),"Left text, scrolling_line %d",i); + rb->screens[SCREEN_MAIN]->puts_scroll(0,i,buf); + } + + rb->screens[SCREEN_MAIN]->set_viewport(&vp2); + rb->screens[SCREEN_MAIN]->clear_viewport(); + for (i = 1 ; i < 3; i++) + { + rb->snprintf(buf,sizeof(buf),"Right text, scrolling line %d",i); + rb->screens[SCREEN_MAIN]->puts_scroll(1,i,buf); + } + + y = -10; + for (i = -10; i < vp2.width + 10; i += 5) + { + rb->screens[SCREEN_MAIN]->drawline(i, y, i, vp2.height - y); + } + + rb->screens[SCREEN_MAIN]->set_viewport(&vp3); + rb->screens[SCREEN_MAIN]->clear_viewport(); + for (i = 1 ; i < 2; i++) + { + rb->snprintf(buf,sizeof(buf),"Bottom text, a scrolling line %d",i); + rb->screens[SCREEN_MAIN]->puts_scroll(2,i,buf); + } + rb->screens[SCREEN_MAIN]->puts_scroll(4,i,"Short line"); + rb->screens[SCREEN_MAIN]->update(); + + +#ifdef HAVE_REMOTE_LCD + rb->screens[SCREEN_REMOTE]->set_viewport(&rvp0); + rb->screens[SCREEN_REMOTE]->clear_viewport(); + + for (i = 0 ; i < 5; i++) + { + rb->snprintf(buf,sizeof(buf),"Left text, scrolling_line %d",i); + rb->screens[SCREEN_REMOTE]->puts_scroll(0,i,buf); + } + rb->screens[SCREEN_REMOTE]->puts(1,i,"Static"); + + rb->screens[SCREEN_REMOTE]->set_viewport(&rvp1); + rb->screens[SCREEN_REMOTE]->clear_viewport(); + for (i = 1 ; i < 3; i++) + { + rb->snprintf(buf,sizeof(buf),"Right text, scrolling line %d",i); + rb->screens[SCREEN_REMOTE]->puts_scroll(1,i,buf); + } + + y = -10; + for (i = -10; i < rvp1.width + 10; i += 5) + { + rb->screens[SCREEN_REMOTE]->drawline(i, y, i, rvp1.height - y); + } + + rb->screens[SCREEN_REMOTE]->update(); +#endif + + rb->button_get(true); + + /* Restore the default viewport */ + rb->screens[SCREEN_MAIN]->set_viewport(NULL); +#ifdef HAVE_REMOTE_LCD + rb->screens[SCREEN_REMOTE]->set_viewport(NULL); +#endif + + return PLUGIN_OK; +} + + +#else + +/* Charcell version of plugin */ + +static struct viewport vp0 = +{ + .x = 0, + .y = 0, + .width = 5, + .height = 1, + .xmargin = 0, + .ymargin = 0, +}; + +static struct viewport vp1 = +{ + .x = 6, + .y = 0, + .width = 5, + .height = 1, + .xmargin = 0, + .ymargin = 0, +}; + +static struct viewport vp2 = +{ + .x = 0, + .y = 1, + .width = LCD_WIDTH, + .height = 1, + .xmargin = 0, + .ymargin = 0, +}; + + +enum plugin_status plugin_start(struct plugin_api* api, void* parameter) +{ + (void)parameter; + + rb = api; + + rb->screens[SCREEN_MAIN]->set_viewport(&vp0); + rb->screens[SCREEN_MAIN]->clear_viewport(); + rb->screens[SCREEN_MAIN]->puts_scroll(0,0,"Rockbox"); + + rb->screens[SCREEN_MAIN]->set_viewport(&vp1); + rb->screens[SCREEN_MAIN]->clear_viewport(); + rb->screens[SCREEN_MAIN]->puts_scroll(0,0,"Viewports"); + + rb->screens[SCREEN_MAIN]->set_viewport(&vp2); + rb->screens[SCREEN_MAIN]->clear_viewport(); + rb->screens[SCREEN_MAIN]->puts_scroll(0,0,"Demonstration"); + + rb->screens[SCREEN_MAIN]->update(); + + rb->button_get(true); + + /* Restore the default viewport */ + rb->screens[SCREEN_MAIN]->set_viewport(NULL); + + return PLUGIN_OK; +} + +#endif /* !HAVE_LCD_BITMAP */ diff --git a/apps/screen_access.c b/apps/screen_access.c index 0d7017984e..5e9ab03d06 100644 --- a/apps/screen_access.c +++ b/apps/screen_access.c @@ -19,6 +19,7 @@ #include #include +#include #include "backlight.h" #include #include @@ -50,12 +51,16 @@ struct screen screens[NB_SCREENS] = #elif defined(HAVE_REMOTE_LCD) .has_disk_led=true, #endif + .set_viewport=&lcd_set_viewport, .setmargins=&lcd_setmargins, + .getwidth=&lcd_getwidth, + .getheight=&lcd_getheight, .getymargin=&lcd_getymargin, .getxmargin=&lcd_getxmargin, .getstringsize=&lcd_getstringsize, #ifdef HAVE_LCD_BITMAP .setfont=&lcd_setfont, + .getfont=&lcd_getfont, .mono_bitmap=&lcd_mono_bitmap, .mono_bitmap_part=&lcd_mono_bitmap_part, .set_drawmode=&lcd_set_drawmode, @@ -84,6 +89,7 @@ struct screen screens[NB_SCREENS] = #endif #endif /* LCD_DEPTH > 1 */ .update_rect=&lcd_update_rect, + .update_viewport_rect=&lcd_update_viewport_rect, .fillrect=&lcd_fillrect, .drawrect=&lcd_drawrect, .drawpixel=&lcd_drawpixel, @@ -114,7 +120,11 @@ struct screen screens[NB_SCREENS] = .scroll_delay=&lcd_scroll_delay, .stop_scroll=&lcd_stop_scroll, .clear_display=&lcd_clear_display, + .clear_viewport=&lcd_clear_viewport, + .scroll_stop=&lcd_scroll_stop, + .scroll_stop_line=&lcd_scroll_stop_line, .update=&lcd_update, + .update_viewport=&lcd_update_viewport, .backlight_on=&backlight_on, .backlight_off=&backlight_off, .is_backlight_on=&is_backlight_on, @@ -132,12 +142,15 @@ struct screen screens[NB_SCREENS] = .is_color=false,/* No color remotes yet */ .pixel_format=LCD_REMOTE_PIXELFORMAT, .has_disk_led=false, + .set_viewport=&lcd_remote_set_viewport, .setmargins=&lcd_remote_setmargins, + .getwidth=&lcd_remote_getwidth, + .getheight=&lcd_remote_getheight, .getymargin=&lcd_remote_getymargin, .getxmargin=&lcd_remote_getxmargin, .getstringsize=&lcd_remote_getstringsize, #if 1 /* all remote LCDs are bitmapped so far */ - .setfont=&lcd_remote_setfont, + .getfont=&lcd_remote_getfont, .mono_bitmap=&lcd_remote_mono_bitmap, .mono_bitmap_part=&lcd_remote_mono_bitmap_part, .bitmap=(screen_bitmap_func*)&lcd_remote_bitmap, @@ -159,6 +172,7 @@ struct screen screens[NB_SCREENS] = .set_foreground=&lcd_remote_set_foreground, #endif /* LCD_REMOTE_DEPTH > 1 */ .update_rect=&lcd_remote_update_rect, + .update_viewport_rect=&lcd_remote_update_viewport_rect, .fillrect=&lcd_remote_fillrect, .drawrect=&lcd_remote_drawrect, .drawpixel=&lcd_remote_drawpixel, @@ -187,7 +201,11 @@ struct screen screens[NB_SCREENS] = .scroll_delay=&lcd_remote_scroll_delay, .stop_scroll=&lcd_remote_stop_scroll, .clear_display=&lcd_remote_clear_display, + .clear_viewport=&lcd_remote_clear_viewport, + .scroll_stop=&lcd_remote_scroll_stop, + .scroll_stop_line=&lcd_remote_scroll_stop_line, .update=&lcd_remote_update, + .update_viewport=&lcd_remote_update_viewport, .backlight_on=&remote_backlight_on, .backlight_off=&remote_backlight_off, .is_backlight_on=&is_remote_backlight_on, diff --git a/apps/screen_access.h b/apps/screen_access.h index 35bcdef0a2..7efa48c423 100644 --- a/apps/screen_access.h +++ b/apps/screen_access.h @@ -71,12 +71,16 @@ struct screen #ifdef HAS_BUTTONBAR bool has_buttonbar; #endif + void (*set_viewport)(struct viewport* vp); void (*setmargins)(int x, int y); + int (*getwidth)(void); + int (*getheight)(void); int (*getxmargin)(void); int (*getymargin)(void); 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); void (*scroll_step)(int pixels); void (*puts_style_offset)(int x, int y, const unsigned char *str, @@ -113,6 +117,7 @@ struct screen void (*set_selector_text)(unsigned selector_text); #endif void (*update_rect)(int x, int y, int width, int height); + void (*update_viewport_rect)(int x, int y, int width, int height); void (*fillrect)(int x, int y, int width, int height); void (*drawrect)(int x, int y, int width, int height); void (*drawpixel)(int x, int y); @@ -139,7 +144,11 @@ struct screen void (*scroll_delay)(int ms); void (*stop_scroll)(void); void (*clear_display)(void); + void (*clear_viewport)(void); + void (*scroll_stop)(struct viewport* vp); + void (*scroll_stop_line)(struct viewport* vp, int y); void (*update)(void); + void (*update_viewport)(void); void (*backlight_on)(void); void (*backlight_off)(void); bool (*is_backlight_on)(void); diff --git a/firmware/drivers/lcd-16bit.c b/firmware/drivers/lcd-16bit.c index cc5a6c5ab7..2a766d4006 100644 --- a/firmware/drivers/lcd-16bit.c +++ b/firmware/drivers/lcd-16bit.c @@ -190,6 +190,11 @@ void lcd_setfont(int newfont) current_vp->font = newfont; } +int lcd_getfont(void) +{ + return current_vp->font; +} + int lcd_getstringsize(const unsigned char *str, int *w, int *h) { return font_getstringsize(str, w, h, current_vp->font); diff --git a/firmware/drivers/lcd-1bit-vert.c b/firmware/drivers/lcd-1bit-vert.c index 5c651a9613..7c9cd26e2a 100644 --- a/firmware/drivers/lcd-1bit-vert.c +++ b/firmware/drivers/lcd-1bit-vert.c @@ -122,6 +122,11 @@ void lcd_setfont(int newfont) current_vp->font = newfont; } +int lcd_getfont(void) +{ + return current_vp->font; +} + int lcd_getstringsize(const unsigned char *str, int *w, int *h) { return font_getstringsize(str, w, h, current_vp->font); diff --git a/firmware/drivers/lcd-2bit-horz.c b/firmware/drivers/lcd-2bit-horz.c index 1ee0addba4..195885c072 100644 --- a/firmware/drivers/lcd-2bit-horz.c +++ b/firmware/drivers/lcd-2bit-horz.c @@ -172,6 +172,11 @@ void lcd_setfont(int newfont) current_vp->font = newfont; } +int lcd_getfont(void) +{ + return current_vp->font; +} + int lcd_getstringsize(const unsigned char *str, int *w, int *h) { return font_getstringsize(str, w, h, current_vp->font); diff --git a/firmware/drivers/lcd-2bit-vert.c b/firmware/drivers/lcd-2bit-vert.c index 2341ddb3df..cb532b7aaf 100644 --- a/firmware/drivers/lcd-2bit-vert.c +++ b/firmware/drivers/lcd-2bit-vert.c @@ -175,6 +175,11 @@ void lcd_setfont(int newfont) current_vp->font = newfont; } +int lcd_getfont(void) +{ + return current_vp->font; +} + int lcd_getstringsize(const unsigned char *str, int *w, int *h) { return font_getstringsize(str, w, h, current_vp->font); diff --git a/firmware/drivers/lcd-remote-1bit-v.c b/firmware/drivers/lcd-remote-1bit-v.c index a33648b76a..20c6f6655c 100644 --- a/firmware/drivers/lcd-remote-1bit-v.c +++ b/firmware/drivers/lcd-remote-1bit-v.c @@ -117,6 +117,11 @@ void lcd_remote_setfont(int newfont) current_vp->font = newfont; } +int lcd_remote_getfont(void) +{ + return current_vp->font; +} + int lcd_remote_getstringsize(const unsigned char *str, int *w, int *h) { return font_getstringsize(str, w, h, current_vp->font); diff --git a/firmware/drivers/lcd-remote-2bit-vi.c b/firmware/drivers/lcd-remote-2bit-vi.c index 9ab98c69aa..9f70e95195 100644 --- a/firmware/drivers/lcd-remote-2bit-vi.c +++ b/firmware/drivers/lcd-remote-2bit-vi.c @@ -174,6 +174,11 @@ void lcd_remote_setfont(int newfont) current_vp->font = newfont; } +int lcd_remote_getfont(void) +{ + return current_vp->font; +} + int lcd_remote_getstringsize(const unsigned char *str, int *w, int *h) { return font_getstringsize(str, w, h, current_vp->font); diff --git a/firmware/export/lcd-remote.h b/firmware/export/lcd-remote.h index 34c40e52c1..cdd48e5fa3 100644 --- a/firmware/export/lcd-remote.h +++ b/firmware/export/lcd-remote.h @@ -149,6 +149,7 @@ extern int lcd_remote_getymargin(void); extern int lcd_remote_getwidth(void); extern int lcd_remote_getheight(void); extern void lcd_remote_setfont(int font); +extern int lcd_remote_getfont(void); extern int lcd_remote_getstringsize(const unsigned char *str, int *w, int *h); /* low level drawing function pointer arrays */ diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h index 276dcdfedc..57c9b1d3b8 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h @@ -372,6 +372,7 @@ extern void lcd_set_flip(bool yesno); extern void lcd_set_drawmode(int mode); extern int lcd_get_drawmode(void); extern void lcd_setfont(int font); +extern int lcd_getfont(void); extern void lcd_puts_style_offset(int x, int y, const unsigned char *str, int style, int offset); -- cgit v1.2.3