Files
tactility/Modules/lvgl-module/source/lvgl_fonts.c
T
2026-07-24 22:01:18 -04:00

66 lines
2.5 KiB
C

// SPDX-License-Identifier: Apache-2.0
#include <lvgl.h>
#include <tactility/lvgl_fonts.h>
#include <tactility/check.h>
// The preprocessor definitions that are used below are defined in the CMakeLists.txt from this module.
extern const lv_font_t TT_LVGL_TEXT_FONT_SMALL_SYMBOL;
extern const lv_font_t TT_LVGL_TEXT_FONT_DEFAULT_SYMBOL;
extern const lv_font_t TT_LVGL_TEXT_FONT_LARGE_SYMBOL;
extern const lv_font_t TT_LVGL_LAUNCHER_FONT_ICON_SYMBOL;
extern const lv_font_t TT_LVGL_STATUSBAR_FONT_ICON_SYMBOL;
extern const lv_font_t TT_LVGL_SHARED_FONT_ICON_SYMBOL;
static enum LvglFontScale text_font_scale = FONT_SCALE_DEFAULT;
void lvgl_set_text_font_scale(enum LvglFontScale font_scale) {
check(font_scale >= FONT_SCALE_SMALL && font_scale <= FONT_SCALE_LARGE);
text_font_scale = font_scale;
}
enum LvglFontScale lvgl_get_text_font_scale(void) {
return text_font_scale;
}
static enum LvglFontSize resolve_text_font_size(enum LvglFontSize font_size) {
int resolved = (int)font_size + (int)text_font_scale - (int)FONT_SCALE_DEFAULT;
if (resolved < FONT_SIZE_SMALL) {
return FONT_SIZE_SMALL;
}
if (resolved > FONT_SIZE_LARGE) {
return FONT_SIZE_LARGE;
}
return (enum LvglFontSize)resolved;
}
uint32_t lvgl_get_text_font_height(enum LvglFontSize font_size) {
switch (resolve_text_font_size(font_size)) {
case FONT_SIZE_SMALL: return TT_LVGL_TEXT_FONT_SMALL_SIZE;
case FONT_SIZE_DEFAULT: return TT_LVGL_TEXT_FONT_DEFAULT_SIZE;
case FONT_SIZE_LARGE: return TT_LVGL_TEXT_FONT_LARGE_SIZE;
default: check(false);
}
}
const lv_font_t* lvgl_get_text_font(enum LvglFontSize font_size) {
switch (resolve_text_font_size(font_size)) {
case FONT_SIZE_SMALL: return &TT_LVGL_TEXT_FONT_SMALL_SYMBOL;
case FONT_SIZE_DEFAULT: return &TT_LVGL_TEXT_FONT_DEFAULT_SYMBOL;
case FONT_SIZE_LARGE: return &TT_LVGL_TEXT_FONT_LARGE_SYMBOL;
default: check(false);
}
}
uint32_t lvgl_get_shared_icon_font_height() { return TT_LVGL_SHARED_FONT_ICON_SIZE; }
const lv_font_t* lvgl_get_shared_icon_font() { return &TT_LVGL_SHARED_FONT_ICON_SYMBOL; }
uint32_t lvgl_get_launcher_icon_font_height() { return TT_LVGL_LAUNCHER_FONT_ICON_SIZE; }
const lv_font_t* lvgl_get_launcher_icon_font() { return &TT_LVGL_LAUNCHER_FONT_ICON_SYMBOL; }
uint32_t lvgl_get_statusbar_icon_font_height() { return TT_LVGL_STATUSBAR_FONT_ICON_SIZE; }
const lv_font_t* lvgl_get_statusbar_icon_font() { return &TT_LVGL_STATUSBAR_FONT_ICON_SYMBOL; }