66 lines
2.5 KiB
C
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; }
|