Subversion Repositories libOLED

Rev

Rev 3 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * font.cpp
  3.  *
  4.  *  Created on: 31 Oct 2020
  5.  *      Author: mike
  6.  */
  7. #include "libOLED/fontclass.H"
  8.  
  9. char
  10. font5x7_t::get_pixel (char c, int x, int y)
  11. {
  12.   if (x < 0 || x > m_width)
  13.     return 0;
  14.   if (y > 0 || y > m_height)
  15.     return 0;
  16.  
  17.   unsigned char pixels = 0;
  18.   if (c < ' ')
  19.     c = ' ';
  20.  
  21.   if (c >= ' ' && c <= 0x7f)
  22.     pixels = m_data[(c - ' ') * m_width + x];
  23.   if (c == '°')
  24.     pixels = m_data[0x80 * m_width + x];
  25.  
  26.   return pixels & (1 << (m_height - y)) ? 1 : 0;
  27.  
  28. }
  29.  
  30. char
  31. font10x18_t::get_pixel (char c, int x, int y)
  32. {
  33.   if (x < 0 || x > m_width)
  34.     return 0;
  35.   if (y > 0 || y > m_height)
  36.     return 0;
  37.   c = c & 0x7F;
  38.   if (c < ' ')
  39.     c = ' ';
  40.  
  41.   int xm = x + (c - 32) * m_width;
  42.  
  43.   return ((m_data[(y * m_width) / 8 + (xm / 8)]) >> (xm & 7)) & 1;
  44.  
  45. }
  46.  
  47. static const char font5x7_data[] =
  48.   { 0x00, 0x00, 0x00, 0x00, 0x00,   //   0x20 32
  49.       0x00, 0x00, 0x6f, 0x00, 0x00,   // ! 0x21 33
  50.       0x00, 0x07, 0x00, 0x07, 0x00,   // " 0x22 34
  51.       0x14, 0x7f, 0x14, 0x7f, 0x14,   // # 0x23 35
  52.       0x2e, 0x2a, 0xff, 0x2a, 0x3a,   // $ 0x24 36
  53.       0x23, 0x13, 0x08, 0x64, 0x62,   // % 0x25 37
  54.       0x36, 0x49, 0x56, 0x20, 0x50,   // & 0x26 38
  55.       0x00, 0x00, 0x07, 0x00, 0x00,   // ' 0x27 39
  56.       0x00, 0x1c, 0x22, 0x41, 0x00,   // ( 0x28 40
  57.       0x00, 0x41, 0x22, 0x1c, 0x00,   // ) 0x29 41
  58.       0x14, 0x08, 0x3e, 0x08, 0x14,   // * 0x2a 42
  59.       0x08, 0x08, 0x3e, 0x08, 0x08,   // + 0x2b 43
  60.       0x00, 0x50, 0x30, 0x00, 0x00,   // , 0x2c 44
  61.       0x08, 0x08, 0x08, 0x08, 0x08,   // - 0x2d 45
  62.       0x00, 0x60, 0x60, 0x00, 0x00,   // . 0x2e 46
  63.       0x20, 0x10, 0x08, 0x04, 0x02,   // / 0x2f 47
  64.       0x3e, 0x51, 0x49, 0x45, 0x3e,   // 0 0x30 48
  65.       0x00, 0x42, 0x7f, 0x40, 0x00,   // 1 0x31 49
  66.       0x42, 0x61, 0x51, 0x49, 0x46,   // 2 0x32 50
  67.       0x21, 0x41, 0x45, 0x4b, 0x31,   // 3 0x33 51
  68.       0x18, 0x14, 0x12, 0x7f, 0x10,   // 4 0x34 52
  69.       0x27, 0x45, 0x45, 0x45, 0x39,   // 5 0x35 53
  70.       0x3c, 0x4a, 0x49, 0x49, 0x30,   // 6 0x36 54
  71.       0x01, 0x71, 0x09, 0x05, 0x03,   // 7 0x37 55
  72.       0x36, 0x49, 0x49, 0x49, 0x36,   // 8 0x38 56
  73.       0x06, 0x49, 0x49, 0x29, 0x1e,   // 9 0x39 57
  74.       0x00, 0x36, 0x36, 0x00, 0x00,   // : 0x3a 58
  75.       0x00, 0x56, 0x36, 0x00, 0x00,   // ; 0x3b 59
  76.       0x08, 0x14, 0x22, 0x41, 0x00,   // < 0x3c 60
  77.       0x14, 0x14, 0x14, 0x14, 0x14,   // = 0x3d 61
  78.       0x00, 0x41, 0x22, 0x14, 0x08,   // > 0x3e 62
  79.       0x02, 0x01, 0x51, 0x09, 0x06,   // ? 0x3f 63
  80.       0x3e, 0x41, 0x5d, 0x49, 0x4e,   // @ 0x40 64
  81.       0x7e, 0x09, 0x09, 0x09, 0x7e,   // A 0x41 65
  82.       0x7f, 0x49, 0x49, 0x49, 0x36,   // B 0x42 66
  83.       0x3e, 0x41, 0x41, 0x41, 0x22,   // C 0x43 67
  84.       0x7f, 0x41, 0x41, 0x41, 0x3e,   // D 0x44 68
  85.       0x7f, 0x49, 0x49, 0x49, 0x41,   // E 0x45 69
  86.       0x7f, 0x09, 0x09, 0x09, 0x01,   // F 0x46 70
  87.       0x3e, 0x41, 0x49, 0x49, 0x7a,   // G 0x47 71
  88.       0x7f, 0x08, 0x08, 0x08, 0x7f,   // H 0x48 72
  89.       0x00, 0x41, 0x7f, 0x41, 0x00,   // I 0x49 73
  90.       0x20, 0x40, 0x41, 0x3f, 0x01,   // J 0x4a 74
  91.       0x7f, 0x08, 0x14, 0x22, 0x41,   // K 0x4b 75
  92.       0x7f, 0x40, 0x40, 0x40, 0x40,   // L 0x4c 76
  93.       0x7f, 0x02, 0x0c, 0x02, 0x7f,   // M 0x4d 77
  94.       0x7f, 0x04, 0x08, 0x10, 0x7f,   // N 0x4e 78
  95.       0x3e, 0x41, 0x41, 0x41, 0x3e,   // O 0x4f 79
  96.       0x7f, 0x09, 0x09, 0x09, 0x06,   // P 0x50 80
  97.       0x3e, 0x41, 0x51, 0x21, 0x5e,   // Q 0x51 81
  98.       0x7f, 0x09, 0x19, 0x29, 0x46,   // R 0x52 82
  99.       0x46, 0x49, 0x49, 0x49, 0x31,   // S 0x53 83
  100.       0x01, 0x01, 0x7f, 0x01, 0x01,   // T 0x54 84
  101.       0x3f, 0x40, 0x40, 0x40, 0x3f,   // U 0x55 85
  102.       0x0f, 0x30, 0x40, 0x30, 0x0f,   // V 0x56 86
  103.       0x3f, 0x40, 0x30, 0x40, 0x3f,   // W 0x57 87
  104.       0x63, 0x14, 0x08, 0x14, 0x63,   // X 0x58 88
  105.       0x07, 0x08, 0x70, 0x08, 0x07,   // Y 0x59 89
  106.       0x61, 0x51, 0x49, 0x45, 0x43,   // Z 0x5a 90
  107.       0x00, 0x00, 0x7f, 0x41, 0x00,   // [ 0x5b 91
  108.       0x02, 0x04, 0x08, 0x10, 0x20,   // \ 0x5c 92
  109.       0x00, 0x41, 0x7f, 0x00, 0x00,   // ] 0x5d 93
  110.       0x04, 0x02, 0x01, 0x02, 0x04,   // ^ 0x5e 94
  111.       0x40, 0x40, 0x40, 0x40, 0x40,   // _ 0x5f 95
  112.       0x00, 0x00, 0x03, 0x04, 0x00,   // ` 0x60 96
  113.       0x20, 0x54, 0x54, 0x54, 0x78,   // a 0x61 97
  114.       0x7f, 0x48, 0x44, 0x44, 0x38,   // b 0x62 98
  115.       0x38, 0x44, 0x44, 0x44, 0x44,   // c 0x63 99
  116.       0x38, 0x44, 0x44, 0x48, 0x7f,   // d 0x64 100
  117.       0x38, 0x54, 0x54, 0x54, 0x18,   // e 0x65 101
  118.       0x08, 0x7e, 0x09, 0x01, 0x02,   // f 0x66 102
  119.       0x0c, 0x52, 0x52, 0x52, 0x3e,   // g 0x67 103
  120.       0x7f, 0x08, 0x04, 0x04, 0x78,   // h 0x68 104
  121.       0x00, 0x44, 0x7d, 0x40, 0x00,   // i 0x69 105
  122.       0x20, 0x40, 0x44, 0x3d, 0x00,   // j 0x6a 106
  123.       0x00, 0x7f, 0x10, 0x28, 0x44,   // k 0x6b 107
  124.       0x00, 0x41, 0x7f, 0x40, 0x00,   // l 0x6c 108
  125.       0x7c, 0x04, 0x18, 0x04, 0x78,   // m 0x6d 109
  126.       0x7c, 0x08, 0x04, 0x04, 0x78,   // n 0x6e 110
  127.       0x38, 0x44, 0x44, 0x44, 0x38,   // o 0x6f 111
  128.       0x7c, 0x14, 0x14, 0x14, 0x08,   // p 0x70 112
  129.       0x08, 0x14, 0x14, 0x14, 0x7c,   // q 0x71 113
  130.       0x7c, 0x08, 0x04, 0x04, 0x08,   // r 0x72 114
  131.       0x48, 0x54, 0x54, 0x54, 0x20,   // s 0x73 115
  132.       0x04, 0x3f, 0x44, 0x40, 0x20,   // t 0x74 116
  133.       0x3c, 0x40, 0x40, 0x20, 0x7c,   // u 0x75 117
  134.       0x1c, 0x20, 0x40, 0x20, 0x1c,   // v 0x76 118
  135.       0x3c, 0x40, 0x30, 0x40, 0x3c,   // w 0x77 119
  136.       0x44, 0x28, 0x10, 0x28, 0x44,   // x 0x78 120
  137.       0x0c, 0x50, 0x50, 0x50, 0x3c,   // y 0x79 121
  138.       0x44, 0x64, 0x54, 0x4c, 0x44,   // z 0x7a 122
  139.       0x00, 0x08, 0x36, 0x41, 0x41,   //  0x7b 123
  140.       0x00, 0x00, 0x7f, 0x00, 0x00,   // | 0x7c 124
  141.       0x41, 0x41, 0x36, 0x08, 0x00,   //  0x7d 125
  142.       0x08, 0x0c, 0x08, 0x18, 0x08,   // ~ 0x7e 126
  143.       0x55, 0x2A, 0x55, 0x2A, 0x55,   //  0x7F 127
  144.       0x00, 0x06, 0x09, 0x06, 0x00, // 0x80 (remapped in code) a ° sign