// File: lv_font.h (muss unter include/oled/lv_font.h liegen) #ifndef LV_FONT_H #define LV_FONT_H #include #include #include // Makro-Definitionen, die in der generierten font.c verwendet werden #define LV_VERSION_CHECK(major, minor, patch) 0 #ifndef LV_ATTRIBUTE_LARGE_CONST #define LV_ATTRIBUTE_LARGE_CONST #endif // Enum für den Font-Subpixel-Typ enum { LV_FONT_SUBPX_NONE }; // Enum für den CMap-Typ typedef uint8_t lv_font_fmt_txt_cmap_type_t; enum { LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY }; /* Vordeklaration der Haupt-Struktur */ struct _lv_font_t; /* Struktur zur Beschreibung eines einzelnen Zeichens (Glyph) */ typedef struct { uint32_t bitmap_index; uint32_t adv_w; uint16_t box_w; uint16_t box_h; int16_t ofs_x; int16_t ofs_y; } lv_font_glyph_dsc_t; /* Struktur für das Character-Mapping */ typedef struct { uint32_t range_start; uint16_t range_length; uint16_t glyph_id_start; const void * unicode_list; const void * glyph_id_ofs_list; uint16_t list_length; lv_font_fmt_txt_cmap_type_t type; } lv_font_fmt_txt_cmap_t; /* Struktur für Kerning-Paare */ typedef struct { const void * glyph_ids; const int8_t * values; uint16_t pair_cnt; uint8_t glyph_ids_size; } lv_font_fmt_txt_kern_pair_t; /* Haupt-Datenstruktur der Schriftart */ typedef struct { const uint8_t * glyph_bitmap; const lv_font_glyph_dsc_t * glyph_dsc; const lv_font_fmt_txt_cmap_t * cmaps; const void * kern_dsc; uint16_t kern_scale; uint16_t cmap_num; uint16_t bpp; uint16_t kern_classes; uint8_t bitmap_format; void* cache; } lv_font_fmt_txt_dsc_t; /* Die Haupt-Schriftart-Struktur, die Ihr Code verwendet */ typedef struct _lv_font_t { bool (*get_glyph_dsc)(const struct _lv_font_t *, lv_font_glyph_dsc_t *, uint32_t, uint32_t); const uint8_t * (*get_glyph_bitmap)(const struct _lv_font_t *, uint32_t); int16_t line_height; int16_t base_line; uint8_t subpx; int8_t underline_position; int8_t underline_thickness; const void * dsc; const struct _lv_font_t * fallback; void * user_data; } lv_font_t; /* Funktionsprototypen, die in font.c existieren */ bool lv_font_get_glyph_dsc_fmt_txt(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter, uint32_t unicode_letter_next); const uint8_t * lv_font_get_bitmap_fmt_txt(const lv_font_t * font, uint32_t unicode_letter); /* Makro, um die Schriftart aus Ihrer font.c bekannt zu machen */ #define LV_FONT_DECLARE(font_name) extern const lv_font_t font_name; #endif /*LV_FONT_H*/