Rev 4 | Rev 17 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2 | mjames | 1 | // font class library |
2 | #pragma once |
||
4 | mjames | 3 | #include <cstdint> |
2 | mjames | 4 | |
5 | class font_t |
||
6 | { |
||
7 | public: |
||
4 | mjames | 8 | /// \param height - pixel character height |
9 | /// \param width - pixel character width |
||
10 | /// \param spacing - character to character spacing |
||
11 | /// \param chars - number of characters in character set |
||
12 | /// \param data - constant data |
||
13 | mjames | 13 | font_t(uint8_t const height, uint8_t const width, |
14 | uint8_t const spacing, uint8_t const chars, |
||
15 | char const *data) : m_height(height), m_width(width), m_spacing(spacing), m_chars(chars), m_data(data) |
||
2 | mjames | 16 | { |
17 | } |
||
18 | |||
19 | virtual char |
||
13 | mjames | 20 | getPixel(char c, int x, int y) = 0; |
2 | mjames | 21 | |
22 | // character width |
||
4 | mjames | 23 | uint8_t |
13 | mjames | 24 | width() |
2 | mjames | 25 | { |
26 | return m_width; |
||
27 | } |
||
28 | |||
29 | // character height |
||
4 | mjames | 30 | uint8_t |
13 | mjames | 31 | height() |
2 | mjames | 32 | { |
33 | return m_height; |
||
34 | } |
||
35 | |||
4 | mjames | 36 | uint8_t |
13 | mjames | 37 | chars() |
4 | mjames | 38 | { |
39 | return m_chars; |
||
40 | } |
||
41 | |||
42 | uint8_t |
||
13 | mjames | 43 | spacing() |
4 | mjames | 44 | { |
45 | return m_spacing; |
||
46 | } |
||
13 | mjames | 47 | |
2 | mjames | 48 | protected: |
13 | mjames | 49 | /// @brief Pixel height |
4 | mjames | 50 | uint8_t const m_height; |
13 | mjames | 51 | /// @brief Bitmap width |
4 | mjames | 52 | uint8_t const m_width; |
13 | mjames | 53 | /// @brief Spacing between characters |
4 | mjames | 54 | uint8_t const m_spacing; |
13 | mjames | 55 | /// @brief Number of characters in the character set bit map |
4 | mjames | 56 | uint8_t const m_chars; |
2 | mjames | 57 | char const *m_data; |
58 | }; |
||
59 | |||
60 | class font5x7_t : public font_t |
||
61 | { |
||
62 | public: |
||
13 | mjames | 63 | // one byte of pixels per character row. |
64 | font5x7_t(unsigned char_count, char const *data) : font_t(7, 5, 6, char_count, data){}; |
||
2 | mjames | 65 | |
4 | mjames | 66 | char |
13 | mjames | 67 | getPixel(char c, int x, int y) override; |
2 | mjames | 68 | }; |
69 | |||
70 | class font10x18_t : public font_t |
||
71 | { |
||
72 | public: |
||
13 | mjames | 73 | // XBM format |
74 | font10x18_t(unsigned char_count, char const *data) : font_t(18, 10, 10, char_count, data){}; |
||
2 | mjames | 75 | |
76 | char |
||
13 | mjames | 77 | getPixel(char c, int x, int y) override; |
2 | mjames | 78 | }; |
79 | |||
80 | // defined fonts |
||
81 | // original 5x7 |
||
82 | extern font5x7_t small_font; |
||
83 | |||
84 | // lucida font |
||
85 | // in 10x18 |
||
86 | extern font10x18_t large_font; |