Ken Van Hoeylandt 04ada9df87
Dynamic font loading and more (#674)
**Fonts**

Dynamically load text and icon fonts when the device boots.

Font bitdepth depends on whether the device is an ESP32 one and whether it has external RAM available.
When no external RAM is available on ESP32, only small and medium font variants are generated; large font variants refer to the medium size ones.

Implemented Appearance settings app for changing font and font size.

**Other changes**

- Added keyboard shortcuts to delete or rename files in directory views.
- Improved app-grid tile sizing to provide more room for labels.
- Reduced the default LED strip brightness.
2026-10-05 00:00:08 +02:00

48 lines
2.0 KiB
C

// SPDX-License-Identifier: Apache-2.0
#include <lvgl.h>
#include <lvgl/fonts.h>
struct RegisteredFont {
const lv_font_t* font;
uint32_t height;
};
static struct RegisteredFont text_fonts[FONT_SIZE_LARGE + 1];
static struct RegisteredFont icon_fonts[LVGL_ICON_FONT_SHARED_2X + 1];
void lvgl_set_text_font(enum LvglFontSize font_size, const lv_font_t* font, uint32_t height) {
text_fonts[font_size] = (struct RegisteredFont) { .font = font, .height = height };
}
void lvgl_set_icon_font(enum LvglIconFont icon_font, const lv_font_t* font, uint32_t height) {
icon_fonts[icon_font] = (struct RegisteredFont) { .font = font, .height = height };
}
static const lv_font_t* get_font(const struct RegisteredFont* registered) {
return registered->font != NULL ? registered->font : LV_FONT_DEFAULT;
}
static uint32_t get_height(const struct RegisteredFont* registered) {
return registered->font != NULL ? registered->height : (uint32_t)lv_font_get_line_height(LV_FONT_DEFAULT);
}
const lv_font_t* lvgl_get_text_font(enum LvglFontSize font_size) { return get_font(&text_fonts[font_size]); }
uint32_t lvgl_get_text_font_height(enum LvglFontSize font_size) { return get_height(&text_fonts[font_size]); }
const lv_font_t* lvgl_get_shared_icon_font() { return get_font(&icon_fonts[LVGL_ICON_FONT_SHARED]); }
uint32_t lvgl_get_shared_icon_font_height() { return get_height(&icon_fonts[LVGL_ICON_FONT_SHARED]); }
const lv_font_t* lvgl_get_shared_icon_font_2x() { return get_font(&icon_fonts[LVGL_ICON_FONT_SHARED_2X]); }
uint32_t lvgl_get_shared_icon_font_2x_height() { return get_height(&icon_fonts[LVGL_ICON_FONT_SHARED_2X]); }
const lv_font_t* lvgl_get_launcher_icon_font() { return get_font(&icon_fonts[LVGL_ICON_FONT_LAUNCHER]); }
uint32_t lvgl_get_launcher_icon_font_height() { return get_height(&icon_fonts[LVGL_ICON_FONT_LAUNCHER]); }
const lv_font_t* lvgl_get_statusbar_icon_font() { return get_font(&icon_fonts[LVGL_ICON_FONT_STATUSBAR]); }
uint32_t lvgl_get_statusbar_icon_font_height() { return get_height(&icon_fonts[LVGL_ICON_FONT_STATUSBAR]); }