Subversion Repositories libOLED

Rev

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