Subversion Repositories libOLED

Rev

Rev 8 | Rev 13 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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