Basic 3D graphics for the MBED application-shield on-board LCD (initial/incomplete).

Dependents:   co657_lcdplay

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers g3d_font04b.cpp Source File

g3d_font04b.cpp

00001 /*
00002  *  g3d_font04b.cpp -- G3D font rendering for Yuji Oshimoo's font 04b30 (www.04.jp.org)
00003  *  Fred Barnes, University of Kent
00004  */
00005 
00006 
00007 #include "mbed.h"
00008 #include "C12832.h"
00009 #include "gfx3d.h"
00010 
00011 static uint8_t font_metrics_04b[96] = {
00012         0xe1, 0x37, 0x2d, 0x2f, 0xe1, 0x2f, 0xe1, 0x25, 0x38, 0x47, 0x37, 0x2f, 0x25, 0x2d, 0x25, 0x2f,
00013         0x2f, 0x2a, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x25, 0x25, 0x2a, 0x2d, 0x2a, 0x2f,
00014         0xe1, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x37, 0x2f, 0x2f, 0x2e, 0x20, 0x2f, 0x2f,
00015         0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x20, 0x2f, 0x2f, 0x2f, 0x37, 0x2f, 0x37, 0x38, 0x2f,
00016         0x38, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x26, 0x2d, 0x2d, 0x2c, 0x2e, 0x2d, 0x2d,
00017         0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2e, 0x2d, 0x2d, 0x2d, 0x2a, 0x37, 0x2a, 0x38, 0x00,
00018     };
00019 
00020 /* 2x8-bit vertical slices, LSB=topmost (big-endian pairs) */
00021 static uint8_t font_data_04b[96*32] = {
00022         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00023         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00024         0x00, 0x3c, 0x71, 0xe2, 0xfb, 0xfa, 0xfb, 0xfa, 0xfb, 0xfe, 0x71, 0xfe, 0x00, 0x3c, 0x00, 0x00,
00025         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00026         0x01, 0xf8, 0x03, 0xc4, 0x03, 0xf4, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8,
00027         0x03, 0xc4, 0x03, 0xf4, 0x03, 0xf4, 0x03, 0xfc, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00028         0x00, 0x60, 0x18, 0xe0, 0x7f, 0xfc, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xfa, 0x7f, 0xfc, 0x08, 0xe0,
00029         0x7f, 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x18, 0xe0, 0x00, 0x60, 0x00, 0x00,
00030         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00031         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00032         0x70, 0x1c, 0xf8, 0x22, 0xfe, 0x3a, 0xfe, 0x3a, 0x7f, 0x1c, 0x3f, 0xc0, 0x3f, 0xc0, 0x1f, 0xe0,
00033         0x07, 0xf8, 0x07, 0xf8, 0x71, 0xfc, 0xf8, 0xfe, 0xf8, 0xfe, 0xf8, 0x3e, 0x70, 0x1c, 0x00, 0x00,
00034         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00035         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00036         0x01, 0xf8, 0x03, 0xc4, 0x03, 0xf4, 0x03, 0xf4, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00037         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00038         0x07, 0x80, 0x3f, 0xf0, 0x3f, 0xf8, 0x7f, 0xf0, 0xff, 0xfa, 0xf8, 0x7e, 0xf0, 0x1e, 0x60, 0x0c,
00039         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00040         0x70, 0x0c, 0xf0, 0x12, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x3f, 0xf8, 0x0f, 0xf0, 0x00, 0x00,
00041         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00042         0x00, 0xdc, 0x01, 0xe2, 0x01, 0xfa, 0x01, 0xfa, 0x00, 0xfc, 0x01, 0xfe, 0x00, 0xdc, 0x00, 0x00,
00043         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00044         0x03, 0x00, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x7f, 0xfc, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xfa,
00045         0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x03, 0x00, 0x00, 0x00,
00046         0x7c, 0x00, 0xe2, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00047         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00048         0x07, 0x00, 0x08, 0xc0, 0x0e, 0xc0, 0x0e, 0xc0, 0x0f, 0xc0, 0x0f, 0xc0, 0x0f, 0xc0, 0x0f, 0xc0,
00049         0x0f, 0xc0, 0x0f, 0xc0, 0x0f, 0xc0, 0x0f, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00050         0x38, 0x00, 0x44, 0x00, 0x74, 0x00, 0x74, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00051         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00052         0x70, 0x00, 0xf8, 0x00, 0xfc, 0x00, 0xfe, 0x00, 0x7f, 0x00, 0x3f, 0xc0, 0x1f, 0xe0, 0x0f, 0xf0,
00053         0x07, 0xf8, 0x07, 0xf8, 0x03, 0xfc, 0x01, 0xfe, 0x00, 0xfe, 0x00, 0x3e, 0x00, 0x1c, 0x00, 0x00,
00054         0x3f, 0xf8, 0x7f, 0xf0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe,
00055         0xf0, 0x0e, 0xf0, 0x0e, 0xf0, 0x0e, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x3f, 0xf8, 0x00, 0x00,
00056         0x00, 0x1c, 0x00, 0x02, 0x7f, 0xfa, 0x7f, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe,
00057         0x7f, 0xfc, 0x7f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00058         0x7f, 0x1c, 0xff, 0x02, 0xff, 0xda, 0xff, 0xda, 0xff, 0xde, 0xff, 0xde, 0xff, 0xde, 0xfb, 0xde,
00059         0xfb, 0xde, 0xfb, 0xde, 0xfb, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, 0xf8, 0xfc, 0x70, 0xf8, 0x00, 0x00,
00060         0x30, 0x08, 0x78, 0x10, 0xfb, 0xda, 0xfb, 0xde, 0xfb, 0xde, 0xfb, 0xde, 0xfb, 0xde, 0xfb, 0xde,
00061         0xfb, 0xde, 0xfb, 0xde, 0xfb, 0xde, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x3f, 0xf8, 0x00, 0x00,
00062         0x07, 0xfc, 0x0f, 0xe2, 0x1f, 0xfa, 0x1f, 0xfa, 0x1f, 0xfe, 0x1f, 0xfc, 0x1e, 0x00, 0x7f, 0xfc,
00063         0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00,
00064         0x71, 0xfc, 0xfb, 0xe2, 0xfb, 0xfa, 0xfb, 0xfa, 0xfb, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, 0xfb, 0xde,
00065         0xfb, 0xde, 0xfb, 0xde, 0xff, 0xde, 0xff, 0xde, 0xff, 0xde, 0x7f, 0x1e, 0x3e, 0x1c, 0x00, 0x00,
00066         0x3f, 0xf8, 0x7f, 0xf0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe,
00067         0xf1, 0x8e, 0xf1, 0x8e, 0xf1, 0x8e, 0xff, 0x8e, 0xff, 0x8e, 0x7f, 0x04, 0x3e, 0x00, 0x00, 0x00,
00068         0x00, 0x1c, 0x00, 0x02, 0x00, 0x1a, 0x00, 0x1a, 0x7e, 0x1e, 0xff, 0x1e, 0xff, 0xde, 0xff, 0xfe,
00069         0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x00, 0xfe, 0x00, 0x3c, 0x00, 0x00,
00070         0x3e, 0xf8, 0x7f, 0xf0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe,
00071         0xf1, 0x8e, 0xf1, 0x8e, 0xf1, 0x8e, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x3e, 0xf8, 0x00, 0x00,
00072         0x00, 0xf8, 0x01, 0xf0, 0x03, 0xfa, 0x43, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe,
00073         0x7f, 0x8e, 0x7f, 0x8e, 0x3f, 0x8e, 0x1f, 0xfe, 0x1f, 0xfe, 0x07, 0xfc, 0x01, 0xf8, 0x00, 0x00,
00074         0x3c, 0x38, 0x78, 0xc4, 0x78, 0xf4, 0x78, 0xf4, 0x3c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00075         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00076         0x7e, 0x1c, 0xfc, 0x62, 0xfc, 0x7a, 0xfc, 0x7a, 0x7e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00077         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00078         0x07, 0x80, 0x0f, 0xe0, 0x0f, 0xe0, 0x3f, 0xf8, 0x7f, 0xe0, 0xfc, 0x7a, 0xfc, 0x7a, 0xf0, 0x1e,
00079         0x70, 0x1c, 0x70, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00080         0x38, 0x38, 0x7c, 0x44, 0x7c, 0x74, 0x7c, 0x74, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
00081         0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00082         0x60, 0x1c, 0xe0, 0x02, 0xf8, 0x3a, 0xf8, 0x3a, 0x7f, 0xfc, 0x3f, 0xf8, 0x1f, 0xe0, 0x0f, 0xf0,
00083         0x07, 0xc0, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00084         0x00, 0x1c, 0x00, 0x02, 0x00, 0x1a, 0x00, 0x1a, 0x70, 0x1e, 0xfd, 0xde, 0xfd, 0xde, 0xfd, 0xde,
00085         0x71, 0xde, 0x71, 0xde, 0x01, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x00, 0xfc, 0x00, 0xf8, 0x00, 0x00,
00086         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00087         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00088         0x7f, 0xf8, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfe,
00089         0x01, 0x8e, 0x01, 0x8e, 0x01, 0x8e, 0x7f, 0xfe, 0xff, 0xfc, 0xff, 0xf8, 0x7f, 0xf0, 0x00, 0x00,
00090         0x7f, 0xfe, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe,
00091         0xf1, 0x8e, 0xf1, 0x8e, 0xf1, 0x8e, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfe, 0x3e, 0xfc, 0x00, 0x00,
00092         0x3f, 0xf8, 0x7f, 0xf0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xf0, 0x0e,
00093         0xf0, 0x0e, 0xf0, 0x0e, 0xf0, 0x0e, 0xf0, 0x0e, 0xf0, 0x0e, 0xf0, 0x0e, 0x60, 0x04, 0x00, 0x00,
00094         0x7f, 0xfc, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe,
00095         0xf0, 0x1e, 0xf0, 0x1e, 0xf0, 0x1e, 0xff, 0xfe, 0xff, 0xfc, 0x7f, 0xf8, 0x3f, 0xe0, 0x00, 0x00,
00096         0x7f, 0xfe, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xf1, 0x8e,
00097         0xf1, 0x8e, 0xf1, 0x8e, 0xf1, 0x8e, 0xf1, 0x8e, 0xf1, 0x8e, 0xf1, 0x8e, 0x61, 0xc6, 0x00, 0x00,
00098         0x7f, 0xfe, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfe, 0x03, 0x8e,
00099         0x03, 0x8e, 0x03, 0x8e, 0x03, 0x8e, 0x03, 0x8e, 0x03, 0x8e, 0x03, 0x8e, 0x01, 0xc6, 0x00, 0x00,
00100         0x3f, 0xf8, 0x7f, 0xf0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe,
00101         0xf0, 0x0e, 0xf1, 0x8e, 0xf1, 0x8e, 0xff, 0x8e, 0xff, 0x8e, 0x7f, 0x8e, 0x3f, 0x84, 0x00, 0x00,
00102         0x7f, 0xfc, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x03, 0xc0,
00103         0x03, 0xc0, 0x03, 0xc0, 0x7f, 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x00, 0x00,
00104         0x7f, 0xfc, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x00, 0x00,
00105         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00106         0x3e, 0x00, 0x7f, 0x00, 0xff, 0x00, 0xff, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xff, 0xfc,
00107         0xff, 0xfc, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0x7f, 0xfe, 0x3f, 0xfc, 0x00, 0x00,
00108         0x7f, 0xfc, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc,
00109         0x0f, 0xe0, 0x1f, 0xe0, 0x1f, 0xe0, 0x7f, 0xfc, 0xfe, 0xfe, 0xfc, 0x7e, 0x70, 0x1c, 0x00, 0x00,
00110         0x7f, 0xfc, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0xf0, 0x00,
00111         0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
00112         0x7f, 0xfc, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0x7f, 0xfc, 0x7f, 0xfc, 0x0f, 0xc0,
00113         0x1f, 0x00, 0x1f, 0x00, 0x0f, 0xc0, 0x7f, 0xfc, 0x7f, 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc,
00114         0x7f, 0xfc, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x07, 0xc0,
00115         0x0f, 0x00, 0x7f, 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x00, 0x00,
00116         0x3f, 0xf8, 0x7f, 0xf0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe,
00117         0xf0, 0x0e, 0xf0, 0x0e, 0xf0, 0x0e, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x3f, 0xf8, 0x00, 0x00,
00118         0x7f, 0xfc, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfe, 0x0e, 0x1e,
00119         0x0e, 0x1e, 0x0e, 0x1e, 0x0f, 0xfe, 0x0f, 0xfe, 0x0f, 0xfe, 0x07, 0xfc, 0x03, 0xf8, 0x00, 0x00,
00120         0x0f, 0xfe, 0x1f, 0xfc, 0x3f, 0xfe, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xff,
00121         0xfc, 0x03, 0xfc, 0x03, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0x0f, 0xfe, 0x00, 0x00,
00122         0x7f, 0xfe, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfe,
00123         0x0f, 0x8e, 0x1f, 0x8e, 0x1f, 0x8e, 0x7f, 0xfe, 0xff, 0xfe, 0xfd, 0xfe, 0x78, 0xfc, 0x00, 0x00,
00124         0x71, 0xf8, 0xfb, 0xf0, 0xfb, 0xfa, 0xfb, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, 0xfb, 0xde,
00125         0xfb, 0xde, 0xfb, 0xde, 0xff, 0xde, 0xff, 0xde, 0xff, 0xde, 0x7f, 0xde, 0x3f, 0x8c, 0x00, 0x00,
00126         0x00, 0x1c, 0x00, 0x02, 0x00, 0x1a, 0x00, 0x1a, 0x7f, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe,
00127         0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfe, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x00,
00128         0x3f, 0xfc, 0x7f, 0xe2, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0xf0, 0x00,
00129         0xf0, 0x00, 0xf0, 0x00, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfe, 0x3f, 0xfc, 0x00, 0x00,
00130         0x3f, 0xfc, 0x7f, 0xe2, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0xfc, 0x00,
00131         0x7e, 0x00, 0x7e, 0x00, 0x3f, 0xfc, 0x1f, 0xfe, 0x0f, 0xfe, 0x07, 0xfe, 0x03, 0xfc, 0x00, 0x00,
00132         0x7f, 0xfc, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x7f, 0xfc,
00133         0x3e, 0x00, 0x1f, 0x00, 0x3e, 0x00, 0x7f, 0xfc, 0x7f, 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc,
00134         0x40, 0x1c, 0xfc, 0x22, 0xf8, 0xfa, 0x78, 0xfc, 0x7f, 0xfc, 0x3f, 0xf8, 0x1f, 0xe0, 0x1f, 0xe0,
00135         0x1f, 0xe0, 0x7f, 0xfc, 0x7f, 0xfc, 0x7f, 0xfc, 0xf8, 0xfe, 0xfc, 0x3e, 0x40, 0x1c, 0x00, 0x00,
00136         0x00, 0x1c, 0x00, 0x72, 0x00, 0xfa, 0x01, 0xfe, 0x7f, 0xfe, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xf8,
00137         0xff, 0xfc, 0xff, 0xfc, 0x7f, 0xfe, 0x01, 0xfe, 0x00, 0xfe, 0x00, 0x7e, 0x00, 0x1c, 0x00, 0x00,
00138         0x70, 0x1c, 0xf8, 0x02, 0xfc, 0x1a, 0xfc, 0x1a, 0xff, 0x1e, 0xff, 0xde, 0xff, 0xfe, 0xff, 0xfe,
00139         0xff, 0xfe, 0xff, 0xfe, 0xfb, 0xfe, 0xf8, 0xfe, 0xf8, 0xfe, 0xf8, 0x3e, 0x70, 0x1c, 0x00, 0x00,
00140         0x3f, 0xf8, 0x7f, 0xe0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xf0, 0x3e, 0x70, 0x1c, 0x00, 0x00,
00141         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00142         0x00, 0x1c, 0x00, 0x22, 0x00, 0xfa, 0x00, 0xfa, 0x03, 0xfc, 0x07, 0xf8, 0x0f, 0xe0, 0x1f, 0xe0,
00143         0x3f, 0xc0, 0x3f, 0xc0, 0x7f, 0x00, 0xfe, 0x00, 0xfc, 0x00, 0xf8, 0x00, 0x70, 0x00, 0x00, 0x00,
00144         0x60, 0x1c, 0xf0, 0x02, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0x7f, 0xfc, 0x3f, 0xf8, 0x00, 0x00,
00145         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00146         0x00, 0x38, 0x00, 0xc4, 0x00, 0xf4, 0x00, 0xf4, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x38,
00147         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00148         0x70, 0x00, 0x88, 0x00, 0xe8, 0x00, 0xe8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00,
00149         0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x70, 0x00, 0x00, 0x00,
00150         0x00, 0x38, 0x00, 0xc4, 0x00, 0xf4, 0x00, 0xf4, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x38,
00151         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00152         0x7f, 0xe0, 0xff, 0xc0, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0x7f, 0xf8, 0x07, 0xb8,
00153         0x07, 0xb8, 0x07, 0xb8, 0x7f, 0xf8, 0xff, 0xf0, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00154         0x7f, 0xf0, 0xff, 0x88, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf7, 0x78,
00155         0xf7, 0x78, 0xf7, 0x78, 0xff, 0xf8, 0x7f, 0xf0, 0x3d, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00156         0x3f, 0xe0, 0x7f, 0xc0, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf8, 0x38, 0xf8, 0x38,
00157         0xf8, 0x38, 0xf8, 0x38, 0xf8, 0x38, 0xf8, 0x38, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00158         0x7f, 0xf0, 0xff, 0x88, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf0, 0x78,
00159         0xf0, 0x78, 0xf0, 0x78, 0xff, 0xf0, 0x7f, 0xe0, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00160         0x7f, 0xf0, 0xff, 0xc8, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xf8, 0xf7, 0xb8, 0xf7, 0xb8,
00161         0xf7, 0xb8, 0xf7, 0xb8, 0xf7, 0xb8, 0xf7, 0xb8, 0x63, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00162         0x7f, 0xf0, 0xff, 0xc8, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf8, 0x7f, 0xf8, 0x07, 0xb8, 0x07, 0xb8,
00163         0x07, 0xb8, 0x07, 0xb8, 0x07, 0xb8, 0x07, 0xb8, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00164         0x3f, 0xe0, 0x7f, 0xc0, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf0, 0x38,
00165         0xf0, 0x38, 0xf2, 0x38, 0xff, 0xb8, 0x7f, 0xb8, 0x3e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00166         0x7f, 0xf0, 0xff, 0x88, 0xff, 0xe8, 0xff, 0xe8, 0x7f, 0xf0, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00,
00167         0x7f, 0xf0, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00168         0x7f, 0xf0, 0xff, 0x88, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf8, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00,
00169         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00170         0x3c, 0x00, 0x7e, 0x00, 0xfe, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xff, 0xf0, 0xff, 0x88,
00171         0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf8, 0x7f, 0xf8, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00172         0x7f, 0xf0, 0xff, 0x88, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xf8, 0x1f, 0x80, 0x3f, 0xe0,
00173         0x3f, 0xe0, 0x7f, 0xf0, 0xfd, 0xf8, 0xf8, 0xf8, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00174         0x7f, 0xf0, 0xff, 0x88, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xf0, 0xf0, 0x00, 0xf0, 0x00,
00175         0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00176         0x7f, 0xf0, 0xff, 0x88, 0xff, 0xe8, 0xff, 0xe8, 0x7f, 0xf0, 0x7f, 0xf0, 0x07, 0x80, 0x0f, 0x00,
00177         0x0f, 0x00, 0x07, 0x80, 0x7f, 0xf0, 0x7f, 0xf0, 0xff, 0xf8, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00,
00178         0x7f, 0xf0, 0xff, 0x88, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf8, 0x7f, 0xf0, 0x03, 0x80, 0x07, 0x00,
00179         0x7f, 0xf0, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00180         0x3f, 0xe0, 0x7f, 0xc0, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf8, 0x38,
00181         0xf8, 0x38, 0xf8, 0x38, 0xff, 0xf8, 0x7f, 0xf0, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00182         0x7f, 0xf0, 0xff, 0xc8, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf8, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38,
00183         0x0f, 0xf8, 0x0f, 0xf8, 0x0f, 0xf8, 0x07, 0xf0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00184         0x0f, 0xf8, 0x1f, 0xf0, 0x3f, 0xfa, 0x3f, 0xfe, 0x3f, 0xfe, 0x3f, 0xfe, 0x3f, 0xfe, 0xfe, 0x0e,
00185         0xfe, 0x0e, 0xfe, 0x0e, 0xff, 0xfe, 0x1f, 0xfc, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00186         0x7f, 0xf0, 0xff, 0xc8, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xf8, 0x0f, 0xb8, 0x1f, 0xb8,
00187         0x1f, 0xb8, 0x7f, 0xf8, 0x7f, 0xf8, 0xfb, 0xf0, 0x71, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00188         0x71, 0xe0, 0xfb, 0xc0, 0xfb, 0xe8, 0xfb, 0xf8, 0xfb, 0xf8, 0xfb, 0xf8, 0xfb, 0xb8, 0xfb, 0xb8,
00189         0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb8, 0x7f, 0xb8, 0x3e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00190         0x00, 0x70, 0x00, 0x88, 0x00, 0xe8, 0x00, 0xe8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8,
00191         0x7f, 0xf8, 0x7f, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00192         0x3f, 0xf0, 0x7f, 0x88, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf0, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00,
00193         0xff, 0xf0, 0xff, 0xf8, 0xff, 0xf8, 0x7f, 0xf8, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00194         0x3f, 0xf0, 0x7f, 0x88, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xf0, 0xf8, 0x00, 0x7c, 0x00,
00195         0x7c, 0x00, 0x3f, 0xf0, 0x1f, 0xf8, 0x0f, 0xf8, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00196         0x7f, 0xf0, 0xff, 0x88, 0xff, 0xe8, 0xff, 0xe8, 0x7f, 0xf0, 0x7f, 0xf0, 0x3c, 0x00, 0x1e, 0x00,
00197         0x3c, 0x00, 0x7f, 0xf0, 0x7f, 0xf0, 0xff, 0xf8, 0xff, 0xf8, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00,
00198         0x40, 0xf0, 0xf1, 0x88, 0xfb, 0xe8, 0xfb, 0xe8, 0x7f, 0xe0, 0x3f, 0x80, 0x1f, 0xe0, 0x3f, 0xf0,
00199         0x7f, 0xf8, 0x7f, 0xf8, 0xfd, 0xf8, 0xf8, 0xf8, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00200         0x00, 0x70, 0x00, 0x88, 0x01, 0xe8, 0x01, 0xe8, 0x7f, 0xf0, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe0,
00201         0x7f, 0xf0, 0x7f, 0xf8, 0x01, 0xf8, 0x00, 0xf8, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00202         0x40, 0x70, 0xf0, 0x88, 0xf8, 0xe8, 0xf8, 0xe8, 0xfe, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8,
00203         0xfb, 0xf8, 0xfb, 0xf8, 0xf9, 0xf8, 0xf8, 0xf8, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00204         0x03, 0x00, 0x07, 0xc0, 0x3f, 0xf8, 0x7f, 0xf0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xf0, 0x1e,
00205         0x60, 0x0c, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00206         0x7f, 0xfc, 0xff, 0xe2, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0x7f, 0xfc, 0x00, 0x00,
00207         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00208         0x60, 0x1c, 0xf0, 0x02, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0x7f, 0xfc, 0x3f, 0xf8, 0x07, 0xc0,
00209         0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00210         0x00, 0x38, 0x00, 0xc4, 0x00, 0xf4, 0x00, 0xf4, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x38,
00211         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00212         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
00213         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
00214     };
00215 
00216 
00217 int gfx3d_font04b_char_dpw (const char ch)
00218 {
00219     int sel, cw, sw;
00220 
00221     if ((ch < 32) || (ch > 127)) {
00222         return 0;
00223     }
00224     sel = ch - 32;
00225     cw = (font_metrics_04b[sel] & 0x0f);
00226     if (!cw) {
00227         cw = 16;
00228     }
00229     sw = (font_metrics_04b[sel] >> 4) & 0x0f;
00230     if (!sw) {
00231         sw = 16;
00232     }
00233     return cw + sw;
00234 }
00235 
00236 
00237 void gfx3d_font04b_tx_putchar (uint8_t *txbuf, const int txwidth, int *xptr, const int y, const char ch, const bool inv)
00238 {
00239     int sel, cw, sw, i, dcs, dcw;
00240     
00241     if ((ch < 32) || (ch > 127)) {
00242         return;
00243     }
00244     sel = ch - 32;
00245     cw = (font_metrics_04b[sel] & 0x0f);
00246     if (!cw) {
00247         cw = 16;
00248     }
00249     sw = (font_metrics_04b[sel] >> 4) & 0x0f;
00250     if (!sw) {
00251         sw = 16;
00252     }
00253     
00254     if (*xptr >= txwidth) {
00255         *xptr += cw+sw;     /* advance space but do nothing else */
00256         return;
00257     } else if ((*xptr + cw) < 0) {
00258         /* all character data off-left, advance space and nothing else */
00259         *xptr += cw+sw;
00260         return;
00261     }
00262     sel <<= 5;              /* in 32-byte steps */
00263     
00264     if ((*xptr + cw) > txwidth) {
00265         /* means it won't all fit */
00266         dcw = (txwidth - *xptr);
00267     } else {
00268         dcw = cw;
00269     }
00270     if (*xptr < 0) {
00271         dcs = -*xptr;
00272     } else {
00273         dcs = 0;
00274     }
00275     
00276     /* copy in character data */
00277     for (i=dcs; i<dcw; i++) {
00278         uint8_t chigh = font_data_04b[sel + (i << 1) + 0];
00279         uint8_t clow = font_data_04b[sel + (i << 1) + 1];
00280         
00281         if (inv) {
00282             chigh = ~chigh;
00283             clow = ~clow;
00284         }
00285         
00286         if (y == 0) {
00287             txbuf[((*xptr + i) << 2) + 0] = clow;
00288             txbuf[((*xptr + i) << 2) + 1] = chigh;
00289         } else if (y == 8) {
00290             txbuf[((*xptr + i) << 2) + 1] = clow;
00291             txbuf[((*xptr + i) << 2) + 2] = chigh;
00292         } else if (y == 16) {
00293             txbuf[((*xptr + i) << 2) + 2] = clow;
00294             txbuf[((*xptr + i) << 2) + 3] = chigh;
00295         } else {
00296             /* FIXME: all the other cases */
00297         }
00298     }
00299     *xptr += cw + sw;
00300 
00301     return;
00302 }
00303 
00304 
00305 void gfx3d_font04b_tx_putstr (uint8_t *txbuf, const int txwidth, int *xptr, const int y, const char *str, const bool inv)
00306 {
00307     const char *ch;
00308     
00309     for (ch=str; (*ch != '\0'); ch++) {
00310         gfx3d_font04b_tx_putchar (txbuf, txwidth, xptr, y, *ch, inv);
00311     }
00312     return;
00313 }
00314 
00315 
00316 void gfx3d_font04b_tx_putstrn (uint8_t *txbuf, const int txwidth, int *xptr, const int y, const char *str, const int slen, const bool inv)
00317 {
00318     const char *ch;
00319     int left = slen;
00320     
00321     for (ch=str; (*ch != '\0') && left; ch++, left--) {
00322         gfx3d_font04b_tx_putchar (txbuf, txwidth, xptr, y, *ch, inv);
00323     }
00324     return;
00325 }
00326