// font class library
#pragma once
#include <cstdint>
class font_t
{
public:
/// \param height - pixel character height
/// \param width - pixel character width
/// \param spacing - character to character spacing
/// \param chars - number of characters in character set
/// \param data - constant data
font_t (uint8_t const height, uint8_t const width,
uint8_t const spacing, uint8_t const chars,
char const *data) :
m_height (height), m_width (width), m_spacing (spacing), m_chars (chars), m_data (
data)
{
}
virtual char
getPixel (char c, int x, int y) =0;
// character width
uint8_t
width ()
{
return m_width;
}
// character height
uint8_t
height ()
{
return m_height;
}
uint8_t
chars ()
{
return m_chars;
}
uint8_t
spacing ()
{
return m_spacing;
}
protected:
uint8_t const m_height;
uint8_t const m_width;
uint8_t const m_spacing;
uint8_t const m_chars;
char const *m_data;
};
class font5x7_t : public font_t
{
public:
font5x7_t (char const *data) :
font_t (7, 5, 6, 96, data)
{
}
;
char
getPixel (char c, int x, int y) override;
};
class font10x18_t : public font_t
{
public:
font10x18_t (char const *data) :
font_t (18, 10, 10, 96, data)
{
}
;
char
getPixel (char c, int x, int y) override;
};
// defined fonts
// original 5x7
extern font5x7_t small_font;
// lucida font
// in 10x18
extern font10x18_t large_font;