#include "font.hpp"
void Font::get_glyph_max(unsigned& w, unsigned& h) const {
w = max_w;
h = max_h;
}
void Font::get_glyph(char c, const unsigned char*& buf, unsigned& w, unsigned& h) const {
const font_char_t& font_char = font[toupper(c)];
h = max_h;
w = font_char.w;
assert(w <= max_w);
buf = font_char.buf;
}
Font::Font() { // TODO: load from file(s)
static const unsigned char X = 255;
static const font_char_t dummy = { 5, { X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X } }; // dummy char with max dimensions
for (int i=0; i<256; ++i) {
font[i] = dummy;
}
font[' '] = (font_char_t){ 2, { 0 } };
font['-'] = (font_char_t){ 2, { 0, 0, 0, 0, X, X, 0 } };
font['('] = (font_char_t){ 2, {
0, X,
X, 0,
X, 0,
X, 0,
0, X,
}};
font[')'] = (font_char_t){ 2, {
X, 0,
0, X,
0, X,
0, X,
X, 0,
}};
font['>'] = (font_char_t){ 3, {
X, 0, 0,
0, X, 0,
0, 0, X,
0, X, 0,
X, 0, 0,
}};
font['@'] = (font_char_t){ 5, {
X, X, X, X, X,
X, 0, X, 0, X,
X, 0, X, X, X,
X, 0, 0, 0, 0,
X, X, X, X, X,
}};
font['#'] = (font_char_t){ 5, {
0, X, 0, X, 0,
X, X, X, X, X,
0, X, 0, X, 0,
X, X, X, X, X,
0, X, 0, X, 0,
}};
font[0xb0] = (font_char_t){ 3, { // '°'
0, X, 0,
X, 0, X,
0, X, 0,
0, 0, 0,
0, 0, 0,
}};
font['A'] = (font_char_t){ 4, {
X, X, X, X,
X, 0, 0, X,
X, X, X, X,
X, 0, 0, X,
X, 0, 0, X,
}};
font['B'] = (font_char_t){ 4, {
X, X, X, 0,
X, 0, 0, X,
X, X, X, 0,
X, 0, 0, X,
X, X, X, 0,
}};
font['C'] = (font_char_t){ 4, {
X, X, X, X,
X, 0, 0, 0,
X, 0, 0, 0,
X, 0, 0, 0,
X, X, X, X,
}};
font['0'] = (font_char_t){ 3, {
0, X, 0,
X, 0, X,
X, 0, X,
X, 0, X,
0, X, 0,
}};
font['1'] = (font_char_t){ 2, {
0, X,
X, X,
0, X,
0, X,
0, X,
}};
font['2'] = (font_char_t){ 3, {
X, X, X,
0, 0, X,
X, X, X,
X, 0, 0,
X, X, X,
}};
font['3'] = (font_char_t){ 3, {
X, X, X,
0, 0, X,
X, X, X,
0, 0, X,
X, X, X,
}};
font['4'] = (font_char_t){ 3, {
X, 0, X,
X, 0, X,
X, X, X,
0, 0, X,
0, 0, X,
}};
font['5'] = (font_char_t){ 3, {
X, X, X,
X, 0, 0,
X, X, X,
0, 0, X,
X, X, X,
}};
font['6'] = (font_char_t){ 3, {
X, X, X,
X, 0, 0,
X, X, X,
X, 0, X,
X, X, X,
}};
font['7'] = (font_char_t){ 3, {
X, X, X,
0, 0, X,
0, 0, X,
0, 0, X,
0, 0, X,
}};
font['8'] = (font_char_t){ 3, {
X, X, X,
X, 0, X,
X, X, X,
X, 0, X,
X, X, X,
}};
font['9'] = (font_char_t){ 3, {
X, X, X,
X, 0, X,
X, X, X,
0, 0, X,
X, X, X,
}};
}