From 358fb509db6b9de90faff8cb1161664fc574b291 Mon Sep 17 00:00:00 2001 From: June Tate-Gans Date: Sun, 25 Apr 2021 17:22:34 -0500 Subject: [PATCH] g13d: Final-final cleanups to the codebase - Removing a bunch of silly star comment separates - Moving font8x8 back into its own header - Move string_repr_out into repr.cc --- g13d/device.cc | 3 - g13d/font.cc | 363 +----------------------------------------------- g13d/font8x8.h | 360 +++++++++++++++++++++++++++++++++++++++++++++++ g13d/helper.cc | 80 ----------- g13d/manager.cc | 2 - g13d/repr.h | 48 +++++++ 6 files changed, 411 insertions(+), 445 deletions(-) create mode 100644 g13d/font8x8.h delete mode 100644 g13d/helper.cc diff --git a/g13d/device.cc b/g13d/device.cc index a951a16..ea21f20 100644 --- a/g13d/device.cc +++ b/g13d/device.cc @@ -251,7 +251,6 @@ void G13_Device::read_config_file(const std::string &filename) { } void G13_Device::read_commands() { - fd_set set; FD_ZERO(&set); FD_SET(_input_pipe_fid, &set); @@ -340,8 +339,6 @@ G13_ActionPtr G13_Device::make_action(const std::string &action) { throw G13_CommandException("can't create action for " + action); } -// ************************************************************************* - void G13_Device::dump(std::ostream &o, int detail) { o << "G13 id=" << id_within_manager() << std::endl << " input_pipe_name=" << repr(_input_pipe_name) << std::endl diff --git a/g13d/font.cc b/g13d/font.cc index 34b6dad..a08d13c 100644 --- a/g13d/font.cc +++ b/g13d/font.cc @@ -5,366 +5,7 @@ using namespace std; namespace G13 { -// font data from https://github.com/dhepper/font8x8 -// Constant: font8x8_basic -// Contains an 8x8 font map for unicode points U+0000 - U+007F (basic latin) -unsigned char font8x8_basic[128][8] = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) - {0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) - {0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") - {0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) - {0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) - {0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) - {0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) - {0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') - {0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() - {0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) - {0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) - {0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) - {0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) - {0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) - {0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) - {0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) - {0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) - {0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) - {0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) - {0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) - {0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) - {0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) - {0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) - {0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) - {0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) - {0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) - {0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) - {0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) - {0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) - {0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) - {0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) - {0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) - {0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) - {0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) - {0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) - {0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) - {0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) - {0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) - {0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) - {0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) - {0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) - {0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) - {0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) - {0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) - {0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) - {0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) - {0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) - {0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) - {0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) - {0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) - {0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) - {0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) - {0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) - {0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) - {0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) - {0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) - {0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) - {0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) - {0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) - {0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) - {0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) - {0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) - {0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) - {0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) - {0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) - {0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) - {0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) - {0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) - {0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) - {0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) - {0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) - {0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) - {0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) - {0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) - {0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) - {0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) - {0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) - {0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) - {0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) - {0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) - {0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) - {0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) - {0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) - {0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) - {0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) - {0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) - {0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) - {0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) - {0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) - {0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) - {0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) - {0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) - {0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) - {0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F -}; - -unsigned char font5x8[][5] = { - {0x00, 0x00, 0x00, 0x00, 0x00}, // 0x20 (Space) - {0x00, 0x00, 0x9E, 0x00, 0x00}, // 0x21 ! - {0x00, 0x0E, 0x00, 0x0E, 0x00}, // 0x22 " - {0x28, 0xFE, 0x28, 0xFE, 0x28}, // 0x23 # - {0x48, 0x54, 0xFE, 0x54, 0x24}, // 0x24 $ - {0x46, 0x26, 0x10, 0xC8, 0xC4}, // 0x25 % - {0x6C, 0x92, 0xAA, 0x44, 0xA0}, // 0x26 & - {0x00, 0x0A, 0x06, 0x00, 0x00}, // 0x27 ' - {0x00, 0x38, 0x44, 0x82, 0x00}, // 0x28 ( - {0x00, 0x82, 0x44, 0x38, 0x00}, // 0x29 ) - {0x10, 0x54, 0x38, 0x54, 0x10}, // 0x2A * - {0x10, 0x10, 0x7C, 0x10, 0x10}, // 0x2B + - {0x00, 0xA0, 0x60, 0x00, 0x00}, // 0x2C , - {0x10, 0x10, 0x10, 0x10, 0x10}, // 0x2D - - {0x00, 0x60, 0x60, 0x00, 0x00}, // 0x2E . - {0x40, 0x20, 0x10, 0x08, 0x04}, // 0x2F / - {0x7C, 0xA2, 0x92, 0x8A, 0x7C}, // 0x30 0 - {0x00, 0x84, 0xFE, 0x80, 0x00}, // 0x31 1 - {0x84, 0xC2, 0xA2, 0x92, 0x8C}, // 0x32 2 - {0x42, 0x82, 0x8A, 0x96, 0x62}, // 0x33 3 - {0x30, 0x28, 0x24, 0xFE, 0x20}, // 0x34 4 - {0x4E, 0x8A, 0x8A, 0x8A, 0x72}, // 0x35 5 - {0x78, 0x94, 0x92, 0x92, 0x60}, // 0x36 6 - {0x02, 0xE2, 0x12, 0x0A, 0x06}, // 0x37 7 - {0x6C, 0x92, 0x92, 0x92, 0x6C}, // 0x38 8 - {0x0C, 0x92, 0x92, 0x52, 0x3C}, // 0x39 9 - {0x00, 0x6C, 0x6C, 0x00, 0x00}, // 0x3A : - {0x00, 0xAC, 0x6C, 0x00, 0x00}, // 0x3B ; - {0x00, 0x10, 0x28, 0x44, 0x82}, // 0x3C < - {0x28, 0x28, 0x28, 0x28, 0x28}, // 0x3D = - {0x82, 0x44, 0x28, 0x10, 0x00}, // 0x3E > - {0x04, 0x02, 0xA2, 0x12, 0x0C}, // 0x3F ? - {0x64, 0x92, 0xF2, 0x82, 0x7C}, // 0x40 @ - {0xFC, 0x22, 0x22, 0x22, 0xFC}, // 0x41 A - {0xFE, 0x92, 0x92, 0x92, 0x6C}, // 0x42 B - {0x7C, 0x82, 0x82, 0x82, 0x44}, // 0x43 C - {0xFE, 0x82, 0x82, 0x44, 0x38}, // 0x44 D - {0xFE, 0x92, 0x92, 0x92, 0x82}, // 0x45 E - {0xFE, 0x12, 0x12, 0x02, 0x02}, // 0x46 F - {0x7C, 0x82, 0x82, 0xA2, 0x64}, // 0x47 G - {0xFE, 0x10, 0x10, 0x10, 0xFE}, // 0x48 H - {0x00, 0x82, 0xFE, 0x82, 0x00}, // 0x49 I - {0x40, 0x80, 0x82, 0x7E, 0x02}, // 0x4A J - {0xFE, 0x10, 0x28, 0x44, 0x82}, // 0x4B K - {0xFE, 0x80, 0x80, 0x80, 0x80}, // 0x4C L - {0xFE, 0x04, 0x08, 0x04, 0xFE}, // 0x4D M - {0xFE, 0x08, 0x10, 0x20, 0xFE}, // 0x4E N - {0x7C, 0x82, 0x82, 0x82, 0x7C}, // 0x4F O - {0xFE, 0x12, 0x12, 0x12, 0x0C}, // 0x50 P - {0x7C, 0x82, 0xA2, 0x42, 0xBC}, // 0x51 Q - {0xFE, 0x12, 0x32, 0x52, 0x8C}, // 0x52 R - {0x8C, 0x92, 0x92, 0x92, 0x62}, // 0x53 S - {0x02, 0x02, 0xFE, 0x02, 0x02}, // 0x54 T - {0x7E, 0x80, 0x80, 0x80, 0x7E}, // 0x55 U - {0x3E, 0x40, 0x80, 0x40, 0x3E}, // 0x56 V - {0xFE, 0x40, 0x30, 0x40, 0xFE}, // 0x57 W - {0xC6, 0x28, 0x10, 0x28, 0xC6}, // 0x58 X - {0x06, 0x08, 0xF0, 0x08, 0x06}, // 0x59 Y - {0xC2, 0xA2, 0x92, 0x8A, 0x86}, // 0x5A Z - {0x00, 0x00, 0xFE, 0x82, 0x82}, // 0x5B [ - {0x04, 0x08, 0x10, 0x20, 0x40}, // 0x5C "\" - {0x82, 0x82, 0xFE, 0x00, 0x00}, // 0x5D ] - {0x08, 0x04, 0x02, 0x04, 0x08}, // 0x5E ^ - {0x80, 0x80, 0x80, 0x80, 0x80}, // 0x5F _ - {0x00, 0x02, 0x04, 0x08, 0x00}, // 0x60 ` - {0x40, 0xA8, 0xA8, 0xA8, 0xF0}, // 0x61 a - {0xFE, 0x90, 0x88, 0x88, 0x70}, // 0x62 b - {0x70, 0x88, 0x88, 0x88, 0x40}, // 0x63 c - {0x70, 0x88, 0x88, 0x90, 0xFE}, // 0x64 d - {0x70, 0xA8, 0xA8, 0xA8, 0x30}, // 0x65 e - {0x10, 0xFC, 0x12, 0x02, 0x04}, // 0x66 f - {0x10, 0x28, 0xA8, 0xA8, 0x78}, // 0x67 g - {0xFE, 0x10, 0x08, 0x08, 0xF0}, // 0x68 h - {0x00, 0x88, 0xFA, 0x80, 0x00}, // 0x69 i - {0x40, 0x80, 0x88, 0x7A, 0x00}, // 0x6A j - {0x00, 0xFE, 0x20, 0x50, 0x88}, // 0x6B k - {0x00, 0x82, 0xFE, 0x80, 0x00}, // 0x6C l - {0xF8, 0x08, 0x30, 0x08, 0xF0}, // 0x6D m - {0xF8, 0x10, 0x08, 0x08, 0xF0}, // 0x6E n - {0x70, 0x88, 0x88, 0x88, 0x70}, // 0x6F o - {0xF8, 0x28, 0x28, 0x28, 0x10}, // 0x70 p - {0x10, 0x28, 0x28, 0x30, 0xF8}, // 0x71 q - {0xF8, 0x10, 0x08, 0x08, 0x10}, // 0x72 r - {0x90, 0xA8, 0xA8, 0xA8, 0x40}, // 0x73 s - {0x08, 0x7E, 0x88, 0x80, 0x40}, // 0x74 t - {0x78, 0x80, 0x80, 0x40, 0xF8}, // 0x75 u - {0x38, 0x40, 0x80, 0x40, 0x38}, // 0x76 v - {0x78, 0x80, 0x60, 0x80, 0x78}, // 0x77 w - {0x88, 0x50, 0x20, 0x50, 0x88}, // 0x78 x - {0x18, 0xA0, 0xA0, 0xA0, 0x78}, // 0x79 y - {0x88, 0xC8, 0xA8, 0x98, 0x88}, // 0x7A z - {0x00, 0x10, 0x6C, 0x82, 0x00}, // 0x7B { - {0x00, 0x00, 0xFE, 0x00, 0x00}, // 0x7C | - {0x00, 0x82, 0x6C, 0x10, 0x00}, // 0x7D } - {0x20, 0x10, 0x10, 0x20, 0x10}, // 0x7E - {0xF0, 0x88, 0x84, 0x88, 0xF0}, // 0x7F  - {0x28, 0x7C, 0xAA, 0x82, 0x44}, // 0x80 € - {0xF0, 0x29, 0x27, 0x21, 0xFF}, // 0x81  - {0x00, 0xA0, 0x60, 0x00, 0x00}, // 0x82 ‚ - {0x40, 0x90, 0x7C, 0x12, 0x04}, // 0x83 ƒ - {0xC0, 0xA0, 0x00, 0xC0, 0xA0}, // 0x84 „ - {0x80, 0x00, 0x80, 0x00, 0x80}, // 0x85 … - {0x00, 0x04, 0xFE, 0x04, 0x00}, // 0x86 † - {0x00, 0x44, 0xFE, 0x44, 0x00}, // 0x87 ‡ - {0x00, 0x04, 0x02, 0x04, 0x00}, // 0x88 ˆ - {0xC3, 0xD3, 0x08, 0xC4, 0xC2}, // 0x89 ‰ - {0x4C, 0x93, 0x92, 0x93, 0x64}, // 0x8A Š - {0x00, 0x10, 0x28, 0x00, 0x00}, // 0x8B ‹ - {0x7C, 0x82, 0x82, 0x7C, 0x92}, // 0x8C Œ - {0x02, 0xFE, 0x90, 0x90, 0x60}, // 0x8D  - {0xC2, 0xA3, 0x92, 0x8B, 0x86}, // 0x8E Ž - {0x44, 0x92, 0x8A, 0x92, 0x7C}, // 0x8F  - {0x70, 0x88, 0x90, 0x60, 0x98}, // 0x90  - {0x00, 0x02, 0x04, 0x08, 0x00}, // 0x91 ‘ - {0x00, 0x08, 0x04, 0x02, 0x00}, // 0x92 ’ - {0x02, 0x04, 0x0A, 0x04, 0x08}, // 0x93 “ - {0x08, 0x04, 0x0A, 0x04, 0x02}, // 0x94 ” - {0x00, 0x38, 0x38, 0x38, 0x00}, // 0x95 • - {0x00, 0x10, 0x10, 0x10, 0x10}, // 0x96 – - {0x10, 0x10, 0x10, 0x10, 0x10}, // 0x97 — - {0x02, 0x01, 0x02, 0x04, 0x02}, // 0x98 ˜ - {0xF1, 0x5B, 0x55, 0x51, 0x51}, // 0x99 ™ - {0x90, 0xA9, 0xAA, 0xA9, 0x40}, // 0x9A š - {0x00, 0x88, 0x50, 0x20, 0x00}, // 0x9B › - {0x70, 0x88, 0x70, 0xA8, 0xB0}, // 0x9C œ° - {0x38, 0x7C, 0xF8, 0x7C, 0x38}, // 0x9D  - {0x88, 0xC9, 0xAA, 0x99, 0x88}, // 0x9E ž - {0x1C, 0x21, 0xC0, 0x21, 0x1C}, // 0x9F Ÿ - {0x00, 0x00, 0x00, 0x00, 0x00}, // 0xA0 - {0x00, 0x00, 0xF2, 0x00, 0x00}, // 0xA1 ¡ - {0x38, 0x44, 0xFE, 0x44, 0x20}, // 0xA2 ¢ - {0x90, 0x7C, 0x92, 0x82, 0x40}, // 0xA3 £ - {0x44, 0x38, 0x28, 0x38, 0x44}, // 0xA4 ¤ - {0x2A, 0x2C, 0xF8, 0x2C, 0x2A}, // 0xA5 ¥ - {0x00, 0x00, 0xEE, 0x00, 0x00}, // 0xA6 ¦ - {0x40, 0x94, 0xAA, 0x52, 0x04}, // 0xA7 § - {0x00, 0x02, 0x00, 0x02, 0x00}, // 0xA8 ¨ - {0xFE, 0x82, 0xBA, 0x92, 0xFE}, // 0xA9 © - {0x90, 0xAA, 0xAA, 0xAA, 0xBC}, // 0xAA ª - {0x20, 0x50, 0xA8, 0x50, 0x88}, // 0xAB « - {0x20, 0x20, 0x20, 0x20, 0xE0}, // 0xAC ¬ - {0x20, 0x20, 0x20, 0x20, 0x20}, // 0xAD ­ - {0xFE, 0x82, 0xCA, 0xA2, 0xFE}, // 0xAE ® - {0x02, 0x02, 0x02, 0x02, 0x02}, // 0xAF ¯ - {0x0E, 0x11, 0x11, 0x0E, 0x00}, // 0xB0 ° - {0x88, 0x88, 0xBE, 0x88, 0x88}, // 0xB1 ± - {0x12, 0x19, 0x15, 0x12, 0x00}, // 0xB2 ² - {0x11, 0x15, 0x15, 0x0A, 0x00}, // 0xB3 ³ - {0x00, 0x08, 0x04, 0x02, 0x00}, // 0xB4 ´ - {0xFE, 0x20, 0x20, 0x10, 0x3E}, // 0xB5 µ - {0x0C, 0x12, 0x12, 0xFE, 0xFE}, // 0xB6 ¶ - {0x00, 0x30, 0x30, 0x00, 0x00}, // 0xB7 · - {0x00, 0x80, 0xB0, 0x40, 0x00}, // 0xB8 ¸ - {0x00, 0x02, 0x0F, 0x00, 0x00}, // 0xB9 ¹ - {0x00, 0x02, 0x05, 0x02, 0x00}, // 0xBA º - {0x44, 0x28, 0x54, 0x28, 0x10}, // 0xBB » - {0x22, 0x1F, 0x68, 0x54, 0xFA}, // 0xBC ¼ - {0x02, 0x1F, 0x90, 0xC8, 0xB0}, // 0xBD ½ - {0x15, 0x1F, 0x60, 0x50, 0xF8}, // 0xBE ¾ - {0x60, 0x90, 0x8A, 0x80, 0x40}, // 0xBF ¿ - {0xF0, 0x29, 0x26, 0x28, 0xF0}, // 0xC0 À - {0xF0, 0x28, 0x26, 0x29, 0xF0}, // 0xC1 Á - {0xF0, 0x2A, 0x29, 0x2A, 0xF0}, // 0xC2  - {0xF2, 0x29, 0x29, 0x2A, 0xF1}, // 0xC3 à - {0xF0, 0x29, 0x24, 0x29, 0xF0}, // 0xC4 Ä - {0xF0, 0x2A, 0x2D, 0x2A, 0xF0}, // 0xC5 Å - {0xF8, 0x24, 0xFE, 0x92, 0x92}, // 0xC6 Æ - {0x1E, 0x21, 0xA1, 0xE1, 0x12}, // 0xC7 Ç - {0xF8, 0xA9, 0xAA, 0xA8, 0x88}, // 0xC8 È - {0xF8, 0xA8, 0xAA, 0xA9, 0x88}, // 0xC9 É - {0xF8, 0xAA, 0xA9, 0xAA, 0x88}, // 0xCA Ê - {0xF8, 0xAA, 0xA8, 0xAA, 0x88}, // 0xCB Ë - {0x00, 0x89, 0xFA, 0x88, 0x00}, // 0xCC Ì - {0x00, 0x88, 0xFA, 0x89, 0x00}, // 0xCD Í - {0x00, 0x8A, 0xF9, 0x8A, 0x00}, // 0xCE Î - {0x00, 0x8A, 0xF8, 0x8A, 0x00}, // 0xCF Ï - {0x10, 0xFE, 0x92, 0x82, 0x7C}, // 0xD0 Ð - {0xFA, 0x11, 0x21, 0x42, 0xF9}, // 0xD1 Ñ - {0x78, 0x85, 0x86, 0x84, 0x78}, // 0xD2 Ò - {0x78, 0x84, 0x86, 0x85, 0x78}, // 0xD3 Ó - {0x70, 0x8A, 0x89, 0x8A, 0x70}, // 0xD4 Ô - {0x72, 0x89, 0x89, 0x8A, 0x71}, // 0xD5 Õ - {0x78, 0x85, 0x84, 0x85, 0x78}, // 0xD6 Ö - {0x44, 0x28, 0x10, 0x28, 0x44}, // 0xD7 × - {0x10, 0xAA, 0xFE, 0xAA, 0x10}, // 0xD8 Ø - {0x7C, 0x81, 0x82, 0x80, 0x7C}, // 0xD9 Ù - {0x7C, 0x80, 0x82, 0x81, 0x7C}, // 0xDA Ú - {0x78, 0x82, 0x81, 0x82, 0x78}, // 0xDB Û - {0x7C, 0x81, 0x80, 0x81, 0x7C}, // 0xDC Ü - {0x04, 0x08, 0xF2, 0x09, 0x04}, // 0xDD Ý - {0x81, 0xFF, 0x24, 0x24, 0x18}, // 0xDE Þ - {0x80, 0x7C, 0x92, 0x92, 0x6C}, // 0xDF ß - {0x40, 0xA9, 0xAA, 0xA8, 0xF0}, // 0xE0 à - {0x40, 0xA8, 0xAA, 0xA9, 0xF0}, // 0xE1 á - {0x40, 0xAA, 0xA9, 0xAA, 0xF0}, // 0xE2 â - {0x42, 0xA9, 0xA9, 0xAA, 0xF1}, // 0xE3 ã - {0x40, 0xAA, 0xA8, 0xAA, 0xF0}, // 0xE4 ä - {0x40, 0xAA, 0xAD, 0xAA, 0xF0}, // 0xE5 å - {0x64, 0x94, 0x78, 0x94, 0x58}, // 0xE6 æ - {0x18, 0x24, 0xA4, 0xE4, 0x10}, // 0xE7 ç - {0x70, 0xA9, 0xAA, 0xA8, 0x30}, // 0xE8 è - {0x70, 0xA8, 0xAA, 0xA9, 0x30}, // 0xE9 é - {0x70, 0xAA, 0xA9, 0xAA, 0x30}, // 0xEA ê - {0x70, 0xAA, 0xA8, 0xAA, 0x30}, // 0xEB ë - {0x00, 0x91, 0xFA, 0x80, 0x00}, // 0xEC ì - {0x00, 0x90, 0xFA, 0x81, 0x00}, // 0xED í - {0x00, 0x92, 0xF9, 0x82, 0x00}, // 0xEE î - {0x00, 0x92, 0xF8, 0x82, 0x00}, // 0xEF ï - {0x4A, 0xA4, 0xAA, 0xB0, 0x60}, // 0xF0 ð - {0xFA, 0x11, 0x09, 0x0A, 0xF1}, // 0xF1 ñ - {0x70, 0x89, 0x8A, 0x88, 0x70}, // 0xF2 ò - {0x70, 0x88, 0x8A, 0x89, 0x70}, // 0xF3 ó - {0x60, 0x94, 0x92, 0x94, 0x60}, // 0xF4 ô - {0x64, 0x92, 0x92, 0x94, 0x62}, // 0xF5 õ - {0x70, 0x8A, 0x88, 0x8A, 0x70}, // 0xF6 ö - {0x10, 0x10, 0x54, 0x10, 0x10}, // 0xF7 ÷ - {0x10, 0xA8, 0x7C, 0x2A, 0x10}, // 0xF8 ø - {0x78, 0x81, 0x82, 0x40, 0xF8}, // 0xF9 ù - {0x78, 0x80, 0x82, 0x41, 0xF8}, // 0xFA ú - {0x78, 0x82, 0x81, 0x42, 0xF8}, // 0xFB û - {0x78, 0x82, 0x80, 0x42, 0xF8}, // 0xFC ü - {0x18, 0xA0, 0xA4, 0xA2, 0x78}, // 0xFD v - {0x00, 0x82, 0xFE, 0xA8, 0x10}, // 0xFE þ - {0x18, 0xA2, 0xA0, 0xA2, 0x78} // 0xFF ÿ -}; +#include "font8x8.h" G13_Font::G13_Font() : _name("default"), _width(8) {} @@ -375,6 +16,7 @@ void G13_FontChar::set_character(unsigned char *data, int width, unsigned flags) { unsigned char *dest = bits_regular; memset(dest, 0, CHAR_BUF_SIZE); + if (flags && FF_ROTATE) { for (int x = 0; x < width; x++) { unsigned char x_mask = 1 << x; @@ -387,6 +29,7 @@ void G13_FontChar::set_character(unsigned char *data, int width, } else { memcpy(dest, data, width); } + for (int x = 0; x < width; x++) { bits_inverted[x] = ~dest[x]; } diff --git a/g13d/font8x8.h b/g13d/font8x8.h new file mode 100644 index 0000000..5df9af7 --- /dev/null +++ b/g13d/font8x8.h @@ -0,0 +1,360 @@ +// font data from https://github.com/dhepper/font8x8 +// Constant: font8x8_basic +// Contains an 8x8 font map for unicode points U+0000 - U+007F (basic latin) +unsigned char font8x8_basic[128][8] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + {0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + {0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + {0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + {0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + {0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + {0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + {0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + {0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + {0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + {0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + {0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + {0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + {0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + {0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + {0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + {0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + {0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + {0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + {0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + {0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + {0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + {0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + {0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + {0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + {0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + {0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + {0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + {0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + {0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + {0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + {0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + {0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + {0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + {0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + {0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + {0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + {0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + {0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + {0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + {0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + {0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + {0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + {0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + {0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + {0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + {0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + {0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + {0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + {0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + {0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + {0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + {0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + {0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + {0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + {0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + {0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + {0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + {0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + {0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + {0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + {0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + {0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + {0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + {0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + {0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + {0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + {0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + {0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + {0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + {0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + {0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + {0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + {0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + {0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + {0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + {0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + {0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + {0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + {0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + {0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + {0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + {0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + {0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + {0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + {0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + {0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + {0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + {0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + {0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + {0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + {0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + {0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + {0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + +unsigned char font5x8[][5] = { + {0x00, 0x00, 0x00, 0x00, 0x00}, // 0x20 (Space) + {0x00, 0x00, 0x9E, 0x00, 0x00}, // 0x21 ! + {0x00, 0x0E, 0x00, 0x0E, 0x00}, // 0x22 " + {0x28, 0xFE, 0x28, 0xFE, 0x28}, // 0x23 # + {0x48, 0x54, 0xFE, 0x54, 0x24}, // 0x24 $ + {0x46, 0x26, 0x10, 0xC8, 0xC4}, // 0x25 % + {0x6C, 0x92, 0xAA, 0x44, 0xA0}, // 0x26 & + {0x00, 0x0A, 0x06, 0x00, 0x00}, // 0x27 ' + {0x00, 0x38, 0x44, 0x82, 0x00}, // 0x28 ( + {0x00, 0x82, 0x44, 0x38, 0x00}, // 0x29 ) + {0x10, 0x54, 0x38, 0x54, 0x10}, // 0x2A * + {0x10, 0x10, 0x7C, 0x10, 0x10}, // 0x2B + + {0x00, 0xA0, 0x60, 0x00, 0x00}, // 0x2C , + {0x10, 0x10, 0x10, 0x10, 0x10}, // 0x2D - + {0x00, 0x60, 0x60, 0x00, 0x00}, // 0x2E . + {0x40, 0x20, 0x10, 0x08, 0x04}, // 0x2F / + {0x7C, 0xA2, 0x92, 0x8A, 0x7C}, // 0x30 0 + {0x00, 0x84, 0xFE, 0x80, 0x00}, // 0x31 1 + {0x84, 0xC2, 0xA2, 0x92, 0x8C}, // 0x32 2 + {0x42, 0x82, 0x8A, 0x96, 0x62}, // 0x33 3 + {0x30, 0x28, 0x24, 0xFE, 0x20}, // 0x34 4 + {0x4E, 0x8A, 0x8A, 0x8A, 0x72}, // 0x35 5 + {0x78, 0x94, 0x92, 0x92, 0x60}, // 0x36 6 + {0x02, 0xE2, 0x12, 0x0A, 0x06}, // 0x37 7 + {0x6C, 0x92, 0x92, 0x92, 0x6C}, // 0x38 8 + {0x0C, 0x92, 0x92, 0x52, 0x3C}, // 0x39 9 + {0x00, 0x6C, 0x6C, 0x00, 0x00}, // 0x3A : + {0x00, 0xAC, 0x6C, 0x00, 0x00}, // 0x3B ; + {0x00, 0x10, 0x28, 0x44, 0x82}, // 0x3C < + {0x28, 0x28, 0x28, 0x28, 0x28}, // 0x3D = + {0x82, 0x44, 0x28, 0x10, 0x00}, // 0x3E > + {0x04, 0x02, 0xA2, 0x12, 0x0C}, // 0x3F ? + {0x64, 0x92, 0xF2, 0x82, 0x7C}, // 0x40 @ + {0xFC, 0x22, 0x22, 0x22, 0xFC}, // 0x41 A + {0xFE, 0x92, 0x92, 0x92, 0x6C}, // 0x42 B + {0x7C, 0x82, 0x82, 0x82, 0x44}, // 0x43 C + {0xFE, 0x82, 0x82, 0x44, 0x38}, // 0x44 D + {0xFE, 0x92, 0x92, 0x92, 0x82}, // 0x45 E + {0xFE, 0x12, 0x12, 0x02, 0x02}, // 0x46 F + {0x7C, 0x82, 0x82, 0xA2, 0x64}, // 0x47 G + {0xFE, 0x10, 0x10, 0x10, 0xFE}, // 0x48 H + {0x00, 0x82, 0xFE, 0x82, 0x00}, // 0x49 I + {0x40, 0x80, 0x82, 0x7E, 0x02}, // 0x4A J + {0xFE, 0x10, 0x28, 0x44, 0x82}, // 0x4B K + {0xFE, 0x80, 0x80, 0x80, 0x80}, // 0x4C L + {0xFE, 0x04, 0x08, 0x04, 0xFE}, // 0x4D M + {0xFE, 0x08, 0x10, 0x20, 0xFE}, // 0x4E N + {0x7C, 0x82, 0x82, 0x82, 0x7C}, // 0x4F O + {0xFE, 0x12, 0x12, 0x12, 0x0C}, // 0x50 P + {0x7C, 0x82, 0xA2, 0x42, 0xBC}, // 0x51 Q + {0xFE, 0x12, 0x32, 0x52, 0x8C}, // 0x52 R + {0x8C, 0x92, 0x92, 0x92, 0x62}, // 0x53 S + {0x02, 0x02, 0xFE, 0x02, 0x02}, // 0x54 T + {0x7E, 0x80, 0x80, 0x80, 0x7E}, // 0x55 U + {0x3E, 0x40, 0x80, 0x40, 0x3E}, // 0x56 V + {0xFE, 0x40, 0x30, 0x40, 0xFE}, // 0x57 W + {0xC6, 0x28, 0x10, 0x28, 0xC6}, // 0x58 X + {0x06, 0x08, 0xF0, 0x08, 0x06}, // 0x59 Y + {0xC2, 0xA2, 0x92, 0x8A, 0x86}, // 0x5A Z + {0x00, 0x00, 0xFE, 0x82, 0x82}, // 0x5B [ + {0x04, 0x08, 0x10, 0x20, 0x40}, // 0x5C "\" + {0x82, 0x82, 0xFE, 0x00, 0x00}, // 0x5D ] + {0x08, 0x04, 0x02, 0x04, 0x08}, // 0x5E ^ + {0x80, 0x80, 0x80, 0x80, 0x80}, // 0x5F _ + {0x00, 0x02, 0x04, 0x08, 0x00}, // 0x60 ` + {0x40, 0xA8, 0xA8, 0xA8, 0xF0}, // 0x61 a + {0xFE, 0x90, 0x88, 0x88, 0x70}, // 0x62 b + {0x70, 0x88, 0x88, 0x88, 0x40}, // 0x63 c + {0x70, 0x88, 0x88, 0x90, 0xFE}, // 0x64 d + {0x70, 0xA8, 0xA8, 0xA8, 0x30}, // 0x65 e + {0x10, 0xFC, 0x12, 0x02, 0x04}, // 0x66 f + {0x10, 0x28, 0xA8, 0xA8, 0x78}, // 0x67 g + {0xFE, 0x10, 0x08, 0x08, 0xF0}, // 0x68 h + {0x00, 0x88, 0xFA, 0x80, 0x00}, // 0x69 i + {0x40, 0x80, 0x88, 0x7A, 0x00}, // 0x6A j + {0x00, 0xFE, 0x20, 0x50, 0x88}, // 0x6B k + {0x00, 0x82, 0xFE, 0x80, 0x00}, // 0x6C l + {0xF8, 0x08, 0x30, 0x08, 0xF0}, // 0x6D m + {0xF8, 0x10, 0x08, 0x08, 0xF0}, // 0x6E n + {0x70, 0x88, 0x88, 0x88, 0x70}, // 0x6F o + {0xF8, 0x28, 0x28, 0x28, 0x10}, // 0x70 p + {0x10, 0x28, 0x28, 0x30, 0xF8}, // 0x71 q + {0xF8, 0x10, 0x08, 0x08, 0x10}, // 0x72 r + {0x90, 0xA8, 0xA8, 0xA8, 0x40}, // 0x73 s + {0x08, 0x7E, 0x88, 0x80, 0x40}, // 0x74 t + {0x78, 0x80, 0x80, 0x40, 0xF8}, // 0x75 u + {0x38, 0x40, 0x80, 0x40, 0x38}, // 0x76 v + {0x78, 0x80, 0x60, 0x80, 0x78}, // 0x77 w + {0x88, 0x50, 0x20, 0x50, 0x88}, // 0x78 x + {0x18, 0xA0, 0xA0, 0xA0, 0x78}, // 0x79 y + {0x88, 0xC8, 0xA8, 0x98, 0x88}, // 0x7A z + {0x00, 0x10, 0x6C, 0x82, 0x00}, // 0x7B { + {0x00, 0x00, 0xFE, 0x00, 0x00}, // 0x7C | + {0x00, 0x82, 0x6C, 0x10, 0x00}, // 0x7D } + {0x20, 0x10, 0x10, 0x20, 0x10}, // 0x7E + {0xF0, 0x88, 0x84, 0x88, 0xF0}, // 0x7F  + {0x28, 0x7C, 0xAA, 0x82, 0x44}, // 0x80 € + {0xF0, 0x29, 0x27, 0x21, 0xFF}, // 0x81  + {0x00, 0xA0, 0x60, 0x00, 0x00}, // 0x82 ‚ + {0x40, 0x90, 0x7C, 0x12, 0x04}, // 0x83 ƒ + {0xC0, 0xA0, 0x00, 0xC0, 0xA0}, // 0x84 „ + {0x80, 0x00, 0x80, 0x00, 0x80}, // 0x85 … + {0x00, 0x04, 0xFE, 0x04, 0x00}, // 0x86 † + {0x00, 0x44, 0xFE, 0x44, 0x00}, // 0x87 ‡ + {0x00, 0x04, 0x02, 0x04, 0x00}, // 0x88 ˆ + {0xC3, 0xD3, 0x08, 0xC4, 0xC2}, // 0x89 ‰ + {0x4C, 0x93, 0x92, 0x93, 0x64}, // 0x8A Š + {0x00, 0x10, 0x28, 0x00, 0x00}, // 0x8B ‹ + {0x7C, 0x82, 0x82, 0x7C, 0x92}, // 0x8C Œ + {0x02, 0xFE, 0x90, 0x90, 0x60}, // 0x8D  + {0xC2, 0xA3, 0x92, 0x8B, 0x86}, // 0x8E Ž + {0x44, 0x92, 0x8A, 0x92, 0x7C}, // 0x8F  + {0x70, 0x88, 0x90, 0x60, 0x98}, // 0x90  + {0x00, 0x02, 0x04, 0x08, 0x00}, // 0x91 ‘ + {0x00, 0x08, 0x04, 0x02, 0x00}, // 0x92 ’ + {0x02, 0x04, 0x0A, 0x04, 0x08}, // 0x93 “ + {0x08, 0x04, 0x0A, 0x04, 0x02}, // 0x94 ” + {0x00, 0x38, 0x38, 0x38, 0x00}, // 0x95 • + {0x00, 0x10, 0x10, 0x10, 0x10}, // 0x96 – + {0x10, 0x10, 0x10, 0x10, 0x10}, // 0x97 — + {0x02, 0x01, 0x02, 0x04, 0x02}, // 0x98 ˜ + {0xF1, 0x5B, 0x55, 0x51, 0x51}, // 0x99 ™ + {0x90, 0xA9, 0xAA, 0xA9, 0x40}, // 0x9A š + {0x00, 0x88, 0x50, 0x20, 0x00}, // 0x9B › + {0x70, 0x88, 0x70, 0xA8, 0xB0}, // 0x9C œ° + {0x38, 0x7C, 0xF8, 0x7C, 0x38}, // 0x9D  + {0x88, 0xC9, 0xAA, 0x99, 0x88}, // 0x9E ž + {0x1C, 0x21, 0xC0, 0x21, 0x1C}, // 0x9F Ÿ + {0x00, 0x00, 0x00, 0x00, 0x00}, // 0xA0 + {0x00, 0x00, 0xF2, 0x00, 0x00}, // 0xA1 ¡ + {0x38, 0x44, 0xFE, 0x44, 0x20}, // 0xA2 ¢ + {0x90, 0x7C, 0x92, 0x82, 0x40}, // 0xA3 £ + {0x44, 0x38, 0x28, 0x38, 0x44}, // 0xA4 ¤ + {0x2A, 0x2C, 0xF8, 0x2C, 0x2A}, // 0xA5 ¥ + {0x00, 0x00, 0xEE, 0x00, 0x00}, // 0xA6 ¦ + {0x40, 0x94, 0xAA, 0x52, 0x04}, // 0xA7 § + {0x00, 0x02, 0x00, 0x02, 0x00}, // 0xA8 ¨ + {0xFE, 0x82, 0xBA, 0x92, 0xFE}, // 0xA9 © + {0x90, 0xAA, 0xAA, 0xAA, 0xBC}, // 0xAA ª + {0x20, 0x50, 0xA8, 0x50, 0x88}, // 0xAB « + {0x20, 0x20, 0x20, 0x20, 0xE0}, // 0xAC ¬ + {0x20, 0x20, 0x20, 0x20, 0x20}, // 0xAD ­ + {0xFE, 0x82, 0xCA, 0xA2, 0xFE}, // 0xAE ® + {0x02, 0x02, 0x02, 0x02, 0x02}, // 0xAF ¯ + {0x0E, 0x11, 0x11, 0x0E, 0x00}, // 0xB0 ° + {0x88, 0x88, 0xBE, 0x88, 0x88}, // 0xB1 ± + {0x12, 0x19, 0x15, 0x12, 0x00}, // 0xB2 ² + {0x11, 0x15, 0x15, 0x0A, 0x00}, // 0xB3 ³ + {0x00, 0x08, 0x04, 0x02, 0x00}, // 0xB4 ´ + {0xFE, 0x20, 0x20, 0x10, 0x3E}, // 0xB5 µ + {0x0C, 0x12, 0x12, 0xFE, 0xFE}, // 0xB6 ¶ + {0x00, 0x30, 0x30, 0x00, 0x00}, // 0xB7 · + {0x00, 0x80, 0xB0, 0x40, 0x00}, // 0xB8 ¸ + {0x00, 0x02, 0x0F, 0x00, 0x00}, // 0xB9 ¹ + {0x00, 0x02, 0x05, 0x02, 0x00}, // 0xBA º + {0x44, 0x28, 0x54, 0x28, 0x10}, // 0xBB » + {0x22, 0x1F, 0x68, 0x54, 0xFA}, // 0xBC ¼ + {0x02, 0x1F, 0x90, 0xC8, 0xB0}, // 0xBD ½ + {0x15, 0x1F, 0x60, 0x50, 0xF8}, // 0xBE ¾ + {0x60, 0x90, 0x8A, 0x80, 0x40}, // 0xBF ¿ + {0xF0, 0x29, 0x26, 0x28, 0xF0}, // 0xC0 À + {0xF0, 0x28, 0x26, 0x29, 0xF0}, // 0xC1 Á + {0xF0, 0x2A, 0x29, 0x2A, 0xF0}, // 0xC2  + {0xF2, 0x29, 0x29, 0x2A, 0xF1}, // 0xC3 à + {0xF0, 0x29, 0x24, 0x29, 0xF0}, // 0xC4 Ä + {0xF0, 0x2A, 0x2D, 0x2A, 0xF0}, // 0xC5 Å + {0xF8, 0x24, 0xFE, 0x92, 0x92}, // 0xC6 Æ + {0x1E, 0x21, 0xA1, 0xE1, 0x12}, // 0xC7 Ç + {0xF8, 0xA9, 0xAA, 0xA8, 0x88}, // 0xC8 È + {0xF8, 0xA8, 0xAA, 0xA9, 0x88}, // 0xC9 É + {0xF8, 0xAA, 0xA9, 0xAA, 0x88}, // 0xCA Ê + {0xF8, 0xAA, 0xA8, 0xAA, 0x88}, // 0xCB Ë + {0x00, 0x89, 0xFA, 0x88, 0x00}, // 0xCC Ì + {0x00, 0x88, 0xFA, 0x89, 0x00}, // 0xCD Í + {0x00, 0x8A, 0xF9, 0x8A, 0x00}, // 0xCE Î + {0x00, 0x8A, 0xF8, 0x8A, 0x00}, // 0xCF Ï + {0x10, 0xFE, 0x92, 0x82, 0x7C}, // 0xD0 Ð + {0xFA, 0x11, 0x21, 0x42, 0xF9}, // 0xD1 Ñ + {0x78, 0x85, 0x86, 0x84, 0x78}, // 0xD2 Ò + {0x78, 0x84, 0x86, 0x85, 0x78}, // 0xD3 Ó + {0x70, 0x8A, 0x89, 0x8A, 0x70}, // 0xD4 Ô + {0x72, 0x89, 0x89, 0x8A, 0x71}, // 0xD5 Õ + {0x78, 0x85, 0x84, 0x85, 0x78}, // 0xD6 Ö + {0x44, 0x28, 0x10, 0x28, 0x44}, // 0xD7 × + {0x10, 0xAA, 0xFE, 0xAA, 0x10}, // 0xD8 Ø + {0x7C, 0x81, 0x82, 0x80, 0x7C}, // 0xD9 Ù + {0x7C, 0x80, 0x82, 0x81, 0x7C}, // 0xDA Ú + {0x78, 0x82, 0x81, 0x82, 0x78}, // 0xDB Û + {0x7C, 0x81, 0x80, 0x81, 0x7C}, // 0xDC Ü + {0x04, 0x08, 0xF2, 0x09, 0x04}, // 0xDD Ý + {0x81, 0xFF, 0x24, 0x24, 0x18}, // 0xDE Þ + {0x80, 0x7C, 0x92, 0x92, 0x6C}, // 0xDF ß + {0x40, 0xA9, 0xAA, 0xA8, 0xF0}, // 0xE0 à + {0x40, 0xA8, 0xAA, 0xA9, 0xF0}, // 0xE1 á + {0x40, 0xAA, 0xA9, 0xAA, 0xF0}, // 0xE2 â + {0x42, 0xA9, 0xA9, 0xAA, 0xF1}, // 0xE3 ã + {0x40, 0xAA, 0xA8, 0xAA, 0xF0}, // 0xE4 ä + {0x40, 0xAA, 0xAD, 0xAA, 0xF0}, // 0xE5 å + {0x64, 0x94, 0x78, 0x94, 0x58}, // 0xE6 æ + {0x18, 0x24, 0xA4, 0xE4, 0x10}, // 0xE7 ç + {0x70, 0xA9, 0xAA, 0xA8, 0x30}, // 0xE8 è + {0x70, 0xA8, 0xAA, 0xA9, 0x30}, // 0xE9 é + {0x70, 0xAA, 0xA9, 0xAA, 0x30}, // 0xEA ê + {0x70, 0xAA, 0xA8, 0xAA, 0x30}, // 0xEB ë + {0x00, 0x91, 0xFA, 0x80, 0x00}, // 0xEC ì + {0x00, 0x90, 0xFA, 0x81, 0x00}, // 0xED í + {0x00, 0x92, 0xF9, 0x82, 0x00}, // 0xEE î + {0x00, 0x92, 0xF8, 0x82, 0x00}, // 0xEF ï + {0x4A, 0xA4, 0xAA, 0xB0, 0x60}, // 0xF0 ð + {0xFA, 0x11, 0x09, 0x0A, 0xF1}, // 0xF1 ñ + {0x70, 0x89, 0x8A, 0x88, 0x70}, // 0xF2 ò + {0x70, 0x88, 0x8A, 0x89, 0x70}, // 0xF3 ó + {0x60, 0x94, 0x92, 0x94, 0x60}, // 0xF4 ô + {0x64, 0x92, 0x92, 0x94, 0x62}, // 0xF5 õ + {0x70, 0x8A, 0x88, 0x8A, 0x70}, // 0xF6 ö + {0x10, 0x10, 0x54, 0x10, 0x10}, // 0xF7 ÷ + {0x10, 0xA8, 0x7C, 0x2A, 0x10}, // 0xF8 ø + {0x78, 0x81, 0x82, 0x40, 0xF8}, // 0xF9 ù + {0x78, 0x80, 0x82, 0x41, 0xF8}, // 0xFA ú + {0x78, 0x82, 0x81, 0x42, 0xF8}, // 0xFB û + {0x78, 0x82, 0x80, 0x42, 0xF8}, // 0xFC ü + {0x18, 0xA0, 0xA4, 0xA2, 0x78}, // 0xFD v + {0x00, 0x82, 0xFE, 0xA8, 0x10}, // 0xFE þ + {0x18, 0xA2, 0xA0, 0xA2, 0x78} // 0xFF ÿ +}; diff --git a/g13d/helper.cc b/g13d/helper.cc deleted file mode 100644 index 8ecdbd3..0000000 --- a/g13d/helper.cc +++ /dev/null @@ -1,80 +0,0 @@ -/* - * helper.cpp - */ - -/* - * Copyright (c) 2015, James Fowler - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to permit - * persons to whom the Software is furnished to do so, subject to the - * following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -#include "repr.h" - -// ************************************************************************* - -namespace G13 { - -void string_repr_out::write_on(std::ostream &o) const { - - o << "\""; - const char *cp = s.c_str(); - const char *end = cp + s.size(); - - while (cp < end) { - - switch (*cp) { - case '\n': - o << "\\n"; - break; - case '\r': - o << "\\r"; - break; - case '\0': - o << "\\0"; - break; - case '\t': - o << "\\t"; - break; - case '\\': - case '\'': - case '\"': - o << "\\" << *cp; - break; - default: { - char c = *cp; - if (c < 32) { - char hi = '0' + (c & 0x0f); - char lo = '0' + ((c >> 4) & 0x0f); - o << "\\x" << hi << lo; - } else { - o << c; - } - } - } - cp++; - } - - o << "\""; -}; - -}; // namespace Helper - -// ************************************************************************* diff --git a/g13d/manager.cc b/g13d/manager.cc index 4ed7843..a852c72 100644 --- a/g13d/manager.cc +++ b/g13d/manager.cc @@ -94,8 +94,6 @@ G13_Manager::G13_Manager() : devs(0), ctx(0) { } -// ************************************************************************* - bool G13_Manager::running = true; void G13_Manager::set_stop(int) { running = false; } diff --git a/g13d/repr.h b/g13d/repr.h index b184ac9..dc9c383 100644 --- a/g13d/repr.h +++ b/g13d/repr.h @@ -6,6 +6,54 @@ namespace G13 { +void string_repr_out::write_on(std::ostream &o) const { + const char *cp = s.c_str(); + const char *end = cp + s.size(); + + o << "\""; + + while (cp < end) { + switch (*cp) { + case '\n': + o << "\\n"; + break; + + case '\r': + o << "\\r"; + break; + + case '\0': + o << "\\0"; + break; + + case '\t': + o << "\\t"; + break; + + case '\\': + case '\'': + case '\"': + o << "\\" << *cp; + break; + + default: { + char c = *cp; + if (c < 32) { + char hi = '0' + (c & 0x0f); + char lo = '0' + ((c >> 4) & 0x0f); + o << "\\x" << hi << lo; + } else { + o << c; + } + } + } + + cp++; + } + + o << "\""; +}; + struct string_repr_out { string_repr_out(const std::string &str) : s(str) {} void write_on(std::ostream &) const;