From 93b231c69366563ba441dc4907bfb036fe3b4c55 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 12 Sep 2002 13:33:59 +0000 Subject: [PATCH] Greg Haerr's new loadable font. No more #ifdef font-style, removed old propfont and loadable font code. New font file format. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2269 a1c6a512-1295-4272-9138-f99709370657 --- apps/credits.c | 8 +- apps/main.c | 17 +- apps/main_menu.c | 5 +- apps/menu.c | 39 +- apps/recorder/bounce.c | 1 - apps/recorder/icons.c | 23 +- apps/recorder/wormlet.c | 4 - apps/settings.c | 107 +- apps/tree.c | 36 +- apps/wps-display.c | 20 +- apps/wps.c | 46 +- docs/AJF | 29 +- firmware/X5x8.bdf | 1967 +++++++++++++++++++++++++ firmware/X5x8.c | 2853 +++++++++++++++++++++++++++++++++++++ firmware/ajf.c | 100 -- firmware/ajf.h | 52 - firmware/chartables.c | 248 +--- firmware/debug.h | 3 +- firmware/drivers/fat.c | 29 - firmware/drivers/lcd.c | 315 +--- firmware/drivers/lcd.h | 17 +- firmware/font.c | 228 +++ firmware/font.h | 126 ++ firmware/loadfont.c | 202 +++ firmware/panic.c | 5 +- firmware/unicode.c | 101 -- firmware/unicode.h | 36 - uisimulator/x11/Makefile | 30 +- uisimulator/x11/uibasic.c | 1 + 29 files changed, 5528 insertions(+), 1120 deletions(-) create mode 100644 firmware/X5x8.bdf create mode 100644 firmware/X5x8.c delete mode 100644 firmware/ajf.c delete mode 100644 firmware/ajf.h create mode 100644 firmware/font.c create mode 100644 firmware/font.h create mode 100644 firmware/loadfont.c delete mode 100644 firmware/unicode.c delete mode 100644 firmware/unicode.h diff --git a/apps/credits.c b/apps/credits.c index f3bbd5992b..f8b060f31c 100644 --- a/apps/credits.c +++ b/apps/credits.c @@ -19,6 +19,7 @@ #include "credits.h" #include "lcd.h" +#include "font.h" #include "kernel.h" #include "button.h" #include "sprintf.h" @@ -64,6 +65,7 @@ char* credits[] = { "Chad Lockwood", "John Pybus", "Randy Wood", + "Gregory Haerr", }; #ifdef HAVE_LCD_BITMAP @@ -111,15 +113,15 @@ void roll_credits(void) int height; int width; - lcd_getfontsize(0, &width, &height); + lcd_getfontsize(FONT_UI, &width, &height); while(1) { lcd_clear_display(); for ( i=0; i <= (64-y)/height; i++ ) - lcd_putsxy(0, i*height+y, line+i #include "lcd.h" +#include "font.h" #include "backlight.h" #include "menu.h" #include "button.h" @@ -34,10 +35,6 @@ #include "widgets.h" #endif -#ifdef LOADABLE_FONTS -#include "ajf.h" -#endif - struct menu { int top; int cursor; @@ -54,8 +51,10 @@ struct menu { #define LINE_X 0 /* X position the entry-list starts at */ #define LINE_Y (global_settings.statusbar ? 1 : 0) /* Y position the entry-list starts at */ -#define LINE_HEIGTH 8 /* pixels for each text line */ +//FIXME remove +#define LINE_HEIGTH 8 /* pixels for each text line */ +//FIXME remove #define MENU_LINES (LCD_HEIGHT / LINE_HEIGTH - LINE_Y) #define CURSOR_X (global_settings.scrollbar ? 1 : 0) @@ -89,17 +88,12 @@ struct menu { static struct menu menus[MAX_MENUS]; static bool inuse[MAX_MENUS] = { false }; -/* count in letter posistions, NOT pixels */ +/* count in letter positions, NOT pixels */ void put_cursorxy(int x, int y, bool on) { #ifdef HAVE_LCD_BITMAP -#ifdef LOADABLE_FONTS - int fh; - unsigned char* font = lcd_getcurrentldfont(); - fh = ajf_get_fontheight(font); -#else - int fh = 8; -#endif + int fh, fw; + lcd_getfontsize(FONT_UI, &fw, &fh); #endif /* place the cursor */ @@ -131,11 +125,10 @@ void put_cursorxy(int x, int y, bool on) static void menu_draw(int m) { int i = 0; -#ifdef LOADABLE_FONTS +#if LCD_PROPFONTS + int fw, fh; int menu_lines; - int fh; - unsigned char* font = lcd_getcurrentldfont(); - fh = ajf_get_fontheight(font); + lcd_getfontsize(FONT_UI, &fw, &fh); if (global_settings.statusbar) menu_lines = (LCD_HEIGHT - STATUSBAR_HEIGHT) / fh; else @@ -148,7 +141,7 @@ static void menu_draw(int m) lcd_clear_display(); /* ...then clean the screen */ #ifdef HAVE_LCD_BITMAP lcd_setmargins(MARGIN_X,MARGIN_Y); /* leave room for cursor and icon */ - lcd_setfont(0); + lcd_setfont(FONT_UI); #endif /* correct cursor pos if out of screen */ if (menus[m].cursor - menus[m].top >= menu_lines) @@ -182,18 +175,18 @@ static void menu_draw(int m) static void put_cursor(int m, int target) { bool do_update = true; -#ifdef LOADABLE_FONTS +#if LCD_PROPFONTS + int fw, fh; int menu_lines; - int fh; - unsigned char* font = lcd_getcurrentldfont(); - fh = ajf_get_fontheight(font); + lcd_getfontsize(FONT_UI, &fw, &fh); if (global_settings.statusbar) - menu_lines = (LCD_HEIGHT-STATUSBAR_HEIGHT)/fh; + menu_lines = (LCD_HEIGHT - STATUSBAR_HEIGHT) / fh; else menu_lines = LCD_HEIGHT/fh; #else int menu_lines = MENU_LINES; #endif + put_cursorxy(CURSOR_X, menus[m].cursor - menus[m].top, false); menus[m].cursor = target; menu_draw(m); diff --git a/apps/recorder/bounce.c b/apps/recorder/bounce.c index 96291066e5..999ba47366 100644 --- a/apps/recorder/bounce.c +++ b/apps/recorder/bounce.c @@ -136,7 +136,6 @@ static void loopit(void) lcd_bitmap((char *)char_gen_12x16[rock[i]-0x20], xtable[xx%71], table[yy&63], 11, 16, false); - lcd_update(); ysanke+= values[NUM_YSANKE].num; diff --git a/apps/recorder/icons.c b/apps/recorder/icons.c index 0501a3f0c0..fbfaf6cd8c 100644 --- a/apps/recorder/icons.c +++ b/apps/recorder/icons.c @@ -16,8 +16,9 @@ * KIND, either express or implied. * ****************************************************************************/ -#include #include +#include "lcd.h" +#include "font.h" #include "kernel.h" #include "sprintf.h" #include "rtc.h" @@ -233,15 +234,7 @@ void statusbar_icon_volume(int percent) /* display volume lever numerical? */ if (TIME_BEFORE(current_tick,switch_tick)) { snprintf(buffer, sizeof(buffer), "%2d", percent); -#if defined(LCD_PROPFONTS) - lcd_getstringsize(buffer, 0, &width, &height); -#elif defined(LOADABLE_FONTS) - font = lcd_getcurrentldfont(); - lcd_getstringsize(buffer, font, &width, &height); -#else - width = 6*strlen(buffer); - height = 8; -#endif + lcd_getstringsize(buffer, FONT_UI, &width, &height); if (height <= STATUSBAR_HEIGHT) lcd_putsxy(ICON_VOLUME_X_POS + ICON_VOLUME_WIDTH / 2 - width/2, STATUSBAR_Y_POS, buffer, 0); @@ -316,15 +309,7 @@ void statusbar_time(int hour, int minute) strncpy(buffer, "--:--", sizeof buffer); } -#if defined(LCD_PROPFONTS) - lcd_getstringsize(buffer, 0, &width, &height); -#elif defined(LOADABLE_FONTS) - font = lcd_getcurrentldfont(); - lcd_getstringsize(buffer, font, &width, &height); -#else - width = 6*strlen(buffer); - height = 8; -#endif + lcd_getstringsize(buffer, FONT_UI, &width, &height); if (height <= STATUSBAR_HEIGHT) lcd_putsxy(TIME_X_END - width, STATUSBAR_Y_POS, buffer, 0); } diff --git a/apps/recorder/wormlet.c b/apps/recorder/wormlet.c index ba96f6b9de..84ee55062c 100644 --- a/apps/recorder/wormlet.c +++ b/apps/recorder/wormlet.c @@ -67,11 +67,7 @@ /* size of the field the worm lives in */ #define FIELD_RECT_X 1 #define FIELD_RECT_Y 1 -#ifdef LCD_PROPFONTS #define FIELD_RECT_WIDTH (LCD_WIDTH - 39) -#else -#define FIELD_RECT_WIDTH (LCD_WIDTH - 46) -#endif #define FIELD_RECT_HEIGHT (LCD_HEIGHT - 2) /* size of the ring of the worm diff --git a/apps/settings.c b/apps/settings.c index a1bbe4a3db..ce2b28f16b 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -40,6 +40,7 @@ #include "atoi.h" #ifdef HAVE_LCD_BITMAP #include "icons.h" +#include "font.h" #endif struct user_settings global_settings; @@ -772,15 +773,10 @@ void set_time(char* string, int timedate[]) int realyear; int julianday; int i; -#if defined(LOADABLE_FONTS) || defined(LCD_PROPFONTS) unsigned char reffub[5]; unsigned int width, height; unsigned int separator_width, weekday_width; unsigned int line_height, prev_line_height; -#if defined(LOADABLE_FONTS) - unsigned char *font = lcd_getcurrentldfont(); -#endif -#endif #ifdef HAVE_LCD_BITMAP if(global_settings.statusbar) @@ -817,65 +813,35 @@ void set_time(char* string, int timedate[]) timedate[1], timedate[2]); lcd_puts(0, 1, buffer); -#if defined(LCD_PROPFONTS) + /* recalculate the positions and offsets */ - lcd_getstringsize(string, 0, &width, &prev_line_height); - lcd_getstringsize(buffer, 0, &width, &line_height); - lcd_getstringsize(":", 0, &separator_width, &height); + lcd_getstringsize(string, FONT_UI, &width, &prev_line_height); + lcd_getstringsize(buffer, FONT_UI, &width, &line_height); + lcd_getstringsize(":", FONT_UI, &separator_width, &height); strncpy(reffub, buffer, 2); reffub[2] = '\0'; - lcd_getstringsize(reffub, 0, &width, &height); + lcd_getstringsize(reffub, FONT_UI, &width, &height); cursor[0][INDEX_X] = 0; cursor[0][INDEX_Y] = 1 + prev_line_height + 1; cursor[0][INDEX_WIDTH] = width; strncpy(reffub, buffer + 3, 2); reffub[2] = '\0'; - lcd_getstringsize(reffub, 0, &width, &height); + lcd_getstringsize(reffub, FONT_UI, &width, &height); cursor[1][INDEX_X] = cursor[0][INDEX_WIDTH] + separator_width; cursor[1][INDEX_Y] = 1 + prev_line_height + 1; cursor[1][INDEX_WIDTH] = width; strncpy(reffub, buffer + 6, 2); reffub[2] = '\0'; - lcd_getstringsize(reffub, 0, &width, &height); + lcd_getstringsize(reffub, FONT_UI, &width, &height); cursor[2][INDEX_X] = cursor[0][INDEX_WIDTH] + separator_width + cursor[1][INDEX_WIDTH] + separator_width; cursor[2][INDEX_Y] = 1 + prev_line_height + 1; cursor[2][INDEX_WIDTH] = width; - lcd_getstringsize(buffer, 0, &width, &prev_line_height); -#elif defined(LOADABLE_FONTS) - /* recalculate the positions and offsets */ - lcd_getstringsize(string, font, &width, &prev_line_height); - lcd_getstringsize(buffer, font, &width, &line_height); - lcd_getstringsize(":", font, &separator_width, &height); - - strncpy(reffub, buffer, 2); - reffub[2] = '\0'; - lcd_getstringsize(reffub, font, &width, &height); - cursor[0][INDEX_X] = 0; - cursor[0][INDEX_Y] = prev_line_height; - cursor[0][INDEX_WIDTH] = width; - - strncpy(reffub, buffer + 3, 2); - reffub[2] = '\0'; - lcd_getstringsize(reffub, font, &width, &height); - cursor[1][INDEX_X] = cursor[0][INDEX_WIDTH] + separator_width; - cursor[1][INDEX_Y] = prev_line_height; - cursor[1][INDEX_WIDTH] = width; - - strncpy(reffub, buffer + 6, 2); - reffub[2] = '\0'; - lcd_getstringsize(reffub, font, &width, &height); - cursor[2][INDEX_X] = cursor[0][INDEX_WIDTH] + separator_width + - cursor[1][INDEX_WIDTH] + separator_width; - cursor[2][INDEX_Y] = prev_line_height; - cursor[2][INDEX_WIDTH] = width; - - lcd_getstringsize(buffer, font, &width, &prev_line_height); -#endif + lcd_getstringsize(buffer, FONT_UI, &width, &prev_line_height); snprintf(buffer, sizeof(buffer), "%s 20%02d %s %02d ", dayname[timedate[6]], @@ -883,24 +849,24 @@ void set_time(char* string, int timedate[]) monthname[timedate[4] - 1], timedate[5]); lcd_puts(0, 2, buffer); -#if defined(LCD_PROPFONTS) + /* recalculate the positions and offsets */ - lcd_getstringsize(buffer, 0, &width, &line_height); + lcd_getstringsize(buffer, FONT_UI, &width, &line_height); strncpy(reffub, buffer, 3); reffub[3] = '\0'; - lcd_getstringsize(reffub, 0, &weekday_width, &height); - lcd_getstringsize(" ", 0, &separator_width, &height); + lcd_getstringsize(reffub, FONT_UI, &weekday_width, &height); + lcd_getstringsize(" ", FONT_UI, &separator_width, &height); strncpy(reffub, buffer + 4, 4); reffub[4] = '\0'; - lcd_getstringsize(reffub, 0, &width, &height); + lcd_getstringsize(reffub, FONT_UI, &width, &height); cursor[3][INDEX_X] = weekday_width + separator_width; cursor[3][INDEX_Y] = cursor[0][INDEX_Y] + prev_line_height + 1; cursor[3][INDEX_WIDTH] = width; strncpy(reffub, buffer + 9, 3); reffub[3] = '\0'; - lcd_getstringsize(reffub, 0, &width, &height); + lcd_getstringsize(reffub, FONT_UI, &width, &height); cursor[4][INDEX_X] = weekday_width + separator_width + cursor[3][INDEX_WIDTH] + separator_width; cursor[4][INDEX_Y] = cursor[0][INDEX_Y] + prev_line_height + 1; @@ -908,7 +874,7 @@ void set_time(char* string, int timedate[]) strncpy(reffub, buffer + 13, 2); reffub[2] = '\0'; - lcd_getstringsize(reffub, 0, &width, &height); + lcd_getstringsize(reffub, FONT_UI, &width, &height); cursor[5][INDEX_X] = weekday_width + separator_width + cursor[3][INDEX_WIDTH] + separator_width + cursor[4][INDEX_WIDTH] + separator_width; @@ -919,48 +885,7 @@ void set_time(char* string, int timedate[]) cursor[cursorpos][INDEX_Y] + lcd_getymargin(), cursor[cursorpos][INDEX_WIDTH], line_height); -#elif defined(LOADABLE_FONTS) - /* recalculate the positions and offsets */ - lcd_getstringsize(buffer, font, &width, &line_height); - strncpy(reffub, buffer, 3); - reffub[3] = '\0'; - lcd_getstringsize(reffub, font, &weekday_width, &height); - lcd_getstringsize(" ", font, &separator_width, &height); - strncpy(reffub, buffer + 4, 4); - reffub[4] = '\0'; - lcd_getstringsize(reffub, font, &width, &height); - cursor[3][INDEX_X] = weekday_width + separator_width; - cursor[3][INDEX_Y] = cursor[0][INDEX_Y] + prev_line_height; - cursor[3][INDEX_WIDTH] = width; - - strncpy(reffub, buffer + 9, 3); - reffub[3] = '\0'; - lcd_getstringsize(reffub, font, &width, &height); - cursor[4][INDEX_X] = weekday_width + separator_width + - cursor[3][INDEX_WIDTH] + separator_width; - cursor[4][INDEX_Y] = cursor[0][INDEX_Y] + prev_line_height; - cursor[4][INDEX_WIDTH] = width; - - strncpy(reffub, buffer + 13, 2); - reffub[2] = '\0'; - lcd_getstringsize(reffub, font, &width, &height); - cursor[5][INDEX_X] = weekday_width + separator_width + - cursor[3][INDEX_WIDTH] + separator_width + - cursor[4][INDEX_WIDTH] + separator_width; - cursor[5][INDEX_Y] = cursor[0][INDEX_Y] + prev_line_height; - cursor[5][INDEX_WIDTH] = width; - - lcd_invertrect(cursor[cursorpos][INDEX_X], - cursor[cursorpos][INDEX_Y] + lcd_getymargin(), - cursor[cursorpos][INDEX_WIDTH], - line_height); -#else - lcd_invertrect(cursor[cursorpos][INDEX_X], - cursor[cursorpos][INDEX_Y] + lcd_getymargin(), - cursor[cursorpos][INDEX_WIDTH], - 8); -#endif lcd_puts(0, 4, "ON to set"); lcd_puts(0, 5, "OFF to revert"); #ifdef HAVE_LCD_BITMAP diff --git a/apps/tree.c b/apps/tree.c index 47853f03c9..21aa78c74d 100644 --- a/apps/tree.c +++ b/apps/tree.c @@ -26,6 +26,7 @@ #include "dir.h" #include "file.h" #include "lcd.h" +#include "font.h" #include "backlight.h" #include "button.h" #include "kernel.h" @@ -49,10 +50,6 @@ #include "widgets.h" #endif -#ifdef LOADABLE_FONTS -#include "ajf.h" -#endif - #define NAME_BUFFER_SIZE (AVERAGE_FILENAME_LENGTH * MAX_FILES_IN_DIR) char name_buffer[NAME_BUFFER_SIZE]; @@ -190,17 +187,16 @@ static int showdir(char *path, int start) int i; int tree_max_on_screen; bool dir_buffer_full; -#ifdef LOADABLE_FONTS - int fh; - unsigned char *font = lcd_getcurrentldfont(); - fh = ajf_get_fontheight(font); + +#ifdef HAVE_LCD_BITMAP + int fw, fh; + lcd_getfontsize(FONT_UI, &fw, &fh); tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; line_height = fh; #else tree_max_on_screen = TREE_MAX_ON_SCREEN; #endif - /* new dir? cache it */ if (strncmp(path,lastdir,sizeof(lastdir))) { DIR *dir = opendir(path); @@ -339,7 +335,7 @@ static int showdir(char *path, int start) lcd_clear_display(); #ifdef HAVE_LCD_BITMAP lcd_setmargins(MARGIN_X,MARGIN_Y); /* leave room for cursor and icon */ - lcd_setfont(0); + lcd_setfont(FONT_UI); #endif for ( i=start; i < start+tree_max_on_screen; i++ ) { @@ -573,10 +569,9 @@ bool dirbrowse(char *root) bool lastfilter = global_settings.mp3filter; bool lastsortcase = global_settings.sort_case; bool lastshowhidden = global_settings.show_hidden_files; -#ifdef LOADABLE_FONTS - int fh; - unsigned char *font = lcd_getcurrentldfont(); - fh = ajf_get_fontheight(font); +#ifdef HAVE_LCD_BITMAP + int fw, fh; + lcd_getfontsize(FONT_UI, &fw, &fh); tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; #else tree_max_on_screen = TREE_MAX_ON_SCREEN; @@ -743,10 +738,8 @@ bool dirbrowse(char *root) reload_root = true; global_settings.resume_index = -1; } -#ifdef LOADABLE_FONTS +#ifdef HAVE_LCD_BITMAP tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; -#else - tree_max_on_screen = TREE_MAX_ON_SCREEN; #endif } } @@ -836,10 +829,8 @@ bool dirbrowse(char *root) lcd_stop_scroll(); if (wps_show() == SYS_USB_CONNECTED) reload_root = true; -#ifdef LOADABLE_FONTS +#ifdef HAVE_LCD_BITMAP tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; -#else - tree_max_on_screen = TREE_MAX_ON_SCREEN; #endif restore = true; } @@ -855,10 +846,9 @@ bool dirbrowse(char *root) case BUTTON_F3: if (f3_screen()) reload_root = true; -#ifdef LOADABLE_FONTS + +#ifdef HAVE_LCD_BITMAP tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; -#else - tree_max_on_screen = TREE_MAX_ON_SCREEN; #endif restore = true; break; diff --git a/apps/wps-display.c b/apps/wps-display.c index 5d6290d244..8d33c723a4 100644 --- a/apps/wps-display.c +++ b/apps/wps-display.c @@ -27,6 +27,7 @@ #include #include "lcd.h" +#include "font.h" #include "mpeg.h" #include "id3.h" #include "settings.h" @@ -42,10 +43,6 @@ #include "widgets.h" #endif -#ifdef LOADABLE_FONTS -#include "ajf.h" -#endif - #define WPS_CONFIG ROCKBOX_DIR "/default.wps" #ifdef HAVE_LCD_BITMAP @@ -551,11 +548,7 @@ bool wps_refresh(struct mp3entry* id3, int ffwd_offset, bool refresh_all) #else int w,h; int offset = global_settings.statusbar ? STATUSBAR_HEIGHT : 0; -#ifdef LCD_PROPFONTS - lcd_getstringsize("M",0,&w,&h); -#else - lcd_getfontsize(0,&w,&h); -#endif + lcd_getstringsize("M",FONT_UI,&w,&h); slidebar(0, i*h + offset + 1, LCD_WIDTH, 6, (id3->elapsed + ff_rewind_count) * 100 / id3->length, Grow_Right); @@ -581,15 +574,6 @@ bool wps_refresh(struct mp3entry* id3, int ffwd_offset, bool refresh_all) void wps_display(struct mp3entry* id3) { - int font_height; - -#ifdef LOADABLE_FONTS - unsigned char *font = lcd_getcurrentldfont(); - font_height = ajf_get_fontheight(font); -#else - font_height = 8; -#endif - lcd_clear_display(); if (!id3 && !mpeg_is_playing()) diff --git a/apps/wps.c b/apps/wps.c index 4ac2476da7..d10eb92655 100644 --- a/apps/wps.c +++ b/apps/wps.c @@ -22,6 +22,7 @@ #include "file.h" #include "lcd.h" +#include "font.h" #include "backlight.h" #include "button.h" #include "kernel.h" @@ -40,10 +41,6 @@ #include "icons.h" #endif -#ifdef LOADABLE_FONTS -#include "ajf.h" -#endif - #define FF_REWIND_MAX_PERCENT 3 /* cap ff/rewind step size at max % of file */ /* 3% of 30min file == 54s step size */ @@ -634,21 +631,17 @@ bool f2_screen(void) char buf[32]; /* Get the font height */ -#ifdef LCD_PROPFONTS - lcd_getstringsize("A",0,&w,&h); -#else - lcd_getfontsize(0,&w,&h); -#endif + lcd_getstringsize("A",FONT_UI,&w,&h); lcd_stop_scroll(); while (!exit) { lcd_clear_display(); - lcd_putsxy(0, LCD_HEIGHT/2 - h*2, "Shuffle", 0); - lcd_putsxy(0, LCD_HEIGHT/2 - h, "mode:", 0); + lcd_putsxy(0, LCD_HEIGHT/2 - h*2, "Shuffle", FONT_UI); + lcd_putsxy(0, LCD_HEIGHT/2 - h, "mode:", FONT_UI); lcd_putsxy(0, LCD_HEIGHT/2, - global_settings.playlist_shuffle ? "on" : "off", 0); + global_settings.playlist_shuffle ? "on" : "off", FONT_UI); lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward], LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true); @@ -656,13 +649,8 @@ bool f2_screen(void) global_settings.mp3filter ? "on" : "off"); /* Get the string width and height */ -#ifdef LCD_PROPFONTS - lcd_getstringsize(buf,0,&w,&h); -#else - lcd_getfontsize(0,&w,&h); - w *= strlen(buf); -#endif - lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, buf, 0); + lcd_getstringsize(buf,FONT_UI,&w,&h); + lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, buf, FONT_UI); lcd_bitmap(bitmap_icons_7x8[Icon_DownArrow], LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8, true); @@ -717,26 +705,20 @@ bool f3_screen(void) char* ptr; ptr = "Status"; -#ifdef LCD_PROPFONTS - lcd_getstringsize(ptr,0,&w,&h); -#else - lcd_getfontsize(0,&w,&h); - w *= strlen(ptr); -#endif - + lcd_getstringsize(ptr,FONT_UI,&w,&h); lcd_clear_display(); - lcd_putsxy(0, LCD_HEIGHT/2 - h*2, "Scroll", 0); - lcd_putsxy(0, LCD_HEIGHT/2 - h, "bar:", 0); + lcd_putsxy(0, LCD_HEIGHT/2 - h*2, "Scroll", FONT_UI); + lcd_putsxy(0, LCD_HEIGHT/2 - h, "bar:", FONT_UI); lcd_putsxy(0, LCD_HEIGHT/2, - global_settings.scrollbar ? "on" : "off", 0); + global_settings.scrollbar ? "on" : "off", FONT_UI); lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward], LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true); - lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2, ptr, 0); - lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h, "bar:", 0); + lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2, ptr, FONT_UI); + lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h, "bar:", FONT_UI); lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2, - global_settings.statusbar ? "on" : "off", 0 ); + global_settings.statusbar ? "on" : "off", FONT_UI); lcd_bitmap(bitmap_icons_7x8[Icon_FastForward], LCD_WIDTH/2 + 8, LCD_HEIGHT/2 - 4, 7, 8, true); lcd_update(); diff --git a/docs/AJF b/docs/AJF index 6558dfcf45..9a3c86eb02 100644 --- a/docs/AJF +++ b/docs/AJF @@ -1,4 +1,4 @@ -Description of the binary AJF font file format +Description of the binary AJF font file format (version 2) Index Descripton @@ -9,14 +9,27 @@ Index Descripton 23 - 24 "bound width" (high 8 bits, low 8 bits) 25 - 26 "bound height" (high 8 bits, low 8 bits) 26 - 28 first character in the font -29 - 2a 0x00ff (supposed number of characters in the font?) -2b - map offset table starts here. Each offset entry is supposed to be - three bytes: width, offset highbyte, offset lowbyte - The offset is a relative offset, counted in bytes, to where in the - font data this particular char's bitmap image starts. +29 - 2a number of characters in the font (alwasys 0x00ff now) +2b - map offset table starts here. Each offset entry is two bytes: + offset highbyte, offset lowbyte - font data, in Rockbox-internal image-format. That means column-wise + The offset is number of bytes from the start of this file, to where + in the font data this particular char's font data starts. + + There is one offset entry for each character in this font, starting + with 'first character' (set above) and ending when all the 'number + of characters' have been stored. + +?? - Font data. First four bytes width, height, dispx and dispy and then + the glyph in Rockbox-internal image-format. That means column-wise left-to-right for the full width, the first 8 pixels of height. Then follows the next 8 pixels of height left-to-right. - We don't currently support fonts larger than 16 pixels. + We don't currently support fonts larger than 16 pixels. (This font + file format would have no problem with bigger sizes, but the internal + bitmap function has.) + +References + + The BDF file format + http://partners.adobe.com/asn/developer/pdfs/tn/5005.BDF_Spec.pdf \ No newline at end of file diff --git a/firmware/X5x8.bdf b/firmware/X5x8.bdf new file mode 100644 index 0000000000..adb452a3ee --- /dev/null +++ b/firmware/X5x8.bdf @@ -0,0 +1,1967 @@ +STARTFONT 2.1 +COMMENT $Xorg: 5x8.bdf,v 1.3 2000/08/18 15:17:39 xorgcvs Exp $ +COMMENT Copyright 1989 Cognition Corp. +COMMENT +COMMENT Permission to use, copy, modify, and distribute this software and its +COMMENT documentation for any purpose and without fee is hereby granted, +COMMENT provided that the above copyright notice appear in all copies and that +COMMENT both that copyright notice and this permission notice appear in +COMMENT supporting documentation, and that the name of Cognition Corp. not be +COMMENT used in advertising or publicity pertaining to distribution of the +COMMENT software without specific, written prior permission. Cognition Corp. +COMMENT makes no representations about the suitability of this software for any +COMMENT purpose. It is provided "as is" without express or implied warranty. +COMMENT +COMMENT COGNITION CORP. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +COMMENT INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +COMMENT EVENT SHALL COGNITION CORP. BE LIABLE FOR ANY SPECIAL, INDIRECT OR +COMMENT CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +COMMENT USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +COMMENT OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +COMMENT PERFORMANCE OF THIS SOFTWARE. +FONT -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO646.1991-IRV +SIZE 11 75 75 +FONTBOUNDINGBOX 5 8 0 0 +STARTPROPERTIES 19 +FONTNAME_REGISTRY "" +FOUNDRY "Misc" +FAMILY_NAME "Fixed" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +PIXEL_SIZE 8 +POINT_SIZE 80 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "C" +AVERAGE_WIDTH 50 +CHARSET_REGISTRY "ISO646.1991" +CHARSET_ENCODING "IRV" +FONT_DESCENT 1 +FONT_ASCENT 7 +COPYRIGHT "Copyright 1989 by Cognition Corp." +DEFAULT_CHAR 0 +ENDPROPERTIES +CHARS 128 +STARTCHAR C000 +ENCODING 0 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR C001 +ENCODING 1 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +70 +f8 +70 +20 +00 +00 +ENDCHAR +STARTCHAR C002 +ENCODING 2 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +28 +50 +28 +50 +28 +50 +28 +ENDCHAR +STARTCHAR C003 +ENCODING 3 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +50 +50 +70 +50 +50 +38 +10 +10 +ENDCHAR +STARTCHAR C004 +ENCODING 4 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +e0 +80 +c0 +b8 +a0 +30 +20 +20 +ENDCHAR +STARTCHAR C005 +ENCODING 5 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +60 +80 +60 +00 +30 +28 +30 +28 +ENDCHAR +STARTCHAR C006 +ENCODING 6 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +80 +80 +80 +e0 +38 +20 +30 +20 +ENDCHAR +STARTCHAR C007 +ENCODING 7 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +50 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR C010 +ENCODING 8 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +70 +20 +00 +70 +00 +00 +ENDCHAR +STARTCHAR C011 +ENCODING 9 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +90 +d0 +b0 +90 +20 +20 +20 +38 +ENDCHAR +STARTCHAR C012 +ENCODING 10 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +a0 +a0 +a0 +40 +38 +10 +10 +10 +ENDCHAR +STARTCHAR C013 +ENCODING 11 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +20 +e0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR C014 +ENCODING 12 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +e0 +20 +20 +20 +20 +ENDCHAR +STARTCHAR C015 +ENCODING 13 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +38 +20 +20 +20 +20 +ENDCHAR +STARTCHAR C016 +ENCODING 14 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +20 +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR C017 +ENCODING 15 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +20 +f8 +20 +20 +20 +20 +ENDCHAR +STARTCHAR C020 +ENCODING 16 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +f8 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR C021 +ENCODING 17 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +f8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR C022 +ENCODING 18 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +f8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR C023 +ENCODING 19 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +f8 +00 +00 +00 +ENDCHAR +STARTCHAR C024 +ENCODING 20 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +f8 +00 +00 +ENDCHAR +STARTCHAR C025 +ENCODING 21 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +20 +38 +20 +20 +20 +20 +ENDCHAR +STARTCHAR C026 +ENCODING 22 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +20 +e0 +20 +20 +20 +20 +ENDCHAR +STARTCHAR C027 +ENCODING 23 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +20 +f8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR C030 +ENCODING 24 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +f8 +20 +20 +20 +20 +ENDCHAR +STARTCHAR C031 +ENCODING 25 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +20 +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR C032 +ENCODING 26 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +10 +20 +40 +20 +10 +70 +00 +ENDCHAR +STARTCHAR C033 +ENCODING 27 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +20 +10 +20 +40 +70 +00 +ENDCHAR +STARTCHAR C034 +ENCODING 28 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +f8 +50 +50 +50 +50 +00 +00 +ENDCHAR +STARTCHAR C035 +ENCODING 29 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +10 +f8 +20 +f8 +40 +00 +00 +ENDCHAR +STARTCHAR C036 +ENCODING 30 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +48 +e0 +40 +48 +b0 +00 +ENDCHAR +STARTCHAR C037 +ENCODING 31 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR C040 +ENCODING 32 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ! +ENCODING 33 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +20 +20 +20 +00 +20 +00 +ENDCHAR +STARTCHAR " +ENCODING 34 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +50 +50 +50 +00 +00 +00 +00 +ENDCHAR +STARTCHAR # +ENCODING 35 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +50 +50 +f8 +50 +f8 +50 +50 +00 +ENDCHAR +STARTCHAR $ +ENCODING 36 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +70 +a0 +70 +28 +70 +20 +00 +ENDCHAR +STARTCHAR % +ENCODING 37 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +50 +20 +50 +10 +00 +00 +ENDCHAR +STARTCHAR & +ENCODING 38 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +20 +50 +50 +20 +50 +50 +28 +00 +ENDCHAR +STARTCHAR ' +ENCODING 39 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +20 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ( +ENCODING 40 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +10 +20 +20 +20 +10 +00 +00 +ENDCHAR +STARTCHAR ) +ENCODING 41 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +20 +20 +20 +40 +00 +00 +ENDCHAR +STARTCHAR * +ENCODING 42 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +48 +30 +78 +30 +48 +00 +00 +ENDCHAR +STARTCHAR + +ENCODING 43 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +20 +f8 +20 +20 +00 +00 +ENDCHAR +STARTCHAR , +ENCODING 44 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +30 +20 +40 +00 +ENDCHAR +STARTCHAR - +ENCODING 45 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +78 +00 +00 +00 +ENDCHAR +STARTCHAR . +ENCODING 46 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +20 +70 +20 +00 +ENDCHAR +STARTCHAR / +ENCODING 47 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +08 +08 +10 +20 +40 +40 +00 +ENDCHAR +STARTCHAR 0 +ENCODING 48 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +50 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR 1 +ENCODING 49 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +60 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR 2 +ENCODING 50 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +48 +08 +30 +40 +78 +00 +ENDCHAR +STARTCHAR 3 +ENCODING 51 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +48 +10 +08 +48 +30 +00 +ENDCHAR +STARTCHAR 4 +ENCODING 52 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +10 +30 +50 +78 +10 +10 +00 +ENDCHAR +STARTCHAR 5 +ENCODING 53 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +78 +40 +70 +08 +48 +30 +00 +ENDCHAR +STARTCHAR 6 +ENCODING 54 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +40 +50 +68 +48 +30 +00 +ENDCHAR +STARTCHAR 7 +ENCODING 55 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +78 +08 +10 +10 +20 +20 +00 +ENDCHAR +STARTCHAR 8 +ENCODING 56 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +48 +30 +48 +48 +30 +00 +ENDCHAR +STARTCHAR 9 +ENCODING 57 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +48 +58 +28 +08 +30 +00 +ENDCHAR +STARTCHAR : +ENCODING 58 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +30 +00 +30 +30 +00 +00 +ENDCHAR +STARTCHAR ; +ENCODING 59 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +30 +00 +30 +20 +40 +00 +ENDCHAR +STARTCHAR < +ENCODING 60 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +10 +20 +40 +40 +20 +10 +00 +ENDCHAR +STARTCHAR = +ENCODING 61 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +70 +00 +70 +00 +00 +00 +ENDCHAR +STARTCHAR > +ENCODING 62 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +20 +10 +10 +20 +40 +00 +ENDCHAR +STARTCHAR ? +ENCODING 63 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +50 +10 +20 +00 +20 +00 +ENDCHAR +STARTCHAR @ +ENCODING 64 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +30 +48 +98 +a8 +a8 +90 +40 +30 +ENDCHAR +STARTCHAR A +ENCODING 65 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +48 +48 +78 +48 +48 +00 +ENDCHAR +STARTCHAR B +ENCODING 66 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +48 +70 +48 +48 +70 +00 +ENDCHAR +STARTCHAR C +ENCODING 67 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +48 +40 +40 +48 +30 +00 +ENDCHAR +STARTCHAR D +ENCODING 68 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +48 +48 +48 +48 +70 +00 +ENDCHAR +STARTCHAR E +ENCODING 69 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +78 +40 +70 +40 +40 +78 +00 +ENDCHAR +STARTCHAR F +ENCODING 70 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +78 +40 +70 +40 +40 +40 +00 +ENDCHAR +STARTCHAR G +ENCODING 71 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +48 +40 +58 +48 +30 +00 +ENDCHAR +STARTCHAR H +ENCODING 72 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +48 +48 +78 +48 +48 +48 +00 +ENDCHAR +STARTCHAR I +ENCODING 73 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR J +ENCODING 74 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +38 +08 +08 +08 +48 +30 +00 +ENDCHAR +STARTCHAR K +ENCODING 75 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +48 +50 +60 +50 +50 +48 +00 +ENDCHAR +STARTCHAR L +ENCODING 76 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +40 +40 +40 +40 +70 +00 +ENDCHAR +STARTCHAR M +ENCODING 77 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +48 +78 +78 +48 +48 +48 +00 +ENDCHAR +STARTCHAR N +ENCODING 78 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +48 +68 +78 +58 +58 +48 +00 +ENDCHAR +STARTCHAR O +ENCODING 79 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +48 +48 +48 +48 +30 +00 +ENDCHAR +STARTCHAR P +ENCODING 80 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +48 +48 +70 +40 +40 +00 +ENDCHAR +STARTCHAR Q +ENCODING 81 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +48 +48 +68 +58 +30 +08 +ENDCHAR +STARTCHAR R +ENCODING 82 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +48 +48 +70 +58 +48 +00 +ENDCHAR +STARTCHAR S +ENCODING 83 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +30 +48 +20 +10 +48 +30 +00 +ENDCHAR +STARTCHAR T +ENCODING 84 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +f8 +20 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR U +ENCODING 85 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +48 +48 +48 +48 +48 +30 +00 +ENDCHAR +STARTCHAR V +ENCODING 86 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +48 +48 +48 +48 +30 +30 +00 +ENDCHAR +STARTCHAR W +ENCODING 87 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +48 +48 +48 +78 +78 +48 +00 +ENDCHAR +STARTCHAR X +ENCODING 88 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +48 +48 +30 +30 +48 +48 +00 +ENDCHAR +STARTCHAR Y +ENCODING 89 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +88 +88 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR Z +ENCODING 90 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +78 +08 +10 +20 +40 +78 +00 +ENDCHAR +STARTCHAR [ +ENCODING 91 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +40 +40 +40 +40 +70 +00 +ENDCHAR +STARTCHAR \ +ENCODING 92 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +40 +20 +10 +08 +08 +00 +ENDCHAR +STARTCHAR ] +ENCODING 93 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +70 +10 +10 +10 +10 +70 +00 +ENDCHAR +STARTCHAR ^ +ENCODING 94 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +50 +50 +00 +00 +00 +00 +ENDCHAR +STARTCHAR _ +ENCODING 95 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +78 +ENDCHAR +STARTCHAR ` +ENCODING 96 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +40 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR a +ENCODING 97 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +28 +58 +58 +28 +00 +ENDCHAR +STARTCHAR b +ENCODING 98 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +40 +70 +48 +48 +70 +00 +ENDCHAR +STARTCHAR c +ENCODING 99 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +30 +40 +40 +30 +00 +ENDCHAR +STARTCHAR d +ENCODING 100 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +08 +08 +28 +58 +58 +28 +00 +ENDCHAR +STARTCHAR e +ENCODING 101 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +30 +78 +40 +30 +00 +ENDCHAR +STARTCHAR f +ENCODING 102 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +10 +28 +20 +70 +20 +20 +00 +ENDCHAR +STARTCHAR g +ENCODING 103 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +30 +48 +38 +08 +30 +ENDCHAR +STARTCHAR h +ENCODING 104 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +40 +70 +48 +48 +48 +00 +ENDCHAR +STARTCHAR i +ENCODING 105 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +00 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR j +ENCODING 106 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +10 +00 +10 +10 +10 +50 +20 +ENDCHAR +STARTCHAR k +ENCODING 107 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +40 +40 +48 +70 +48 +48 +00 +ENDCHAR +STARTCHAR l +ENCODING 108 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +60 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR m +ENCODING 109 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +50 +a8 +a8 +88 +00 +ENDCHAR +STARTCHAR n +ENCODING 110 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +70 +48 +48 +48 +00 +ENDCHAR +STARTCHAR o +ENCODING 111 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +30 +48 +48 +30 +00 +ENDCHAR +STARTCHAR p +ENCODING 112 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +70 +48 +70 +40 +40 +ENDCHAR +STARTCHAR q +ENCODING 113 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +38 +48 +38 +08 +08 +ENDCHAR +STARTCHAR r +ENCODING 114 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +50 +68 +40 +40 +00 +ENDCHAR +STARTCHAR s +ENCODING 115 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +70 +60 +10 +70 +00 +ENDCHAR +STARTCHAR t +ENCODING 116 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +20 +70 +20 +28 +10 +00 +ENDCHAR +STARTCHAR u +ENCODING 117 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +48 +48 +48 +38 +00 +ENDCHAR +STARTCHAR v +ENCODING 118 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR w +ENCODING 119 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +88 +a8 +a8 +70 +00 +ENDCHAR +STARTCHAR x +ENCODING 120 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +48 +30 +30 +48 +00 +ENDCHAR +STARTCHAR y +ENCODING 121 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +48 +48 +38 +48 +30 +ENDCHAR +STARTCHAR z +ENCODING 122 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +78 +10 +20 +78 +00 +ENDCHAR +STARTCHAR { +ENCODING 123 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +18 +20 +10 +60 +10 +20 +18 +00 +ENDCHAR +STARTCHAR | +ENCODING 124 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +20 +20 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR } +ENCODING 125 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +60 +10 +20 +18 +20 +10 +60 +00 +ENDCHAR +STARTCHAR ~ +ENCODING 126 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +28 +50 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR C177 +ENCODING 127 +SWIDTH 1 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +ENDFONT diff --git a/firmware/X5x8.c b/firmware/X5x8.c new file mode 100644 index 0000000000..6422cc892d --- /dev/null +++ b/firmware/X5x8.c @@ -0,0 +1,2853 @@ +/* Generated by convbdf on Tue Sep 10 11:31:14 MDT 2002. */ +#include "config.h" +#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR) +#include "font.h" + +/* Font information: + + name: -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO646.1991-IRV + pixel size: 8 + ascent: 7 + descent: 1 +*/ + +/* Font character bitmap data. */ +static MWIMAGEBITS X5x8_bits[] = { + +/* Character (0x00): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | | + | | + | | + | | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x01): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | *** | + |***** | + | *** | + | * | + | | + | | + +----------------+ */ +0x0000, +0x2000, +0x7000, +0xf800, +0x7000, +0x2000, +0x0000, +0x0000, + +/* Character (0x02): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * * | + | * * | + | * * | + | * * | + | * * | + | * * | + | * * | + +----------------+ */ +0x0000, +0x2800, +0x5000, +0x2800, +0x5000, +0x2800, +0x5000, +0x2800, + +/* Character (0x03): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | * * | + | * * | + | *** | + | * * | + | * * | + | *** | + | * | + | * | + +----------------+ */ +0x5000, +0x5000, +0x7000, +0x5000, +0x5000, +0x3800, +0x1000, +0x1000, + +/* Character (0x04): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + |*** | + |* | + |** | + |* *** | + |* * | + | ** | + | * | + | * | + +----------------+ */ +0xe000, +0x8000, +0xc000, +0xb800, +0xa000, +0x3000, +0x2000, +0x2000, + +/* Character (0x05): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | ** | + |* | + | ** | + | | + | ** | + | * * | + | ** | + | * * | + +----------------+ */ +0x6000, +0x8000, +0x6000, +0x0000, +0x3000, +0x2800, +0x3000, +0x2800, + +/* Character (0x06): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + |* | + |* | + |* | + |*** | + | *** | + | * | + | ** | + | * | + +----------------+ */ +0x8000, +0x8000, +0x8000, +0xe000, +0x3800, +0x2000, +0x3000, +0x2000, + +/* Character (0x07): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * * | + | * | + | | + | | + | | + | | + +----------------+ */ +0x0000, +0x2000, +0x5000, +0x2000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x08): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | *** | + | * | + | | + | *** | + | | + | | + +----------------+ */ +0x0000, +0x2000, +0x7000, +0x2000, +0x0000, +0x7000, +0x0000, +0x0000, + +/* Character (0x09): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + |* * | + |** * | + |* ** | + |* * | + | * | + | * | + | * | + | *** | + +----------------+ */ +0x9000, +0xd000, +0xb000, +0x9000, +0x2000, +0x2000, +0x2000, +0x3800, + +/* Character (0x0a): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + |* * | + |* * | + |* * | + | * | + | *** | + | * | + | * | + | * | + +----------------+ */ +0xa000, +0xa000, +0xa000, +0x4000, +0x3800, +0x1000, +0x1000, +0x1000, + +/* Character (0x0b): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | * | + | * | + | * | + |*** | + | | + | | + | | + | | + +----------------+ */ +0x2000, +0x2000, +0x2000, +0xe000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x0c): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + |*** | + | * | + | * | + | * | + | * | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0xe000, +0x2000, +0x2000, +0x2000, +0x2000, + +/* Character (0x0d): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | *** | + | * | + | * | + | * | + | * | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x3800, +0x2000, +0x2000, +0x2000, +0x2000, + +/* Character (0x0e): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | * | + | * | + | * | + | *** | + | | + | | + | | + | | + +----------------+ */ +0x2000, +0x2000, +0x2000, +0x3800, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x0f): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | * | + | * | + | * | + |***** | + | * | + | * | + | * | + | * | + +----------------+ */ +0x2000, +0x2000, +0x2000, +0xf800, +0x2000, +0x2000, +0x2000, +0x2000, + +/* Character (0x10): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + |***** | + | | + | | + | | + | | + | | + | | + +----------------+ */ +0x0000, +0xf800, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x11): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + |***** | + | | + | | + | | + | | + | | + +----------------+ */ +0x0000, +0x0000, +0xf800, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x12): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + |***** | + | | + | | + | | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0xf800, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x13): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | | + |***** | + | | + | | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x0000, +0xf800, +0x0000, +0x0000, +0x0000, + +/* Character (0x14): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | | + | | + |***** | + | | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0xf800, +0x0000, +0x0000, + +/* Character (0x15): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | * | + | * | + | * | + | *** | + | * | + | * | + | * | + | * | + +----------------+ */ +0x2000, +0x2000, +0x2000, +0x3800, +0x2000, +0x2000, +0x2000, +0x2000, + +/* Character (0x16): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | * | + | * | + | * | + |*** | + | * | + | * | + | * | + | * | + +----------------+ */ +0x2000, +0x2000, +0x2000, +0xe000, +0x2000, +0x2000, +0x2000, +0x2000, + +/* Character (0x17): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | * | + | * | + | * | + |***** | + | | + | | + | | + | | + +----------------+ */ +0x2000, +0x2000, +0x2000, +0xf800, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x18): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + |***** | + | * | + | * | + | * | + | * | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0xf800, +0x2000, +0x2000, +0x2000, +0x2000, + +/* Character (0x19): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | * | + | * | + | * | + | * | + | * | + | * | + | * | + | * | + +----------------+ */ +0x2000, +0x2000, +0x2000, +0x2000, +0x2000, +0x2000, +0x2000, +0x2000, + +/* Character (0x1a): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | * | + | * | + | * | + | *** | + | | + +----------------+ */ +0x0000, +0x1000, +0x2000, +0x4000, +0x2000, +0x1000, +0x7000, +0x0000, + +/* Character (0x1b): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | * | + | * | + | * | + | *** | + | | + +----------------+ */ +0x0000, +0x4000, +0x2000, +0x1000, +0x2000, +0x4000, +0x7000, +0x0000, + +/* Character (0x1c): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + |***** | + | * * | + | * * | + | * * | + | * * | + | | + | | + +----------------+ */ +0x0000, +0xf800, +0x5000, +0x5000, +0x5000, +0x5000, +0x0000, +0x0000, + +/* Character (0x1d): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + |***** | + | * | + |***** | + | * | + | | + | | + +----------------+ */ +0x0000, +0x1000, +0xf800, +0x2000, +0xf800, +0x4000, +0x0000, +0x0000, + +/* Character (0x1e): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * * | + |*** | + | * | + | * * | + |* ** | + | | + +----------------+ */ +0x0000, +0x3000, +0x4800, +0xe000, +0x4000, +0x4800, +0xb000, +0x0000, + +/* Character (0x1f): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | * | + | | + | | + | | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x2000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x20): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | | + | | + | | + | | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x21): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | * | + | * | + | | + | * | + | | + +----------------+ */ +0x0000, +0x2000, +0x2000, +0x2000, +0x2000, +0x0000, +0x2000, +0x0000, + +/* Character (0x22): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * * | + | * * | + | * * | + | | + | | + | | + | | + +----------------+ */ +0x0000, +0x5000, +0x5000, +0x5000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x23): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | * * | + | * * | + |***** | + | * * | + |***** | + | * * | + | * * | + | | + +----------------+ */ +0x5000, +0x5000, +0xf800, +0x5000, +0xf800, +0x5000, +0x5000, +0x0000, + +/* Character (0x24): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | * | + | *** | + |* * | + | *** | + | * * | + | *** | + | * | + | | + +----------------+ */ +0x2000, +0x7000, +0xa000, +0x7000, +0x2800, +0x7000, +0x2000, +0x0000, + +/* Character (0x25): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * * | + | * | + | * * | + | * | + | | + | | + +----------------+ */ +0x0000, +0x4000, +0x5000, +0x2000, +0x5000, +0x1000, +0x0000, +0x0000, + +/* Character (0x26): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | * | + | * * | + | * * | + | * | + | * * | + | * * | + | * * | + | | + +----------------+ */ +0x2000, +0x5000, +0x5000, +0x2000, +0x5000, +0x5000, +0x2800, +0x0000, + +/* Character (0x27): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * | + | * | + | | + | | + | | + | | + +----------------+ */ +0x0000, +0x3000, +0x2000, +0x4000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x28): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | * | + | * | + | * | + | | + | | + +----------------+ */ +0x0000, +0x1000, +0x2000, +0x2000, +0x2000, +0x1000, +0x0000, +0x0000, + +/* Character (0x29): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | * | + | * | + | * | + | | + | | + +----------------+ */ +0x0000, +0x4000, +0x2000, +0x2000, +0x2000, +0x4000, +0x0000, +0x0000, + +/* Character (0x2a): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * * | + | ** | + | **** | + | ** | + | * * | + | | + | | + +----------------+ */ +0x0000, +0x4800, +0x3000, +0x7800, +0x3000, +0x4800, +0x0000, +0x0000, + +/* Character (0x2b): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + |***** | + | * | + | * | + | | + | | + +----------------+ */ +0x0000, +0x2000, +0x2000, +0xf800, +0x2000, +0x2000, +0x0000, +0x0000, + +/* Character (0x2c): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | | + | ** | + | * | + | * | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x0000, +0x3000, +0x2000, +0x4000, +0x0000, + +/* Character (0x2d): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | | + | **** | + | | + | | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x0000, +0x7800, +0x0000, +0x0000, +0x0000, + +/* Character (0x2e): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | | + | * | + | *** | + | * | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x0000, +0x2000, +0x7000, +0x2000, +0x0000, + +/* Character (0x2f): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | * | + | * | + | * | + | * | + | | + +----------------+ */ +0x0000, +0x0800, +0x0800, +0x1000, +0x2000, +0x4000, +0x4000, +0x0000, + +/* Character (0x30): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * * | + | * * | + | * * | + | * * | + | * | + | | + +----------------+ */ +0x0000, +0x2000, +0x5000, +0x5000, +0x5000, +0x5000, +0x2000, +0x0000, + +/* Character (0x31): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | ** | + | * | + | * | + | * | + | *** | + | | + +----------------+ */ +0x0000, +0x2000, +0x6000, +0x2000, +0x2000, +0x2000, +0x7000, +0x0000, + +/* Character (0x32): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * * | + | * | + | ** | + | * | + | **** | + | | + +----------------+ */ +0x0000, +0x3000, +0x4800, +0x0800, +0x3000, +0x4000, +0x7800, +0x0000, + +/* Character (0x33): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * * | + | * | + | * | + | * * | + | ** | + | | + +----------------+ */ +0x0000, +0x3000, +0x4800, +0x1000, +0x0800, +0x4800, +0x3000, +0x0000, + +/* Character (0x34): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | ** | + | * * | + | **** | + | * | + | * | + | | + +----------------+ */ +0x0000, +0x1000, +0x3000, +0x5000, +0x7800, +0x1000, +0x1000, +0x0000, + +/* Character (0x35): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | **** | + | * | + | *** | + | * | + | * * | + | ** | + | | + +----------------+ */ +0x0000, +0x7800, +0x4000, +0x7000, +0x0800, +0x4800, +0x3000, +0x0000, + +/* Character (0x36): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * | + | * * | + | ** * | + | * * | + | ** | + | | + +----------------+ */ +0x0000, +0x3000, +0x4000, +0x5000, +0x6800, +0x4800, +0x3000, +0x0000, + +/* Character (0x37): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | **** | + | * | + | * | + | * | + | * | + | * | + | | + +----------------+ */ +0x0000, +0x7800, +0x0800, +0x1000, +0x1000, +0x2000, +0x2000, +0x0000, + +/* Character (0x38): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * * | + | ** | + | * * | + | * * | + | ** | + | | + +----------------+ */ +0x0000, +0x3000, +0x4800, +0x3000, +0x4800, +0x4800, +0x3000, +0x0000, + +/* Character (0x39): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * * | + | * ** | + | * * | + | * | + | ** | + | | + +----------------+ */ +0x0000, +0x3000, +0x4800, +0x5800, +0x2800, +0x0800, +0x3000, +0x0000, + +/* Character (0x3a): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | ** | + | | + | ** | + | ** | + | | + | | + +----------------+ */ +0x0000, +0x3000, +0x3000, +0x0000, +0x3000, +0x3000, +0x0000, +0x0000, + +/* Character (0x3b): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | ** | + | | + | ** | + | * | + | * | + | | + +----------------+ */ +0x0000, +0x3000, +0x3000, +0x0000, +0x3000, +0x2000, +0x4000, +0x0000, + +/* Character (0x3c): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | * | + | * | + | * | + | * | + | | + +----------------+ */ +0x0000, +0x1000, +0x2000, +0x4000, +0x4000, +0x2000, +0x1000, +0x0000, + +/* Character (0x3d): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | *** | + | | + | *** | + | | + | | + | | + +----------------+ */ +0x0000, +0x0000, +0x7000, +0x0000, +0x7000, +0x0000, +0x0000, +0x0000, + +/* Character (0x3e): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | * | + | * | + | * | + | * | + | | + +----------------+ */ +0x0000, +0x4000, +0x2000, +0x1000, +0x1000, +0x2000, +0x4000, +0x0000, + +/* Character (0x3f): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * * | + | * | + | * | + | | + | * | + | | + +----------------+ */ +0x0000, +0x2000, +0x5000, +0x1000, +0x2000, +0x0000, +0x2000, +0x0000, + +/* Character (0x40): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | ** | + | * * | + |* ** | + |* * * | + |* * * | + |* * | + | * | + | ** | + +----------------+ */ +0x3000, +0x4800, +0x9800, +0xa800, +0xa800, +0x9000, +0x4000, +0x3000, + +/* Character (0x41): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * * | + | * * | + | **** | + | * * | + | * * | + | | + +----------------+ */ +0x0000, +0x3000, +0x4800, +0x4800, +0x7800, +0x4800, +0x4800, +0x0000, + +/* Character (0x42): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | *** | + | * * | + | *** | + | * * | + | * * | + | *** | + | | + +----------------+ */ +0x0000, +0x7000, +0x4800, +0x7000, +0x4800, +0x4800, +0x7000, +0x0000, + +/* Character (0x43): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * * | + | * | + | * | + | * * | + | ** | + | | + +----------------+ */ +0x0000, +0x3000, +0x4800, +0x4000, +0x4000, +0x4800, +0x3000, +0x0000, + +/* Character (0x44): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | *** | + | * * | + | * * | + | * * | + | * * | + | *** | + | | + +----------------+ */ +0x0000, +0x7000, +0x4800, +0x4800, +0x4800, +0x4800, +0x7000, +0x0000, + +/* Character (0x45): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | **** | + | * | + | *** | + | * | + | * | + | **** | + | | + +----------------+ */ +0x0000, +0x7800, +0x4000, +0x7000, +0x4000, +0x4000, +0x7800, +0x0000, + +/* Character (0x46): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | **** | + | * | + | *** | + | * | + | * | + | * | + | | + +----------------+ */ +0x0000, +0x7800, +0x4000, +0x7000, +0x4000, +0x4000, +0x4000, +0x0000, + +/* Character (0x47): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * * | + | * | + | * ** | + | * * | + | ** | + | | + +----------------+ */ +0x0000, +0x3000, +0x4800, +0x4000, +0x5800, +0x4800, +0x3000, +0x0000, + +/* Character (0x48): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * * | + | * * | + | **** | + | * * | + | * * | + | * * | + | | + +----------------+ */ +0x0000, +0x4800, +0x4800, +0x7800, +0x4800, +0x4800, +0x4800, +0x0000, + +/* Character (0x49): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | *** | + | * | + | * | + | * | + | * | + | *** | + | | + +----------------+ */ +0x0000, +0x7000, +0x2000, +0x2000, +0x2000, +0x2000, +0x7000, +0x0000, + +/* Character (0x4a): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | *** | + | * | + | * | + | * | + | * * | + | ** | + | | + +----------------+ */ +0x0000, +0x3800, +0x0800, +0x0800, +0x0800, +0x4800, +0x3000, +0x0000, + +/* Character (0x4b): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * * | + | * * | + | ** | + | * * | + | * * | + | * * | + | | + +----------------+ */ +0x0000, +0x4800, +0x5000, +0x6000, +0x5000, +0x5000, +0x4800, +0x0000, + +/* Character (0x4c): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | * | + | * | + | * | + | *** | + | | + +----------------+ */ +0x0000, +0x4000, +0x4000, +0x4000, +0x4000, +0x4000, +0x7000, +0x0000, + +/* Character (0x4d): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * * | + | **** | + | **** | + | * * | + | * * | + | * * | + | | + +----------------+ */ +0x0000, +0x4800, +0x7800, +0x7800, +0x4800, +0x4800, +0x4800, +0x0000, + +/* Character (0x4e): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * * | + | ** * | + | **** | + | * ** | + | * ** | + | * * | + | | + +----------------+ */ +0x0000, +0x4800, +0x6800, +0x7800, +0x5800, +0x5800, +0x4800, +0x0000, + +/* Character (0x4f): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * * | + | * * | + | * * | + | * * | + | ** | + | | + +----------------+ */ +0x0000, +0x3000, +0x4800, +0x4800, +0x4800, +0x4800, +0x3000, +0x0000, + +/* Character (0x50): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | *** | + | * * | + | * * | + | *** | + | * | + | * | + | | + +----------------+ */ +0x0000, +0x7000, +0x4800, +0x4800, +0x7000, +0x4000, +0x4000, +0x0000, + +/* Character (0x51): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * * | + | * * | + | ** * | + | * ** | + | ** | + | * | + +----------------+ */ +0x0000, +0x3000, +0x4800, +0x4800, +0x6800, +0x5800, +0x3000, +0x0800, + +/* Character (0x52): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | *** | + | * * | + | * * | + | *** | + | * ** | + | * * | + | | + +----------------+ */ +0x0000, +0x7000, +0x4800, +0x4800, +0x7000, +0x5800, +0x4800, +0x0000, + +/* Character (0x53): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * * | + | * | + | * | + | * * | + | ** | + | | + +----------------+ */ +0x0000, +0x3000, +0x4800, +0x2000, +0x1000, +0x4800, +0x3000, +0x0000, + +/* Character (0x54): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + |***** | + | * | + | * | + | * | + | * | + | * | + | | + +----------------+ */ +0x0000, +0xf800, +0x2000, +0x2000, +0x2000, +0x2000, +0x2000, +0x0000, + +/* Character (0x55): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * * | + | * * | + | * * | + | * * | + | * * | + | ** | + | | + +----------------+ */ +0x0000, +0x4800, +0x4800, +0x4800, +0x4800, +0x4800, +0x3000, +0x0000, + +/* Character (0x56): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * * | + | * * | + | * * | + | * * | + | ** | + | ** | + | | + +----------------+ */ +0x0000, +0x4800, +0x4800, +0x4800, +0x4800, +0x3000, +0x3000, +0x0000, + +/* Character (0x57): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * * | + | * * | + | * * | + | **** | + | **** | + | * * | + | | + +----------------+ */ +0x0000, +0x4800, +0x4800, +0x4800, +0x7800, +0x7800, +0x4800, +0x0000, + +/* Character (0x58): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * * | + | * * | + | ** | + | ** | + | * * | + | * * | + | | + +----------------+ */ +0x0000, +0x4800, +0x4800, +0x3000, +0x3000, +0x4800, +0x4800, +0x0000, + +/* Character (0x59): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + |* * | + |* * | + | * * | + | * | + | * | + | * | + | | + +----------------+ */ +0x0000, +0x8800, +0x8800, +0x5000, +0x2000, +0x2000, +0x2000, +0x0000, + +/* Character (0x5a): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | **** | + | * | + | * | + | * | + | * | + | **** | + | | + +----------------+ */ +0x0000, +0x7800, +0x0800, +0x1000, +0x2000, +0x4000, +0x7800, +0x0000, + +/* Character (0x5b): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | *** | + | * | + | * | + | * | + | * | + | *** | + | | + +----------------+ */ +0x0000, +0x7000, +0x4000, +0x4000, +0x4000, +0x4000, +0x7000, +0x0000, + +/* Character (0x5c): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | * | + | * | + | * | + | * | + | | + +----------------+ */ +0x0000, +0x4000, +0x4000, +0x2000, +0x1000, +0x0800, +0x0800, +0x0000, + +/* Character (0x5d): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | *** | + | * | + | * | + | * | + | * | + | *** | + | | + +----------------+ */ +0x0000, +0x7000, +0x1000, +0x1000, +0x1000, +0x1000, +0x7000, +0x0000, + +/* Character (0x5e): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * * | + | * * | + | | + | | + | | + | | + +----------------+ */ +0x0000, +0x2000, +0x5000, +0x5000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x5f): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | | + | | + | | + | | + | **** | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x7800, + +/* Character (0x60): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * | + | * | + | | + | | + | | + | | + +----------------+ */ +0x0000, +0x6000, +0x4000, +0x2000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x61): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | * * | + | * ** | + | * ** | + | * * | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x2800, +0x5800, +0x5800, +0x2800, +0x0000, + +/* Character (0x62): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | *** | + | * * | + | * * | + | *** | + | | + +----------------+ */ +0x0000, +0x4000, +0x4000, +0x7000, +0x4800, +0x4800, +0x7000, +0x0000, + +/* Character (0x63): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | ** | + | * | + | * | + | ** | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x3000, +0x4000, +0x4000, +0x3000, +0x0000, + +/* Character (0x64): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | * * | + | * ** | + | * ** | + | * * | + | | + +----------------+ */ +0x0000, +0x0800, +0x0800, +0x2800, +0x5800, +0x5800, +0x2800, +0x0000, + +/* Character (0x65): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | ** | + | **** | + | * | + | ** | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x3000, +0x7800, +0x4000, +0x3000, +0x0000, + +/* Character (0x66): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * * | + | * | + | *** | + | * | + | * | + | | + +----------------+ */ +0x0000, +0x1000, +0x2800, +0x2000, +0x7000, +0x2000, +0x2000, +0x0000, + +/* Character (0x67): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | ** | + | * * | + | *** | + | * | + | ** | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x3000, +0x4800, +0x3800, +0x0800, +0x3000, + +/* Character (0x68): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | *** | + | * * | + | * * | + | * * | + | | + +----------------+ */ +0x0000, +0x4000, +0x4000, +0x7000, +0x4800, +0x4800, +0x4800, +0x0000, + +/* Character (0x69): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | | + | ** | + | * | + | * | + | *** | + | | + +----------------+ */ +0x0000, +0x2000, +0x0000, +0x6000, +0x2000, +0x2000, +0x7000, +0x0000, + +/* Character (0x6a): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | | + | * | + | * | + | * | + | * * | + | * | + +----------------+ */ +0x0000, +0x1000, +0x0000, +0x1000, +0x1000, +0x1000, +0x5000, +0x2000, + +/* Character (0x6b): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | * * | + | *** | + | * * | + | * * | + | | + +----------------+ */ +0x0000, +0x4000, +0x4000, +0x4800, +0x7000, +0x4800, +0x4800, +0x0000, + +/* Character (0x6c): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | ** | + | * | + | * | + | * | + | * | + | *** | + | | + +----------------+ */ +0x0000, +0x6000, +0x2000, +0x2000, +0x2000, +0x2000, +0x7000, +0x0000, + +/* Character (0x6d): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | * * | + |* * * | + |* * * | + |* * | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x5000, +0xa800, +0xa800, +0x8800, +0x0000, + +/* Character (0x6e): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | *** | + | * * | + | * * | + | * * | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x7000, +0x4800, +0x4800, +0x4800, +0x0000, + +/* Character (0x6f): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | ** | + | * * | + | * * | + | ** | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x3000, +0x4800, +0x4800, +0x3000, +0x0000, + +/* Character (0x70): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | *** | + | * * | + | *** | + | * | + | * | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x7000, +0x4800, +0x7000, +0x4000, +0x4000, + +/* Character (0x71): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | *** | + | * * | + | *** | + | * | + | * | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x3800, +0x4800, +0x3800, +0x0800, +0x0800, + +/* Character (0x72): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | * * | + | ** * | + | * | + | * | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x5000, +0x6800, +0x4000, +0x4000, +0x0000, + +/* Character (0x73): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | *** | + | ** | + | * | + | *** | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x7000, +0x6000, +0x1000, +0x7000, +0x0000, + +/* Character (0x74): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | *** | + | * | + | * * | + | * | + | | + +----------------+ */ +0x0000, +0x2000, +0x2000, +0x7000, +0x2000, +0x2800, +0x1000, +0x0000, + +/* Character (0x75): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | * * | + | * * | + | * * | + | *** | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x4800, +0x4800, +0x4800, +0x3800, +0x0000, + +/* Character (0x76): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | * * | + | * * | + | * * | + | * | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x5000, +0x5000, +0x5000, +0x2000, +0x0000, + +/* Character (0x77): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + |* * | + |* * * | + |* * * | + | *** | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x8800, +0xa800, +0xa800, +0x7000, +0x0000, + +/* Character (0x78): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | * * | + | ** | + | ** | + | * * | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x4800, +0x3000, +0x3000, +0x4800, +0x0000, + +/* Character (0x79): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | * * | + | * * | + | *** | + | * * | + | ** | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x4800, +0x4800, +0x3800, +0x4800, +0x3000, + +/* Character (0x7a): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | **** | + | * | + | * | + | **** | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x7800, +0x1000, +0x2000, +0x7800, +0x0000, + +/* Character (0x7b): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | ** | + | * | + | * | + | ** | + | * | + | * | + | ** | + | | + +----------------+ */ +0x1800, +0x2000, +0x1000, +0x6000, +0x1000, +0x2000, +0x1800, +0x0000, + +/* Character (0x7c): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * | + | * | + | * | + | * | + | * | + | * | + | | + +----------------+ */ +0x0000, +0x2000, +0x2000, +0x2000, +0x2000, +0x2000, +0x2000, +0x0000, + +/* Character (0x7d): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | ** | + | * | + | * | + | ** | + | * | + | * | + | ** | + | | + +----------------+ */ +0x6000, +0x1000, +0x2000, +0x1800, +0x2000, +0x1000, +0x6000, +0x0000, + +/* Character (0x7e): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | * * | + | * * | + | | + | | + | | + | | + | | + +----------------+ */ +0x0000, +0x2800, +0x5000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character (0x7f): + bbw=5, bbh=8, bbx=0, bby=-1, width=5 + +----------------+ + | | + | | + | | + | | + | | + | | + | | + | | + +----------------+ */ +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +}; + +/* Character->glyph mapping. */ +static unsigned long X5x8_offset[] = { + 0, /* (0x00) */ + 8, /* (0x01) */ + 16, /* (0x02) */ + 24, /* (0x03) */ + 32, /* (0x04) */ + 40, /* (0x05) */ + 48, /* (0x06) */ + 56, /* (0x07) */ + 64, /* (0x08) */ + 72, /* (0x09) */ + 80, /* (0x0a) */ + 88, /* (0x0b) */ + 96, /* (0x0c) */ + 104, /* (0x0d) */ + 112, /* (0x0e) */ + 120, /* (0x0f) */ + 128, /* (0x10) */ + 136, /* (0x11) */ + 144, /* (0x12) */ + 152, /* (0x13) */ + 160, /* (0x14) */ + 168, /* (0x15) */ + 176, /* (0x16) */ + 184, /* (0x17) */ + 192, /* (0x18) */ + 200, /* (0x19) */ + 208, /* (0x1a) */ + 216, /* (0x1b) */ + 224, /* (0x1c) */ + 232, /* (0x1d) */ + 240, /* (0x1e) */ + 248, /* (0x1f) */ + 256, /* (0x20) */ + 264, /* (0x21) */ + 272, /* (0x22) */ + 280, /* (0x23) */ + 288, /* (0x24) */ + 296, /* (0x25) */ + 304, /* (0x26) */ + 312, /* (0x27) */ + 320, /* (0x28) */ + 328, /* (0x29) */ + 336, /* (0x2a) */ + 344, /* (0x2b) */ + 352, /* (0x2c) */ + 360, /* (0x2d) */ + 368, /* (0x2e) */ + 376, /* (0x2f) */ + 384, /* (0x30) */ + 392, /* (0x31) */ + 400, /* (0x32) */ + 408, /* (0x33) */ + 416, /* (0x34) */ + 424, /* (0x35) */ + 432, /* (0x36) */ + 440, /* (0x37) */ + 448, /* (0x38) */ + 456, /* (0x39) */ + 464, /* (0x3a) */ + 472, /* (0x3b) */ + 480, /* (0x3c) */ + 488, /* (0x3d) */ + 496, /* (0x3e) */ + 504, /* (0x3f) */ + 512, /* (0x40) */ + 520, /* (0x41) */ + 528, /* (0x42) */ + 536, /* (0x43) */ + 544, /* (0x44) */ + 552, /* (0x45) */ + 560, /* (0x46) */ + 568, /* (0x47) */ + 576, /* (0x48) */ + 584, /* (0x49) */ + 592, /* (0x4a) */ + 600, /* (0x4b) */ + 608, /* (0x4c) */ + 616, /* (0x4d) */ + 624, /* (0x4e) */ + 632, /* (0x4f) */ + 640, /* (0x50) */ + 648, /* (0x51) */ + 656, /* (0x52) */ + 664, /* (0x53) */ + 672, /* (0x54) */ + 680, /* (0x55) */ + 688, /* (0x56) */ + 696, /* (0x57) */ + 704, /* (0x58) */ + 712, /* (0x59) */ + 720, /* (0x5a) */ + 728, /* (0x5b) */ + 736, /* (0x5c) */ + 744, /* (0x5d) */ + 752, /* (0x5e) */ + 760, /* (0x5f) */ + 768, /* (0x60) */ + 776, /* (0x61) */ + 784, /* (0x62) */ + 792, /* (0x63) */ + 800, /* (0x64) */ + 808, /* (0x65) */ + 816, /* (0x66) */ + 824, /* (0x67) */ + 832, /* (0x68) */ + 840, /* (0x69) */ + 848, /* (0x6a) */ + 856, /* (0x6b) */ + 864, /* (0x6c) */ + 872, /* (0x6d) */ + 880, /* (0x6e) */ + 888, /* (0x6f) */ + 896, /* (0x70) */ + 904, /* (0x71) */ + 912, /* (0x72) */ + 920, /* (0x73) */ + 928, /* (0x74) */ + 936, /* (0x75) */ + 944, /* (0x76) */ + 952, /* (0x77) */ + 960, /* (0x78) */ + 968, /* (0x79) */ + 976, /* (0x7a) */ + 984, /* (0x7b) */ + 992, /* (0x7c) */ + 1000, /* (0x7d) */ + 1008, /* (0x7e) */ + 1016, /* (0x7f) */ +}; + +/* Exported structure definition. */ +MWCFONT font_X5x8 = { + "X5x8", + 5, + 8, + 7, + 0, + 128, + X5x8_bits, + X5x8_offset, + 0, /* fixed width*/ + 0, + sizeof(X5x8_bits)/sizeof(MWIMAGEBITS), +}; +#endif /* HAVE_LCD_BITMAP */ + diff --git a/firmware/ajf.c b/firmware/ajf.c deleted file mode 100644 index 82ba0b7939..0000000000 --- a/firmware/ajf.c +++ /dev/null @@ -1,100 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2002 by Alex Gitelman - * - * 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. - * - ****************************************************************************/ -#ifdef SIMULATOR -#include -#endif -#include -#include "ajf.h" -#include -#include -#include -#include "debug.h" - -static unsigned char font_buf[MAX_FONT_BUFLEN]; - -unsigned char* ajf_read_font(char* fname) -{ - int count; -#ifdef WIN32 - int fd = open(fname, O_RDONLY|O_BINARY); -#else - int fd = open(fname, O_RDONLY); -#endif - if (fd<0) - { -#ifdef SIMULATOR -#ifdef WIN32 - DEBUGF("Failed opening font file: %d %s. ", _errno(), fname); -#else - DEBUGF("Failed opening font file: %d %s. ", errno, fname); -#endif -#endif - return NULL; - } - - count = read(fd, font_buf, MAX_FONT_BUFLEN); - if (count==MAX_FONT_BUFLEN) { - DEBUGF("Font is larger than allocated %d bytes!\n",MAX_FONT_BUFLEN); - return NULL; - } - close(fd); - - if (font_buf[0]!=MAGIC1 || font_buf[1]!=MAGIC2) { - DEBUGF("Bad magic word in font"); - return NULL; - } - return font_buf; -} - - -unsigned char* ajf_get_charbuf(unsigned char c, unsigned char* font, - int *w, int *h) -{ - int height = READ_SHORT(&font[HEIGHT_OFFSET]); - int size = READ_SHORT(&font[SIZE_OFFSET]); - int chars_offset = LOOKUP_MAP_OFFSET + size*3; - int rows = (height-1)/8 + 1; - int first_char = READ_SHORT(&font[FIRST_CHAR_OFFSET]); - int map_idx = LOOKUP_MAP_OFFSET + (c-first_char)*3; - int byte_count = font[map_idx]; - int char_idx; - - *h = height; - *w = byte_count/rows; - - map_idx++; - char_idx = READ_SHORT(&font[map_idx]); - return &font[chars_offset + char_idx]; -} - -void ajf_get_charsize(unsigned char c, unsigned char* font, - int *width, int *height) -{ - int first_char = READ_SHORT(&font[FIRST_CHAR_OFFSET]); - int map_idx = LOOKUP_MAP_OFFSET + (c-first_char)*3; - int rows = 1; - *height = READ_SHORT(&font[HEIGHT_OFFSET]); - rows = (*height-1)/8 + 1; - *width = font[map_idx]/rows; -} - -int ajf_get_fontheight(unsigned char* font) -{ - return READ_SHORT(&font[HEIGHT_OFFSET]); -} diff --git a/firmware/ajf.h b/firmware/ajf.h deleted file mode 100644 index 70d94fb3e0..0000000000 --- a/firmware/ajf.h +++ /dev/null @@ -1,52 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2002 by Alex Gitelman - * - * 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. - * - ****************************************************************************/ -#ifndef __AJF__ -#define __AJF__ - -/* defined here because they are used by tools/bdf2ajz */ -#define MAGIC1 0xBD -#define MAGIC2 0xFC -#define MAX_FONT_BUFLEN 4096 - -#define CODE_PAGE_OFFSET 2 /* 1 byte TODO: unused now */ -#define FONT_NAME_OFFSET 3 -#define FONT_NAME_LEN 32 -#define MAX_WIDTH_OFFSET (FONT_NAME_OFFSET + FONT_NAME_LEN) /* 2 byte */ -#define HEIGHT_OFFSET (MAX_WIDTH_OFFSET + 2) /* 2 byte */ -#define ASCENT_OFFSET (HEIGHT_OFFSET+2) /* 2 byte ascent (baseline) height*/ -#define FIRST_CHAR_OFFSET (HEIGHT_OFFSET+2) /* 2 bytes first character of font*/ -#define SIZE_OFFSET (FIRST_CHAR_OFFSET+2) /* 2 bytes size of font (# encodings)*/ -#define LOOKUP_MAP_OFFSET SIZE_OFFSET+2 /* Map to lookup char positions */ - - -#define WRITE_SHORT(s,buf) { (buf)[0] = (s & 0xff00) >> 8 ; \ - (buf)[1] = s & 0x00ff; } -#define READ_SHORT(buf) (((buf)[0]<<8) + (buf)[1]) - -unsigned char* ajf_read_font(char* fname); -unsigned char* ajf_get_charbuf(unsigned char c, unsigned char* font, - int *width, int *height); -void ajf_get_charsize(unsigned char c, unsigned char* font, - int *width, int *height); -int ajf_get_fontheight(unsigned char* font); - -extern char _font_error_msg[]; - - -#endif diff --git a/firmware/chartables.c b/firmware/chartables.c index 8f6b31481e..7177aa7e79 100644 --- a/firmware/chartables.c +++ b/firmware/chartables.c @@ -4,8 +4,7 @@ #include "config.h" -#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR) - +#if 0 const unsigned char char_gen_6x8[][5] = { { 0x00,0x00,0x00,0x00,0x00 }, @@ -205,7 +204,9 @@ const unsigned char char_gen_8x12[][14] = { 0x04,0x00,0x06,0x00,0x02,0x00,0x06,0x00,0x04,0x00,0x06,0x00,0x02,0x00 }, { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 } }; +#endif +#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR) const unsigned char char_gen_12x16[][22] = { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, @@ -305,246 +306,5 @@ const unsigned char char_gen_12x16[][22] = { 0x10,0x00,0x18,0x00,0x0c,0x00,0x04,0x00,0x0c,0x00,0x18,0x00,0x10,0x00,0x18,0x00,0x0c,0x00,0x04,0x00,0x00,0x00 }, { 0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0x00,0x00 } }; - -#ifdef LCD_PROPFONTS - - -unsigned char char_dw_8x8_prop[][9] = { - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x37 } /* */, - { 0xbe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x17 } /* ! */, - { 0xe,0x0,0xe,0x0,0x0,0x0,0x0,0x0,0x37 } /* " */, - { 0x28,0x7c,0x28,0x7c,0x28,0x0,0x0,0x0,0x56 } /* # */, - { 0x48,0x54,0xfe,0x54,0x24,0x0,0x0,0x0,0x57 } /* $ */, - { 0x88,0x40,0x20,0x10,0x88,0x0,0x0,0x0,0x55 } /* % */, - { 0x6c,0x92,0x92,0xaa,0x44,0xa0,0x0,0x0,0x67 } /* & */, - { 0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x17 } /* ' */, - { 0x7c,0x82,0x0,0x0,0x0,0x0,0x0,0x0,0x27 } /* ( */, - { 0x82,0x7c,0x0,0x0,0x0,0x0,0x0,0x0,0x27 } /* ) */, - { 0x54,0x38,0x7c,0x38,0x54,0x0,0x0,0x0,0x56 } /* * */, - { 0x10,0x10,0x7c,0x10,0x10,0x0,0x0,0x0,0x56 } /* + */, - { 0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x22 } /* , */, - { 0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x0,0x45 } /* - */, - { 0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x11 } /* . */, - { 0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x0,0x77 } /* / */, - { 0x7c,0x82,0x82,0x7c,0x0,0x0,0x0,0x0,0x47 } /* 0 */, - { 0x84,0xfe,0x80,0x0,0x0,0x0,0x0,0x0,0x37 } /* 1 */, - { 0xe4,0x92,0x92,0x8c,0x0,0x0,0x0,0x0,0x47 } /* 2 */, - { 0x44,0x92,0x92,0x6c,0x0,0x0,0x0,0x0,0x47 } /* 3 */, - { 0x1e,0x10,0x10,0xfe,0x0,0x0,0x0,0x0,0x47 } /* 4 */, - { 0x4e,0x92,0x92,0x62,0x0,0x0,0x0,0x0,0x47 } /* 5 */, - { 0x7c,0x92,0x92,0x60,0x0,0x0,0x0,0x0,0x47 } /* 6 */, - { 0x2,0x12,0x12,0xfe,0x0,0x0,0x0,0x0,0x47 } /* 7 */, - { 0x6c,0x92,0x92,0x6c,0x0,0x0,0x0,0x0,0x47 } /* 8 */, - { 0xc,0x92,0x92,0x7c,0x0,0x0,0x0,0x0,0x47 } /* 9 */, - { 0x44,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x16 } /* : */, - { 0x80,0x44,0x0,0x0,0x0,0x0,0x0,0x0,0x26 } /* ; */, - { 0x10,0x28,0x44,0x0,0x0,0x0,0x0,0x0,0x36 } /* < */, - { 0x28,0x28,0x28,0x28,0x28,0x0,0x0,0x0,0x55 } /* = */, - { 0x44,0x28,0x10,0x0,0x0,0x0,0x0,0x0,0x36 } /* > */, - { 0xb2,0x12,0x12,0xc,0x0,0x0,0x0,0x0,0x47 } /* ? */, - { 0x60,0x94,0x94,0x94,0xa4,0x48,0x30,0x0,0x76 } /* @ */, - { 0xfc,0x22,0x22,0xfc,0x0,0x0,0x0,0x0,0x47 } /* A */, - { 0xfe,0x92,0x92,0x6c,0x0,0x0,0x0,0x0,0x47 } /* B */, - { 0x7c,0x82,0x82,0x44,0x0,0x0,0x0,0x0,0x47 } /* C */, - { 0xfe,0x82,0x82,0x7c,0x0,0x0,0x0,0x0,0x47 } /* D */, - { 0xfe,0x92,0x92,0x82,0x0,0x0,0x0,0x0,0x47 } /* E */, - { 0xfe,0x12,0x12,0x2,0x0,0x0,0x0,0x0,0x47 } /* F */, - { 0x7c,0x82,0x92,0xf2,0x0,0x0,0x0,0x0,0x47 } /* G */, - { 0xfe,0x10,0x10,0xfe,0x0,0x0,0x0,0x0,0x47 } /* H */, - { 0x82,0xfe,0x82,0x0,0x0,0x0,0x0,0x0,0x37 } /* I */, - { 0x42,0x82,0x82,0x7e,0x0,0x0,0x0,0x0,0x47 } /* J */, - { 0xfe,0x10,0x28,0xc6,0x0,0x0,0x0,0x0,0x47 } /* K */, - { 0xfe,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x47 } /* L */, - { 0xfe,0x4,0x18,0x4,0xfe,0x0,0x0,0x0,0x57 } /* M */, - { 0xfe,0x2,0x2,0xfc,0x0,0x0,0x0,0x0,0x47 } /* N */, - { 0x7c,0x82,0x82,0x7c,0x0,0x0,0x0,0x0,0x47 } /* O */, - { 0xfe,0x12,0x12,0xc,0x0,0x0,0x0,0x0,0x47 } /* P */, - { 0x7c,0x82,0xa2,0x7c,0x40,0x80,0x0,0x0,0x67 } /* Q */, - { 0xfe,0x12,0x12,0xec,0x0,0x0,0x0,0x0,0x47 } /* R */, - { 0x8c,0x92,0x92,0x62,0x0,0x0,0x0,0x0,0x47 } /* S */, - { 0x2,0x2,0xfe,0x2,0x2,0x0,0x0,0x0,0x57 } /* T */, - { 0x7e,0x80,0x80,0x7e,0x0,0x0,0x0,0x0,0x47 } /* U */, - { 0x3e,0x40,0x80,0x40,0x3e,0x0,0x0,0x0,0x57 } /* V */, - { 0xfe,0x40,0x30,0x40,0xfe,0x0,0x0,0x0,0x57 } /* W */, - { 0xc6,0x28,0x10,0x28,0xc6,0x0,0x0,0x0,0x57 } /* X */, - { 0xe,0x10,0xe0,0x10,0xe,0x0,0x0,0x0,0x57 } /* Y */, - { 0xe2,0x92,0x92,0x8e,0x0,0x0,0x0,0x0,0x47 } /* Z */, - { 0xfe,0x82,0x0,0x0,0x0,0x0,0x0,0x0,0x27 } /* [ */, - { 0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x77 } /* \ */, - { 0x82,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x27 } /* ] */, - { 0x8,0x4,0x2,0x4,0x8,0x0,0x0,0x0,0x57 } /* ^ */, - { 0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x15 } /* _ */, - { 0x6,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x27 } /* ` */, - { 0x40,0xa8,0xa8,0xa8,0xf0,0x0,0x0,0x0,0x55 } /* a */, - { 0xfe,0x90,0x90,0x60,0x0,0x0,0x0,0x0,0x47 } /* b */, - { 0x70,0x88,0x88,0x88,0x0,0x0,0x0,0x0,0x45 } /* c */, - { 0x60,0x90,0x90,0xfe,0x0,0x0,0x0,0x0,0x47 } /* d */, - { 0x70,0xa8,0xa8,0xa8,0x10,0x0,0x0,0x0,0x55 } /* e */, - { 0x10,0xfc,0x12,0x2,0x0,0x0,0x0,0x0,0x47 } /* f */, - { 0x10,0xa8,0xa8,0xa8,0x78,0x0,0x0,0x0,0x55 } /* g */, - { 0xfe,0x10,0x10,0xe0,0x0,0x0,0x0,0x0,0x47 } /* h */, - { 0x88,0xfa,0x80,0x0,0x0,0x0,0x0,0x0,0x37 } /* i */, - { 0x40,0x80,0x88,0x7a,0x0,0x0,0x0,0x0,0x47 } /* j */, - { 0xfe,0x20,0x50,0x88,0x0,0x0,0x0,0x0,0x47 } /* k */, - { 0x82,0xfe,0x80,0x0,0x0,0x0,0x0,0x0,0x37 } /* l */, - { 0xf8,0x8,0x70,0x8,0xf8,0x0,0x0,0x0,0x55 } /* m */, - { 0xf8,0x8,0x8,0xf0,0x0,0x0,0x0,0x0,0x45 } /* n */, - { 0x70,0x88,0x88,0x70,0x0,0x0,0x0,0x0,0x45 } /* o */, - { 0xf8,0x28,0x28,0x10,0x0,0x0,0x0,0x0,0x45 } /* p */, - { 0x10,0x28,0x28,0xf8,0x0,0x0,0x0,0x0,0x45 } /* q */, - { 0xf8,0x10,0x8,0x8,0x0,0x0,0x0,0x0,0x45 } /* r */, - { 0x90,0xa8,0xa8,0x48,0x0,0x0,0x0,0x0,0x45 } /* s */, - { 0x8,0xfe,0x8,0x0,0x0,0x0,0x0,0x0,0x37 } /* t */, - { 0x78,0x80,0x80,0x78,0x0,0x0,0x0,0x0,0x45 } /* u */, - { 0x38,0x40,0x80,0x40,0x38,0x0,0x0,0x0,0x55 } /* v */, - { 0xf8,0x80,0x60,0x80,0xf8,0x0,0x0,0x0,0x55 } /* w */, - { 0xd8,0x20,0xd8,0x0,0x0,0x0,0x0,0x0,0x35 } /* x */, - { 0x18,0xa0,0xa0,0x78,0x0,0x0,0x0,0x0,0x45 } /* y */, - { 0xc8,0xa8,0x98,0x0,0x0,0x0,0x0,0x0,0x35 } /* z 0x7a */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x7b */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x7c */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x7d */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x7e */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x7f */, - - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x80 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x81 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x82 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x83 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x85 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x86 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x87 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x88 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x89 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x8a */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x8b */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x8c */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x8d */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x8e */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x8f */, - - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x90 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x91 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x92 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x93 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x95 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x96 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x97 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x98 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x99 */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x9a */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x9b */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x9c */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x9d */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x9e */, - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x9f */, - - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x37 } /* */, - { 0xfa,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x17 } /* ¡ */, - { 0x38,0x44,0xfe,0x44,0x28,0x0,0x0,0x0,0x57 } /* ¢ */, - { 0x90,0x7c,0x92,0x82,0x82,0x44,0x0,0x0,0x67 } /* £ */, - { 0x44,0x38,0x28,0x38,0x44,0x0,0x0,0x0,0x55 } /* ¤ */, - { 0x2a,0x2c,0xf8,0x2c,0x2a,0x0,0x0,0x0,0x57 } /* ¥ */, - { 0xee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x17 } /* ¦ */, - { 0x94,0xaa,0xaa,0x52,0x0,0x0,0x0,0x0,0x47 } /* § */, - { 0x2,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x47 } /* ¨ */, - { 0x7c,0x82,0xba,0xaa,0xaa,0x82,0x7c,0x0,0x77 } /* © */, - { 0x0,0x32,0x2a,0x2a,0x3e,0x20,0x0,0x0,0x57 } /* ª */, - { 0x10,0x28,0x54,0x28,0x44,0x0,0x0,0x0,0x56 } /* « */, - { 0x2,0x2,0x2,0x2,0x6,0x0,0x0,0x0,0x57 } /* ¬ */, - { 0x8,0x8,0x8,0x8,0x8,0x0,0x0,0x0,0x55 } /* ­ */, - { 0x7c,0x82,0xfa,0xaa,0xda,0x82,0x7c,0x0,0x77 } /* ® */, - { 0x8,0x8,0x8,0x8,0x8,0x8,0x0,0x0,0x65 } /* ­ */, - { 0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x77 } /* ¯ */, - { 0x4,0xa,0xa,0x4,0x0,0x0,0x0,0x0,0x47 } /* ° */, - { 0x24,0x24,0x2e,0x24,0x24,0x0,0x0,0x0,0x57 } /* ± */, - { 0x1a,0x1a,0x16,0x10,0x0,0x0,0x0,0x0,0x47 } /* ² */, - { 0x12,0x16,0x1e,0x0,0x0,0x0,0x0,0x0,0x37 } /* ³ */, - { 0x4,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x27 } /* ´ */, - { 0x1e,0x8,0x8,0x6,0x0,0x0,0x0,0x0,0x47 } /* µ */, - { 0xc,0xe,0x1e,0xfe,0x2,0xfe,0x0,0x0,0x67 } /* ¶ */, - { 0x10,0x38,0x38,0x10,0x0,0x0,0x0,0x0,0x45 } /* · */, - { 0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0,0x42 } /* ¸ */, - { 0xa,0xe,0x8,0x0,0x0,0x0,0x0,0x0,0x17 } /* ¹ */, - { 0x4,0xa,0xa,0x4,0x0,0x0,0x0,0x0,0x47 } /* º */, - { 0x44,0x28,0x54,0x28,0x10,0x0,0x0,0x0,0x56 } /* » */, - { 0x2e,0x10,0x8,0x34,0x22,0x70,0x0,0x0,0x67 } /* ¼ */, - { 0x2e,0x10,0x8,0xd4,0xd2,0xb0,0x80,0x0,0x77 } /* ½ */, - { 0x52,0x36,0x1e,0x68,0x44,0xe2,0x0,0x0,0x67 } /* */, - { 0xb2,0x12,0x12,0xc,0x0,0x0,0x0,0x0,0x47 } /* ? */, - { 0x60,0x90,0x90,0x9a,0x0,0x0,0x0,0x0,0x47 } /* ¿ */, - { 0xf9,0x26,0x24,0xf8,0x0,0x0,0x0,0x0,0x48 } /* À */, - { 0xf8,0x24,0x26,0xf9,0x0,0x0,0x0,0x0,0x48 } /* Á */, - { 0xfa,0x25,0x25,0xfa,0x0,0x0,0x0,0x0,0x48 } /* Â */, - { 0xfa,0x25,0x26,0xf9,0x0,0x0,0x0,0x0,0x48 } /* Ã */, - { 0xf9,0x24,0x24,0xf9,0x0,0x0,0x0,0x0,0x48 } /* Ä */, - { 0xfa,0x25,0x25,0xfa,0x0,0x0,0x0,0x0,0x48 } /* Å */, - { 0xfc,0x12,0x12,0xfe,0x92,0x92,0x82,0x0,0x77 } /* Æ */, - { 0x3c,0x42,0xc2,0x42,0x42,0x24,0x0,0x0,0x67 } /* Ç */, - { 0xfc,0x95,0x96,0x84,0x0,0x0,0x0,0x0,0x48 } /* È */, - { 0xfc,0x96,0x95,0x84,0x0,0x0,0x0,0x0,0x48 } /* É */, - { 0xfe,0x95,0x95,0x86,0x0,0x0,0x0,0x0,0x48 } /* Ê */, - { 0xfd,0x94,0x94,0x85,0x0,0x0,0x0,0x0,0x48 } /* Ë */, - { 0x85,0xfe,0x84,0x0,0x0,0x0,0x0,0x0,0x38 } /* Ì */, - { 0x84,0xfe,0x85,0x0,0x0,0x0,0x0,0x0,0x38 } /* Í */, - { 0x86,0xfd,0x86,0x0,0x0,0x0,0x0,0x0,0x38 } /* Î */, - - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0xcf */, - - { 0x10,0xfe,0x92,0x82,0x7c,0x0,0x0,0x0,0x57 } /* Ð */, - { 0xfe,0x5,0x6,0xf9,0x0,0x0,0x0,0x0,0x48 } /* Ñ */, - { 0x79,0x86,0x84,0x78,0x0,0x0,0x0,0x0,0x48 } /* Ò */, - { 0x78,0x84,0x86,0x79,0x0,0x0,0x0,0x0,0x48 } /* Ó */, - { 0x7a,0x85,0x85,0x7a,0x0,0x0,0x0,0x0,0x48 } /* Ô */, - { 0x7a,0x85,0x86,0x79,0x0,0x0,0x0,0x0,0x48 } /* Õ */, - { 0x79,0x84,0x84,0x79,0x0,0x0,0x0,0x0,0x48 } /* Ö */, - { 0x44,0x28,0x10,0x28,0x44,0x0,0x0,0x0,0x56 } /* × */, - { 0x80,0x78,0x64,0x54,0x4c,0x3c,0x2,0x0,0x77 } /* Ø */, - { 0x7c,0x81,0x82,0x7c,0x0,0x0,0x0,0x0,0x48 } /* Ù */, - { 0x7c,0x82,0x81,0x7c,0x0,0x0,0x0,0x0,0x48 } /* Ú */, - { 0x7a,0x81,0x81,0x7a,0x0,0x0,0x0,0x0,0x48 } /* Û */, - - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0xdc */, - - { 0x4,0x8,0xf2,0x9,0x4,0x0,0x0,0x0,0x58 } /* Ý */, - { 0xfe,0x14,0x14,0x8,0x0,0x0,0x0,0x0,0x47 } /* Þ */, - { 0xfc,0x2,0x92,0x92,0x6c,0x0,0x0,0x0,0x57 } /* ß */, - { 0x40,0xa8,0xa9,0xaa,0xf0,0x0,0x0,0x0,0x58 } /* à */, - - { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0xe1 */, - - { 0x40,0xaa,0xa9,0xa9,0xf2,0x0,0x0,0x0,0x58 } /* â */, - { 0x40,0xaa,0xa9,0xaa,0xf1,0x0,0x0,0x0,0x58 } /* ã */, - { 0x40,0xaa,0xa8,0xa8,0xf2,0x0,0x0,0x0,0x57 } /* ä */, - { 0x40,0xac,0xaa,0xaa,0xf4,0x0,0x0,0x0,0x57 } /* å */, - { 0x40,0xa8,0xa8,0xf0,0xa8,0xa8,0xb0,0x0,0x75 } /* æ */, - { 0x30,0x48,0xc8,0x48,0x48,0x0,0x0,0x0,0x55 } /* ç */, - { 0x70,0xa9,0xaa,0xa8,0x10,0x0,0x0,0x0,0x58 } /* è */, - { 0x70,0xa8,0xaa,0xa9,0x10,0x0,0x0,0x0,0x58 } /* é */, - { 0x72,0xa9,0xa9,0xaa,0x10,0x0,0x0,0x0,0x58 } /* ê */, - { 0x70,0xaa,0xa8,0xa8,0x12,0x0,0x0,0x0,0x57 } /* ë */, - { 0x89,0xfa,0x80,0x0,0x0,0x0,0x0,0x0,0x38 } /* ì */, - { 0x88,0xfa,0x81,0x0,0x0,0x0,0x0,0x0,0x38 } /* í */, - { 0x8a,0xf9,0x82,0x0,0x0,0x0,0x0,0x0,0x38 } /* î */, - { 0x8a,0xf8,0x82,0x0,0x0,0x0,0x0,0x0,0x37 } /* ï */, - { 0x72,0x8b,0x8c,0x70,0x0,0x0,0x0,0x0,0x38 } /* ð */, - { 0xfa,0x9,0xa,0xf1,0x0,0x0,0x0,0x0,0x48 } /* ñ */, - { 0x71,0x8a,0x88,0x70,0x0,0x0,0x0,0x0,0x48 } /* ò */, - { 0x70,0x88,0x8a,0x71,0x0,0x0,0x0,0x0,0x48 } /* ó */, - { 0x72,0x89,0x89,0x72,0x0,0x0,0x0,0x0,0x48 } /* ô */, - { 0x72,0x89,0x8a,0x71,0x0,0x0,0x0,0x0,0x48 } /* õ */, - { 0x72,0x88,0x88,0x72,0x0,0x0,0x0,0x0,0x47 } /* ö */, - { 0x10,0x10,0x54,0x10,0x10,0x0,0x0,0x0,0x56 } /* ÷ */, - { 0xb8,0x44,0xa4,0x94,0x88,0x74,0x0,0x0,0x66 } /* ø */, - { 0x78,0x81,0x82,0x78,0x0,0x0,0x0,0x0,0x48 } /* ù */, - { 0x78,0x82,0x81,0x78,0x0,0x0,0x0,0x0,0x48 } /* ú */, - { 0x7a,0x81,0x81,0x7a,0x0,0x0,0x0,0x0,0x48 } /* û */, - { 0x7a,0x80,0x80,0x7a,0x0,0x0,0x0,0x0,0x47 } /* ü */, - { 0x18,0xa1,0xa2,0x78,0x0,0x0,0x0,0x0,0x48 } /* ý */, - { 0xfe,0x28,0x44,0x44,0x44,0x38,0x0,0x0,0x67 } /* þ */, - { 0x1a,0xa0,0xa0,0x7a,0x0,0x0,0x0,0x0,0x47 } /* ÿ */ -}; - -#endif - #endif /* HAVE_LCD_BITMAP || SIMULATOR */ + diff --git a/firmware/debug.h b/firmware/debug.h index 876b8511a6..e9eec27e86 100644 --- a/firmware/debug.h +++ b/firmware/debug.h @@ -26,7 +26,8 @@ extern void debugf(char* fmt,...); /* */ #if defined(DEBUG) || defined(SIMULATOR) -#define DEBUGF(...) debugf(__VA_ARGS__) +//#define DEBUGF(...) debugf(__VA_ARGS__) +#define DEBUGF debugf #else #define DEBUGF(...) #endif diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c index c43807b25f..f0a2089367 100644 --- a/firmware/drivers/fat.c +++ b/firmware/drivers/fat.c @@ -1049,10 +1049,6 @@ int fat_getnext(struct fat_dir *dir, struct fat_direntry *entry) for (j=longs-1; j>=0; j--) { unsigned char* ptr = dir->cached_buf; int index = longarray[j]; -#ifdef LOADABLE_FONTS - int offset_idx = 0; - unsigned char uni_char[2]; -#endif /* current or cached sector? */ if ( sectoridx >= SECTOR_SIZE ) { if ( sectoridx >= SECTOR_SIZE*2 ) { @@ -1070,30 +1066,6 @@ int fat_getnext(struct fat_dir *dir, struct fat_direntry *entry) index &= SECTOR_SIZE-1; } - /* piece together the name subcomponents. */ -#ifdef LOADABLE_FONTS - for (k=0; k<5; k++) - { - offset_idx = index + k*2 + 1; - uni_char[0] = ptr[offset_idx+1]; - uni_char[1] = ptr[offset_idx]; - entry->name[l++] = from_unicode(uni_char); - } - for (k=0; k<6; k++) - { - offset_idx = index + k*2 + 14; - uni_char[0] = ptr[offset_idx+1]; - uni_char[1] = ptr[offset_idx]; - entry->name[l++] = from_unicode(uni_char); - } - for (k=0; k<2; k++) - { - offset_idx = index + k*2 + 28; - uni_char[0] = ptr[offset_idx+1]; - uni_char[1] = ptr[offset_idx]; - entry->name[l++] = from_unicode(uni_char); - } -#else /* names are stored in unicode, but we only grab the low byte (iso8859-1). */ for (k=0; k<5; k++) @@ -1102,7 +1074,6 @@ int fat_getnext(struct fat_dir *dir, struct fat_direntry *entry) entry->name[l++] = ptr[index + k*2 + 14]; for (k=0; k<2; k++) entry->name[l++] = ptr[index + k*2 + 28]; -#endif } entry->name[l]=0; } diff --git a/firmware/drivers/lcd.c b/firmware/drivers/lcd.c index e3248878da..5240dfda42 100644 --- a/firmware/drivers/lcd.c +++ b/firmware/drivers/lcd.c @@ -26,17 +26,12 @@ #include "file.h" #include "debug.h" #include "system.h" - -#ifdef LOADABLE_FONTS -#include "ajf.h" -#include "panic.h" -#endif +#include "font.h" #if defined(SIMULATOR) #include "sim_icons.h" #endif - /*** definitions ***/ #define LCDR (PBDR_ADDR+1) @@ -513,9 +508,6 @@ void lcd_init (void) { create_thread(scroll_thread, scroll_stack, sizeof(scroll_stack), scroll_name); -#if defined(LOADABLE_FONTS) && defined(SIMULATOR) - lcd_init_fonts(); -#endif } #endif @@ -568,17 +560,11 @@ static int ymargin=0; #define ASCII_MIN 0x20 /* First char in table */ #define ASCII_MAX 0x7f /* Last char in table */ -extern unsigned char char_gen_6x8[][5]; -extern unsigned char char_gen_8x12[][14]; -extern unsigned char char_gen_12x16[][22]; - /* All zeros and ones bitmaps for area filling */ static unsigned char zeros[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static unsigned char ones[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; -static char fonts[] = { 6,8,12 }; -static char fontheight[] = { 8,12,16 }; #ifndef SIMULATOR @@ -696,175 +682,14 @@ int lcd_getymargin(void) return ymargin; } - - -#ifdef LOADABLE_FONTS - -static unsigned char* _font = NULL; - -int lcd_init_fonts(void) -{ - if (!_font) - _font = ajf_read_font("/system.ajf"); - - if (!_font) - { - lcd_putsxy(0,0,"No font", 0); - return -1; - } - - return 0; -} - -void lcd_setldfont(unsigned char* f) -{ - _font = f; -} - -unsigned char* lcd_getcurrentldfont() -{ - if (!_font) - panicf("No font loaded!"); - return _font; -} - -/* - * Return width and height of a string with a given font. - */ -int lcd_getstringsize(unsigned char *str, unsigned char* font, int *w, int *h) -{ - int width=0; - int height=0; - unsigned char ch; - - if (!font) - panicf("No font specified"); - - while((ch = *str++)) - { - int dw,dh; - ajf_get_charsize(ch, font, &dw, &dh); - if (dh>height) - height = dh; - width+=dw; - } - *w = width; - *h = height; - - return width; -} - -/* - * Put a string at specified bit position - */ - -void lcd_putsldfxy(int x, int y, unsigned char *str) -{ - unsigned char ch; - int nx; - int ny=8; - int lcd_x = x; - int lcd_y = y; - if (!_font) - { - lcd_putsxy(0,0,"No font", 0); - return; - } - ny = (int)_font[2]; - while (((ch = *str++) != '\0')) - { - unsigned char *char_buf = ajf_get_charbuf(ch, _font, &nx, &ny); - if (!char_buf) - { - char_buf = ajf_get_charbuf('?', _font, &nx, &ny); - if (!char_buf) - panicf("Bad font"); - } - if(lcd_x + nx > LCD_WIDTH) - break; - - lcd_bitmap (&char_buf[0], lcd_x, lcd_y, nx, ny, true); - lcd_x += nx; - } -} -#endif - - -#ifdef LCD_PROPFONTS - -extern unsigned char char_dw_8x8_prop[][9]; - -/* - * Return width and height of a given font. - */ -int lcd_getstringsize(unsigned char *str, unsigned int font, int *w, int *h) -{ - int width=0; - unsigned char ch, byte; - (void)font; - - while((ch = *str++)) { - /* Limit to char generation table */ - if (ch < ASCII_MIN) - /* replace unsupported letters with question marks */ - ch = ' '-ASCII_MIN; - else - ch -= ASCII_MIN; - - byte = char_dw_8x8_prop[ch][8]; - width += (byte>>4) + 1; - } - *w = width; - *h = 8; - - return width; -} - -/* - * Put a string at specified bit position - */ - -void lcd_putspropxy(int x, int y, unsigned char *str, int thisfont) -{ - unsigned int ch; - int nx; - int ny=8; - unsigned char *src; - int lcd_x = x; - int lcd_y = y; - - (void)thisfont; - - while (((ch = *str++) != '\0')) - { - /* Limit to char generation table */ - if (ch < ASCII_MIN) - /* replace unsupported letters with question marks */ - ch = ' '-ASCII_MIN; - else - ch -= ASCII_MIN; - - nx = char_dw_8x8_prop[ch][8] >> 4; - - if(lcd_x + nx > LCD_WIDTH) - break; - - src = char_dw_8x8_prop[ch]; - lcd_clearrect (lcd_x+nx, lcd_y, 1, ny ); - lcd_bitmap (src, lcd_x, lcd_y, nx, ny, true); - - lcd_x += nx+1; - } -} - -#endif - /* * Put a string at specified character position */ +//FIXME require font parameter void lcd_puts(int x, int y, unsigned char *str) { int xpos,ypos,w,h; + #if defined(SIMULATOR) && defined(HAVE_LCD_CHARCELLS) /* We make the simulator truncate the string if it reaches the right edge, as otherwise it'll wrap. The real target doesn't wrap. */ @@ -882,23 +707,10 @@ void lcd_puts(int x, int y, unsigned char *str) if(!str || !str[0]) return; -#ifdef LCD_PROPFONTS lcd_getstringsize(str, font, &w, &h); - xpos = xmargin + x * fonts[font]; - ypos = ymargin + y * fontheight[font]; - lcd_putspropxy(xpos, ypos, str, font); -#elif LOADABLE_FONTS - lcd_getstringsize(str,_font,&w,&h); - xpos = xmargin + x * w / strlen(str); - ypos = ymargin + y * h; - lcd_putsldfxy(xpos, ypos, str); -#else - xpos = xmargin + x * fonts[font]; - ypos = ymargin + y * fontheight[font]; - lcd_putsxy(xpos, ypos, str, font); - w = strlen(str) * fonts[font]; - h = fontheight[font]; -#endif + xpos = xmargin + x*w / strlen(str); //FIXME why strlen? + ypos = ymargin + y*h; + lcd_putsxy( xpos, ypos, str, font); lcd_clearrect(xpos + w, ypos, LCD_WIDTH - (xpos + w), h); #if defined(SIMULATOR) && defined(HAVE_LCD_CHARCELLS) /* this function is being used when simulating a charcell LCD and @@ -907,58 +719,6 @@ void lcd_puts(int x, int y, unsigned char *str) #endif } - -/* - * Put a string at specified bit position - */ -void lcd_putsxy(int x, int y, unsigned char *str, int thisfont) -{ -#ifdef LCD_PROPFONTS - lcd_putspropxy(x,y,str,thisfont); -#else - - int nx = fonts[thisfont]; - int ny = fontheight[thisfont]; - int ch; - unsigned char *src; - int lcd_x = x; - int lcd_y = y; - -#ifdef LOADABLE_FONTS - if ( _font ) { - lcd_putsldfxy(x,y,str); - return; - } -#endif - - while (((ch = *str++) != '\0') && (lcd_x + nx <= LCD_WIDTH)) - { - if (lcd_y + ny > LCD_HEIGHT) - return; - - /* Limit to char generation table */ - if ((ch < ASCII_MIN) || (ch > ASCII_MAX)) - /* replace unsupported letters with question marks */ - ch = '?' - ASCII_MIN; - else - ch -= ASCII_MIN; - - if (thisfont == 2) - src = char_gen_12x16[ch]; - else if (thisfont == 1) - src = char_gen_8x12[ch]; - else - src = char_gen_6x8[ch]; - - lcd_bitmap (src, lcd_x, lcd_y, nx-1, ny, true); - lcd_bitmap (zeros, lcd_x+nx-1, lcd_y, 1, ny, true); - - lcd_x += nx; - - } -#endif -} - /* * Display a bitmap at (x, y), size (nx, ny) * clear is true to clear destination area first @@ -1265,17 +1025,6 @@ void lcd_invertpixel(int x, int y) INVERT_PIXEL(x,y); } -/* - * Return width and height of a given font. - */ -void lcd_getfontsize(unsigned int font, int *width, int *height) -{ - if(font < sizeof(fonts)) { - *width = fonts[font]; - *height = fontheight[font]; - } -} - #else /* no LCD defined, no code to use */ #endif @@ -1286,47 +1035,31 @@ void lcd_puts_scroll(int x, int y, unsigned char* string ) #ifdef HAVE_LCD_CHARCELLS s->space = 11 - x; #else - -#if defined(LCD_PROPFONTS) || defined(LOADABLE_FONTS) unsigned char ch[2]; int w, h; -#endif int width, height; lcd_getfontsize(font, &width, &height); -#if defined(LCD_PROPFONTS) || defined(LOADABLE_FONTS) + ch[1] = 0; /* zero terminate */ ch[0] = string[0]; width = 0; s->space = 0; while ( ch[0] && -#ifdef LCD_PROPFONTS (width + lcd_getstringsize(ch, 0, &w, &h) < (LCD_WIDTH - x*8))) { -#else - (width + lcd_getstringsize(ch, _font, &w, &h) < - (LCD_WIDTH - x*8))) { -#endif width += w; s->space++; ch[0]=string[s->space]; } -#else - s->space = (LCD_WIDTH - xmargin - x*width) / width; -#endif #endif lcd_puts(x,y,string); s->textlen = strlen(string); - -#if defined(LCD_PROPFONTS) +#ifdef HAVE_LCD_BITMAP s->space += 2; lcd_getstringsize(string,0,&w,&h); if ( w > LCD_WIDTH - xmargin ) { -#elif defined(LOADABLE_FONTS) - s->space += 2; - lcd_getstringsize(string,_font,&w,&h); - if ( w > LCD_WIDTH - xmargin ) { #else if ( s->textlen > s->space ) { #endif @@ -1344,32 +1077,24 @@ void lcd_puts_scroll(int x, int y, unsigned char* string ) } } + void lcd_stop_scroll(void) { if ( scroll_count ) { struct scrollinfo* s = &scroll; scroll_count = 0; - -#ifdef LCD_PROPFONTS - lcd_clearrect(xmargin + s->startx*fonts[font], - ymargin + s->starty*fontheight[font], - LCD_WIDTH - xmargin, - fontheight[font]); - -#elif defined(LOADABLE_FONTS) +#ifdef HAVE_LCD_BITMAP { int w,h; - lcd_getstringsize( s->text, _font, &w, &h); + /* FIXME no font index */ + lcd_getstringsize( s->text, FONT_UI, &w, &h); lcd_clearrect(xmargin + s->startx*w/s->textlen, ymargin + s->starty*h, LCD_WIDTH - xmargin, h); - } #endif - - /* restore scrolled row */ lcd_puts(s->startx,s->starty,s->text); lcd_update(); @@ -1420,20 +1145,16 @@ static void scroll_thread(void) s->offset = 0; } -#ifdef LCD_PROPFONTS - lcd_clearrect(xmargin + s->startx*fonts[font], - ymargin + s->starty*fontheight[font], - LCD_WIDTH - xmargin, - fontheight[font]); -#elif defined(LOADABLE_FONTS) - { - int w,h; - lcd_getstringsize( s->text, _font, &w, &h); +#ifdef HAVE_LCD_BITMAP + { + /* FIXME no font index */ + int w, h; + lcd_getstringsize( s->text, FONT_UI, &w, &h); lcd_clearrect(xmargin + s->startx*w/s->textlen, ymargin + s->starty*h, LCD_WIDTH - xmargin, h); - } + } #endif lcd_puts(s->startx,s->starty,s->line); lcd_update(); diff --git a/firmware/drivers/lcd.h b/firmware/drivers/lcd.h index 552de9a74f..23b3d75e76 100644 --- a/firmware/drivers/lcd.h +++ b/firmware/drivers/lcd.h @@ -101,7 +101,7 @@ extern unsigned char lcd_framebuffer[LCD_WIDTH][LCD_HEIGHT/8]; extern void lcd_putsxy(int x, int y, unsigned char *string, int font); extern void lcd_setfont(int font); -extern void lcd_getfontsize(unsigned int font, int *width, int *height); +extern void lcd_getfontsize(int font, int *width, int *height); extern void lcd_setmargins(int xmargin, int ymargin); extern int lcd_getxmargin(void); extern int lcd_getymargin(void); @@ -119,19 +119,6 @@ extern void lcd_invertpixel(int x, int y); #endif /* CHARCELLS / BITMAP */ -#ifdef LOADABLE_FONTS -extern int lcd_init_fonts(void); -extern void lcd_putsldfxy(int x, int y, unsigned char *str); -extern int lcd_getstringsize(unsigned char *str, - unsigned char* font, - int *w, int *h); -extern void lcd_setldfont(unsigned char* f); - -extern unsigned char* lcd_getcurrentldfont(void); -#endif - -#ifdef LCD_PROPFONTS -extern int lcd_getstringsize(unsigned char *str, unsigned int font, int *w, int *h); -#endif +extern int lcd_getstringsize(unsigned char *str, int font, int *w, int *h); #endif /* __LCD_H__ */ diff --git a/firmware/font.c b/firmware/font.c new file mode 100644 index 0000000000..5bde2ff1bc --- /dev/null +++ b/firmware/font.c @@ -0,0 +1,228 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (c) 2002 by Greg Haerr + * + * 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. + * + ****************************************************************************/ +/* + * Rockbox startup font initialization + * This file specifies which fonts get compiled-in and + * loaded at startup, as well as their mapping into + * the FONT_SYSFIXED, FONT_UI and FONT_MP3 ids. + */ +#include "config.h" + +#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR) + +#include +#include +#include "lcd.h" +#include "font.h" +#include "debug.h" +#include "panic.h" + +/* available compiled-in fonts*/ +extern MWCFONT font_X5x8; +/*extern MWCFONT font_X6x9; */ +/*extern MWCFONT font_courB08; */ +/*extern MWCFONT font_timR08; */ + +/* structure filled in by rbf_load_font*/ +static MWCFONT font_UI; + +/* system font table, in order of FONT_xxx definition*/ +struct corefont sysfonts[MAXFONTS] = { + { &font_X5x8, NULL }, /* compiled-in FONT_SYSFIXED*/ + { &font_UI, "/system.fnt" }, /* loaded FONT_UI*/ + { NULL, NULL }, /* no FONT_MP3*/ +}; + +void +font_init(void) +{ + struct corefont *cfp; + + for (cfp=sysfonts; cfp < &sysfonts[MAXFONTS]; ++cfp) { + if (cfp->pf && cfp->diskname) { + cfp->pf = rbf_load_font(cfp->diskname, cfp->pf); +#if defined(DEBUG) || defined(SIMULATOR) + if (!cfp->pf) + DEBUGF("Font load failed: %s\n", cfp->diskname); +#endif + } + } +} + +/* + * Return a pointer to an incore font structure. + * If the requested font isn't loaded/compiled-in, + * decrement the font number and try again. + */ +PMWCFONT +getfont(int font) +{ + PMWCFONT pf; + + while (1) { + pf = sysfonts[font].pf; + if (pf && pf->height) + return pf; + if (--font < 0) + panicf("No font!"); + } +} + +/* + * Return width and height of a given font. + */ +void lcd_getfontsize(int font, int *width, int *height) +{ + PMWCFONT pf = getfont(font); + + *width = pf->maxwidth; + *height = pf->height; +} + +/* + * Return width and height of a given font. + */ +//FIXME rename to font_gettextsize, add baseline +int +lcd_getstringsize(unsigned char *str, int font, int *w, int *h) +{ + PMWCFONT pf = getfont(font); + int ch; + int width = 0; + + while((ch = *str++)) { + + /* check input range*/ + if (ch < pf->firstchar || ch >= pf->firstchar+pf->size) + ch = pf->defaultchar; + ch -= pf->firstchar; + + /* get proportional width and glyph bits*/ + width += pf->width? pf->width[ch]: pf->maxwidth; + } + *w = width; + *h = pf->height; + + return width; +} + +/* + * Take an MWIMAGEBITS bitmap and convert to Rockbox format. + * Used for converting font glyphs for the time being. + * Can use for standard X11 and Win32 images as well. + * + * Doing it this way keeps fonts in standard formats, + * as well as keeping Rockbox hw bitmap format. + */ +static void +rotleft(unsigned char *dst, MWIMAGEBITS *src, unsigned int width, + unsigned int height) +{ + unsigned int i,j; + unsigned int dst_col = 0; /* destination column*/ + unsigned int dst_shift = 0; /* destination shift amount*/ + unsigned int dst_linelen; /* # bytes per output row*/ + unsigned int src_words; /* # words of input image*/ + + /* calc bytes per output row*/ + dst_linelen = (height-1)/8+1; + + /* calc words of input image*/ + src_words = MWIMAGE_WORDS(width) * height; + + /* clear background*/ + memset(dst, 0, dst_linelen*height); + + for (i=0; i < src_words; i++) { + MWIMAGEBITS srcmap; /* current src input bit*/ + MWIMAGEBITS dstmap; /* current dst output bit*/ + + /* calc src input bit*/ + srcmap = 1 << (sizeof(MWIMAGEBITS)*8-1); + + /* calc dst output bit*/ + if (i>0 && (i%8==0)) { + ++dst_col; + dst_shift = 0; + } + dstmap = 1 << dst_shift++; + + /* for each input column...*/ + for(j=0; j < width; j++) { + + /* calc input bitmask*/ + MWIMAGEBITS bit = srcmap >> j; + if (bit==0) { + srcmap = 1 << (sizeof(MWIMAGEBITS)*8-1); + bit = srcmap >> (j % 16); + } + + /* if set in input, set in rotated output*/ + if (bit & src[i]) { + /* input column j becomes output row*/ + dst[j*dst_linelen + dst_col] |= dstmap; + } + //printf((bit & src[i])? "*": "."); + } + //printf("\n"); + } +} + +/* + * Put a string at specified bit position + */ +//FIXME rename font_putsxy? +void +lcd_putsxy(int x, int y, unsigned char *str, int font) +{ + int ch; + unsigned char *src; + PMWCFONT pf = getfont(font); + + while (((ch = *str++) != '\0')) { + MWIMAGEBITS *bits; + int width; + unsigned char outbuf[256]; + + /* check input range*/ + if (ch < pf->firstchar || ch >= pf->firstchar+pf->size) + ch = pf->defaultchar; + ch -= pf->firstchar; + + /* get proportional width and glyph bits*/ + width = pf->width? pf->width[ch]: pf->maxwidth; + if(x + width > LCD_WIDTH) + break; + bits = pf->bits + (pf->offset? pf->offset[ch]: (pf->height * ch)); + + /* rotate left for lcd_bitmap function input*/ + rotleft(outbuf, bits, width, pf->height); + src = outbuf; + + lcd_bitmap (src, x, y, width, pf->height, true); + x += width; + } +} +#endif /* HAVE_LCD_BITMAP */ + +/* ----------------------------------------------------------------- + * local variables: + * eval: (load-file "rockbox-mode.el") + * end: + */ diff --git a/firmware/font.h b/firmware/font.h new file mode 100644 index 0000000000..13d60e560b --- /dev/null +++ b/firmware/font.h @@ -0,0 +1,126 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (c) 2002 by Greg Haerr + * + * 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. + * + ****************************************************************************/ +/* + * Incore font and image definitions + */ +#include "config.h" + +#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR) + +/* max static loadable fonts buffer*/ +#ifndef MAX_FONT_SIZE +#define MAX_FONT_SIZE 9000 /* max total fontsize allocation*/ +#endif + +/* + * Fonts are specified by number, and used for display + * of menu information as well as mp3 filename data. + * At system startup, up to MAXFONTS fonts are initialized, + * either by being compiled-in, or loaded from disk. + * If the font asked for does not exist, then the + * system uses the next lower font number. Font 0 + * must be available at system startup. + * Fonts are specified in firmware/font.c. + */ +#define FONT_SYSFIXED 0 /* system fixed pitch font*/ +#define FONT_UI 1 /* system porportional font*/ +#define FONT_MP3 2 /* font used for mp3 info*/ +#define MAXFONTS 3 /* max # fonts*/ + +/* + * .fnt (.rbf) loadable font file format definition + * + * format len description + * ------------------------- ---- ------------------------------ + * UCHAR version[4] 4 magic number and version bytes + * UCHAR name[64] 64 font name, space padded + * UCHAR copyright[256] 256 copyright info, space padded + * USHORT maxwidth 2 font max width in pixels + * USHORT height 2 font height in pixels + * USHORT ascent 2 font ascent (baseline) in pixels + * ULONG firstchar 4 first character code in font + * ULONG defaultchar 4 default character code in font + * ULONG size 4 # characters in font + * ULONG nbits 4 # words imagebits data in file + * ULONG noffset 4 # longs offset data in file + * ULONG nwidth 4 # bytes width data in file + * MWIMAGEBITS bits nbits*2 image bits variable data + * ULONG offset noffset*4 offset variable data + * UCHAR width nwidth*1 width variable data + */ + +/* loadable font magic and version #*/ +#define VERSION "RB10" + +/* MWIMAGEBITS helper macros*/ +#define MWIMAGE_WORDS(x) (((x)+15)/16) /* image size in words*/ +#define MWIMAGE_BYTES(x) (((x)+7)/8) /* image size in bytes*/ +#define MWIMAGE_BITSPERIMAGE (sizeof(MWIMAGEBITS) * 8) +#define MWIMAGE_BITVALUE(n) ((MWIMAGEBITS) (((MWIMAGEBITS) 1) << (n))) +#define MWIMAGE_FIRSTBIT (MWIMAGE_BITVALUE(MWIMAGE_BITSPERIMAGE - 1)) +#define MWIMAGE_TESTBIT(m) ((m) & MWIMAGE_FIRSTBIT) +#define MWIMAGE_SHIFTBIT(m) ((MWIMAGEBITS) ((m) << 1)) + +typedef unsigned short MWIMAGEBITS; /* bitmap image unit size*/ + +/* builtin C-based proportional/fixed font structure */ +/* based on The Microwindows Project http://microwindows.org */ +typedef struct { + char * name; /* font name*/ + int maxwidth; /* max width in pixels*/ + unsigned int height; /* height in pixels*/ + int ascent; /* ascent (baseline) height*/ + int firstchar; /* first character in bitmap*/ + int size; /* font size in glyphs*/ + MWIMAGEBITS *bits; /* 16-bit right-padded bitmap data*/ + unsigned long *offset; /* offsets into bitmap data*/ + unsigned char *width; /* character widths or NULL if fixed*/ + int defaultchar; /* default char (not glyph index)*/ + long bits_size; /* # words of MWIMAGEBITS bits*/ +#if 0 + char * facename; /* facename of font*/ + char * copyright; /* copyright info for loadable fonts*/ +#endif +} MWCFONT, *PMWCFONT; + +/* structure for rockbox startup font selection*/ +struct corefont { + PMWCFONT pf; /* compiled-in or loaded font*/ + char *diskname; /* diskname if not compiled-in*/ +}; + +extern struct corefont sysfonts[MAXFONTS]; + +/* font routines*/ +PMWCFONT getfont(int font); +PMWCFONT rbf_load_font(char *path, PMWCFONT pf); + +void font_init(void); + +#else /* HAVE_LCD_BITMAP */ + +#define font_init() + +#endif + +/* ----------------------------------------------------------------- + * local variables: + * eval: (load-file "rockbox-mode.el") + * end: + */ diff --git a/firmware/loadfont.c b/firmware/loadfont.c new file mode 100644 index 0000000000..7f572a4841 --- /dev/null +++ b/firmware/loadfont.c @@ -0,0 +1,202 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (c) 2002 by Greg Haerr + * + * 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. + * + ****************************************************************************/ +/* + * Load an rbf font, store in incore format. + */ +#include "config.h" + +#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR) + +#include +#include +#include "font.h" +#include "file.h" + +#ifndef DEBUGF +#include "debug.h" +#endif + +#ifndef O_BINARY +#define O_BINARY 0 +#endif + +/* static buffer allocation structures*/ +static unsigned char mbuf[MAX_FONT_SIZE]; +static unsigned char *freeptr = mbuf; +typedef unsigned char CFILE; +static CFILE *fileptr; +static CFILE *eofptr; + +static int +READSHORT(unsigned short *sp) +{ + unsigned short s; + + s = *fileptr++ & 0xff; + *sp = (*fileptr++ << 8) | s; + return (fileptr <= eofptr); +} + +static int +READLONG(unsigned long *lp) +{ + unsigned long l; + + l = *fileptr++ & 0xff; + l |= *fileptr++ << 8; + l |= *fileptr++ << 16; + *lp = (*fileptr++ << 24) | l; + return (fileptr <= eofptr); +} + +/* read count bytes*/ +static int +READSTR(char *buf, int count) +{ + int n = count; + + while (--n >= 0) + *buf++ = *fileptr++; + return (fileptr <= eofptr)? count: 0; +} + +/* read totlen bytes, return NUL terminated string*/ +/* may write 1 past buf[totlen]; removes blank pad*/ +static int +READSTRPAD(char *buf, int totlen) +{ + char *p = buf; + int n = totlen; + + while (--n >= 0) + *p++ = *fileptr++; + if (fileptr > eofptr) + return 0; + + p = &buf[totlen]; + *p-- = 0; + while (*p == ' ' && p >= buf) + *p-- = '\0'; + return totlen; +} + +/* read and load font into incore font structure*/ +PMWCFONT +rbf_load_font(char *path, PMWCFONT pf) +{ + int fd, filesize; + unsigned short maxwidth, height, ascent; + unsigned long firstchar, defaultchar, size; + unsigned long nbits, noffset, nwidth; + char version[4+1]; + char copyright[256+1]; + + memset(pf, 0, sizeof(MWCFONT)); + + /* open and read entire font file*/ + fd = open(path, O_RDONLY|O_BINARY); + if (fd < 0) { + DEBUGF("Can't open font: %s\n", path); + return NULL; + } + fileptr = freeptr; + filesize = read(fd, fileptr, MAX_FONT_SIZE); + freeptr += filesize; + eofptr = fileptr + filesize; + close(fd); + if (filesize == MAX_FONT_SIZE) { + DEBUGF("Font %s too large: %d\n", path, filesize); + return NULL; + } + + /* read magic and version #*/ + memset(version, 0, sizeof(version)); + if (READSTR(version, 4) != 4) + return NULL; + if (strcmp(version, VERSION) != 0) + return NULL; + + /* internal font name*/ + pf->name = fileptr; + if (READSTRPAD(pf->name, 64) != 64) + return NULL; + + /* copyright, not currently stored*/ + if (READSTRPAD(copyright, 256) != 256) + return NULL; + + /* font info*/ + if (!READSHORT(&maxwidth)) + return NULL; + pf->maxwidth = maxwidth; + if (!READSHORT(&height)) + return NULL; + pf->height = height; + if (!READSHORT(&ascent)) + return NULL; + pf->ascent = ascent; + if (!READLONG(&firstchar)) + return NULL; + pf->firstchar = firstchar; + if (!READLONG(&defaultchar)) + return NULL; + pf->defaultchar = defaultchar; + if (!READLONG(&size)) + return NULL; + pf->size = size; + + /* get variable font data sizes*/ + /* # words of MWIMAGEBITS*/ + if (!READLONG(&nbits)) + return NULL; + pf->bits_size = nbits; + + /* # longs of offset*/ + if (!READLONG(&noffset)) + return NULL; + + /* # bytes of width*/ + if (!READLONG(&nwidth)) + return NULL; + + /* variable font data*/ + pf->bits = (MWIMAGEBITS *)fileptr; + fileptr += nbits*sizeof(MWIMAGEBITS); + + if (noffset) { + pf->offset = (unsigned long *)fileptr; + fileptr += noffset*sizeof(unsigned long); + } else pf->offset = NULL; + + if (nwidth) { + pf->width = (unsigned char *)fileptr; + fileptr += noffset*sizeof(unsigned char); + } else pf->width = NULL; + + if (fileptr > eofptr) + return NULL; + return pf; /* success!*/ +} +#endif /* HAVE_LCD_BITMAP */ + +/* ----------------------------------------------------------------- + * local variables: + * eval: (load-file "rockbox-mode.el") + * end: + */ diff --git a/firmware/panic.c b/firmware/panic.c index b130482495..10ff454c40 100644 --- a/firmware/panic.c +++ b/firmware/panic.c @@ -21,6 +21,7 @@ #include #include "panic.h" #include "lcd.h" +#include "font.h" #include "debug.h" static char panic_buf[128]; @@ -48,7 +49,9 @@ void panicf( char *fmt, ...) lcd_puts(0,0,panic_buf); #elif defined(HAVE_LCD_BITMAP) lcd_clear_display(); - lcd_putsxy(0,0,panic_buf,0); + + //FIXME putsxy may call panic... + lcd_putsxy(0,0,panic_buf,FONT_SYSFIXED); lcd_update(); #else diff --git a/firmware/unicode.c b/firmware/unicode.c deleted file mode 100644 index 150dd5171e..0000000000 --- a/firmware/unicode.c +++ /dev/null @@ -1,101 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2002 by Alex Gitelman - * - * 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 "unicode.h" -#include "string.h" - -#define MAX_TYPE 3 - -unsigned char *conversion_table[255]; -unsigned char *reverse_conversion_table[255]; - -static unsigned char page_04[] = { - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, - 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, - 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, - 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, -}; - -void install_unicode_tables(void) -{ - install_conversion_table(0x04, page_04); -} - -void unicode_init(void) -{ - memset(conversion_table, 0, sizeof(conversion_table)); - memset(reverse_conversion_table, 0, sizeof(reverse_conversion_table)); - install_unicode_tables(); -} - -/** -Convertion table defines how chars in ing given page map to ascii -*/ -void install_conversion_table(unsigned char page, unsigned char* conv_table) -{ - if (conv_table!=0) - conversion_table[page] = conv_table; - else - conversion_table[page] = 0; -} - -void install_reverse_conversion_table(unsigned char page, - unsigned char* rev_conv_table) -{ - if (rev_conv_table!=0) - reverse_conversion_table[page] = rev_conv_table; - else - reverse_conversion_table[page] = 0; -} - - -unsigned char from_unicode(const unsigned char *uni_char) -{ - /* - Here we should get proper code page conversions. - For now hack for Cyrrilic->Unicode - */ - unsigned char *table = conversion_table[uni_char[0]]; - if (table!=0) - return table[uni_char[1]]; - /* If page is not present -> no conversion */ - return uni_char[1]; - -} - -void to_unicode(unsigned char c, unsigned char page, unsigned char *uni_char) -{ - unsigned char *table = reverse_conversion_table[page]; - if (table!=0) - uni_char[1] = table[c]; - else - uni_char[1] = c; - uni_char[0] = page; -} diff --git a/firmware/unicode.h b/firmware/unicode.h deleted file mode 100644 index dfb4daa2c5..0000000000 --- a/firmware/unicode.h +++ /dev/null @@ -1,36 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2002 by Alex Gitelman - * - * 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. - * - ****************************************************************************/ -#ifndef __UNICODE__ -#define __UNICODE__ - -unsigned char from_unicode(const unsigned char *uni_char); -void to_unicode(unsigned char c, unsigned char page, unsigned char *uni_char); -/* Unicode -> ASCII */ -void install_conversion_table(unsigned char page, unsigned char* conv_table); -/* ASCII -> Unicode */ -void install_reverse_conversion_table(unsigned char page, - unsigned char* rev_conv_table); -void unicode_init(void); - -/* Unicode main init point. Here we must read conversion - tables and install them */ -void install_unicode_tables(void); - - -#endif diff --git a/uisimulator/x11/Makefile b/uisimulator/x11/Makefile index d2b109e443..c6f86d40ad 100644 --- a/uisimulator/x11/Makefile +++ b/uisimulator/x11/Makefile @@ -76,13 +76,8 @@ CFLAGS = $(DEBUG) $(DEFINES) $(INCLUDES) -W -Wall APPCFLAGS = $(DEBUG) $(DEFINES) -DAPPSVERSION=\"$(VERSION)\" $(APPINCLUDES) -W -Wall -FIRMSRCS = chartables.c lcd.c sprintf.c id3.c debug.c usb.c mpeg.c power.c powermgmt.c - -ifeq (LOADABLE_FONTS,$(findstring LOADABLE_FONTS, $(DEFINES))) - FIRMSRCS += unicode.c ajf.c panic.c - EXTRA_TARGETS = $(OBJDIR)/archos/system.ajf - SYSTEM_FONT = $(FIRMWAREDIR)/fonts/alt6x10.bdf -endif +FIRMSRCS = chartables.c lcd.c sprintf.c id3.c debug.c usb.c mpeg.c power.c\ + powermgmt.c font.c X5x8.c loadfont.c panic.c APPS = main.c tree.c menu.c credits.c main_menu.c\ playlist.c showtext.c wps.c wps-display.c settings.c status.c icons.c @@ -110,9 +105,6 @@ clean: $(RM) $(OBJS) *~ core $(TARGET) $(CLIENTS) $(RM) -r $(DEPS) -$(OBJDIR)/archos/system.ajf: $(TOOLSDIR)/bdf2ajf $(SYSTEM_FONT) - $(TOOLSDIR)/bdf2ajf -f $(SYSTEM_FONT) -o $(OBJDIR)/archos/system.ajf - distclean: clean $(RM) config.cache @@ -227,6 +219,24 @@ $(OBJDIR)/lcd.o: $(DRIVERS)/lcd.c $(OBJDIR)/chartables.o: $(FIRMWAREDIR)/chartables.c $(CC) $(APPCFLAGS) -c $< -o $@ +$(OBJDIR)/X5x8.o: $(FIRMWAREDIR)/X5x8.c + $(CC) $(APPCFLAGS) -c $< -o $@ + +$(OBJDIR)/X6x9.o: $(FIRMWAREDIR)/X6x9.c + $(CC) $(APPCFLAGS) -c $< -o $@ + +$(OBJDIR)/timR08.o: $(FIRMWAREDIR)/timR08.c + $(CC) $(APPCFLAGS) -c $< -o $@ + +$(OBJDIR)/courB08.o: $(FIRMWAREDIR)/courB08.c + $(CC) $(APPCFLAGS) -c $< -o $@ + +$(OBJDIR)/font.o: $(FIRMWAREDIR)/font.c + $(CC) $(APPCFLAGS) -c $< -o $@ + +$(OBJDIR)/loadfont.o: $(FIRMWAREDIR)/loadfont.c + $(CC) $(APPCFLAGS) -c $< -o $@ + $(OBJDIR)/settings.o: $(APPDIR)/settings.c $(CC) $(APPCFLAGS) -c $< -o $@ diff --git a/uisimulator/x11/uibasic.c b/uisimulator/x11/uibasic.c index 165b1cebe9..2eac2f8e06 100644 --- a/uisimulator/x11/uibasic.c +++ b/uisimulator/x11/uibasic.c @@ -198,6 +198,7 @@ screenhack (Display *the_dpy, Window the_window) screen_redraw(); #ifdef HAVE_LCD_CHARCELLS + // FIXME?? lcd_setfont(2); #endif