Add support to different width fonts
This commit is contained in:
@@ -12,27 +12,91 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
// Font class that holds font data and dimensions
|
||||
class Font {
|
||||
private:
|
||||
const unsigned char* data;
|
||||
int num_chars;
|
||||
int bytes_per_char;
|
||||
int char_height;
|
||||
|
||||
public:
|
||||
Font(const unsigned char* font_data, int num_chars, int bytes_per_char, int char_height)
|
||||
: data(font_data), num_chars(num_chars), bytes_per_char(bytes_per_char),
|
||||
char_height(char_height) {}
|
||||
|
||||
const unsigned char* get_data() const { return data; }
|
||||
int get_num_chars() const { return num_chars; }
|
||||
int get_bytes_per_char() const { return bytes_per_char; }
|
||||
int get_char_height() const { return char_height; }
|
||||
|
||||
// Get a specific character's data
|
||||
const unsigned char* get_char_data(int char_index) const {
|
||||
if (char_index < 0 || char_index >= num_chars) return nullptr;
|
||||
return data + (char_index * bytes_per_char);
|
||||
}
|
||||
};
|
||||
|
||||
// Font extern declarations
|
||||
extern const unsigned char font_5x5[96][6];
|
||||
extern const unsigned char font_7linedigital[96][6];
|
||||
extern const unsigned char font_BMplain[96][6];
|
||||
extern const unsigned char font_Blokus[96][6];
|
||||
extern const unsigned char font_HISKYF21[96][6];
|
||||
extern const unsigned char font_Minimum[96][6];
|
||||
extern const unsigned char font_SUPERDIG[96][6];
|
||||
extern const unsigned char font_7linedigital[96][4];
|
||||
extern const unsigned char font_acme_5_outlines[96][6];
|
||||
extern const unsigned char font_aztech[96][6];
|
||||
extern const unsigned char font_BMplain[96][6];
|
||||
extern const unsigned char font_BMSPA[96][8];
|
||||
extern const unsigned char font_Blokus[96][6];
|
||||
extern const unsigned char font_bubblesstandard[96][7];
|
||||
extern const unsigned char font_Commo_Monospaced[96][8];
|
||||
extern const unsigned char font_crackers[96][6];
|
||||
extern const unsigned char font_formplex12[96][8];
|
||||
extern const unsigned char font_haiku[96][6];
|
||||
extern const unsigned char font_HISKYF21[96][6];
|
||||
extern const unsigned char font_homespun[96][7];
|
||||
extern const unsigned char font_HUNTER[96][8];
|
||||
extern const unsigned char font_m38[96][8];
|
||||
extern const unsigned char font_Minimum[96][6];
|
||||
extern const unsigned char font_Minimum_1[96][7];
|
||||
extern const unsigned char font_pzim3x5[96][3];
|
||||
extern const unsigned char font_Raumsond[96][5];
|
||||
extern const unsigned char font_renew[96][7];
|
||||
extern const unsigned char font_sloth[96][6];
|
||||
extern const unsigned char font_SUPERDIG[96][6];
|
||||
extern const unsigned char font_tama_mini02[96][5];
|
||||
extern const unsigned char font_zxpix[96][6];
|
||||
|
||||
// Font object declarations
|
||||
extern Font font_5x5_obj;
|
||||
extern Font font_7linedigital_obj;
|
||||
extern Font font_acme_5_outlines_obj;
|
||||
extern Font font_aztech_obj;
|
||||
extern Font font_BMplain_obj;
|
||||
extern Font font_BMSPA_obj;
|
||||
extern Font font_Blokus_obj;
|
||||
extern Font font_bubblesstandard_obj;
|
||||
extern Font font_Commo_Monospaced_obj;
|
||||
extern Font font_crackers_obj;
|
||||
extern Font font_formplex12_obj;
|
||||
extern Font font_haiku_obj;
|
||||
extern Font font_HISKYF21_obj;
|
||||
extern Font font_homespun_obj;
|
||||
extern Font font_HUNTER_obj;
|
||||
extern Font font_m38_obj;
|
||||
extern Font font_Minimum_obj;
|
||||
extern Font font_Minimum_1_obj;
|
||||
extern Font font_pzim3x5_obj;
|
||||
extern Font font_Raumsond_obj;
|
||||
extern Font font_renew_obj;
|
||||
extern Font font_sloth_obj;
|
||||
extern Font font_SUPERDIG_obj;
|
||||
extern Font font_tama_mini02_obj;
|
||||
extern Font font_zxpix_obj;
|
||||
|
||||
class LowLevelRenderer {
|
||||
private:
|
||||
uint8_t* bit_buffer;
|
||||
int V_WIDTH;
|
||||
int V_HEIGHT;
|
||||
const unsigned char (*current_font)[96][6];
|
||||
const Font* current_font;
|
||||
bool clipping_enabled;
|
||||
int clip_x, clip_y, clip_width, clip_height;
|
||||
bool text_color;
|
||||
@@ -45,7 +109,7 @@ public:
|
||||
LowLevelRenderer(uint8_t* buffer, int width, int height);
|
||||
|
||||
// Font management
|
||||
void set_font(const unsigned char (*font)[96][6]);
|
||||
void set_font(const Font* font);
|
||||
void set_text_color(bool color);
|
||||
|
||||
// --- 1-BIT DRAWING PRIMITIVES ---
|
||||
|
||||
Reference in New Issue
Block a user