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
This commit is contained in:
parent
5ed78ea80c
commit
93b231c693
29 changed files with 5528 additions and 1120 deletions
|
@ -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<numnames?credits[line+i]:"", 0);
|
||||
lcd_putsxy(0, i*height+y, line+i<numnames?credits[line+i]:"", FONT_UI);
|
||||
snprintf(buffer, sizeof(buffer), " [Credits] %2d/%2d ",
|
||||
line+1, numnames);
|
||||
lcd_putsxy(0, 0, buffer, 0);
|
||||
lcd_putsxy(0, 0, buffer, FONT_UI);
|
||||
lcd_update();
|
||||
|
||||
if (button_get_w_tmo(HZ/20))
|
||||
|
|
17
apps/main.c
17
apps/main.c
|
@ -45,9 +45,7 @@
|
|||
#include "debug_menu.h"
|
||||
#include "version.h"
|
||||
#include "sprintf.h"
|
||||
#ifdef LOADABLE_FONTS
|
||||
#include "unicode.h"
|
||||
#endif
|
||||
#include "font.h"
|
||||
|
||||
|
||||
char appsversion[]=APPSVERSION;
|
||||
|
@ -65,10 +63,8 @@ void app_main(void)
|
|||
void init(void)
|
||||
{
|
||||
init_threads();
|
||||
#ifdef LOADABLE_FONTS
|
||||
unicode_init();
|
||||
#endif
|
||||
lcd_init();
|
||||
font_init();
|
||||
show_logo();
|
||||
settings_reset();
|
||||
settings_load();
|
||||
|
@ -93,6 +89,10 @@ void init(void)
|
|||
|
||||
lcd_init();
|
||||
|
||||
// FIXME should call font_init before this,
|
||||
// because may use loadable font in show_logo().
|
||||
// I didn't call font_init here, since
|
||||
// disk system isn't up yet.
|
||||
show_logo();
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -160,10 +160,7 @@ void init(void)
|
|||
status_init();
|
||||
usb_start_monitoring();
|
||||
power_init();
|
||||
#ifdef LOADABLE_FONTS
|
||||
unicode_init();
|
||||
lcd_init_fonts();
|
||||
#endif
|
||||
font_init();
|
||||
}
|
||||
|
||||
int main(void)
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "tree.h"
|
||||
#include "credits.h"
|
||||
#include "lcd.h"
|
||||
#include "font.h"
|
||||
#include "button.h"
|
||||
#include "kernel.h"
|
||||
#include "main_menu.h"
|
||||
|
@ -96,9 +97,9 @@ int show_logo( void )
|
|||
#endif
|
||||
|
||||
snprintf(version, sizeof(version), "Ver. %s", appsversion);
|
||||
lcd_getfontsize(0, &font_w, &font_h);
|
||||
lcd_getfontsize(FONT_SYSFIXED, &font_w, &font_h);
|
||||
lcd_putsxy((LCD_WIDTH/2) - ((strlen(version)*font_w)/2),
|
||||
height+10+font_h, version, 0);
|
||||
LCD_HEIGHT-font_h, version, FONT_SYSFIXED);
|
||||
lcd_update();
|
||||
|
||||
#else
|
||||
|
|
39
apps/menu.c
39
apps/menu.c
|
@ -19,6 +19,7 @@
|
|||
#include <stdbool.h>
|
||||
|
||||
#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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -16,8 +16,9 @@
|
|||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
#include <lcd.h>
|
||||
#include <string.h>
|
||||
#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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
107
apps/settings.c
107
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
|
||||
|
|
36
apps/tree.c
36
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;
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include <stdlib.h>
|
||||
|
||||
#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())
|
||||
|
|
46
apps/wps.c
46
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();
|
||||
|
|
29
docs/AJF
29
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
|
1967
firmware/X5x8.bdf
Normal file
1967
firmware/X5x8.bdf
Normal file
File diff suppressed because it is too large
Load diff
2853
firmware/X5x8.c
Normal file
2853
firmware/X5x8.c
Normal file
File diff suppressed because it is too large
Load diff
100
firmware/ajf.c
100
firmware/ajf.c
|
@ -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 <fcntl.h>
|
||||
#endif
|
||||
#include <file.h>
|
||||
#include "ajf.h"
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <stdbool.h>
|
||||
#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]);
|
||||
}
|
|
@ -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
|
|
@ -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 } /* |