Compare commits

...

7 Commits

18 changed files with 1320 additions and 601 deletions

View File

@ -168,15 +168,15 @@ lv_font_conv -v
python3, the **built_in_font_gen.py** script :
```bash
#Here are some font regeneration examples using the tool :
python3 built_in_font_gen.py -s 14 --bpp 4 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFC,0x153 -o lv_font_montserrat_14.c
python3 built_in_font_gen.py -s 14 --bpp 4 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDB,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFB,0xFC,0x153 -o lv_font_montserrat_14.c
python3 built_in_font_gen.py -s 16 --bpp 4 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFC,0x153 -o lv_font_montserrat_16.c
python3 built_in_font_gen.py -s 16 --bpp 4 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDB,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFB,0xFC,0x153 -o lv_font_montserrat_16.c
python3 built_in_font_gen.py -s 24 --bpp 4 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFC,0x153 -o lv_font_montserrat_24.c
python3 built_in_font_gen.py -s 24 --bpp 4 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDB,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFB,0xFC,0x153 -o lv_font_montserrat_24.c
python3 built_in_font_gen.py -s 28 --bpp 4 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFC,0x153 -o lv_font_montserrat_28.c
python3 built_in_font_gen.py -s 28 --bpp 4 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDB,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFB,0xFC,0x153 -o lv_font_montserrat_28.c
python3 built_in_font_gen.py -s 30 --bpp 4 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFC,0x153 -o lv_font_montserrat_30.c
python3 built_in_font_gen.py -s 30 --bpp 4 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDB,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFB,0xFC,0x153 -o lv_font_montserrat_30.c
```
7) Once done, the new generated fonts file will be in the same folder (***src/W800_SDK_v1.00.10/lvlg/lvgl_v8.3/scripts/built_in_font***) named **lv_font_'font name'_'size'.c**
like lv_font_monserrat_14.c, happy fonting !!!

View File

@ -98,11 +98,11 @@ float BMP280_get_temperature(void);
float BMP280_get_pressure(float * const temperature);
/**
* @brief Returns an approximation of the altitude using the measured atmospheric pressure.
* @brief Returns an approximation of the altitude in meters using the measured atmospheric pressure.
*
* @param pressureAtSeeLevel the current atmospheric pressure at see level in hPa. Can be 0 if unknown and a default value of 1013.25 hPa will be used.
* @param pressure the address of a float which will contain the measured pressure. If not needed, can be NULL.
* @param temperature the address of a float which will contain the measured temperature. If not needed, can be NULL.
* @param pressure the address of a float which will contain the measured pressure in Pa. If not needed, can be NULL.
* @param temperature the address of a float which will contain the measured temperature in °C. If not needed, can be NULL.
* @return float the altitude in meters
*/
float BMP280_get_altitude(float pressureAtSeeLevel, float * const pressure, float * const temperature);

View File

@ -2,9 +2,12 @@
* @file altimeter_screen.c
* @author Anatole SCHRAMM-HENRY
* @brief Altimeter screen source file containing the application's implementations
* @version 0.1
* @version 0.2
* @date 2024-01-16
*
* Updated on 2024-07-31 Added time and date on the altitude screen, added colors to texts and modified
* the buttons presses which now require a long press to react.
*
* @copyright MIT
*
*/
@ -22,8 +25,10 @@ static void _create_altitude_display(AltimeterScreen_t * const altimeterScreen);
static void _create_altitude_setting_display(AltimeterScreen_t * const altimeterScreen);
static void _update_min_and_max_pressure_data(AltimeterScreen_t * const altimeterScreen, float minPressure, float maxPressure);
static void _update_pressure_chart(AltimeterScreen_t * const altimeterScreen);
static void _update_pressure_info(AltimeterScreen_t * const altimeterScreen);
static void _update_altitude_info(AltimeterScreen_t * const altimeterScreen);
static void _update_temperature_info(AltimeterScreen_t * const altimeterScreen, float temperature);
static void _update_date_time_info(AltimeterScreen_t * const altimeterScreen);
static void gesture_event_cb(lv_event_t *e)
{
@ -117,10 +122,19 @@ static void altitude_display_cleanup_event_cb(lv_event_t *e)
altimeterScreen->altitudeUpdateTimer = NULL;
}
if(altimeterScreen->dateTimeUpdateTimer)
{
lv_timer_del(altimeterScreen->dateTimeUpdateTimer);
altimeterScreen->dateTimeUpdateTimer = NULL;
}
altimeterScreen->altitudeValue.value = NULL;
altimeterScreen->altitudeValue.unit = NULL;
altimeterScreen->vsiValue.value_unit = NULL;
altimeterScreen->temperatureValue.value = NULL;
altimeterScreen->dateTimeValue.timeLabel = NULL;
altimeterScreen->dateTimeValue.monthLabel = NULL;
altimeterScreen->dateTimeValue.dayLabel = NULL;
LV_LOG_USER("Altitude display cleanup");
}
@ -138,27 +152,7 @@ static void altitude_setting_display_cleanup_event_cb(lv_event_t *e)
static void pressure_update_timer_cb(lv_timer_t *timer)
{
AltimeterScreen_t *altimeterScreen = timer->user_data;
if(altimeterScreen->altimeterScreenMeasurementCb)
{
LV_LOG_USER("Updating pressure measurements");
float pressure;
/* We don't need to retrieve the temperature nor the altitude in this view */
altimeterScreen->altimeterScreenMeasurementCb(NULL, &pressure, NULL);
sprintf(altimeterScreen->pressureValue.value_text, "%.2f", pressure);
if(altimeterScreen->pressureValue.value)
{
lv_label_set_text_static(altimeterScreen->pressureValue.value, altimeterScreen->pressureValue.value_text);
}
//Mock up part needs to be changed on embedded target
altimeter_screen_shift_chart_pressure_measurement(altimeterScreen, pressure);
}
else
{
LV_LOG_USER("altimeterScreenMeasurementCb is NULL, be sure to register a callback !");
}
_update_pressure_info(altimeterScreen);
}
static void altitude_update_timer_cb(lv_timer_t *timer)
@ -188,6 +182,12 @@ static void altitude_update_timer_cb(lv_timer_t *timer)
}
}
static void date_time_update_timer_cb(lv_timer_t *timer)
{
AltimeterScreen_t *altimeterScreen = timer->user_data;
_update_date_time_info(altimeterScreen);
}
static void reset_pressure_event_cb(lv_event_t *e)
{
AltimeterScreen_t *altimeterScreen = lv_event_get_user_data(e);
@ -280,17 +280,19 @@ static void apply_altitude_setting_event_cb(lv_event_t *e)
{
AltimeterScreen_t *altimeterScreen = lv_event_get_user_data(e);
bool apply_action = (bool)lv_obj_get_user_data(lv_event_get_target(e));
/* Call the user feedback function if one is registered */
if(altimeterScreen->altimeterScreenUserFeedbackCb)altimeterScreen->altimeterScreenUserFeedbackCb();
altimeterScreen->altitudeOffset_spinbox.value = lv_spinbox_get_value(altimeterScreen->altitudeOffset_spinbox.spinbox);
altimeterScreen->altitudeOffset = altimeterScreen->lastReadAltitude - (altimeterScreen->altitudeOffset_spinbox.value / 10.0);
altimeterScreen->vsiFloat = altimeterScreen->lastReadAltitude;
if(apply_action)
{
altimeterScreen->altitudeOffset_spinbox.value = lv_spinbox_get_value(altimeterScreen->altitudeOffset_spinbox.spinbox);
altimeterScreen->altitudeOffset = altimeterScreen->lastReadAltitude - (altimeterScreen->altitudeOffset_spinbox.value / 10.0);
altimeterScreen->vsiFloat = altimeterScreen->lastReadAltitude;
}
altimeterScreen->altimeterScreenDisplayedView = ALTIMETER_SCREEN_ALTITUDE_VIEW;
lv_obj_t *display = _create_altimeter_display(altimeterScreen);
if(display) lv_scr_load_anim(display, LV_SCR_LOAD_ANIM_MOVE_BOTTOM, 400, 0, true);
@ -341,6 +343,28 @@ void altimeter_screen_register_measurement_cb(AltimeterScreen_t * const altimete
altimeterScreen->altimeterScreenMeasurementCb = altimeterScreenMeasurementCb;
}
void altimeter_screen_register_date_time_cb(AltimeterScreen_t * const altimeterScreen, AltimeterScreenDateTimeCb_t altimeterScreenDateTimeCb)
{
if(!altimeterScreen)
{
LV_LOG_ERROR("NULL pointer given !");
return;
}
altimeterScreen->altimeterScreenDateTimeCb = altimeterScreenDateTimeCb;
}
void altimeter_screen_set_displayed_hour_format(AltimeterScreen_t * const altimeterScreen, bool hour_24H_format)
{
if(!altimeterScreen)
{
LV_LOG_ERROR("NULL pointer given !");
return;
}
altimeterScreen->hour_24H_format = hour_24H_format;
}
void altimeter_screen_shift_chart_pressure_measurement(AltimeterScreen_t * const altimeterScreen, float pressure)
{
if(!altimeterScreen)
@ -438,7 +462,8 @@ static void _create_pressure_display(AltimeterScreen_t * const altimeterScreen)
altimeterScreen->pressureValue.value = lv_label_create(inner_circle);
lv_obj_set_style_text_font(altimeterScreen->pressureValue.value, &lv_font_montserrat_30, LV_PART_MAIN);
lv_obj_align(altimeterScreen->pressureValue.value, LV_ALIGN_TOP_MID, 0, 15);
lv_label_set_text_static(altimeterScreen->pressureValue.value, altimeterScreen->pressureValue.value_text);
_update_pressure_info(altimeterScreen);
if(altimeterScreen->pressureValue.unit)
{
@ -456,7 +481,8 @@ static void _create_pressure_display(AltimeterScreen_t * const altimeterScreen)
lv_img_set_src(reset_btn, &altimeter_asset_reset_icon);
lv_obj_align(reset_btn, LV_ALIGN_CENTER, 0 ,0);
lv_obj_add_flag(reset_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
lv_obj_add_event_cb(reset_btn, &(reset_pressure_event_cb), LV_EVENT_CLICKED, altimeterScreen);
/* Using a long pressed event so that no missclicks trigger a reset */
lv_obj_add_event_cb(reset_btn, &(reset_pressure_event_cb), LV_EVENT_LONG_PRESSED, altimeterScreen);
/* Set the min and max text */
if(altimeterScreen->minValue.value_unit)
@ -551,6 +577,47 @@ static void _create_altitude_display(AltimeterScreen_t * const altimeterScreen)
lv_obj_set_style_border_color(inner_circle, lv_color_make(238, 82, 83), LV_PART_MAIN);
lv_obj_set_scroll_dir(inner_circle, LV_DIR_NONE);
/* Let's create the month label */
if(altimeterScreen->dateTimeValue.monthLabel)
{
LV_LOG_ERROR("monthLabel should be NULL here !");
lv_obj_del(altimeterScreen->dateTimeValue.monthLabel);
altimeterScreen->dateTimeValue.monthLabel = NULL;
}
altimeterScreen->dateTimeValue.monthLabel = lv_label_create(inner_circle);
lv_obj_set_style_text_font(altimeterScreen->dateTimeValue.monthLabel, &lv_font_montserrat_16, LV_PART_MAIN);
lv_obj_align_to(altimeterScreen->dateTimeValue.monthLabel, inner_circle, LV_ALIGN_TOP_LEFT, 30, 5);
lv_obj_set_style_text_color(altimeterScreen->dateTimeValue.monthLabel, lv_color_make(158, 157, 36), LV_PART_MAIN);
/* Let's create the day label */
if(altimeterScreen->dateTimeValue.dayLabel)
{
LV_LOG_ERROR("dayLabel should be NULL here !");
lv_obj_del(altimeterScreen->dateTimeValue.dayLabel);
altimeterScreen->dateTimeValue.dayLabel = NULL;
}
altimeterScreen->dateTimeValue.dayLabel = lv_label_create(inner_circle);
lv_obj_set_style_text_font(altimeterScreen->dateTimeValue.dayLabel, &lv_font_montserrat_16, LV_PART_MAIN);
lv_obj_align_to(altimeterScreen->dateTimeValue.dayLabel, inner_circle, LV_ALIGN_TOP_RIGHT, -15, 5);
lv_obj_set_style_text_color(altimeterScreen->dateTimeValue.dayLabel, lv_color_make(142, 36, 170), LV_PART_MAIN);
lv_obj_set_style_text_align(altimeterScreen->dateTimeValue.dayLabel, LV_TEXT_ALIGN_RIGHT, LV_PART_MAIN);
/* Let's create the time label */
if(altimeterScreen->dateTimeValue.timeLabel)
{
LV_LOG_ERROR("timeLabel should be NULL here !");
lv_obj_del(altimeterScreen->dateTimeValue.timeLabel);
altimeterScreen->dateTimeValue.timeLabel = NULL;
}
altimeterScreen->dateTimeValue.timeLabel = lv_label_create(inner_circle);
lv_obj_set_width(altimeterScreen->dateTimeValue.timeLabel, lv_pct(100));
lv_obj_set_style_text_font(altimeterScreen->dateTimeValue.timeLabel, &lv_font_montserrat_24, LV_PART_MAIN);
lv_obj_set_style_text_align(altimeterScreen->dateTimeValue.timeLabel, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN);
lv_obj_align_to(altimeterScreen->dateTimeValue.timeLabel, inner_circle, LV_ALIGN_TOP_MID, 0, 20);
lv_obj_set_style_text_color(altimeterScreen->dateTimeValue.timeLabel, lv_color_make(251, 140, 0), LV_PART_MAIN);
_update_date_time_info(altimeterScreen);
/* Let's create the altitude main and unit label */
if(altimeterScreen->altitudeValue.value)
{
@ -560,7 +627,8 @@ static void _create_altitude_display(AltimeterScreen_t * const altimeterScreen)
}
altimeterScreen->altitudeValue.value = lv_label_create(inner_circle);
lv_obj_set_style_text_font(altimeterScreen->altitudeValue.value, &lv_font_montserrat_30, LV_PART_MAIN);
lv_obj_align(altimeterScreen->altitudeValue.value, LV_ALIGN_TOP_MID, 0, 15);
lv_obj_align(altimeterScreen->altitudeValue.value, LV_ALIGN_TOP_MID, 0, 45);
lv_obj_set_style_text_color(altimeterScreen->altitudeValue.value, lv_color_make(0, 105, 92), LV_PART_MAIN);
lv_label_set_text_static(altimeterScreen->altitudeValue.value, altimeterScreen->altitudeValue.value_text);
if(altimeterScreen->altitudeValue.unit)
@ -571,22 +639,9 @@ static void _create_altitude_display(AltimeterScreen_t * const altimeterScreen)
}
altimeterScreen->altitudeValue.unit = lv_label_create(inner_circle);
lv_obj_set_style_text_font(altimeterScreen->altitudeValue.unit, &lv_font_montserrat_30, LV_PART_MAIN);
lv_obj_set_style_text_color(altimeterScreen->altitudeValue.unit, lv_color_make(0, 105, 92), LV_PART_MAIN);
lv_label_set_text_static(altimeterScreen->altitudeValue.unit, "m");
lv_obj_align_to(altimeterScreen->altitudeValue.unit, altimeterScreen->altitudeValue.value, LV_ALIGN_CENTER, 0, 25);
/* Let's create the zeroing button */
lv_obj_t *zeroing_btn = lv_img_create(inner_circle);
lv_img_set_src(zeroing_btn, &altimeter_asset_calibration_icon);
lv_obj_align(zeroing_btn, LV_ALIGN_CENTER, 75 ,5);
lv_obj_add_flag(zeroing_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
lv_obj_add_event_cb(zeroing_btn, &(zeroing_altitude_event_cb), LV_EVENT_CLICKED, altimeterScreen);
/* Let's create the settings button */
lv_obj_t *setting_btn = lv_img_create(inner_circle);
lv_img_set_src(setting_btn, &watch_menu_settings_icon);
lv_obj_align(setting_btn, LV_ALIGN_CENTER, -75 ,5);
lv_obj_add_flag(setting_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
lv_obj_add_event_cb(setting_btn, &(set_altitude_settings_event_cb), LV_EVENT_CLICKED, altimeterScreen);
lv_obj_align_to(altimeterScreen->altitudeValue.unit, altimeterScreen->altitudeValue.value, LV_ALIGN_OUT_BOTTOM_MID, 0, -13);
/* Let's create the temperature label */
if(altimeterScreen->temperatureValue.value)
@ -600,7 +655,24 @@ static void _create_altitude_display(AltimeterScreen_t * const altimeterScreen)
lv_obj_set_style_text_font(altimeterScreen->temperatureValue.value, &lv_font_montserrat_24, LV_PART_MAIN);
strcpy(altimeterScreen->temperatureValue.value_text, "°C");
lv_label_set_text_static(altimeterScreen->temperatureValue.value, altimeterScreen->temperatureValue.value_text);
lv_obj_align(altimeterScreen->temperatureValue.value, LV_ALIGN_CENTER, 0, 5);
lv_obj_align(altimeterScreen->temperatureValue.value, LV_ALIGN_CENTER, 0, 20);
lv_obj_set_style_text_color(altimeterScreen->temperatureValue.value, lv_color_make(93, 64, 55), LV_PART_MAIN);
/* Let's create the zeroing button */
lv_obj_t *zeroing_btn = lv_img_create(inner_circle);
lv_img_set_src(zeroing_btn, &altimeter_asset_calibration_icon);
lv_obj_align_to(zeroing_btn, altimeterScreen->temperatureValue.value, LV_ALIGN_OUT_RIGHT_MID, 45, 0);
lv_obj_add_flag(zeroing_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
/* Using a long pressed event so that no missclicks trigger a reset */
lv_obj_add_event_cb(zeroing_btn, &(zeroing_altitude_event_cb), LV_EVENT_LONG_PRESSED, altimeterScreen);
/* Let's create the settings button */
lv_obj_t *setting_btn = lv_img_create(inner_circle);
lv_img_set_src(setting_btn, &watch_menu_settings_icon);
lv_obj_align_to(setting_btn, altimeterScreen->temperatureValue.value, LV_ALIGN_OUT_LEFT_MID, -45, 0);
lv_obj_add_flag(setting_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
/* Using a long pressed event so that no missclicks trigger a reset */
lv_obj_add_event_cb(setting_btn, &(set_altitude_settings_event_cb), LV_EVENT_LONG_PRESSED, altimeterScreen);
/* Let's create the VSI label */
if(altimeterScreen->vsiValue.value_unit)
@ -625,10 +697,19 @@ static void _create_altitude_display(AltimeterScreen_t * const altimeterScreen)
lv_timer_del(altimeterScreen->altitudeUpdateTimer);
altimeterScreen->altitudeUpdateTimer = NULL;
}
/* Update the pressure value on the screen every second */
/* Update the pressure value on the screen at the defined refresh rate in Hz */
altimeterScreen->altitudeUpdateTimer = lv_timer_create(&(altitude_update_timer_cb), 1000 / ALTITUDE_TIMER_UPDATE_RATE_HZ, altimeterScreen);
/* Let's create the time update timer */
if(altimeterScreen->dateTimeUpdateTimer)
{
LV_LOG_ERROR("dateTimeUpdateTimer should be NULL here !");
lv_timer_del(altimeterScreen->dateTimeUpdateTimer);
altimeterScreen->dateTimeUpdateTimer = NULL;
}
/* Update the displayed time every 200 ms */
altimeterScreen->dateTimeUpdateTimer = lv_timer_create(&(date_time_update_timer_cb), 500, altimeterScreen);
/* We register the event callback to handle gestures */
lv_obj_add_event_cb(altimeterScreen->displays[ALTIMETER_SCREEN_ALTITUDE_VIEW], &(gesture_event_cb), LV_EVENT_GESTURE, altimeterScreen);
/* We register the event callback to handle the cleanup */
@ -672,8 +753,9 @@ static void _create_altitude_setting_display(AltimeterScreen_t * const altimeter
}
altimeterScreen->altitudeOffset_spinbox.spinbox = lv_spinbox_create(inner_circle);
lv_obj_set_align(altimeterScreen->altitudeOffset_spinbox.spinbox, LV_ALIGN_CENTER);
lv_obj_align(altimeterScreen->altitudeOffset_spinbox.spinbox, LV_ALIGN_CENTER, 0, -10);
lv_obj_set_width(altimeterScreen->altitudeOffset_spinbox.spinbox, lv_pct(50));
lv_obj_set_style_text_font(altimeterScreen->altitudeOffset_spinbox.spinbox, &lv_font_montserrat_16, LV_PART_MAIN);
lv_spinbox_set_digit_format(altimeterScreen->altitudeOffset_spinbox.spinbox, 5, 4);
//Max 9000 and min -1000 since we have a digit after the comma
lv_spinbox_set_range(altimeterScreen->altitudeOffset_spinbox.spinbox, -10000, 90000);
@ -694,12 +776,25 @@ static void _create_altitude_setting_display(AltimeterScreen_t * const altimeter
lv_obj_add_event_cb(dec_btn, &(lv_spinbox_decrement_event_cb), LV_EVENT_ALL, altimeterScreen);
lv_obj_t *apply_btn = lv_btn_create(inner_circle);
lv_obj_align(apply_btn, LV_ALIGN_CENTER, 0, 50);
lv_obj_set_user_data(apply_btn, (void *)true);
lv_obj_set_width(apply_btn, 86);
lv_obj_t *apply_btn_lbl = lv_label_create(apply_btn);
lv_label_set_text_static(apply_btn_lbl, translation_get_word(TRANSLATION_ALTIMETER_APPLY_BUTTON));
lv_obj_center(apply_btn_lbl);
lv_obj_add_event_cb(apply_btn, &(apply_altitude_setting_event_cb), LV_EVENT_CLICKED, altimeterScreen);
lv_obj_align_to(apply_btn, dec_btn, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 10);
lv_obj_t *cancel_btn = lv_btn_create(inner_circle);
lv_obj_set_user_data(cancel_btn, (void *)false);
lv_obj_set_width(cancel_btn, 86);
lv_obj_t *cancel_btn_lbl = lv_label_create(cancel_btn);
lv_label_set_text_static(cancel_btn_lbl, translation_get_word(TRANSLATION_ALTIMETER_CANCEL_BUTTON));
lv_obj_center(cancel_btn_lbl);
lv_obj_add_event_cb(cancel_btn, &(apply_altitude_setting_event_cb), LV_EVENT_CLICKED, altimeterScreen);
lv_obj_align_to(cancel_btn, inc_btn, LV_ALIGN_OUT_BOTTOM_RIGHT, 0, 10);
/* We register the event callback to handle the cleanup */
lv_obj_add_event_cb(altimeterScreen->displays[ALTIMETER_SCREEN_ALTITUDE_SETTING_VIEW], &(altitude_setting_display_cleanup_event_cb), LV_EVENT_DELETE, altimeterScreen);
@ -753,6 +848,30 @@ static void _update_pressure_chart(AltimeterScreen_t * const altimeterScreen)
_update_min_and_max_pressure_data(altimeterScreen, min, max);
}
static void _update_pressure_info(AltimeterScreen_t * const altimeterScreen)
{
if(altimeterScreen->altimeterScreenMeasurementCb)
{
LV_LOG_USER("Updating pressure measurements");
float pressure;
/* We don't need to retrieve the temperature nor the altitude in this view */
altimeterScreen->altimeterScreenMeasurementCb(NULL, &pressure, NULL);
sprintf(altimeterScreen->pressureValue.value_text, "%.2f", pressure);
if(altimeterScreen->pressureValue.value)
{
lv_label_set_text_static(altimeterScreen->pressureValue.value, altimeterScreen->pressureValue.value_text);
}
//Mock up part needs to be changed on embedded target
altimeter_screen_shift_chart_pressure_measurement(altimeterScreen, pressure);
}
else
{
LV_LOG_USER("altimeterScreenMeasurementCb is NULL, be sure to register a callback !");
}
}
static void _update_altitude_info(AltimeterScreen_t * const altimeterScreen)
{
sprintf(altimeterScreen->altitudeValue.value_text, "%.1f", altimeterScreen->lastReadAltitude - altimeterScreen->altitudeOffset);
@ -766,3 +885,41 @@ static void _update_temperature_info(AltimeterScreen_t * const altimeterScreen,
sprintf(altimeterScreen->temperatureValue.value_text, "%.2f°C", temperature);
lv_label_set_text_static(altimeterScreen->temperatureValue.value, altimeterScreen->temperatureValue.value_text);
}
static void _update_date_time_info(AltimeterScreen_t * const altimeterScreen)
{
if(altimeterScreen->altimeterScreenDateTimeCb)
{
struct tm date_time = {0};
altimeterScreen->altimeterScreenDateTimeCb(&date_time);
if(altimeterScreen->hour_24H_format)
{
sprintf(altimeterScreen->dateTimeValue.time_text, "%s%d:%s%d:%s%d",
date_time.tm_hour < 10 ? "0" : "", date_time.tm_hour,
date_time.tm_min < 10 ? "0" : "", date_time.tm_min,
date_time.tm_sec < 10 ? "0" : "", date_time.tm_sec);
}
else
{
// Intermediate hour var to set it on a 12H format
uint8_t hour = date_time.tm_hour;
if(hour > 12)hour -= 12;
sprintf(altimeterScreen->dateTimeValue.time_text, "%d:%s%d:%s%d%s", hour,
date_time.tm_min < 10 ? "0" : "", date_time.tm_min,
date_time.tm_sec < 10 ? "0" : "", date_time.tm_sec,
date_time.tm_hour < 13 ? "AM" : "PM");
}
strncpy(altimeterScreen->dateTimeValue.month_text, translation_get_word(TRANSLATION_JANUARY_SHORT + date_time.tm_mon), sizeof(altimeterScreen->dateTimeValue.month_text)-1);
sprintf(altimeterScreen->dateTimeValue.day_text, "%s%d", date_time.tm_mday < 10 ? "0":"", date_time.tm_mday);
lv_label_set_text_static(altimeterScreen->dateTimeValue.timeLabel, altimeterScreen->dateTimeValue.time_text);
lv_label_set_text_static(altimeterScreen->dateTimeValue.monthLabel, altimeterScreen->dateTimeValue.month_text);
lv_label_set_text_static(altimeterScreen->dateTimeValue.dayLabel, altimeterScreen->dateTimeValue.day_text);
}
else
{
LV_LOG_USER("altimeterScreenDateTimeCb is NULL, be sure to register a callback !");
}
}

View File

@ -2,9 +2,12 @@
* @file altimeter_screen.h
* @author Anatole SCHRAMM-HENRY
* @brief Altimeter screen header file exposing the application's API.
* @version 0.1
* @version 0.2
* @date 2024-01-16
*
* Updated on 2024-07-31 Added time and date on the altitude screen, added colors to texts and modified
* the buttons presses which now require a long press to react.
*
* @copyright MIT
*
*/
@ -13,6 +16,7 @@
#define ALTIMETER_SCREEN_H
#include "lvgl.h"
#include <time.h>
#define ALTITUDE_TIMER_UPDATE_RATE_HZ (20)
@ -46,6 +50,7 @@ typedef struct MinMaxVSIValue
typedef void (*AltimeterScreenOnStateChangeCb_t)(AltimeterScreenState_e altimeterScreenState);
typedef void(*AltimeterScreenMeasurementCb_t)(float * const temperature, float * const pressure, float * const altitude);
typedef void (*AltimeterScreenUserFeedbackCb_t)(void);
typedef void (*AltimeterScreenDateTimeCb_t)(struct tm * const dateTime);
typedef struct PressureChart
{
@ -58,6 +63,12 @@ typedef struct TemperatureValue
char value_text[9];
} TemperatureValue_t;
typedef struct DateTimeValue
{
lv_obj_t *timeLabel, *monthLabel, *dayLabel;
char time_text[11], month_text[5], day_text[3];
} DateTimeValue_t;
typedef struct SpinBox
{
lv_obj_t *spinbox;
@ -73,12 +84,14 @@ typedef struct AltimeterScreen
PressureChart_t pressureChart;
lv_timer_t *pressureUpdateTimer;
lv_timer_t *altitudeUpdateTimer;
lv_timer_t *dateTimeUpdateTimer;
MainValue_t pressureValue;
MainValue_t altitudeValue;
MinMaxVSIValue_t minValue;
MinMaxVSIValue_t maxValue;
MinMaxVSIValue_t vsiValue;
TemperatureValue_t temperatureValue;
DateTimeValue_t dateTimeValue;
float vsiFloat;
float lastReadAltitude;
//Should not be erased attributes
@ -86,13 +99,21 @@ typedef struct AltimeterScreen
AltimeterScreenMeasurementCb_t altimeterScreenMeasurementCb;
AltimeterScreenUserFeedbackCb_t altimeterScreenUserFeedbackCb;
AltimeterScreenOnStateChangeCb_t altimeterScreenOnStateChangeCb;
AltimeterScreenDateTimeCb_t altimeterScreenDateTimeCb;
float minValueFloat;
float maxValueFloat;
float altitudeOffset;
lv_coord_t pressure_data_points[10];
float pressure_data_points_float[10];
bool hour_24H_format : 1;
} AltimeterScreen_t;
/**
* @brief Initializes the altimeter screen context object
* @note This function has to be called first before any others
*
* @param altimeterScreen a pointer to the altimeter screen context structure to initialize.
*/
void altimeter_screen_init(AltimeterScreen_t * const altimeterScreen);
/**
@ -100,27 +121,62 @@ void altimeter_screen_init(AltimeterScreen_t * const altimeterScreen);
* This callback should be used to initialize and deinitialize needed devices drivers like the pressure/temperature sensor.
* @note The state of the application is passed as a parameter of the callback function.
*
* @param altimeterScreen a pointer to the altimeter screen object structure.
* @param altimeterScreen a pointer to the previously initialized altimeter screen object structure using @ref altimeter_screen_init.
* @param altimeterScreenOnStateChangeCb the callback of type @ref AltimeterScreenOnStateChangeCb_t to register.
*/
void altimeter_screen_register_on_state_change_cb(AltimeterScreen_t * const altimeterScreen, AltimeterScreenOnStateChangeCb_t altimeterScreenOnStateChangeCb);
/**
* @brief Registers a callback functions which will be called every time a user feedback should
* @brief Registers a callback function which will be called every time a user feedback should
* be made. In this case, every time a button is clicked, the callback will be called.
* This enables the app to react to this user event.
*
* @param menuScreen a pointer to the previously initialized menu screen's context structure.
* @param menuScreenUserFeedbackCb a pointer to a function having the following signature : void(void).
* @param altimeterScreen a pointer to the previously initialized altimeter screen object structure using @ref altimeter_screen_init.
* @param altimeterScreenUserFeedbackCb a pointer to a function having the following signature : void(void) @ref AltimeterScreenUserFeedbackCb_t.
*/
void altimeter_screen_register_user_feedback_cb(AltimeterScreen_t * const altimeterScreen, AltimeterScreenUserFeedbackCb_t altimeterScreenUserFeedbackCb);
/**
* @brief Registers the callback function used to retrieve the data displayed in the altimeter app.
* The various data are : the temperature in °C, the pressure in hPa and the altitude in meters.
*
* @param altimeterScreen a pointer to the previously initialized altimeter screen object structure using @ref altimeter_screen_init.
* @param altimeterScreenMeasurementCb the callback of type @ref AltimeterScreenMeasurementCb_t to register.
* The function's signature is : void(float * const, float * const, float * const).
*/
void altimeter_screen_register_measurement_cb(AltimeterScreen_t * const altimeterScreen, AltimeterScreenMeasurementCb_t altimeterScreenMeasurementCb);
/**
* @brief Registers the callback function used to retrieve the system time to be displayed on the altitude view.
*
* @param altimeterScreen a pointer to the previously initialized altimeter screen object structure using @ref altimeter_screen_init.
* @param altimeterScreenDateTimeCb the callback of type @ref AltimeterScreenDateTimeCb_t to register.
* The function's signature is : void(struct tm * const).
*/
void altimeter_screen_register_date_time_cb(AltimeterScreen_t * const altimeterScreen, AltimeterScreenDateTimeCb_t altimeterScreenDateTimeCb);
/**
* @brief Sets the format used to display the time on the altitude screen, ie 12H or 24H hour format.
*
* @param altimeterScreen altimeterScreen a pointer to the previously initialized altimeter screen object structure using @ref altimeter_screen_init.
* @param hour_24H_format a boolean value indicating if the hour format is 24H (true) or 12H (false).
*/
void altimeter_screen_set_displayed_hour_format(AltimeterScreen_t * const altimeterScreen, bool hour_24H_format);
void altimeter_screen_shift_chart_pressure_measurement(AltimeterScreen_t * const altimeterScreen, float pressure);
/**
* @brief Graphically builds the altimeter screen.
*
* @param altimeterScreen a pointer to the previously initialized altimeter screen object structure using @ref altimeter_screen_init.
*/
void altimeter_screen_create(AltimeterScreen_t * const altimeterScreen);
/**
* @brief Frees all resources used by the AltimeterScreen object.
*
* @param altimeterScreen a pointer to the previously initialized altimeter screen object structure using @ref altimeter_screen_init.
*/
void altimeter_screen_destroy(AltimeterScreen_t * const altimeterScreen);
#endif //ALTIMETER_SCREEN_H

View File

@ -153,6 +153,7 @@ static void setTimeFormatCb(bool *hour_24H_format, SettingMode_e mode)
{
watch_settings_time_and_date_set_hour_format(*hour_24H_format);
notification_screen_set_displayed_hour_format(&notificationScreen, *hour_24H_format);
altimeter_screen_set_displayed_hour_format(&altimeterScreen, *hour_24H_format);
}
}
@ -791,6 +792,8 @@ void gfx_task(void *param)
altimeter_screen_register_on_state_change_cb(&altimeterScreen, &(altimeter_screen_on_state_change_cb));
altimeter_screen_register_user_feedback_cb(&altimeterScreen, &(watch_peripherals_vibrate_on_item_click));
altimeter_screen_register_measurement_cb(&altimeterScreen, &(altimeter_screen_measurement_cb));
altimeter_screen_register_date_time_cb(&altimeterScreen, &(date_time_cb));
altimeter_screen_set_displayed_hour_format(&altimeterScreen, persistency_get_settings()->timeAndDate.time_and_date_hour_format);
find_my_phone_screen_init(&findMyPhoneScreen);
find_my_phone_screen_register_BLE_command_send_cb(&findMyPhoneScreen, &(sendFindMyPhoneBLECommandCb));

View File

@ -1138,7 +1138,7 @@ static void update_menu_list_item_text(lv_obj_t *menu_list_item, const char *tex
lv_obj_t *label = lv_obj_get_child(menu_list_item, 0);
if(label)
{
lv_label_set_text(label, text);
lv_label_set_text_static(label, text);
}
}

View File

@ -194,6 +194,11 @@ static const char * const translation_dictionary[][TRANSLATED_LANGUAGES_COUNT] =
[TRANSLATION_GERMAN] = "Bestätigen",
[TRANSLATION_ENGLISH]= "Apply",
},
[TRANSLATION_ALTIMETER_CANCEL_BUTTON] = {
[TRANSLATION_FRENCH] = "Annuler",
[TRANSLATION_GERMAN] = "Abbrechen",
[TRANSLATION_ENGLISH]= "Cancel",
},
[TRANSLATION_PHONE_NOT_CONNECTED] = {
[TRANSLATION_FRENCH] = "Mobile\nnon\ncon-\nnecté !",
[TRANSLATION_GERMAN] = "Keine\nVerbind-\nung zum\nHandy !",
@ -223,7 +228,67 @@ static const char * const translation_dictionary[][TRANSLATED_LANGUAGES_COUNT] =
[TRANSLATION_FRENCH] = "[Artiste inconnu]",
[TRANSLATION_GERMAN] = "[Unbekannten Sanger]",
[TRANSLATION_ENGLISH] = "[Unknown artist]",
}
},
[TRANSLATION_JANUARY_SHORT] = {
[TRANSLATION_FRENCH] = "JAN",
[TRANSLATION_GERMAN] = "JAN",
[TRANSLATION_ENGLISH] = "JAN",
},
[TRANSLATION_FEBRUARY_SHORT] = {
[TRANSLATION_FRENCH] = "FÉV",
[TRANSLATION_GERMAN] = "FEB",
[TRANSLATION_ENGLISH] = "FEB",
},
[TRANSLATION_MARCH_SHORT] = {
[TRANSLATION_FRENCH] = "MAR",
[TRANSLATION_GERMAN] = "MÄR",
[TRANSLATION_ENGLISH] = "MAR",
},
[TRANSLATION_APRIL_SHORT] = {
[TRANSLATION_FRENCH] = "AVR",
[TRANSLATION_GERMAN] = "APR",
[TRANSLATION_ENGLISH] = "APR",
},
[TRANSLATION_MAY_SHORT] = {
[TRANSLATION_FRENCH] = "MAI",
[TRANSLATION_GERMAN] = "MAI",
[TRANSLATION_ENGLISH] = "MAY",
},
[TRANSLATION_JUNE_SHORT] = {
[TRANSLATION_FRENCH] = "JUI",
[TRANSLATION_GERMAN] = "JUN",
[TRANSLATION_ENGLISH] = "JUN",
},
[TRANSLATION_JULY_SHORT] = {
[TRANSLATION_FRENCH] = "JUL",
[TRANSLATION_GERMAN] = "JUL",
[TRANSLATION_ENGLISH] = "JUL",
},
[TRANSLATION_AUGUST_SHORT] = {
[TRANSLATION_FRENCH] = "AOÛ",
[TRANSLATION_GERMAN] = "AUG",
[TRANSLATION_ENGLISH] = "AUG",
},
[TRANSLATION_SEPTEMBER_SHORT] = {
[TRANSLATION_FRENCH] = "SEP",
[TRANSLATION_GERMAN] = "SEP",
[TRANSLATION_ENGLISH] = "SEP",
},
[TRANSLATION_OCTOBER_SHORT] = {
[TRANSLATION_FRENCH] = "OCT",
[TRANSLATION_GERMAN] = "OKT",
[TRANSLATION_ENGLISH] = "OCT",
},
[TRANSLATION_NOVEMBER_SHORT] = {
[TRANSLATION_FRENCH] = "NOV",
[TRANSLATION_GERMAN] = "NOV",
[TRANSLATION_ENGLISH] = "NOV",
},
[TRANSLATION_DECEMBER_SHORT] = {
[TRANSLATION_FRENCH] = "DÉC",
[TRANSLATION_GERMAN] = "DEZ",
[TRANSLATION_ENGLISH] = "DEC",
},
};
const char *translation_get_word(TranslationWord_e word)

View File

@ -53,6 +53,7 @@ typedef enum TranslationWord
/* Altimeter screen app translations */
TRANSLATION_ALTIMETER_SETTING_LABEL,
TRANSLATION_ALTIMETER_APPLY_BUTTON,
TRANSLATION_ALTIMETER_CANCEL_BUTTON,
/* Find my phone app translation */
TRANSLATION_PHONE_NOT_CONNECTED,
TRANSLATION_FIND_MY_PHONE_BTN,
@ -61,7 +62,19 @@ typedef enum TranslationWord
TRANSLATION_PHONE_NOT_CONNECTED_2,
TRANSLATION_NO_TRACK_TITLE,
TRANSLATION_NO_TRACK_ARTIST,
/* Short month translations */
TRANSLATION_JANUARY_SHORT,
TRANSLATION_FEBRUARY_SHORT,
TRANSLATION_MARCH_SHORT,
TRANSLATION_APRIL_SHORT,
TRANSLATION_MAY_SHORT,
TRANSLATION_JUNE_SHORT,
TRANSLATION_JULY_SHORT,
TRANSLATION_AUGUST_SHORT,
TRANSLATION_SEPTEMBER_SHORT,
TRANSLATION_OCTOBER_SHORT,
TRANSLATION_NOVEMBER_SHORT,
TRANSLATION_DECEMBER_SHORT,
} TranslationWord_e;
const char * translation_get_word(TranslationWord_e word);

View File

@ -1,7 +1,7 @@
/*******************************************************************************
* Size: 14 px
* Bpp: 4
* Opts: --no-compress --no-prefilter --bpp 4 --size 14 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFC,0x153 --font FontAwesome5-Solid+Brands+Regular.woff -r 61441,61448,61451,61452,61452,61453,61457,61459,61461,61465,61468,61473,61478,61479,61480,61502,61507,61512,61515,61516,61517,61521,61522,61523,61524,61543,61544,61550,61552,61553,61556,61559,61560,61561,61563,61587,61589,61636,61637,61639,61641,61664,61671,61674,61683,61724,61732,61787,61931,62016,62017,62018,62019,62020,62087,62099,62212,62189,62810,63426,63650 --format lvgl -o lv_font_montserrat_14.c --force-fast-kern-format
* Opts: --no-compress --no-prefilter --bpp 4 --size 14 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDB,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFB,0xFC,0x153 --font FontAwesome5-Solid+Brands+Regular.woff -r 61441,61448,61451,61452,61452,61453,61457,61459,61461,61465,61468,61473,61478,61479,61480,61502,61507,61512,61515,61516,61517,61521,61522,61523,61524,61543,61544,61550,61552,61553,61556,61559,61560,61561,61563,61587,61589,61636,61637,61639,61641,61664,61671,61674,61683,61724,61732,61787,61931,62016,62017,62018,62019,62020,62087,62099,62212,62189,62810,63426,63650 --format lvgl -o lv_font_montserrat_14.c --force-fast-kern-format
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
@ -809,6 +809,16 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
0xd, 0x94, 0xf4, 0x0, 0x3, 0xf5, 0xc, 0xf8,
0x68, 0xfd, 0x0, 0x9, 0xef, 0xe9, 0x10,
/* U+00DB "Û" */
0x0, 0x2, 0x83, 0x0, 0x0, 0x2, 0xe8, 0xe2,
0x0, 0x0, 0x54, 0x3, 0x60, 0x0, 0x0, 0x0,
0x0, 0x0, 0x9c, 0x0, 0x0, 0xb, 0xa9, 0xc0,
0x0, 0x0, 0xba, 0x9c, 0x0, 0x0, 0xb, 0xa9,
0xc0, 0x0, 0x0, 0xba, 0x9c, 0x0, 0x0, 0xb,
0xa9, 0xc0, 0x0, 0x0, 0xba, 0x8e, 0x0, 0x0,
0xd, 0x94, 0xf4, 0x0, 0x3, 0xf5, 0xc, 0xf8,
0x68, 0xfd, 0x0, 0x9, 0xef, 0xe9, 0x10,
/* U+00DC "Ü" */
0x0, 0x4c, 0xb, 0x60, 0x0, 0x1, 0x50, 0x52,
0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0xc0, 0x0,
@ -912,6 +922,14 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
0x0, 0x9f, 0x74, 0x8f, 0x70, 0x0, 0x7d, 0xfd,
0x60, 0x0,
/* U+00FB "û" */
0x0, 0x6e, 0xc0, 0x0, 0x5, 0xb1, 0x7a, 0x0,
0x0, 0x0, 0x0, 0x0, 0xc8, 0x0, 0x2, 0xf3,
0xc8, 0x0, 0x2, 0xf3, 0xc8, 0x0, 0x2, 0xf3,
0xc8, 0x0, 0x2, 0xf3, 0xc9, 0x0, 0x3, 0xf3,
0xab, 0x0, 0x7, 0xf3, 0x5f, 0x83, 0x7e, 0xf3,
0x6, 0xdf, 0xc5, 0xf3,
/* U+00FC "ü" */
0x2, 0xe0, 0x88, 0x0, 0x0, 0x60, 0x33, 0x0,
0x0, 0x0, 0x0, 0x0, 0xc8, 0x0, 0x2, 0xf3,
@ -1860,82 +1878,84 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
{.bitmap_index = 4032, .adv_w = 188, .box_w = 12, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4116, .adv_w = 188, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4194, .adv_w = 177, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 4257, .adv_w = 177, .box_w = 9, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 4316, .adv_w = 151, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 4360, .adv_w = 134, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4404, .adv_w = 134, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4448, .adv_w = 134, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4492, .adv_w = 128, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 4536, .adv_w = 137, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4580, .adv_w = 137, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4624, .adv_w = 137, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4668, .adv_w = 137, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4712, .adv_w = 62, .box_w = 6, .box_h = 11, .ofs_x = -1, .ofs_y = 0},
{.bitmap_index = 4745, .adv_w = 62, .box_w = 4, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4767, .adv_w = 142, .box_w = 9, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4817, .adv_w = 152, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 4861, .adv_w = 239, .box_w = 15, .box_h = 8, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4921, .adv_w = 70, .box_w = 4, .box_h = 3, .ofs_x = 0, .ofs_y = 3},
{.bitmap_index = 4927, .adv_w = 224, .box_w = 15, .box_h = 15, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 5040, .adv_w = 224, .box_w = 14, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5117, .adv_w = 224, .box_w = 14, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 5208, .adv_w = 224, .box_w = 14, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5285, .adv_w = 154, .box_w = 10, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5340, .adv_w = 224, .box_w = 14, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 5445, .adv_w = 224, .box_w = 14, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 5550, .adv_w = 252, .box_w = 16, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 5654, .adv_w = 224, .box_w = 14, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 5759, .adv_w = 252, .box_w = 16, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5847, .adv_w = 224, .box_w = 14, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 5952, .adv_w = 112, .box_w = 7, .box_h = 12, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 5994, .adv_w = 168, .box_w = 11, .box_h = 12, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 6060, .adv_w = 252, .box_w = 16, .box_h = 14, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 6172, .adv_w = 224, .box_w = 14, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6249, .adv_w = 154, .box_w = 10, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 6324, .adv_w = 196, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 6394, .adv_w = 196, .box_w = 13, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 6492, .adv_w = 196, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 6577, .adv_w = 196, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 6662, .adv_w = 196, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 6732, .adv_w = 196, .box_w = 14, .box_h = 13, .ofs_x = -1, .ofs_y = -1},
{.bitmap_index = 6823, .adv_w = 140, .box_w = 9, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 6882, .adv_w = 140, .box_w = 9, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 6941, .adv_w = 196, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 7026, .adv_w = 196, .box_w = 13, .box_h = 4, .ofs_x = 0, .ofs_y = 3},
{.bitmap_index = 7052, .adv_w = 252, .box_w = 16, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 7140, .adv_w = 280, .box_w = 18, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 7275, .adv_w = 252, .box_w = 17, .box_h = 15, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 7403, .adv_w = 224, .box_w = 14, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 7494, .adv_w = 196, .box_w = 13, .box_h = 8, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 7546, .adv_w = 196, .box_w = 13, .box_h = 8, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 7598, .adv_w = 280, .box_w = 18, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 7697, .adv_w = 224, .box_w = 14, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 7774, .adv_w = 224, .box_w = 14, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 7879, .adv_w = 224, .box_w = 15, .box_h = 15, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 7992, .adv_w = 196, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8077, .adv_w = 196, .box_w = 13, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 8175, .adv_w = 196, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8260, .adv_w = 196, .box_w = 13, .box_h = 12, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8338, .adv_w = 224, .box_w = 14, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 8415, .adv_w = 140, .box_w = 10, .box_h = 15, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 8490, .adv_w = 196, .box_w = 13, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 8588, .adv_w = 196, .box_w = 13, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 8686, .adv_w = 252, .box_w = 16, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 8774, .adv_w = 224, .box_w = 16, .box_h = 15, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 8894, .adv_w = 168, .box_w = 11, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 8977, .adv_w = 280, .box_w = 18, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 9094, .adv_w = 280, .box_w = 18, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 9184, .adv_w = 280, .box_w = 18, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 9274, .adv_w = 280, .box_w = 18, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 9364, .adv_w = 280, .box_w = 18, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 9454, .adv_w = 280, .box_w = 18, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 9544, .adv_w = 280, .box_w = 18, .box_h = 12, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 9652, .adv_w = 196, .box_w = 12, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 9742, .adv_w = 196, .box_w = 13, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 9840, .adv_w = 224, .box_w = 15, .box_h = 15, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 9953, .adv_w = 280, .box_w = 18, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 10052, .adv_w = 168, .box_w = 11, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 10135, .adv_w = 225, .box_w = 15, .box_h = 10, .ofs_x = 0, .ofs_y = 0}
{.bitmap_index = 4257, .adv_w = 177, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 4320, .adv_w = 177, .box_w = 9, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 4379, .adv_w = 151, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 4423, .adv_w = 134, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4467, .adv_w = 134, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4511, .adv_w = 134, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4555, .adv_w = 128, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 4599, .adv_w = 137, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4643, .adv_w = 137, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4687, .adv_w = 137, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4731, .adv_w = 137, .box_w = 8, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4775, .adv_w = 62, .box_w = 6, .box_h = 11, .ofs_x = -1, .ofs_y = 0},
{.bitmap_index = 4808, .adv_w = 62, .box_w = 4, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4830, .adv_w = 142, .box_w = 9, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 4880, .adv_w = 152, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 4924, .adv_w = 152, .box_w = 8, .box_h = 11, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 4968, .adv_w = 239, .box_w = 15, .box_h = 8, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5028, .adv_w = 70, .box_w = 4, .box_h = 3, .ofs_x = 0, .ofs_y = 3},
{.bitmap_index = 5034, .adv_w = 224, .box_w = 15, .box_h = 15, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 5147, .adv_w = 224, .box_w = 14, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5224, .adv_w = 224, .box_w = 14, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 5315, .adv_w = 224, .box_w = 14, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5392, .adv_w = 154, .box_w = 10, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5447, .adv_w = 224, .box_w = 14, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 5552, .adv_w = 224, .box_w = 14, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 5657, .adv_w = 252, .box_w = 16, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 5761, .adv_w = 224, .box_w = 14, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 5866, .adv_w = 252, .box_w = 16, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5954, .adv_w = 224, .box_w = 14, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 6059, .adv_w = 112, .box_w = 7, .box_h = 12, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 6101, .adv_w = 168, .box_w = 11, .box_h = 12, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 6167, .adv_w = 252, .box_w = 16, .box_h = 14, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 6279, .adv_w = 224, .box_w = 14, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6356, .adv_w = 154, .box_w = 10, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 6431, .adv_w = 196, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 6501, .adv_w = 196, .box_w = 13, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 6599, .adv_w = 196, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 6684, .adv_w = 196, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 6769, .adv_w = 196, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 6839, .adv_w = 196, .box_w = 14, .box_h = 13, .ofs_x = -1, .ofs_y = -1},
{.bitmap_index = 6930, .adv_w = 140, .box_w = 9, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 6989, .adv_w = 140, .box_w = 9, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 7048, .adv_w = 196, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 7133, .adv_w = 196, .box_w = 13, .box_h = 4, .ofs_x = 0, .ofs_y = 3},
{.bitmap_index = 7159, .adv_w = 252, .box_w = 16, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 7247, .adv_w = 280, .box_w = 18, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 7382, .adv_w = 252, .box_w = 17, .box_h = 15, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 7510, .adv_w = 224, .box_w = 14, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 7601, .adv_w = 196, .box_w = 13, .box_h = 8, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 7653, .adv_w = 196, .box_w = 13, .box_h = 8, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 7705, .adv_w = 280, .box_w = 18, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 7804, .adv_w = 224, .box_w = 14, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 7881, .adv_w = 224, .box_w = 14, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 7986, .adv_w = 224, .box_w = 15, .box_h = 15, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 8099, .adv_w = 196, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8184, .adv_w = 196, .box_w = 13, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 8282, .adv_w = 196, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8367, .adv_w = 196, .box_w = 13, .box_h = 12, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8445, .adv_w = 224, .box_w = 14, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 8522, .adv_w = 140, .box_w = 10, .box_h = 15, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 8597, .adv_w = 196, .box_w = 13, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 8695, .adv_w = 196, .box_w = 13, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 8793, .adv_w = 252, .box_w = 16, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 8881, .adv_w = 224, .box_w = 16, .box_h = 15, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 9001, .adv_w = 168, .box_w = 11, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 9084, .adv_w = 280, .box_w = 18, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 9201, .adv_w = 280, .box_w = 18, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 9291, .adv_w = 280, .box_w = 18, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 9381, .adv_w = 280, .box_w = 18, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 9471, .adv_w = 280, .box_w = 18, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 9561, .adv_w = 280, .box_w = 18, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 9651, .adv_w = 280, .box_w = 18, .box_h = 12, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 9759, .adv_w = 196, .box_w = 12, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 9849, .adv_w = 196, .box_w = 13, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 9947, .adv_w = 224, .box_w = 15, .box_h = 15, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 10060, .adv_w = 280, .box_w = 18, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 10159, .adv_w = 168, .box_w = 11, .box_h = 15, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 10242, .adv_w = 225, .box_w = 15, .box_h = 10, .ofs_x = 0, .ofs_y = 0}
};
/*---------------------
@ -1944,16 +1964,17 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
static const uint16_t unicode_list_1[] = {
0x0, 0x10, 0x14, 0x17, 0x18, 0x19, 0x1a, 0x1b,
0x1e, 0x24, 0x26, 0x29, 0x2c, 0x2f, 0x30, 0x32,
0x34, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3e, 0x3f,
0x46, 0x4c, 0xa3, 0x1f72, 0xef51, 0xef58, 0xef5b, 0xef5c,
0xef5d, 0xef61, 0xef63, 0xef65, 0xef69, 0xef6c, 0xef71, 0xef76,
0xef77, 0xef78, 0xef8e, 0xef93, 0xef98, 0xef9b, 0xef9c, 0xef9d,
0xefa1, 0xefa2, 0xefa3, 0xefa4, 0xefb7, 0xefb8, 0xefbe, 0xefc0,
0xefc1, 0xefc4, 0xefc7, 0xefc8, 0xefc9, 0xefcb, 0xefe3, 0xefe5,
0xf014, 0xf015, 0xf017, 0xf019, 0xf030, 0xf037, 0xf03a, 0xf043,
0xf06c, 0xf074, 0xf0ab, 0xf13b, 0xf190, 0xf191, 0xf192, 0xf193,
0xf194, 0xf1d7, 0xf1e3, 0xf23d, 0xf254, 0xf4aa, 0xf712, 0xf7f2
0x1e, 0x24, 0x26, 0x29, 0x2b, 0x2c, 0x2f, 0x30,
0x32, 0x34, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3e,
0x3f, 0x46, 0x4b, 0x4c, 0xa3, 0x1f72, 0xef51, 0xef58,
0xef5b, 0xef5c, 0xef5d, 0xef61, 0xef63, 0xef65, 0xef69, 0xef6c,
0xef71, 0xef76, 0xef77, 0xef78, 0xef8e, 0xef93, 0xef98, 0xef9b,
0xef9c, 0xef9d, 0xefa1, 0xefa2, 0xefa3, 0xefa4, 0xefb7, 0xefb8,
0xefbe, 0xefc0, 0xefc1, 0xefc4, 0xefc7, 0xefc8, 0xefc9, 0xefcb,
0xefe3, 0xefe5, 0xf014, 0xf015, 0xf017, 0xf019, 0xf030, 0xf037,
0xf03a, 0xf043, 0xf06c, 0xf074, 0xf0ab, 0xf13b, 0xf190, 0xf191,
0xf192, 0xf193, 0xf194, 0xf1d7, 0xf1e3, 0xf23d, 0xf254, 0xf4aa,
0xf712, 0xf7f2
};
/*Collect the unicode lists and glyph_id offsets*/
@ -1965,7 +1986,7 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
},
{
.range_start = 176, .range_length = 63475, .glyph_id_start = 96,
.unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 88, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
.unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 90, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
}
};
@ -1990,16 +2011,17 @@ static const uint8_t kern_left_class_mapping[] =
46, 46, 54, 55, 56, 57, 51, 58,
58, 59, 58, 60, 41, 0, 0, 9,
61, 23, 23, 25, 26, 26, 26, 26,
29, 22, 22, 30, 30, 46, 45, 45,
45, 47, 49, 49, 49, 49, 62, 51,
46, 51, 49, 9, 0, 0, 0, 0,
29, 22, 22, 30, 30, 30, 46, 45,
45, 45, 47, 49, 49, 49, 49, 62,
51, 46, 51, 51, 49, 9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0,
0, 0
};
/*Map glyph_ids to kern right classes*/
@ -2018,16 +2040,17 @@ static const uint8_t kern_right_class_mapping[] =
39, 42, 39, 42, 43, 44, 45, 46,
46, 47, 46, 48, 0, 0, 35, 9,
49, 24, 24, 23, 25, 25, 25, 25,
25, 23, 23, 28, 28, 38, 37, 37,
37, 39, 39, 39, 39, 39, 50, 51,
39, 45, 39, 9, 0, 0, 0, 0,
25, 23, 23, 28, 28, 28, 38, 37,
37, 37, 39, 39, 39, 39, 39, 50,
51, 39, 45, 45, 39, 9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0,
0, 0
};
/*Kern values between classes*/

View File

@ -1,7 +1,7 @@
/*******************************************************************************
* Size: 16 px
* Bpp: 4
* Opts: --no-compress --no-prefilter --bpp 4 --size 16 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFC,0x153 --font FontAwesome5-Solid+Brands+Regular.woff -r 61441,61448,61451,61452,61452,61453,61457,61459,61461,61465,61468,61473,61478,61479,61480,61502,61507,61512,61515,61516,61517,61521,61522,61523,61524,61543,61544,61550,61552,61553,61556,61559,61560,61561,61563,61587,61589,61636,61637,61639,61641,61664,61671,61674,61683,61724,61732,61787,61931,62016,62017,62018,62019,62020,62087,62099,62212,62189,62810,63426,63650 --format lvgl -o lv_font_montserrat_16.c --force-fast-kern-format
* Opts: --no-compress --no-prefilter --bpp 4 --size 16 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDB,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFB,0xFC,0x153 --font FontAwesome5-Solid+Brands+Regular.woff -r 61441,61448,61451,61452,61452,61453,61457,61459,61461,61465,61468,61473,61478,61479,61480,61502,61507,61512,61515,61516,61517,61521,61522,61523,61524,61543,61544,61550,61552,61553,61556,61559,61560,61561,61563,61587,61589,61636,61637,61639,61641,61664,61671,61674,61683,61724,61732,61787,61931,62016,62017,62018,62019,62020,62087,62099,62212,62189,62810,63426,63650 --format lvgl -o lv_font_montserrat_16.c --force-fast-kern-format
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
@ -972,6 +972,19 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
0x4f, 0xfa, 0x8b, 0xfd, 0x0, 0x0, 0x3b, 0xef,
0xd8, 0x10, 0x0,
/* U+00DB "Û" */
0x0, 0x1, 0xdf, 0x90, 0x0, 0x0, 0x2, 0xd7,
0x1b, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x6, 0xf3, 0x0, 0x0, 0x8, 0xf1, 0x6f, 0x30,
0x0, 0x0, 0x8f, 0x16, 0xf3, 0x0, 0x0, 0x8,
0xf1, 0x6f, 0x30, 0x0, 0x0, 0x8f, 0x16, 0xf3,
0x0, 0x0, 0x8, 0xf1, 0x6f, 0x30, 0x0, 0x0,
0x8f, 0x16, 0xf3, 0x0, 0x0, 0x8, 0xf0, 0x5f,
0x40, 0x0, 0x0, 0x9f, 0x3, 0xf7, 0x0, 0x0,
0xc, 0xd0, 0xd, 0xe2, 0x0, 0x5, 0xf8, 0x0,
0x4f, 0xfa, 0x8b, 0xfd, 0x0, 0x0, 0x3b, 0xef,
0xd8, 0x10, 0x0,
/* U+00DC "Ü" */
0x0, 0xc, 0x70, 0xc6, 0x0, 0x0, 0x0, 0x84,
0x8, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
@ -1094,6 +1107,15 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
0xb, 0xf1, 0x4, 0xfd, 0x77, 0xcf, 0x60, 0x0,
0x3b, 0xef, 0xc4, 0x0,
/* U+00FB "û" */
0x0, 0x1d, 0xea, 0x0, 0x0, 0x1c, 0x70, 0x9a,
0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0xe0, 0x0,
0x2, 0xf5, 0xae, 0x0, 0x0, 0x2f, 0x5a, 0xe0,
0x0, 0x2, 0xf5, 0xae, 0x0, 0x0, 0x2f, 0x5a,
0xe0, 0x0, 0x2, 0xf5, 0x9f, 0x0, 0x0, 0x4f,
0x56, 0xf3, 0x0, 0xa, 0xf5, 0x1e, 0xe7, 0x6b,
0xff, 0x50, 0x2b, 0xef, 0xb3, 0xf5,
/* U+00FC "ü" */
0x0, 0xb7, 0xb, 0x70, 0x0, 0x7, 0x40, 0x74,
0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0xe0, 0x0,
@ -2176,81 +2198,83 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
{.bitmap_index = 5339, .adv_w = 215, .box_w = 13, .box_h = 15, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5437, .adv_w = 202, .box_w = 11, .box_h = 15, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 5520, .adv_w = 202, .box_w = 11, .box_h = 15, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 5603, .adv_w = 173, .box_w = 10, .box_h = 12, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 5663, .adv_w = 153, .box_w = 9, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5717, .adv_w = 153, .box_w = 9, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5771, .adv_w = 153, .box_w = 9, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5825, .adv_w = 146, .box_w = 9, .box_h = 12, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 5879, .adv_w = 157, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5939, .adv_w = 157, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5999, .adv_w = 157, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6059, .adv_w = 157, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6119, .adv_w = 71, .box_w = 6, .box_h = 12, .ofs_x = -1, .ofs_y = 0},
{.bitmap_index = 6155, .adv_w = 71, .box_w = 5, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6185, .adv_w = 163, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6245, .adv_w = 173, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 6299, .adv_w = 273, .box_w = 17, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6376, .adv_w = 80, .box_w = 3, .box_h = 4, .ofs_x = 1, .ofs_y = 3},
{.bitmap_index = 6382, .adv_w = 256, .box_w = 16, .box_h = 17, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 6518, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6614, .adv_w = 256, .box_w = 16, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 6726, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6822, .adv_w = 176, .box_w = 11, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6888, .adv_w = 256, .box_w = 16, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 7016, .adv_w = 256, .box_w = 16, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 7144, .adv_w = 288, .box_w = 18, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 7270, .adv_w = 256, .box_w = 16, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 7398, .adv_w = 288, .box_w = 18, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 7506, .adv_w = 256, .box_w = 16, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 7634, .adv_w = 128, .box_w = 8, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 7690, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 7774, .adv_w = 288, .box_w = 18, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 7918, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 8014, .adv_w = 176, .box_w = 11, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 8102, .adv_w = 224, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = -2},
{.bitmap_index = 8182, .adv_w = 224, .box_w = 14, .box_h = 18, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 8308, .adv_w = 224, .box_w = 14, .box_h = 15, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8413, .adv_w = 224, .box_w = 14, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8511, .adv_w = 224, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = -2},
{.bitmap_index = 8591, .adv_w = 224, .box_w = 16, .box_h = 14, .ofs_x = -1, .ofs_y = -1},
{.bitmap_index = 8703, .adv_w = 160, .box_w = 10, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8773, .adv_w = 160, .box_w = 10, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8843, .adv_w = 224, .box_w = 14, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8941, .adv_w = 224, .box_w = 14, .box_h = 4, .ofs_x = 0, .ofs_y = 4},
{.bitmap_index = 8969, .adv_w = 288, .box_w = 18, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 9077, .adv_w = 320, .box_w = 20, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 9237, .adv_w = 288, .box_w = 20, .box_h = 16, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 9397, .adv_w = 256, .box_w = 16, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 9525, .adv_w = 224, .box_w = 14, .box_h = 10, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 9595, .adv_w = 224, .box_w = 14, .box_h = 10, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 9665, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 9805, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 9901, .adv_w = 256, .box_w = 16, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 10029, .adv_w = 256, .box_w = 17, .box_h = 17, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 10174, .adv_w = 224, .box_w = 15, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 10279, .adv_w = 224, .box_w = 14, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 10391, .adv_w = 224, .box_w = 14, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 10489, .adv_w = 224, .box_w = 14, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 10587, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 10683, .adv_w = 160, .box_w = 12, .box_h = 16, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 10779, .adv_w = 224, .box_w = 14, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 10891, .adv_w = 224, .box_w = 14, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 11003, .adv_w = 288, .box_w = 18, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 11111, .adv_w = 256, .box_w = 18, .box_h = 18, .ofs_x = -1, .ofs_y = -3},
{.bitmap_index = 11273, .adv_w = 192, .box_w = 12, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 11369, .adv_w = 320, .box_w = 20, .box_h = 15, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 11519, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 11619, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 11719, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 11819, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 11919, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 12019, .adv_w = 320, .box_w = 21, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 12166, .adv_w = 224, .box_w = 12, .box_h = 16, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 12262, .adv_w = 224, .box_w = 14, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 12374, .adv_w = 256, .box_w = 17, .box_h = 17, .ofs_x = -1, .ofs_y = -3},
{.bitmap_index = 12519, .adv_w = 320, .box_w = 20, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 12639, .adv_w = 192, .box_w = 12, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 12735, .adv_w = 258, .box_w = 17, .box_h = 11, .ofs_x = 0, .ofs_y = 1}
{.bitmap_index = 5603, .adv_w = 202, .box_w = 11, .box_h = 15, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 5686, .adv_w = 173, .box_w = 10, .box_h = 12, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 5746, .adv_w = 153, .box_w = 9, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5800, .adv_w = 153, .box_w = 9, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5854, .adv_w = 153, .box_w = 9, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 5908, .adv_w = 146, .box_w = 9, .box_h = 12, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 5962, .adv_w = 157, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6022, .adv_w = 157, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6082, .adv_w = 157, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6142, .adv_w = 157, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6202, .adv_w = 71, .box_w = 6, .box_h = 12, .ofs_x = -1, .ofs_y = 0},
{.bitmap_index = 6238, .adv_w = 71, .box_w = 5, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6268, .adv_w = 163, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6328, .adv_w = 173, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 6382, .adv_w = 173, .box_w = 9, .box_h = 12, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 6436, .adv_w = 273, .box_w = 17, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6513, .adv_w = 80, .box_w = 3, .box_h = 4, .ofs_x = 1, .ofs_y = 3},
{.bitmap_index = 6519, .adv_w = 256, .box_w = 16, .box_h = 17, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 6655, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6751, .adv_w = 256, .box_w = 16, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 6863, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 6959, .adv_w = 176, .box_w = 11, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 7025, .adv_w = 256, .box_w = 16, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 7153, .adv_w = 256, .box_w = 16, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 7281, .adv_w = 288, .box_w = 18, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 7407, .adv_w = 256, .box_w = 16, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 7535, .adv_w = 288, .box_w = 18, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 7643, .adv_w = 256, .box_w = 16, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 7771, .adv_w = 128, .box_w = 8, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 7827, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 7911, .adv_w = 288, .box_w = 18, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 8055, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 8151, .adv_w = 176, .box_w = 11, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 8239, .adv_w = 224, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = -2},
{.bitmap_index = 8319, .adv_w = 224, .box_w = 14, .box_h = 18, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 8445, .adv_w = 224, .box_w = 14, .box_h = 15, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8550, .adv_w = 224, .box_w = 14, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8648, .adv_w = 224, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = -2},
{.bitmap_index = 8728, .adv_w = 224, .box_w = 16, .box_h = 14, .ofs_x = -1, .ofs_y = -1},
{.bitmap_index = 8840, .adv_w = 160, .box_w = 10, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8910, .adv_w = 160, .box_w = 10, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 8980, .adv_w = 224, .box_w = 14, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 9078, .adv_w = 224, .box_w = 14, .box_h = 4, .ofs_x = 0, .ofs_y = 4},
{.bitmap_index = 9106, .adv_w = 288, .box_w = 18, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 9214, .adv_w = 320, .box_w = 20, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 9374, .adv_w = 288, .box_w = 20, .box_h = 16, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 9534, .adv_w = 256, .box_w = 16, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 9662, .adv_w = 224, .box_w = 14, .box_h = 10, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 9732, .adv_w = 224, .box_w = 14, .box_h = 10, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 9802, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 9942, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 10038, .adv_w = 256, .box_w = 16, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 10166, .adv_w = 256, .box_w = 17, .box_h = 17, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 10311, .adv_w = 224, .box_w = 15, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 10416, .adv_w = 224, .box_w = 14, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 10528, .adv_w = 224, .box_w = 14, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 10626, .adv_w = 224, .box_w = 14, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 10724, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 10820, .adv_w = 160, .box_w = 12, .box_h = 16, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 10916, .adv_w = 224, .box_w = 14, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 11028, .adv_w = 224, .box_w = 14, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 11140, .adv_w = 288, .box_w = 18, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 11248, .adv_w = 256, .box_w = 18, .box_h = 18, .ofs_x = -1, .ofs_y = -3},
{.bitmap_index = 11410, .adv_w = 192, .box_w = 12, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 11506, .adv_w = 320, .box_w = 20, .box_h = 15, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 11656, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 11756, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 11856, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 11956, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 12056, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 12156, .adv_w = 320, .box_w = 21, .box_h = 14, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 12303, .adv_w = 224, .box_w = 12, .box_h = 16, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 12399, .adv_w = 224, .box_w = 14, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 12511, .adv_w = 256, .box_w = 17, .box_h = 17, .ofs_x = -1, .ofs_y = -3},
{.bitmap_index = 12656, .adv_w = 320, .box_w = 20, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 12776, .adv_w = 192, .box_w = 12, .box_h = 16, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 12872, .adv_w = 258, .box_w = 17, .box_h = 11, .ofs_x = 0, .ofs_y = 1}
};
/*---------------------
@ -2259,16 +2283,17 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
static const uint16_t unicode_list_1[] = {
0x0, 0x10, 0x14, 0x17, 0x18, 0x19, 0x1a, 0x1b,
0x1e, 0x24, 0x26, 0x29, 0x2c, 0x2f, 0x30, 0x32,
0x34, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3e, 0x3f,
0x46, 0x4c, 0xa3, 0x1f72, 0xef51, 0xef58, 0xef5b, 0xef5c,
0xef5d, 0xef61, 0xef63, 0xef65, 0xef69, 0xef6c, 0xef71, 0xef76,
0xef77, 0xef78, 0xef8e, 0xef93, 0xef98, 0xef9b, 0xef9c, 0xef9d,
0xefa1, 0xefa2, 0xefa3, 0xefa4, 0xefb7, 0xefb8, 0xefbe, 0xefc0,
0xefc1, 0xefc4, 0xefc7, 0xefc8, 0xefc9, 0xefcb, 0xefe3, 0xefe5,
0xf014, 0xf015, 0xf017, 0xf019, 0xf030, 0xf037, 0xf03a, 0xf043,
0xf06c, 0xf074, 0xf0ab, 0xf13b, 0xf190, 0xf191, 0xf192, 0xf193,
0xf194, 0xf1d7, 0xf1e3, 0xf23d, 0xf254, 0xf4aa, 0xf712, 0xf7f2
0x1e, 0x24, 0x26, 0x29, 0x2b, 0x2c, 0x2f, 0x30,
0x32, 0x34, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3e,
0x3f, 0x46, 0x4b, 0x4c, 0xa3, 0x1f72, 0xef51, 0xef58,
0xef5b, 0xef5c, 0xef5d, 0xef61, 0xef63, 0xef65, 0xef69, 0xef6c,
0xef71, 0xef76, 0xef77, 0xef78, 0xef8e, 0xef93, 0xef98, 0xef9b,
0xef9c, 0xef9d, 0xefa1, 0xefa2, 0xefa3, 0xefa4, 0xefb7, 0xefb8,
0xefbe, 0xefc0, 0xefc1, 0xefc4, 0xefc7, 0xefc8, 0xefc9, 0xefcb,
0xefe3, 0xefe5, 0xf014, 0xf015, 0xf017, 0xf019, 0xf030, 0xf037,
0xf03a, 0xf043, 0xf06c, 0xf074, 0xf0ab, 0xf13b, 0xf190, 0xf191,
0xf192, 0xf193, 0xf194, 0xf1d7, 0xf1e3, 0xf23d, 0xf254, 0xf4aa,
0xf712, 0xf7f2
};
/*Collect the unicode lists and glyph_id offsets*/
@ -2280,7 +2305,7 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
},
{
.range_start = 176, .range_length = 63475, .glyph_id_start = 96,
.unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 88, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
.unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 90, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
}
};
@ -2305,16 +2330,17 @@ static const uint8_t kern_left_class_mapping[] =
46, 46, 54, 55, 56, 57, 51, 58,
58, 59, 58, 60, 41, 0, 0, 9,
61, 23, 23, 25, 26, 26, 26, 26,
29, 22, 22, 30, 30, 46, 45, 45,
45, 47, 49, 49, 49, 49, 62, 51,
46, 51, 49, 9, 0, 0, 0, 0,
29, 22, 22, 30, 30, 30, 46, 45,
45, 45, 47, 49, 49, 49, 49, 62,
51, 46, 51, 51, 49, 9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0,
0, 0
};
/*Map glyph_ids to kern right classes*/
@ -2333,16 +2359,17 @@ static const uint8_t kern_right_class_mapping[] =
39, 42, 39, 42, 43, 44, 45, 46,
46, 47, 46, 48, 0, 0, 35, 9,
49, 24, 24, 23, 25, 25, 25, 25,
25, 23, 23, 28, 28, 38, 37, 37,
37, 39, 39, 39, 39, 39, 50, 51,
39, 45, 39, 9, 0, 0, 0, 0,
25, 23, 23, 28, 28, 28, 38, 37,
37, 37, 39, 39, 39, 39, 39, 50,
51, 39, 45, 45, 39, 9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0,
0, 0
};
/*Kern values between classes*/

View File

@ -1,7 +1,7 @@
/*******************************************************************************
* Size: 24 px
* Bpp: 4
* Opts: --no-compress --no-prefilter --bpp 4 --size 24 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFC,0x153 --font FontAwesome5-Solid+Brands+Regular.woff -r 61441,61448,61451,61452,61452,61453,61457,61459,61461,61465,61468,61473,61478,61479,61480,61502,61507,61512,61515,61516,61517,61521,61522,61523,61524,61543,61544,61550,61552,61553,61556,61559,61560,61561,61563,61587,61589,61636,61637,61639,61641,61664,61671,61674,61683,61724,61732,61787,61931,62016,62017,62018,62019,62020,62087,62099,62212,62189,62810,63426,63650 --format lvgl -o lv_font_montserrat_24.c --force-fast-kern-format
* Opts: --no-compress --no-prefilter --bpp 4 --size 24 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDB,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFB,0xFC,0x153 --font FontAwesome5-Solid+Brands+Regular.woff -r 61441,61448,61451,61452,61452,61453,61457,61459,61461,61465,61468,61473,61478,61479,61480,61502,61507,61512,61515,61516,61517,61521,61522,61523,61524,61543,61544,61550,61552,61553,61556,61559,61560,61561,61563,61587,61589,61636,61637,61639,61641,61664,61671,61674,61683,61724,61732,61787,61931,62016,62017,62018,62019,62020,62087,62099,62212,62189,62810,63426,63650 --format lvgl -o lv_font_montserrat_24.c --force-fast-kern-format
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
@ -1689,6 +1689,29 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
0xff, 0xff, 0xff, 0xfe, 0x40, 0x0, 0x0, 0x17,
0xce, 0xfe, 0xc7, 0x10, 0x0,
/* U+00DB "Û" */
0x0, 0x0, 0x0, 0x68, 0x60, 0x0, 0x0, 0x0,
0x0, 0x0, 0xaf, 0xef, 0xa0, 0x0, 0x0, 0x0,
0x0, 0xbf, 0x80, 0x8f, 0xb0, 0x0, 0x0, 0x0,
0x48, 0x40, 0x0, 0x48, 0x40, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0xfc, 0x0,
0x0, 0x0, 0x0, 0xc, 0xf9, 0xaf, 0xc0, 0x0,
0x0, 0x0, 0x0, 0xcf, 0x9a, 0xfc, 0x0, 0x0,
0x0, 0x0, 0xc, 0xf9, 0xaf, 0xc0, 0x0, 0x0,
0x0, 0x0, 0xcf, 0x9a, 0xfc, 0x0, 0x0, 0x0,
0x0, 0xc, 0xf9, 0xaf, 0xc0, 0x0, 0x0, 0x0,
0x0, 0xcf, 0x9a, 0xfc, 0x0, 0x0, 0x0, 0x0,
0xc, 0xf9, 0xaf, 0xc0, 0x0, 0x0, 0x0, 0x0,
0xcf, 0x9a, 0xfc, 0x0, 0x0, 0x0, 0x0, 0xc,
0xf9, 0x9f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0xcf,
0x99, 0xfd, 0x0, 0x0, 0x0, 0x0, 0xd, 0xf8,
0x7f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x63,
0xff, 0x50, 0x0, 0x0, 0x0, 0x5f, 0xf2, 0xd,
0xfe, 0x10, 0x0, 0x0, 0x1e, 0xfc, 0x0, 0x3f,
0xfe, 0x73, 0x23, 0x8e, 0xff, 0x30, 0x0, 0x4f,
0xff, 0xff, 0xff, 0xfe, 0x40, 0x0, 0x0, 0x17,
0xce, 0xfe, 0xc7, 0x10, 0x0,
/* U+00DC "Ü" */
0x0, 0x0, 0x36, 0x0, 0x6, 0x30, 0x0, 0x0,
0x0, 0xe, 0xf6, 0x6, 0xfe, 0x0, 0x0, 0x0,
@ -1904,6 +1927,23 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
0x0, 0x9f, 0xff, 0xff, 0xff, 0xc1, 0x0, 0x0,
0x4, 0xad, 0xfe, 0xb5, 0x0, 0x0,
/* U+00FB "û" */
0x0, 0x0, 0x8f, 0xfa, 0x0, 0x0, 0x0, 0x0,
0x9f, 0xba, 0xfa, 0x0, 0x0, 0x0, 0x9f, 0x90,
0x7, 0xfa, 0x0, 0x0, 0x2, 0x20, 0x0, 0x1,
0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0xf, 0xf6, 0x0, 0x0, 0x0, 0x4f, 0xf0, 0xff,
0x60, 0x0, 0x0, 0x4, 0xff, 0xf, 0xf6, 0x0,
0x0, 0x0, 0x4f, 0xf0, 0xff, 0x60, 0x0, 0x0,
0x4, 0xff, 0xf, 0xf6, 0x0, 0x0, 0x0, 0x4f,
0xf0, 0xff, 0x60, 0x0, 0x0, 0x4, 0xff, 0xf,
0xf6, 0x0, 0x0, 0x0, 0x4f, 0xf0, 0xef, 0x60,
0x0, 0x0, 0x5, 0xff, 0xd, 0xf8, 0x0, 0x0,
0x0, 0x8f, 0xf0, 0xaf, 0xe0, 0x0, 0x0, 0x1e,
0xff, 0x3, 0xff, 0xb2, 0x0, 0x4d, 0xff, 0xf0,
0x8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x0, 0x4,
0xbe, 0xfe, 0xa3, 0x2f, 0xf0,
/* U+00FC "ü" */
0x0, 0x2e, 0xb0, 0x9, 0xe3, 0x0, 0x0, 0x5,
0xff, 0x0, 0xdf, 0x70, 0x0, 0x0, 0x6, 0x40,
@ -4005,81 +4045,83 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
{.bitmap_index = 10949, .adv_w = 323, .box_w = 19, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 11158, .adv_w = 304, .box_w = 15, .box_h = 22, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 11323, .adv_w = 304, .box_w = 15, .box_h = 22, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 11488, .adv_w = 260, .box_w = 14, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 11614, .adv_w = 230, .box_w = 12, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 11722, .adv_w = 230, .box_w = 12, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 11830, .adv_w = 230, .box_w = 12, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 11938, .adv_w = 219, .box_w = 12, .box_h = 19, .ofs_x = 1, .ofs_y = -6},
{.bitmap_index = 12052, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 12169, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 12286, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 12403, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 12520, .adv_w = 107, .box_w = 9, .box_h = 18, .ofs_x = -1, .ofs_y = 0},
{.bitmap_index = 12601, .adv_w = 107, .box_w = 7, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 12664, .adv_w = 244, .box_w = 14, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 12790, .adv_w = 260, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 12907, .adv_w = 410, .box_w = 24, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 13063, .adv_w = 121, .box_w = 5, .box_h = 5, .ofs_x = 1, .ofs_y = 4},
{.bitmap_index = 13076, .adv_w = 384, .box_w = 24, .box_h = 25, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 13376, .adv_w = 384, .box_w = 24, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 13592, .adv_w = 384, .box_w = 24, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 13856, .adv_w = 384, .box_w = 24, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 14072, .adv_w = 264, .box_w = 17, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 14225, .adv_w = 384, .box_w = 24, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 14513, .adv_w = 384, .box_w = 24, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 14801, .adv_w = 432, .box_w = 27, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 15098, .adv_w = 384, .box_w = 24, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 15386, .adv_w = 432, .box_w = 27, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 15629, .adv_w = 384, .box_w = 24, .box_h = 26, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 15941, .adv_w = 192, .box_w = 12, .box_h = 19, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 16055, .adv_w = 288, .box_w = 18, .box_h = 19, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 16226, .adv_w = 432, .box_w = 27, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 16550, .adv_w = 384, .box_w = 24, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 16766, .adv_w = 264, .box_w = 17, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 16970, .adv_w = 336, .box_w = 15, .box_h = 22, .ofs_x = 3, .ofs_y = -2},
{.bitmap_index = 17135, .adv_w = 336, .box_w = 21, .box_h = 26, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 17408, .adv_w = 336, .box_w = 21, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 17639, .adv_w = 336, .box_w = 21, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 17870, .adv_w = 336, .box_w = 15, .box_h = 22, .ofs_x = 3, .ofs_y = -2},
{.bitmap_index = 18035, .adv_w = 336, .box_w = 23, .box_h = 22, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 18288, .adv_w = 240, .box_w = 13, .box_h = 22, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 18431, .adv_w = 240, .box_w = 13, .box_h = 22, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 18574, .adv_w = 336, .box_w = 21, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 18805, .adv_w = 336, .box_w = 21, .box_h = 6, .ofs_x = 0, .ofs_y = 6},
{.bitmap_index = 18868, .adv_w = 432, .box_w = 27, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 19111, .adv_w = 480, .box_w = 31, .box_h = 24, .ofs_x = -1, .ofs_y = -3},
{.bitmap_index = 19483, .adv_w = 432, .box_w = 29, .box_h = 24, .ofs_x = -1, .ofs_y = -3},
{.bitmap_index = 19831, .adv_w = 384, .box_w = 24, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 20095, .adv_w = 336, .box_w = 21, .box_h = 14, .ofs_x = 0, .ofs_y = 2},
{.bitmap_index = 20242, .adv_w = 336, .box_w = 21, .box_h = 14, .ofs_x = 0, .ofs_y = 2},
{.bitmap_index = 20389, .adv_w = 480, .box_w = 31, .box_h = 19, .ofs_x = -1, .ofs_y = -1},
{.bitmap_index = 20684, .adv_w = 384, .box_w = 24, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 20900, .adv_w = 384, .box_w = 24, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 21188, .adv_w = 384, .box_w = 25, .box_h = 25, .ofs_x = -1, .ofs_y = -3},
{.bitmap_index = 21501, .adv_w = 336, .box_w = 22, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 21743, .adv_w = 336, .box_w = 21, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 21995, .adv_w = 336, .box_w = 21, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 22226, .adv_w = 336, .box_w = 21, .box_h = 20, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 22436, .adv_w = 384, .box_w = 24, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 22652, .adv_w = 240, .box_w = 17, .box_h = 24, .ofs_x = -1, .ofs_y = -3},
{.bitmap_index = 22856, .adv_w = 336, .box_w = 21, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 23108, .adv_w = 336, .box_w = 21, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 23360, .adv_w = 432, .box_w = 27, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 23603, .adv_w = 384, .box_w = 26, .box_h = 26, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 23941, .adv_w = 288, .box_w = 18, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 24157, .adv_w = 480, .box_w = 30, .box_h = 23, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 24502, .adv_w = 480, .box_w = 30, .box_h = 16, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 24742, .adv_w = 480, .box_w = 30, .box_h = 16, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 24982, .adv_w = 480, .box_w = 30, .box_h = 16, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 25222, .adv_w = 480, .box_w = 30, .box_h = 16, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 25462, .adv_w = 480, .box_w = 30, .box_h = 16, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 25702, .adv_w = 480, .box_w = 31, .box_h = 20, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 26012, .adv_w = 336, .box_w = 19, .box_h = 24, .ofs_x = 1, .ofs_y = -3},
{.bitmap_index = 26240, .adv_w = 336, .box_w = 21, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 26492, .adv_w = 384, .box_w = 25, .box_h = 25, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 26805, .adv_w = 480, .box_w = 30, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 27075, .adv_w = 288, .box_w = 18, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 27291, .adv_w = 386, .box_w = 25, .box_h = 16, .ofs_x = 0, .ofs_y = 1}
{.bitmap_index = 11488, .adv_w = 304, .box_w = 15, .box_h = 22, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 11653, .adv_w = 260, .box_w = 14, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 11779, .adv_w = 230, .box_w = 12, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 11887, .adv_w = 230, .box_w = 12, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 11995, .adv_w = 230, .box_w = 12, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 12103, .adv_w = 219, .box_w = 12, .box_h = 19, .ofs_x = 1, .ofs_y = -6},
{.bitmap_index = 12217, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 12334, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 12451, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 12568, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 12685, .adv_w = 107, .box_w = 9, .box_h = 18, .ofs_x = -1, .ofs_y = 0},
{.bitmap_index = 12766, .adv_w = 107, .box_w = 7, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 12829, .adv_w = 244, .box_w = 14, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 12955, .adv_w = 260, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 13072, .adv_w = 260, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 13189, .adv_w = 410, .box_w = 24, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 13345, .adv_w = 121, .box_w = 5, .box_h = 5, .ofs_x = 1, .ofs_y = 4},
{.bitmap_index = 13358, .adv_w = 384, .box_w = 24, .box_h = 25, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 13658, .adv_w = 384, .box_w = 24, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 13874, .adv_w = 384, .box_w = 24, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 14138, .adv_w = 384, .box_w = 24, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 14354, .adv_w = 264, .box_w = 17, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 14507, .adv_w = 384, .box_w = 24, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 14795, .adv_w = 384, .box_w = 24, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 15083, .adv_w = 432, .box_w = 27, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 15380, .adv_w = 384, .box_w = 24, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 15668, .adv_w = 432, .box_w = 27, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 15911, .adv_w = 384, .box_w = 24, .box_h = 26, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 16223, .adv_w = 192, .box_w = 12, .box_h = 19, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 16337, .adv_w = 288, .box_w = 18, .box_h = 19, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 16508, .adv_w = 432, .box_w = 27, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 16832, .adv_w = 384, .box_w = 24, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 17048, .adv_w = 264, .box_w = 17, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 17252, .adv_w = 336, .box_w = 15, .box_h = 22, .ofs_x = 3, .ofs_y = -2},
{.bitmap_index = 17417, .adv_w = 336, .box_w = 21, .box_h = 26, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 17690, .adv_w = 336, .box_w = 21, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 17921, .adv_w = 336, .box_w = 21, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 18152, .adv_w = 336, .box_w = 15, .box_h = 22, .ofs_x = 3, .ofs_y = -2},
{.bitmap_index = 18317, .adv_w = 336, .box_w = 23, .box_h = 22, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 18570, .adv_w = 240, .box_w = 13, .box_h = 22, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 18713, .adv_w = 240, .box_w = 13, .box_h = 22, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 18856, .adv_w = 336, .box_w = 21, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 19087, .adv_w = 336, .box_w = 21, .box_h = 6, .ofs_x = 0, .ofs_y = 6},
{.bitmap_index = 19150, .adv_w = 432, .box_w = 27, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 19393, .adv_w = 480, .box_w = 31, .box_h = 24, .ofs_x = -1, .ofs_y = -3},
{.bitmap_index = 19765, .adv_w = 432, .box_w = 29, .box_h = 24, .ofs_x = -1, .ofs_y = -3},
{.bitmap_index = 20113, .adv_w = 384, .box_w = 24, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 20377, .adv_w = 336, .box_w = 21, .box_h = 14, .ofs_x = 0, .ofs_y = 2},
{.bitmap_index = 20524, .adv_w = 336, .box_w = 21, .box_h = 14, .ofs_x = 0, .ofs_y = 2},
{.bitmap_index = 20671, .adv_w = 480, .box_w = 31, .box_h = 19, .ofs_x = -1, .ofs_y = -1},
{.bitmap_index = 20966, .adv_w = 384, .box_w = 24, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 21182, .adv_w = 384, .box_w = 24, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 21470, .adv_w = 384, .box_w = 25, .box_h = 25, .ofs_x = -1, .ofs_y = -3},
{.bitmap_index = 21783, .adv_w = 336, .box_w = 22, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 22025, .adv_w = 336, .box_w = 21, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 22277, .adv_w = 336, .box_w = 21, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 22508, .adv_w = 336, .box_w = 21, .box_h = 20, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 22718, .adv_w = 384, .box_w = 24, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 22934, .adv_w = 240, .box_w = 17, .box_h = 24, .ofs_x = -1, .ofs_y = -3},
{.bitmap_index = 23138, .adv_w = 336, .box_w = 21, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 23390, .adv_w = 336, .box_w = 21, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 23642, .adv_w = 432, .box_w = 27, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 23885, .adv_w = 384, .box_w = 26, .box_h = 26, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 24223, .adv_w = 288, .box_w = 18, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 24439, .adv_w = 480, .box_w = 30, .box_h = 23, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 24784, .adv_w = 480, .box_w = 30, .box_h = 16, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 25024, .adv_w = 480, .box_w = 30, .box_h = 16, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 25264, .adv_w = 480, .box_w = 30, .box_h = 16, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 25504, .adv_w = 480, .box_w = 30, .box_h = 16, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 25744, .adv_w = 480, .box_w = 30, .box_h = 16, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 25984, .adv_w = 480, .box_w = 31, .box_h = 20, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 26294, .adv_w = 336, .box_w = 19, .box_h = 24, .ofs_x = 1, .ofs_y = -3},
{.bitmap_index = 26522, .adv_w = 336, .box_w = 21, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 26774, .adv_w = 384, .box_w = 25, .box_h = 25, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 27087, .adv_w = 480, .box_w = 30, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 27357, .adv_w = 288, .box_w = 18, .box_h = 24, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 27573, .adv_w = 386, .box_w = 25, .box_h = 16, .ofs_x = 0, .ofs_y = 1}
};
/*---------------------
@ -4088,16 +4130,17 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
static const uint16_t unicode_list_1[] = {
0x0, 0x10, 0x14, 0x17, 0x18, 0x19, 0x1a, 0x1b,
0x1e, 0x24, 0x26, 0x29, 0x2c, 0x2f, 0x30, 0x32,
0x34, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3e, 0x3f,
0x46, 0x4c, 0xa3, 0x1f72, 0xef51, 0xef58, 0xef5b, 0xef5c,
0xef5d, 0xef61, 0xef63, 0xef65, 0xef69, 0xef6c, 0xef71, 0xef76,
0xef77, 0xef78, 0xef8e, 0xef93, 0xef98, 0xef9b, 0xef9c, 0xef9d,
0xefa1, 0xefa2, 0xefa3, 0xefa4, 0xefb7, 0xefb8, 0xefbe, 0xefc0,
0xefc1, 0xefc4, 0xefc7, 0xefc8, 0xefc9, 0xefcb, 0xefe3, 0xefe5,
0xf014, 0xf015, 0xf017, 0xf019, 0xf030, 0xf037, 0xf03a, 0xf043,
0xf06c, 0xf074, 0xf0ab, 0xf13b, 0xf190, 0xf191, 0xf192, 0xf193,
0xf194, 0xf1d7, 0xf1e3, 0xf23d, 0xf254, 0xf4aa, 0xf712, 0xf7f2
0x1e, 0x24, 0x26, 0x29, 0x2b, 0x2c, 0x2f, 0x30,
0x32, 0x34, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3e,
0x3f, 0x46, 0x4b, 0x4c, 0xa3, 0x1f72, 0xef51, 0xef58,
0xef5b, 0xef5c, 0xef5d, 0xef61, 0xef63, 0xef65, 0xef69, 0xef6c,
0xef71, 0xef76, 0xef77, 0xef78, 0xef8e, 0xef93, 0xef98, 0xef9b,
0xef9c, 0xef9d, 0xefa1, 0xefa2, 0xefa3, 0xefa4, 0xefb7, 0xefb8,
0xefbe, 0xefc0, 0xefc1, 0xefc4, 0xefc7, 0xefc8, 0xefc9, 0xefcb,
0xefe3, 0xefe5, 0xf014, 0xf015, 0xf017, 0xf019, 0xf030, 0xf037,
0xf03a, 0xf043, 0xf06c, 0xf074, 0xf0ab, 0xf13b, 0xf190, 0xf191,
0xf192, 0xf193, 0xf194, 0xf1d7, 0xf1e3, 0xf23d, 0xf254, 0xf4aa,
0xf712, 0xf7f2
};
/*Collect the unicode lists and glyph_id offsets*/
@ -4109,7 +4152,7 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
},
{
.range_start = 176, .range_length = 63475, .glyph_id_start = 96,
.unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 88, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
.unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 90, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
}
};
@ -4134,16 +4177,17 @@ static const uint8_t kern_left_class_mapping[] =
46, 46, 54, 55, 56, 57, 51, 58,
58, 59, 58, 60, 41, 0, 0, 9,
61, 23, 23, 25, 26, 26, 26, 26,
29, 22, 22, 30, 30, 46, 45, 45,
45, 47, 49, 49, 49, 49, 62, 51,
46, 51, 49, 9, 0, 0, 0, 0,
29, 22, 22, 30, 30, 30, 46, 45,
45, 45, 47, 49, 49, 49, 49, 62,
51, 46, 51, 51, 49, 9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0,
0, 0
};
/*Map glyph_ids to kern right classes*/
@ -4162,16 +4206,17 @@ static const uint8_t kern_right_class_mapping[] =
39, 42, 39, 42, 43, 44, 45, 46,
46, 47, 46, 48, 0, 0, 35, 9,
49, 24, 24, 23, 25, 25, 25, 25,
25, 23, 23, 28, 28, 38, 37, 37,
37, 39, 39, 39, 39, 39, 50, 51,
39, 45, 39, 9, 0, 0, 0, 0,
25, 23, 23, 28, 28, 28, 38, 37,
37, 37, 39, 39, 39, 39, 39, 50,
51, 39, 45, 45, 39, 9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0,
0, 0
};
/*Kern values between classes*/

View File

@ -1,7 +1,7 @@
/*******************************************************************************
* Size: 28 px
* Bpp: 4
* Opts: --no-compress --no-prefilter --bpp 4 --size 28 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFC,0x153 --font FontAwesome5-Solid+Brands+Regular.woff -r 61441,61448,61451,61452,61452,61453,61457,61459,61461,61465,61468,61473,61478,61479,61480,61502,61507,61512,61515,61516,61517,61521,61522,61523,61524,61543,61544,61550,61552,61553,61556,61559,61560,61561,61563,61587,61589,61636,61637,61639,61641,61664,61671,61674,61683,61724,61732,61787,61931,62016,62017,62018,62019,62020,62087,62099,62212,62189,62810,63426,63650 --format lvgl -o lv_font_montserrat_28.c --force-fast-kern-format
* Opts: --no-compress --no-prefilter --bpp 4 --size 28 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDB,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFB,0xFC,0x153 --font FontAwesome5-Solid+Brands+Regular.woff -r 61441,61448,61451,61452,61452,61453,61457,61459,61461,61465,61468,61473,61478,61479,61480,61502,61507,61512,61515,61516,61517,61521,61522,61523,61524,61543,61544,61550,61552,61553,61556,61559,61560,61561,61563,61587,61589,61636,61637,61639,61641,61664,61671,61674,61683,61724,61732,61787,61931,62016,62017,62018,62019,62020,62087,62099,62212,62189,62810,63426,63650 --format lvgl -o lv_font_montserrat_28.c --force-fast-kern-format
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
@ -2188,6 +2188,37 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
0x0, 0x0, 0x6, 0xae, 0xff, 0xeb, 0x60, 0x0,
0x0,
/* U+00DB "Û" */
0x0, 0x0, 0x0, 0xb, 0xff, 0xd1, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xbf, 0xdb, 0xfd, 0x10,
0x0, 0x0, 0x0, 0x0, 0x1c, 0xfb, 0x0, 0x9f,
0xe2, 0x0, 0x0, 0x0, 0x0, 0x58, 0x60, 0x0,
0x5, 0x86, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xf9, 0x0,
0x0, 0x0, 0x0, 0x0, 0x6f, 0xf5, 0x3f, 0xf9,
0x0, 0x0, 0x0, 0x0, 0x0, 0x6f, 0xf5, 0x3f,
0xf9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6f, 0xf5,
0x3f, 0xf9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6f,
0xf5, 0x3f, 0xf9, 0x0, 0x0, 0x0, 0x0, 0x0,
0x6f, 0xf5, 0x3f, 0xf9, 0x0, 0x0, 0x0, 0x0,
0x0, 0x6f, 0xf5, 0x3f, 0xf9, 0x0, 0x0, 0x0,
0x0, 0x0, 0x6f, 0xf5, 0x3f, 0xf9, 0x0, 0x0,
0x0, 0x0, 0x0, 0x6f, 0xf5, 0x3f, 0xf9, 0x0,
0x0, 0x0, 0x0, 0x0, 0x6f, 0xf5, 0x3f, 0xf9,
0x0, 0x0, 0x0, 0x0, 0x0, 0x6f, 0xf5, 0x3f,
0xf9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6f, 0xf5,
0x3f, 0xf9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6f,
0xf5, 0x2f, 0xfa, 0x0, 0x0, 0x0, 0x0, 0x0,
0x7f, 0xf4, 0xf, 0xfd, 0x0, 0x0, 0x0, 0x0,
0x0, 0xaf, 0xf2, 0xc, 0xff, 0x20, 0x0, 0x0,
0x0, 0x0, 0xef, 0xe0, 0x7, 0xff, 0xa0, 0x0,
0x0, 0x0, 0x7, 0xff, 0x90, 0x0, 0xef, 0xf9,
0x0, 0x0, 0x0, 0x7f, 0xff, 0x20, 0x0, 0x4f,
0xff, 0xea, 0x88, 0xae, 0xff, 0xf5, 0x0, 0x0,
0x3, 0xef, 0xff, 0xff, 0xff, 0xfe, 0x40, 0x0,
0x0, 0x0, 0x6, 0xae, 0xff, 0xeb, 0x60, 0x0,
0x0,
/* U+00DC "Ü" */
0x0, 0x0, 0x6, 0xd6, 0x0, 0x4d, 0x80, 0x0,
0x0, 0x0, 0x0, 0xe, 0xfd, 0x0, 0xbf, 0xf1,
@ -2467,6 +2498,28 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
0x0, 0x1b, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0,
0x0, 0x0, 0x4a, 0xdf, 0xed, 0x92, 0x0, 0x0,
/* U+00FB "û" */
0x0, 0x0, 0x6, 0xff, 0xf3, 0x0, 0x0, 0x0,
0x0, 0x5, 0xff, 0xcf, 0xf3, 0x0, 0x0, 0x0,
0x5, 0xff, 0x50, 0x7f, 0xf3, 0x0, 0x0, 0x2,
0xcc, 0x30, 0x0, 0x5c, 0xb1, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x9f, 0xf1, 0x0,
0x0, 0x0, 0x5, 0xff, 0x69, 0xff, 0x10, 0x0,
0x0, 0x0, 0x5f, 0xf6, 0x9f, 0xf1, 0x0, 0x0,
0x0, 0x5, 0xff, 0x69, 0xff, 0x10, 0x0, 0x0,
0x0, 0x5f, 0xf6, 0x9f, 0xf1, 0x0, 0x0, 0x0,
0x5, 0xff, 0x69, 0xff, 0x10, 0x0, 0x0, 0x0,
0x5f, 0xf6, 0x9f, 0xf1, 0x0, 0x0, 0x0, 0x5,
0xff, 0x69, 0xff, 0x10, 0x0, 0x0, 0x0, 0x5f,
0xf6, 0x9f, 0xf1, 0x0, 0x0, 0x0, 0x5, 0xff,
0x68, 0xff, 0x30, 0x0, 0x0, 0x0, 0x8f, 0xf6,
0x5f, 0xf7, 0x0, 0x0, 0x0, 0xe, 0xff, 0x61,
0xff, 0xe2, 0x0, 0x0, 0xa, 0xff, 0xf6, 0x8,
0xff, 0xe8, 0x44, 0x6d, 0xff, 0xff, 0x60, 0xa,
0xff, 0xff, 0xff, 0xfe, 0x5f, 0xf6, 0x0, 0x4,
0xae, 0xfe, 0xc7, 0x2, 0xff, 0x60,
/* U+00FC "ü" */
0x0, 0x3, 0xeb, 0x0, 0x1d, 0xd1, 0x0, 0x0,
0x0, 0x9f, 0xf2, 0x6, 0xff, 0x60, 0x0, 0x0,
@ -5245,81 +5298,83 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
{.bitmap_index = 14784, .adv_w = 376, .box_w = 22, .box_h = 25, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 15059, .adv_w = 354, .box_w = 18, .box_h = 25, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 15284, .adv_w = 354, .box_w = 18, .box_h = 25, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 15509, .adv_w = 303, .box_w = 16, .box_h = 21, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 15677, .adv_w = 268, .box_w = 14, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 15824, .adv_w = 268, .box_w = 14, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 15971, .adv_w = 268, .box_w = 14, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 16118, .adv_w = 256, .box_w = 15, .box_h = 21, .ofs_x = 1, .ofs_y = -6},
{.bitmap_index = 16276, .adv_w = 274, .box_w = 15, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 16434, .adv_w = 274, .box_w = 15, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 16592, .adv_w = 274, .box_w = 15, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 16750, .adv_w = 274, .box_w = 15, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 16908, .adv_w = 125, .box_w = 10, .box_h = 21, .ofs_x = -1, .ofs_y = 0},
{.bitmap_index = 17013, .adv_w = 125, .box_w = 8, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 17097, .adv_w = 284, .box_w = 16, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 17265, .adv_w = 303, .box_w = 15, .box_h = 21, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 17423, .adv_w = 478, .box_w = 28, .box_h = 15, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 17633, .adv_w = 141, .box_w = 6, .box_h = 6, .ofs_x = 1, .ofs_y = 5},
{.bitmap_index = 17651, .adv_w = 448, .box_w = 28, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 18057, .adv_w = 448, .box_w = 28, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 18351, .adv_w = 448, .box_w = 28, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 18701, .adv_w = 448, .box_w = 28, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 18995, .adv_w = 308, .box_w = 20, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 19205, .adv_w = 448, .box_w = 28, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 19611, .adv_w = 448, .box_w = 27, .box_h = 29, .ofs_x = 1, .ofs_y = -4},
{.bitmap_index = 20003, .adv_w = 504, .box_w = 32, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 20403, .adv_w = 448, .box_w = 28, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 20809, .adv_w = 504, .box_w = 32, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 21145, .adv_w = 448, .box_w = 28, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 21551, .adv_w = 224, .box_w = 14, .box_h = 23, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 21712, .adv_w = 336, .box_w = 21, .box_h = 23, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 21954, .adv_w = 504, .box_w = 32, .box_h = 27, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 22386, .adv_w = 448, .box_w = 28, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 22680, .adv_w = 308, .box_w = 20, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 22970, .adv_w = 392, .box_w = 18, .box_h = 26, .ofs_x = 3, .ofs_y = -3},
{.bitmap_index = 23204, .adv_w = 392, .box_w = 25, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 23567, .adv_w = 392, .box_w = 25, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 23880, .adv_w = 392, .box_w = 25, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 24193, .adv_w = 392, .box_w = 18, .box_h = 26, .ofs_x = 3, .ofs_y = -3},
{.bitmap_index = 24427, .adv_w = 392, .box_w = 26, .box_h = 25, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 24752, .adv_w = 280, .box_w = 16, .box_h = 25, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 24952, .adv_w = 280, .box_w = 16, .box_h = 25, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 25152, .adv_w = 392, .box_w = 25, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 25465, .adv_w = 392, .box_w = 25, .box_h = 7, .ofs_x = 0, .ofs_y = 7},
{.bitmap_index = 25553, .adv_w = 504, .box_w = 32, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 25889, .adv_w = 560, .box_w = 35, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 26397, .adv_w = 504, .box_w = 33, .box_h = 29, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 26876, .adv_w = 448, .box_w = 28, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 27226, .adv_w = 392, .box_w = 25, .box_h = 15, .ofs_x = 0, .ofs_y = 3},
{.bitmap_index = 27414, .adv_w = 392, .box_w = 25, .box_h = 15, .ofs_x = 0, .ofs_y = 3},
{.bitmap_index = 27602, .adv_w = 560, .box_w = 35, .box_h = 22, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 27987, .adv_w = 448, .box_w = 28, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 28281, .adv_w = 448, .box_w = 28, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 28687, .adv_w = 448, .box_w = 29, .box_h = 29, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 29108, .adv_w = 392, .box_w = 25, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 29421, .adv_w = 392, .box_w = 25, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 29784, .adv_w = 392, .box_w = 25, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 30097, .adv_w = 392, .box_w = 25, .box_h = 23, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 30385, .adv_w = 448, .box_w = 28, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 30679, .adv_w = 280, .box_w = 19, .box_h = 29, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 30955, .adv_w = 392, .box_w = 25, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 31318, .adv_w = 392, .box_w = 25, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 31681, .adv_w = 504, .box_w = 32, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 32017, .adv_w = 448, .box_w = 30, .box_h = 29, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 32452, .adv_w = 336, .box_w = 21, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 32757, .adv_w = 560, .box_w = 35, .box_h = 26, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 33212, .adv_w = 560, .box_w = 35, .box_h = 19, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 33545, .adv_w = 560, .box_w = 35, .box_h = 19, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 33878, .adv_w = 560, .box_w = 35, .box_h = 19, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 34211, .adv_w = 560, .box_w = 35, .box_h = 19, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 34544, .adv_w = 560, .box_w = 35, .box_h = 19, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 34877, .adv_w = 560, .box_w = 36, .box_h = 23, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 35291, .adv_w = 392, .box_w = 22, .box_h = 29, .ofs_x = 1, .ofs_y = -4},
{.bitmap_index = 35610, .adv_w = 392, .box_w = 25, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 35973, .adv_w = 448, .box_w = 29, .box_h = 29, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 36394, .adv_w = 560, .box_w = 35, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 36762, .adv_w = 336, .box_w = 21, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 37067, .adv_w = 451, .box_w = 29, .box_h = 19, .ofs_x = 0, .ofs_y = 1}
{.bitmap_index = 15509, .adv_w = 354, .box_w = 18, .box_h = 25, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 15734, .adv_w = 303, .box_w = 16, .box_h = 21, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 15902, .adv_w = 268, .box_w = 14, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 16049, .adv_w = 268, .box_w = 14, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 16196, .adv_w = 268, .box_w = 14, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 16343, .adv_w = 256, .box_w = 15, .box_h = 21, .ofs_x = 1, .ofs_y = -6},
{.bitmap_index = 16501, .adv_w = 274, .box_w = 15, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 16659, .adv_w = 274, .box_w = 15, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 16817, .adv_w = 274, .box_w = 15, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 16975, .adv_w = 274, .box_w = 15, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 17133, .adv_w = 125, .box_w = 10, .box_h = 21, .ofs_x = -1, .ofs_y = 0},
{.bitmap_index = 17238, .adv_w = 125, .box_w = 8, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 17322, .adv_w = 284, .box_w = 16, .box_h = 21, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 17490, .adv_w = 303, .box_w = 15, .box_h = 21, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 17648, .adv_w = 303, .box_w = 15, .box_h = 21, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 17806, .adv_w = 478, .box_w = 28, .box_h = 15, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 18016, .adv_w = 141, .box_w = 6, .box_h = 6, .ofs_x = 1, .ofs_y = 5},
{.bitmap_index = 18034, .adv_w = 448, .box_w = 28, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 18440, .adv_w = 448, .box_w = 28, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 18734, .adv_w = 448, .box_w = 28, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 19084, .adv_w = 448, .box_w = 28, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 19378, .adv_w = 308, .box_w = 20, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 19588, .adv_w = 448, .box_w = 28, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 19994, .adv_w = 448, .box_w = 27, .box_h = 29, .ofs_x = 1, .ofs_y = -4},
{.bitmap_index = 20386, .adv_w = 504, .box_w = 32, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 20786, .adv_w = 448, .box_w = 28, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 21192, .adv_w = 504, .box_w = 32, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 21528, .adv_w = 448, .box_w = 28, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 21934, .adv_w = 224, .box_w = 14, .box_h = 23, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 22095, .adv_w = 336, .box_w = 21, .box_h = 23, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 22337, .adv_w = 504, .box_w = 32, .box_h = 27, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 22769, .adv_w = 448, .box_w = 28, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 23063, .adv_w = 308, .box_w = 20, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 23353, .adv_w = 392, .box_w = 18, .box_h = 26, .ofs_x = 3, .ofs_y = -3},
{.bitmap_index = 23587, .adv_w = 392, .box_w = 25, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 23950, .adv_w = 392, .box_w = 25, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 24263, .adv_w = 392, .box_w = 25, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 24576, .adv_w = 392, .box_w = 18, .box_h = 26, .ofs_x = 3, .ofs_y = -3},
{.bitmap_index = 24810, .adv_w = 392, .box_w = 26, .box_h = 25, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 25135, .adv_w = 280, .box_w = 16, .box_h = 25, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 25335, .adv_w = 280, .box_w = 16, .box_h = 25, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 25535, .adv_w = 392, .box_w = 25, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 25848, .adv_w = 392, .box_w = 25, .box_h = 7, .ofs_x = 0, .ofs_y = 7},
{.bitmap_index = 25936, .adv_w = 504, .box_w = 32, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 26272, .adv_w = 560, .box_w = 35, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 26780, .adv_w = 504, .box_w = 33, .box_h = 29, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 27259, .adv_w = 448, .box_w = 28, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 27609, .adv_w = 392, .box_w = 25, .box_h = 15, .ofs_x = 0, .ofs_y = 3},
{.bitmap_index = 27797, .adv_w = 392, .box_w = 25, .box_h = 15, .ofs_x = 0, .ofs_y = 3},
{.bitmap_index = 27985, .adv_w = 560, .box_w = 35, .box_h = 22, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 28370, .adv_w = 448, .box_w = 28, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 28664, .adv_w = 448, .box_w = 28, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 29070, .adv_w = 448, .box_w = 29, .box_h = 29, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 29491, .adv_w = 392, .box_w = 25, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 29804, .adv_w = 392, .box_w = 25, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 30167, .adv_w = 392, .box_w = 25, .box_h = 25, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 30480, .adv_w = 392, .box_w = 25, .box_h = 23, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 30768, .adv_w = 448, .box_w = 28, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 31062, .adv_w = 280, .box_w = 19, .box_h = 29, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 31338, .adv_w = 392, .box_w = 25, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 31701, .adv_w = 392, .box_w = 25, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 32064, .adv_w = 504, .box_w = 32, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 32400, .adv_w = 448, .box_w = 30, .box_h = 29, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 32835, .adv_w = 336, .box_w = 21, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 33140, .adv_w = 560, .box_w = 35, .box_h = 26, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 33595, .adv_w = 560, .box_w = 35, .box_h = 19, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 33928, .adv_w = 560, .box_w = 35, .box_h = 19, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 34261, .adv_w = 560, .box_w = 35, .box_h = 19, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 34594, .adv_w = 560, .box_w = 35, .box_h = 19, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 34927, .adv_w = 560, .box_w = 35, .box_h = 19, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 35260, .adv_w = 560, .box_w = 36, .box_h = 23, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 35674, .adv_w = 392, .box_w = 22, .box_h = 29, .ofs_x = 1, .ofs_y = -4},
{.bitmap_index = 35993, .adv_w = 392, .box_w = 25, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 36356, .adv_w = 448, .box_w = 29, .box_h = 29, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 36777, .adv_w = 560, .box_w = 35, .box_h = 21, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 37145, .adv_w = 336, .box_w = 21, .box_h = 29, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 37450, .adv_w = 451, .box_w = 29, .box_h = 19, .ofs_x = 0, .ofs_y = 1}
};
/*---------------------
@ -5328,16 +5383,17 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
static const uint16_t unicode_list_1[] = {
0x0, 0x10, 0x14, 0x17, 0x18, 0x19, 0x1a, 0x1b,
0x1e, 0x24, 0x26, 0x29, 0x2c, 0x2f, 0x30, 0x32,
0x34, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3e, 0x3f,
0x46, 0x4c, 0xa3, 0x1f72, 0xef51, 0xef58, 0xef5b, 0xef5c,
0xef5d, 0xef61, 0xef63, 0xef65, 0xef69, 0xef6c, 0xef71, 0xef76,
0xef77, 0xef78, 0xef8e, 0xef93, 0xef98, 0xef9b, 0xef9c, 0xef9d,
0xefa1, 0xefa2, 0xefa3, 0xefa4, 0xefb7, 0xefb8, 0xefbe, 0xefc0,
0xefc1, 0xefc4, 0xefc7, 0xefc8, 0xefc9, 0xefcb, 0xefe3, 0xefe5,
0xf014, 0xf015, 0xf017, 0xf019, 0xf030, 0xf037, 0xf03a, 0xf043,
0xf06c, 0xf074, 0xf0ab, 0xf13b, 0xf190, 0xf191, 0xf192, 0xf193,
0xf194, 0xf1d7, 0xf1e3, 0xf23d, 0xf254, 0xf4aa, 0xf712, 0xf7f2
0x1e, 0x24, 0x26, 0x29, 0x2b, 0x2c, 0x2f, 0x30,
0x32, 0x34, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3e,
0x3f, 0x46, 0x4b, 0x4c, 0xa3, 0x1f72, 0xef51, 0xef58,
0xef5b, 0xef5c, 0xef5d, 0xef61, 0xef63, 0xef65, 0xef69, 0xef6c,
0xef71, 0xef76, 0xef77, 0xef78, 0xef8e, 0xef93, 0xef98, 0xef9b,
0xef9c, 0xef9d, 0xefa1, 0xefa2, 0xefa3, 0xefa4, 0xefb7, 0xefb8,
0xefbe, 0xefc0, 0xefc1, 0xefc4, 0xefc7, 0xefc8, 0xefc9, 0xefcb,
0xefe3, 0xefe5, 0xf014, 0xf015, 0xf017, 0xf019, 0xf030, 0xf037,
0xf03a, 0xf043, 0xf06c, 0xf074, 0xf0ab, 0xf13b, 0xf190, 0xf191,
0xf192, 0xf193, 0xf194, 0xf1d7, 0xf1e3, 0xf23d, 0xf254, 0xf4aa,
0xf712, 0xf7f2
};
/*Collect the unicode lists and glyph_id offsets*/
@ -5349,7 +5405,7 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
},
{
.range_start = 176, .range_length = 63475, .glyph_id_start = 96,
.unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 88, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
.unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 90, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
}
};
@ -5374,16 +5430,17 @@ static const uint8_t kern_left_class_mapping[] =
46, 46, 54, 55, 56, 57, 51, 58,
58, 59, 58, 60, 41, 0, 0, 9,
61, 23, 23, 25, 26, 26, 26, 26,
29, 22, 22, 30, 30, 46, 45, 45,
45, 47, 49, 49, 49, 49, 62, 51,
46, 51, 49, 9, 0, 0, 0, 0,
29, 22, 22, 30, 30, 30, 46, 45,
45, 45, 47, 49, 49, 49, 49, 62,
51, 46, 51, 51, 49, 9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0,
0, 0
};
/*Map glyph_ids to kern right classes*/
@ -5402,16 +5459,17 @@ static const uint8_t kern_right_class_mapping[] =
39, 42, 39, 42, 43, 44, 45, 46,
46, 47, 46, 48, 0, 0, 35, 9,
49, 24, 24, 23, 25, 25, 25, 25,
25, 23, 23, 28, 28, 38, 37, 37,
37, 39, 39, 39, 39, 39, 50, 51,
39, 45, 39, 9, 0, 0, 0, 0,
25, 23, 23, 28, 28, 28, 38, 37,
37, 37, 39, 39, 39, 39, 39, 50,
51, 39, 45, 45, 39, 9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0,
0, 0
};
/*Kern values between classes*/

View File

@ -1,7 +1,7 @@
/*******************************************************************************
* Size: 30 px
* Bpp: 4
* Opts: --no-compress --no-prefilter --bpp 4 --size 30 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFC,0x153 --font FontAwesome5-Solid+Brands+Regular.woff -r 61441,61448,61451,61452,61452,61453,61457,61459,61461,61465,61468,61473,61478,61479,61480,61502,61507,61512,61515,61516,61517,61521,61522,61523,61524,61543,61544,61550,61552,61553,61556,61559,61560,61561,61563,61587,61589,61636,61637,61639,61641,61664,61671,61674,61683,61724,61732,61787,61931,62016,62017,62018,62019,62020,62087,62099,62212,62189,62810,63426,63650 --format lvgl -o lv_font_montserrat_30.c --force-fast-kern-format
* Opts: --no-compress --no-prefilter --bpp 4 --size 30 --font Montserrat-Medium.ttf -r 0x20-0x7F,0xB0,0x2022,0xC0,0xC4,0xC7,0xC8,0xC9,0xCA,0xCB,0xCE,0xD4,0xD6,0xD9,0xDB,0xDC,0xDF,0xE0,0xE2,0xE4,0xE7-0xEB,0xEE,0xEF,0xF6,0xFB,0xFC,0x153 --font FontAwesome5-Solid+Brands+Regular.woff -r 61441,61448,61451,61452,61452,61453,61457,61459,61461,61465,61468,61473,61478,61479,61480,61502,61507,61512,61515,61516,61517,61521,61522,61523,61524,61543,61544,61550,61552,61553,61556,61559,61560,61561,61563,61587,61589,61636,61637,61639,61641,61664,61671,61674,61683,61724,61732,61787,61931,62016,62017,62018,62019,62020,62087,62099,62212,62189,62810,63426,63650 --format lvgl -o lv_font_montserrat_30.c --force-fast-kern-format
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
@ -2416,6 +2416,41 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
0x0, 0x2, 0x8c, 0xef, 0xfe, 0xa6, 0x0, 0x0,
0x0,
/* U+00DB "Û" */
0x0, 0x0, 0x0, 0x1, 0xdf, 0xfb, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x1, 0xdf, 0xef, 0xfb,
0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xdf, 0xc1,
0x3e, 0xfb, 0x0, 0x0, 0x0, 0x0, 0x1, 0xdf,
0xa0, 0x0, 0x1d, 0xfb, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0xf, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0,
0x3, 0xff, 0xb0, 0xff, 0xf0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x3f, 0xfb, 0xf, 0xff, 0x0, 0x0,
0x0, 0x0, 0x0, 0x3, 0xff, 0xb0, 0xff, 0xf0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xfb, 0xf,
0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff,
0xb0, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x3f, 0xfb, 0xf, 0xff, 0x0, 0x0, 0x0, 0x0,
0x0, 0x3, 0xff, 0xb0, 0xff, 0xf0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x3f, 0xfb, 0xf, 0xff, 0x0,
0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xb0, 0xff,
0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xfb,
0xf, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3,
0xff, 0xb0, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x3f, 0xfb, 0xf, 0xff, 0x0, 0x0, 0x0,
0x0, 0x0, 0x3, 0xff, 0xa0, 0xef, 0xf1, 0x0,
0x0, 0x0, 0x0, 0x0, 0x5f, 0xf9, 0xb, 0xff,
0x50, 0x0, 0x0, 0x0, 0x0, 0x8, 0xff, 0x70,
0x7f, 0xfb, 0x0, 0x0, 0x0, 0x0, 0x0, 0xef,
0xf3, 0x1, 0xff, 0xf5, 0x0, 0x0, 0x0, 0x0,
0x9f, 0xfc, 0x0, 0x8, 0xff, 0xf7, 0x0, 0x0,
0x2, 0xaf, 0xff, 0x40, 0x0, 0xb, 0xff, 0xff,
0xca, 0xbd, 0xff, 0xff, 0x70, 0x0, 0x0, 0x8,
0xff, 0xff, 0xff, 0xff, 0xfe, 0x50, 0x0, 0x0,
0x0, 0x2, 0x8c, 0xef, 0xfe, 0xa6, 0x0, 0x0,
0x0,
/* U+00DC "Ü" */
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x1e, 0xf3, 0x0, 0x7f,
@ -2730,6 +2765,30 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
0xf7, 0x0, 0x0, 0x0, 0x1, 0x7c, 0xef, 0xfc,
0x81, 0x0, 0x0,
/* U+00FB "û" */
0x0, 0x0, 0x0, 0xcf, 0xfd, 0x10, 0x0, 0x0,
0x0, 0x0, 0x1c, 0xfe, 0xdf, 0xe2, 0x0, 0x0,
0x0, 0x1, 0xdf, 0xc1, 0xa, 0xfe, 0x30, 0x0,
0x0, 0xa, 0xc9, 0x0, 0x0, 0x7c, 0xb1, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x6f, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x5f, 0xf8,
0x6f, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x5f, 0xf8,
0x6f, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x5f, 0xf8,
0x6f, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x5f, 0xf8,
0x6f, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x5f, 0xf8,
0x6f, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x5f, 0xf8,
0x6f, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x5f, 0xf8,
0x6f, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x5f, 0xf8,
0x6f, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x5f, 0xf8,
0x6f, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xf8,
0x5f, 0xfa, 0x0, 0x0, 0x0, 0x0, 0xaf, 0xf8,
0x1f, 0xfe, 0x0, 0x0, 0x0, 0x2, 0xff, 0xf8,
0xc, 0xff, 0xa0, 0x0, 0x0, 0x2d, 0xff, 0xf8,
0x3, 0xff, 0xfe, 0x86, 0x7a, 0xff, 0xef, 0xf8,
0x0, 0x5f, 0xff, 0xff, 0xff, 0xfc, 0x4f, 0xf8,
0x0, 0x1, 0x8c, 0xff, 0xeb, 0x50, 0x3f, 0xf8,
/* U+00FC "ü" */
0x0, 0x0, 0xbf, 0x50, 0x3, 0xec, 0x10, 0x0,
0x0, 0x3, 0xff, 0xc0, 0x9, 0xff, 0x50, 0x0,
@ -5902,81 +5961,83 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
{.bitmap_index = 16591, .adv_w = 403, .box_w = 23, .box_h = 27, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 16902, .adv_w = 380, .box_w = 19, .box_h = 27, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 17159, .adv_w = 380, .box_w = 19, .box_h = 27, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 17416, .adv_w = 324, .box_w = 17, .box_h = 22, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 17603, .adv_w = 287, .box_w = 15, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 17768, .adv_w = 287, .box_w = 15, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 17933, .adv_w = 287, .box_w = 15, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 18098, .adv_w = 274, .box_w = 16, .box_h = 23, .ofs_x = 1, .ofs_y = -7},
{.bitmap_index = 18282, .adv_w = 294, .box_w = 17, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 18469, .adv_w = 294, .box_w = 17, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 18656, .adv_w = 294, .box_w = 17, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 18843, .adv_w = 294, .box_w = 17, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 19030, .adv_w = 134, .box_w = 10, .box_h = 22, .ofs_x = -1, .ofs_y = 0},
{.bitmap_index = 19140, .adv_w = 134, .box_w = 8, .box_h = 22, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 19228, .adv_w = 305, .box_w = 17, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 19415, .adv_w = 325, .box_w = 16, .box_h = 22, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 19591, .adv_w = 512, .box_w = 30, .box_h = 16, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 19831, .adv_w = 151, .box_w = 7, .box_h = 6, .ofs_x = 1, .ofs_y = 6},
{.bitmap_index = 19852, .adv_w = 480, .box_w = 31, .box_h = 31, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 20333, .adv_w = 480, .box_w = 30, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 20678, .adv_w = 480, .box_w = 30, .box_h = 27, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 21083, .adv_w = 480, .box_w = 30, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 21428, .adv_w = 330, .box_w = 21, .box_h = 22, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 21659, .adv_w = 480, .box_w = 30, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 22124, .adv_w = 480, .box_w = 30, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 22589, .adv_w = 540, .box_w = 34, .box_h = 27, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 23048, .adv_w = 480, .box_w = 30, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 23513, .adv_w = 540, .box_w = 34, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 23904, .adv_w = 480, .box_w = 30, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 24369, .adv_w = 240, .box_w = 15, .box_h = 24, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 24549, .adv_w = 360, .box_w = 23, .box_h = 24, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 24825, .adv_w = 540, .box_w = 34, .box_h = 29, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 25318, .adv_w = 480, .box_w = 30, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 25663, .adv_w = 330, .box_w = 21, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 25989, .adv_w = 420, .box_w = 20, .box_h = 28, .ofs_x = 3, .ofs_y = -3},
{.bitmap_index = 26269, .adv_w = 420, .box_w = 27, .box_h = 32, .ofs_x = 0, .ofs_y = -5},
{.bitmap_index = 26701, .adv_w = 420, .box_w = 27, .box_h = 27, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 27066, .adv_w = 420, .box_w = 27, .box_h = 27, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 27431, .adv_w = 420, .box_w = 20, .box_h = 28, .ofs_x = 3, .ofs_y = -3},
{.bitmap_index = 27711, .adv_w = 420, .box_w = 28, .box_h = 27, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 28089, .adv_w = 300, .box_w = 17, .box_h = 27, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 28319, .adv_w = 300, .box_w = 17, .box_h = 27, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 28549, .adv_w = 420, .box_w = 27, .box_h = 27, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 28914, .adv_w = 420, .box_w = 27, .box_h = 7, .ofs_x = 0, .ofs_y = 8},
{.bitmap_index = 29009, .adv_w = 540, .box_w = 34, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 29400, .adv_w = 600, .box_w = 38, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 29989, .adv_w = 540, .box_w = 36, .box_h = 31, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 30547, .adv_w = 480, .box_w = 30, .box_h = 28, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 30967, .adv_w = 420, .box_w = 26, .box_h = 17, .ofs_x = 0, .ofs_y = 3},
{.bitmap_index = 31188, .adv_w = 420, .box_w = 26, .box_h = 17, .ofs_x = 0, .ofs_y = 3},
{.bitmap_index = 31409, .adv_w = 600, .box_w = 38, .box_h = 24, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 31865, .adv_w = 480, .box_w = 30, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 32210, .adv_w = 480, .box_w = 30, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 32675, .adv_w = 480, .box_w = 31, .box_h = 31, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 33156, .adv_w = 420, .box_w = 27, .box_h = 27, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 33521, .adv_w = 420, .box_w = 27, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 33940, .adv_w = 420, .box_w = 27, .box_h = 27, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 34305, .adv_w = 420, .box_w = 27, .box_h = 24, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 34629, .adv_w = 480, .box_w = 30, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 34974, .adv_w = 300, .box_w = 20, .box_h = 31, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 35284, .adv_w = 420, .box_w = 27, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 35703, .adv_w = 420, .box_w = 27, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 36122, .adv_w = 540, .box_w = 34, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 36513, .adv_w = 480, .box_w = 32, .box_h = 31, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 37009, .adv_w = 360, .box_w = 23, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 37366, .adv_w = 600, .box_w = 38, .box_h = 28, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 37898, .adv_w = 600, .box_w = 38, .box_h = 20, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 38278, .adv_w = 600, .box_w = 38, .box_h = 20, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 38658, .adv_w = 600, .box_w = 38, .box_h = 20, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 39038, .adv_w = 600, .box_w = 38, .box_h = 20, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 39418, .adv_w = 600, .box_w = 38, .box_h = 20, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 39798, .adv_w = 600, .box_w = 38, .box_h = 24, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 40254, .adv_w = 420, .box_w = 24, .box_h = 31, .ofs_x = 1, .ofs_y = -4},
{.bitmap_index = 40626, .adv_w = 420, .box_w = 27, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 41045, .adv_w = 480, .box_w = 31, .box_h = 31, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 41526, .adv_w = 600, .box_w = 38, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 41963, .adv_w = 360, .box_w = 23, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 42320, .adv_w = 483, .box_w = 31, .box_h = 20, .ofs_x = 0, .ofs_y = 1}
{.bitmap_index = 17416, .adv_w = 380, .box_w = 19, .box_h = 27, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 17673, .adv_w = 324, .box_w = 17, .box_h = 22, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 17860, .adv_w = 287, .box_w = 15, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 18025, .adv_w = 287, .box_w = 15, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 18190, .adv_w = 287, .box_w = 15, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 18355, .adv_w = 274, .box_w = 16, .box_h = 23, .ofs_x = 1, .ofs_y = -7},
{.bitmap_index = 18539, .adv_w = 294, .box_w = 17, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 18726, .adv_w = 294, .box_w = 17, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 18913, .adv_w = 294, .box_w = 17, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 19100, .adv_w = 294, .box_w = 17, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 19287, .adv_w = 134, .box_w = 10, .box_h = 22, .ofs_x = -1, .ofs_y = 0},
{.bitmap_index = 19397, .adv_w = 134, .box_w = 8, .box_h = 22, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 19485, .adv_w = 305, .box_w = 17, .box_h = 22, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 19672, .adv_w = 325, .box_w = 16, .box_h = 22, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 19848, .adv_w = 325, .box_w = 16, .box_h = 22, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 20024, .adv_w = 512, .box_w = 30, .box_h = 16, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 20264, .adv_w = 151, .box_w = 7, .box_h = 6, .ofs_x = 1, .ofs_y = 6},
{.bitmap_index = 20285, .adv_w = 480, .box_w = 31, .box_h = 31, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 20766, .adv_w = 480, .box_w = 30, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 21111, .adv_w = 480, .box_w = 30, .box_h = 27, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 21516, .adv_w = 480, .box_w = 30, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 21861, .adv_w = 330, .box_w = 21, .box_h = 22, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 22092, .adv_w = 480, .box_w = 30, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 22557, .adv_w = 480, .box_w = 30, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 23022, .adv_w = 540, .box_w = 34, .box_h = 27, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 23481, .adv_w = 480, .box_w = 30, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 23946, .adv_w = 540, .box_w = 34, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 24337, .adv_w = 480, .box_w = 30, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 24802, .adv_w = 240, .box_w = 15, .box_h = 24, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 24982, .adv_w = 360, .box_w = 23, .box_h = 24, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 25258, .adv_w = 540, .box_w = 34, .box_h = 29, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 25751, .adv_w = 480, .box_w = 30, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 26096, .adv_w = 330, .box_w = 21, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 26422, .adv_w = 420, .box_w = 20, .box_h = 28, .ofs_x = 3, .ofs_y = -3},
{.bitmap_index = 26702, .adv_w = 420, .box_w = 27, .box_h = 32, .ofs_x = 0, .ofs_y = -5},
{.bitmap_index = 27134, .adv_w = 420, .box_w = 27, .box_h = 27, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 27499, .adv_w = 420, .box_w = 27, .box_h = 27, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 27864, .adv_w = 420, .box_w = 20, .box_h = 28, .ofs_x = 3, .ofs_y = -3},
{.bitmap_index = 28144, .adv_w = 420, .box_w = 28, .box_h = 27, .ofs_x = -1, .ofs_y = -2},
{.bitmap_index = 28522, .adv_w = 300, .box_w = 17, .box_h = 27, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 28752, .adv_w = 300, .box_w = 17, .box_h = 27, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 28982, .adv_w = 420, .box_w = 27, .box_h = 27, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 29347, .adv_w = 420, .box_w = 27, .box_h = 7, .ofs_x = 0, .ofs_y = 8},
{.bitmap_index = 29442, .adv_w = 540, .box_w = 34, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 29833, .adv_w = 600, .box_w = 38, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 30422, .adv_w = 540, .box_w = 36, .box_h = 31, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 30980, .adv_w = 480, .box_w = 30, .box_h = 28, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 31400, .adv_w = 420, .box_w = 26, .box_h = 17, .ofs_x = 0, .ofs_y = 3},
{.bitmap_index = 31621, .adv_w = 420, .box_w = 26, .box_h = 17, .ofs_x = 0, .ofs_y = 3},
{.bitmap_index = 31842, .adv_w = 600, .box_w = 38, .box_h = 24, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 32298, .adv_w = 480, .box_w = 30, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 32643, .adv_w = 480, .box_w = 30, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 33108, .adv_w = 480, .box_w = 31, .box_h = 31, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 33589, .adv_w = 420, .box_w = 27, .box_h = 27, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 33954, .adv_w = 420, .box_w = 27, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 34373, .adv_w = 420, .box_w = 27, .box_h = 27, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 34738, .adv_w = 420, .box_w = 27, .box_h = 24, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 35062, .adv_w = 480, .box_w = 30, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 35407, .adv_w = 300, .box_w = 20, .box_h = 31, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 35717, .adv_w = 420, .box_w = 27, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 36136, .adv_w = 420, .box_w = 27, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 36555, .adv_w = 540, .box_w = 34, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 36946, .adv_w = 480, .box_w = 32, .box_h = 31, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 37442, .adv_w = 360, .box_w = 23, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 37799, .adv_w = 600, .box_w = 38, .box_h = 28, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 38331, .adv_w = 600, .box_w = 38, .box_h = 20, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 38711, .adv_w = 600, .box_w = 38, .box_h = 20, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 39091, .adv_w = 600, .box_w = 38, .box_h = 20, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 39471, .adv_w = 600, .box_w = 38, .box_h = 20, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 39851, .adv_w = 600, .box_w = 38, .box_h = 20, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 40231, .adv_w = 600, .box_w = 38, .box_h = 24, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 40687, .adv_w = 420, .box_w = 24, .box_h = 31, .ofs_x = 1, .ofs_y = -4},
{.bitmap_index = 41059, .adv_w = 420, .box_w = 27, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 41478, .adv_w = 480, .box_w = 31, .box_h = 31, .ofs_x = -1, .ofs_y = -4},
{.bitmap_index = 41959, .adv_w = 600, .box_w = 38, .box_h = 23, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 42396, .adv_w = 360, .box_w = 23, .box_h = 31, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 42753, .adv_w = 483, .box_w = 31, .box_h = 20, .ofs_x = 0, .ofs_y = 1}
};
/*---------------------
@ -5985,16 +6046,17 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
static const uint16_t unicode_list_1[] = {
0x0, 0x10, 0x14, 0x17, 0x18, 0x19, 0x1a, 0x1b,
0x1e, 0x24, 0x26, 0x29, 0x2c, 0x2f, 0x30, 0x32,
0x34, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3e, 0x3f,
0x46, 0x4c, 0xa3, 0x1f72, 0xef51, 0xef58, 0xef5b, 0xef5c,
0xef5d, 0xef61, 0xef63, 0xef65, 0xef69, 0xef6c, 0xef71, 0xef76,
0xef77, 0xef78, 0xef8e, 0xef93, 0xef98, 0xef9b, 0xef9c, 0xef9d,
0xefa1, 0xefa2, 0xefa3, 0xefa4, 0xefb7, 0xefb8, 0xefbe, 0xefc0,
0xefc1, 0xefc4, 0xefc7, 0xefc8, 0xefc9, 0xefcb, 0xefe3, 0xefe5,
0xf014, 0xf015, 0xf017, 0xf019, 0xf030, 0xf037, 0xf03a, 0xf043,
0xf06c, 0xf074, 0xf0ab, 0xf13b, 0xf190, 0xf191, 0xf192, 0xf193,
0xf194, 0xf1d7, 0xf1e3, 0xf23d, 0xf254, 0xf4aa, 0xf712, 0xf7f2
0x1e, 0x24, 0x26, 0x29, 0x2b, 0x2c, 0x2f, 0x30,
0x32, 0x34, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3e,
0x3f, 0x46, 0x4b, 0x4c, 0xa3, 0x1f72, 0xef51, 0xef58,
0xef5b, 0xef5c, 0xef5d, 0xef61, 0xef63, 0xef65, 0xef69, 0xef6c,
0xef71, 0xef76, 0xef77, 0xef78, 0xef8e, 0xef93, 0xef98, 0xef9b,
0xef9c, 0xef9d, 0xefa1, 0xefa2, 0xefa3, 0xefa4, 0xefb7, 0xefb8,
0xefbe, 0xefc0, 0xefc1, 0xefc4, 0xefc7, 0xefc8, 0xefc9, 0xefcb,
0xefe3, 0xefe5, 0xf014, 0xf015, 0xf017, 0xf019, 0xf030, 0xf037,
0xf03a, 0xf043, 0xf06c, 0xf074, 0xf0ab, 0xf13b, 0xf190, 0xf191,
0xf192, 0xf193, 0xf194, 0xf1d7, 0xf1e3, 0xf23d, 0xf254, 0xf4aa,
0xf712, 0xf7f2
};
/*Collect the unicode lists and glyph_id offsets*/
@ -6006,7 +6068,7 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
},
{
.range_start = 176, .range_length = 63475, .glyph_id_start = 96,
.unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 88, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
.unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 90, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
}
};
@ -6031,16 +6093,17 @@ static const uint8_t kern_left_class_mapping[] =
46, 46, 54, 55, 56, 57, 51, 58,
58, 59, 58, 60, 41, 0, 0, 9,
61, 23, 23, 25, 26, 26, 26, 26,
29, 22, 22, 30, 30, 46, 45, 45,
45, 47, 49, 49, 49, 49, 62, 51,
46, 51, 49, 9, 0, 0, 0, 0,
29, 22, 22, 30, 30, 30, 46, 45,
45, 45, 47, 49, 49, 49, 49, 62,
51, 46, 51, 51, 49, 9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0,
0, 0
};
/*Map glyph_ids to kern right classes*/
@ -6059,16 +6122,17 @@ static const uint8_t kern_right_class_mapping[] =
39, 42, 39, 42, 43, 44, 45, 46,
46, 47, 46, 48, 0, 0, 35, 9,
49, 24, 24, 23, 25, 25, 25, 25,
25, 23, 23, 28, 28, 38, 37, 37,
37, 39, 39, 39, 39, 39, 50, 51,
39, 45, 39, 9, 0, 0, 0, 0,
25, 23, 23, 28, 28, 28, 38, 37,
37, 37, 39, 39, 39, 39, 39, 50,
51, 39, 45, 45, 39, 9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0,
0, 0
};
/*Kern values between classes*/

View File

@ -3,6 +3,21 @@
#include "menu_screen.h"
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
const char * const MONTH[] =
{
"JAN",
"FÉV",
"MAR",
"AVR",
"MAI",
"JUI",
"JUL",
"AOÛ",
"SEP",
"OCT",
"NOV",
"DÉC",
};
static lv_obj_t *_create_altimeter_display(AltimeterScreen_t * const altimeterScreen);
static void _create_pressure_display(AltimeterScreen_t * const altimeterScreen);
@ -10,8 +25,10 @@ static void _create_altitude_display(AltimeterScreen_t * const altimeterScreen);
static void _create_altitude_setting_display(AltimeterScreen_t * const altimeterScreen);
static void _update_min_and_max_pressure_data(AltimeterScreen_t * const altimeterScreen, float minPressure, float maxPressure);
static void _update_pressure_chart(AltimeterScreen_t * const altimeterScreen);
static void _update_pressure_info(AltimeterScreen_t * const altimeterScreen);
static void _update_altitude_info(AltimeterScreen_t * const altimeterScreen);
static void _update_temperature_info(AltimeterScreen_t * const altimeterScreen, float temperature);
static void _update_date_time_info(AltimeterScreen_t * const altimeterScreen);
static void gesture_event_cb(lv_event_t *e)
{
@ -105,10 +122,19 @@ static void altitude_display_cleanup_event_cb(lv_event_t *e)
altimeterScreen->altitudeUpdateTimer = NULL;
}
if(altimeterScreen->dateTimeUpdateTimer)
{
lv_timer_del(altimeterScreen->dateTimeUpdateTimer);
altimeterScreen->dateTimeUpdateTimer = NULL;
}
altimeterScreen->altitudeValue.value = NULL;
altimeterScreen->altitudeValue.unit = NULL;
altimeterScreen->vsiValue.value_unit = NULL;
altimeterScreen->temperatureValue.value = NULL;
altimeterScreen->dateTimeValue.timeLabel = NULL;
altimeterScreen->dateTimeValue.monthLabel = NULL;
altimeterScreen->dateTimeValue.dayLabel = NULL;
LV_LOG_USER("Altitude display cleanup");
}
@ -126,27 +152,7 @@ static void altitude_setting_display_cleanup_event_cb(lv_event_t *e)
static void pressure_update_timer_cb(lv_timer_t *timer)
{
AltimeterScreen_t *altimeterScreen = timer->user_data;
if(altimeterScreen->altimeterScreenMeasurementCb)
{
LV_LOG_USER("Updating pressure measurements");
float pressure;
/* We don't need to retrieve the temperature nor the altitude in this view */
altimeterScreen->altimeterScreenMeasurementCb(NULL, &pressure, NULL);
sprintf(altimeterScreen->pressureValue.value_text, "%.2f", pressure);
if(altimeterScreen->pressureValue.value)
{
lv_label_set_text_static(altimeterScreen->pressureValue.value, altimeterScreen->pressureValue.value_text);
}
//Mock up part needs to be changed on embedded target
altimeter_screen_shift_chart_pressure_measurement(altimeterScreen, pressure);
}
else
{
LV_LOG_USER("altimeterScreenMeasurementCb is NULL, be sure to register a callback !");
}
_update_pressure_info(altimeterScreen);
}
static void altitude_update_timer_cb(lv_timer_t *timer)
@ -176,6 +182,12 @@ static void altitude_update_timer_cb(lv_timer_t *timer)
}
}
static void date_time_update_timer_cb(lv_timer_t *timer)
{
AltimeterScreen_t *altimeterScreen = timer->user_data;
_update_date_time_info(altimeterScreen);
}
static void reset_pressure_event_cb(lv_event_t *e)
{
AltimeterScreen_t *altimeterScreen = lv_event_get_user_data(e);
@ -331,6 +343,28 @@ void altimeter_screen_register_measurement_cb(AltimeterScreen_t * const altimete
altimeterScreen->altimeterScreenMeasurementCb = altimeterScreenMeasurementCb;
}
void altimeter_screen_register_date_time_cb(AltimeterScreen_t * const altimeterScreen, AltimeterScreenDateTimeCb_t altimeterScreenDateTimeCb)
{
if(!altimeterScreen)
{
LV_LOG_ERROR("NULL pointer given !");
return;
}
altimeterScreen->altimeterScreenDateTimeCb = altimeterScreenDateTimeCb;
}
void altimeter_screen_set_displayed_hour_format(AltimeterScreen_t * const altimeterScreen, bool hour_24H_format)
{
if(!altimeterScreen)
{
LV_LOG_ERROR("NULL pointer given !");
return;
}
altimeterScreen->hour_24H_format = hour_24H_format;
}
void altimeter_screen_shift_chart_pressure_measurement(AltimeterScreen_t * const altimeterScreen, float pressure)
{
if(!altimeterScreen)
@ -428,7 +462,8 @@ static void _create_pressure_display(AltimeterScreen_t * const altimeterScreen)
altimeterScreen->pressureValue.value = lv_label_create(inner_circle);
lv_obj_set_style_text_font(altimeterScreen->pressureValue.value, &lv_font_montserrat_30, LV_PART_MAIN);
lv_obj_align(altimeterScreen->pressureValue.value, LV_ALIGN_TOP_MID, 0, 15);
lv_label_set_text_static(altimeterScreen->pressureValue.value, altimeterScreen->pressureValue.value_text);
_update_pressure_info(altimeterScreen);
if(altimeterScreen->pressureValue.unit)
{
@ -542,6 +577,47 @@ static void _create_altitude_display(AltimeterScreen_t * const altimeterScreen)
lv_obj_set_style_border_color(inner_circle, lv_color_make(238, 82, 83), LV_PART_MAIN);
lv_obj_set_scroll_dir(inner_circle, LV_DIR_NONE);
/* Let's create the month label */
if(altimeterScreen->dateTimeValue.monthLabel)
{
LV_LOG_ERROR("monthLabel should be NULL here !");
lv_obj_del(altimeterScreen->dateTimeValue.monthLabel);
altimeterScreen->dateTimeValue.monthLabel = NULL;
}
altimeterScreen->dateTimeValue.monthLabel = lv_label_create(inner_circle);
lv_obj_set_style_text_font(altimeterScreen->dateTimeValue.monthLabel, &lv_font_montserrat_16, LV_PART_MAIN);
lv_obj_align_to(altimeterScreen->dateTimeValue.monthLabel, inner_circle, LV_ALIGN_TOP_LEFT, 30, 5);
lv_obj_set_style_text_color(altimeterScreen->dateTimeValue.monthLabel, lv_color_make(158, 157, 36), LV_PART_MAIN);
/* Let's create the day label */
if(altimeterScreen->dateTimeValue.dayLabel)
{
LV_LOG_ERROR("dayLabel should be NULL here !");
lv_obj_del(altimeterScreen->dateTimeValue.dayLabel);
altimeterScreen->dateTimeValue.dayLabel = NULL;
}
altimeterScreen->dateTimeValue.dayLabel = lv_label_create(inner_circle);
lv_obj_set_style_text_font(altimeterScreen->dateTimeValue.dayLabel, &lv_font_montserrat_16, LV_PART_MAIN);
lv_obj_align_to(altimeterScreen->dateTimeValue.dayLabel, inner_circle, LV_ALIGN_TOP_RIGHT, -15, 5);
lv_obj_set_style_text_color(altimeterScreen->dateTimeValue.dayLabel, lv_color_make(142, 36, 170), LV_PART_MAIN);
lv_obj_set_style_text_align(altimeterScreen->dateTimeValue.dayLabel, LV_TEXT_ALIGN_RIGHT, LV_PART_MAIN);
/* Let's create the time label */
if(altimeterScreen->dateTimeValue.timeLabel)
{
LV_LOG_ERROR("timeLabel should be NULL here !");
lv_obj_del(altimeterScreen->dateTimeValue.timeLabel);
altimeterScreen->dateTimeValue.timeLabel = NULL;
}
altimeterScreen->dateTimeValue.timeLabel = lv_label_create(inner_circle);
lv_obj_set_width(altimeterScreen->dateTimeValue.timeLabel, lv_pct(100));
lv_obj_set_style_text_font(altimeterScreen->dateTimeValue.timeLabel, &lv_font_montserrat_24, LV_PART_MAIN);
lv_obj_set_style_text_align(altimeterScreen->dateTimeValue.timeLabel, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN);
lv_obj_align_to(altimeterScreen->dateTimeValue.timeLabel, inner_circle, LV_ALIGN_TOP_MID, 0, 20);
lv_obj_set_style_text_color(altimeterScreen->dateTimeValue.timeLabel, lv_color_make(251, 140, 0), LV_PART_MAIN);
_update_date_time_info(altimeterScreen);
/* Let's create the altitude main and unit label */
if(altimeterScreen->altitudeValue.value)
{
@ -551,7 +627,8 @@ static void _create_altitude_display(AltimeterScreen_t * const altimeterScreen)
}
altimeterScreen->altitudeValue.value = lv_label_create(inner_circle);
lv_obj_set_style_text_font(altimeterScreen->altitudeValue.value, &lv_font_montserrat_30, LV_PART_MAIN);
lv_obj_align(altimeterScreen->altitudeValue.value, LV_ALIGN_TOP_MID, 0, 15);
lv_obj_align(altimeterScreen->altitudeValue.value, LV_ALIGN_TOP_MID, 0, 45);
lv_obj_set_style_text_color(altimeterScreen->altitudeValue.value, lv_color_make(0, 105, 92), LV_PART_MAIN);
lv_label_set_text_static(altimeterScreen->altitudeValue.value, altimeterScreen->altitudeValue.value_text);
if(altimeterScreen->altitudeValue.unit)
@ -562,23 +639,9 @@ static void _create_altitude_display(AltimeterScreen_t * const altimeterScreen)
}
altimeterScreen->altitudeValue.unit = lv_label_create(inner_circle);
lv_obj_set_style_text_font(altimeterScreen->altitudeValue.unit, &lv_font_montserrat_30, LV_PART_MAIN);
lv_obj_set_style_text_color(altimeterScreen->altitudeValue.unit, lv_color_make(0, 105, 92), LV_PART_MAIN);
lv_label_set_text_static(altimeterScreen->altitudeValue.unit, "m");
lv_obj_align_to(altimeterScreen->altitudeValue.unit, altimeterScreen->altitudeValue.value, LV_ALIGN_CENTER, 0, 25);
/* Let's create the zeroing button */
lv_obj_t *zeroing_btn = lv_img_create(inner_circle);
lv_img_set_src(zeroing_btn, &altimeter_asset_calibration_icon);
lv_obj_align(zeroing_btn, LV_ALIGN_CENTER, 75 ,5);
lv_obj_add_flag(zeroing_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
/* Using a long pressed event so that no missclicks trigger a reset */
lv_obj_add_event_cb(zeroing_btn, &(zeroing_altitude_event_cb), LV_EVENT_LONG_PRESSED, altimeterScreen);
/* Let's create the settings button */
lv_obj_t *setting_btn = lv_img_create(inner_circle);
lv_img_set_src(setting_btn, &watch_menu_settings_icon);
lv_obj_align(setting_btn, LV_ALIGN_CENTER, -75 ,5);
lv_obj_add_flag(setting_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
lv_obj_add_event_cb(setting_btn, &(set_altitude_settings_event_cb), LV_EVENT_CLICKED, altimeterScreen);
lv_obj_align_to(altimeterScreen->altitudeValue.unit, altimeterScreen->altitudeValue.value, LV_ALIGN_OUT_BOTTOM_MID, 0, -13);
/* Let's create the temperature label */
if(altimeterScreen->temperatureValue.value)
@ -592,7 +655,24 @@ static void _create_altitude_display(AltimeterScreen_t * const altimeterScreen)
lv_obj_set_style_text_font(altimeterScreen->temperatureValue.value, &lv_font_montserrat_24, LV_PART_MAIN);
strcpy(altimeterScreen->temperatureValue.value_text, "°C");
lv_label_set_text_static(altimeterScreen->temperatureValue.value, altimeterScreen->temperatureValue.value_text);
lv_obj_align(altimeterScreen->temperatureValue.value, LV_ALIGN_CENTER, 0, 5);
lv_obj_align(altimeterScreen->temperatureValue.value, LV_ALIGN_CENTER, 0, 20);
lv_obj_set_style_text_color(altimeterScreen->temperatureValue.value, lv_color_make(93, 64, 55), LV_PART_MAIN);
/* Let's create the zeroing button */
lv_obj_t *zeroing_btn = lv_img_create(inner_circle);
lv_img_set_src(zeroing_btn, &altimeter_asset_calibration_icon);
lv_obj_align_to(zeroing_btn, altimeterScreen->temperatureValue.value, LV_ALIGN_OUT_RIGHT_MID, 45, 0);
lv_obj_add_flag(zeroing_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
/* Using a long pressed event so that no missclicks trigger a reset */
lv_obj_add_event_cb(zeroing_btn, &(zeroing_altitude_event_cb), LV_EVENT_LONG_PRESSED, altimeterScreen);
/* Let's create the settings button */
lv_obj_t *setting_btn = lv_img_create(inner_circle);
lv_img_set_src(setting_btn, &watch_menu_settings_icon);
lv_obj_align_to(setting_btn, altimeterScreen->temperatureValue.value, LV_ALIGN_OUT_LEFT_MID, -45, 0);
lv_obj_add_flag(setting_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
/* Using a long pressed event so that no missclicks trigger a reset */
lv_obj_add_event_cb(setting_btn, &(set_altitude_settings_event_cb), LV_EVENT_LONG_PRESSED, altimeterScreen);
/* Let's create the VSI label */
if(altimeterScreen->vsiValue.value_unit)
@ -617,10 +697,19 @@ static void _create_altitude_display(AltimeterScreen_t * const altimeterScreen)
lv_timer_del(altimeterScreen->altitudeUpdateTimer);
altimeterScreen->altitudeUpdateTimer = NULL;
}
/* Update the pressure value on the screen every second */
/* Update the pressure value on the screen at the defined refresh rate in Hz */
altimeterScreen->altitudeUpdateTimer = lv_timer_create(&(altitude_update_timer_cb), 1000 / ALTITUDE_TIMER_UPDATE_RATE_HZ, altimeterScreen);
/* Let's create the time update timer */
if(altimeterScreen->dateTimeUpdateTimer)
{
LV_LOG_ERROR("dateTimeUpdateTimer should be NULL here !");
lv_timer_del(altimeterScreen->dateTimeUpdateTimer);
altimeterScreen->dateTimeUpdateTimer = NULL;
}
/* Update the displayed time every 200 ms */
altimeterScreen->dateTimeUpdateTimer = lv_timer_create(&(date_time_update_timer_cb), 500, altimeterScreen);
/* We register the event callback to handle gestures */
lv_obj_add_event_cb(altimeterScreen->displays[ALTIMETER_SCREEN_ALTITUDE_VIEW], &(gesture_event_cb), LV_EVENT_GESTURE, altimeterScreen);
/* We register the event callback to handle the cleanup */
@ -664,7 +753,7 @@ static void _create_altitude_setting_display(AltimeterScreen_t * const altimeter
}
altimeterScreen->altitudeOffset_spinbox.spinbox = lv_spinbox_create(inner_circle);
lv_obj_set_align(altimeterScreen->altitudeOffset_spinbox.spinbox, LV_ALIGN_CENTER);
lv_obj_align(altimeterScreen->altitudeOffset_spinbox.spinbox, LV_ALIGN_CENTER, 0, -10);
lv_obj_set_width(altimeterScreen->altitudeOffset_spinbox.spinbox, lv_pct(50));
lv_obj_set_style_text_font(altimeterScreen->altitudeOffset_spinbox.spinbox, &lv_font_montserrat_16, LV_PART_MAIN);
lv_spinbox_set_digit_format(altimeterScreen->altitudeOffset_spinbox.spinbox, 5, 4);
@ -694,8 +783,7 @@ static void _create_altitude_setting_display(AltimeterScreen_t * const altimeter
lv_label_set_text_static(apply_btn_lbl, "Apply");
lv_obj_center(apply_btn_lbl);
lv_obj_add_event_cb(apply_btn, &(apply_altitude_setting_event_cb), LV_EVENT_CLICKED, altimeterScreen);
lv_obj_align(apply_btn, LV_ALIGN_CENTER, -45, 45);
lv_obj_align_to(apply_btn, dec_btn, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 10);
lv_obj_t *cancel_btn = lv_btn_create(inner_circle);
@ -706,8 +794,7 @@ static void _create_altitude_setting_display(AltimeterScreen_t * const altimeter
lv_label_set_text_static(cancel_btn_lbl, "Cancel");
lv_obj_center(cancel_btn_lbl);
lv_obj_add_event_cb(cancel_btn, &(apply_altitude_setting_event_cb), LV_EVENT_CLICKED, altimeterScreen);
lv_obj_align(cancel_btn, LV_ALIGN_CENTER, 45, 45);
lv_obj_align_to(cancel_btn, inc_btn, LV_ALIGN_OUT_BOTTOM_RIGHT, 0, 10);
/* We register the event callback to handle the cleanup */
lv_obj_add_event_cb(altimeterScreen->displays[ALTIMETER_SCREEN_ALTITUDE_SETTING_VIEW], &(altitude_setting_display_cleanup_event_cb), LV_EVENT_DELETE, altimeterScreen);
@ -761,6 +848,30 @@ static void _update_pressure_chart(AltimeterScreen_t * const altimeterScreen)
_update_min_and_max_pressure_data(altimeterScreen, min, max);
}
static void _update_pressure_info(AltimeterScreen_t * const altimeterScreen)
{
if(altimeterScreen->altimeterScreenMeasurementCb)
{
LV_LOG_USER("Updating pressure measurements");
float pressure;
/* We don't need to retrieve the temperature nor the altitude in this view */
altimeterScreen->altimeterScreenMeasurementCb(NULL, &pressure, NULL);
sprintf(altimeterScreen->pressureValue.value_text, "%.2f", pressure);
if(altimeterScreen->pressureValue.value)
{
lv_label_set_text_static(altimeterScreen->pressureValue.value, altimeterScreen->pressureValue.value_text);
}
//Mock up part needs to be changed on embedded target
altimeter_screen_shift_chart_pressure_measurement(altimeterScreen, pressure);
}
else
{
LV_LOG_USER("altimeterScreenMeasurementCb is NULL, be sure to register a callback !");
}
}
static void _update_altitude_info(AltimeterScreen_t * const altimeterScreen)
{
sprintf(altimeterScreen->altitudeValue.value_text, "%.2f", altimeterScreen->lastReadAltitude - altimeterScreen->altitudeOffset);
@ -774,3 +885,44 @@ static void _update_temperature_info(AltimeterScreen_t * const altimeterScreen,
sprintf(altimeterScreen->temperatureValue.value_text, "%.2f°C", temperature);
lv_label_set_text_static(altimeterScreen->temperatureValue.value, altimeterScreen->temperatureValue.value_text);
}
static void _update_date_time_info(AltimeterScreen_t * const altimeterScreen)
{
if(altimeterScreen->altimeterScreenDateTimeCb)
{
struct tm date_time = {0};
altimeterScreen->altimeterScreenDateTimeCb(&date_time);
date_time.tm_hour = 23;
if(altimeterScreen->hour_24H_format)
{
sprintf(altimeterScreen->dateTimeValue.time_text, "%s%d:%s%d:%s%d",
date_time.tm_hour < 10 ? "0" : "", date_time.tm_hour,
date_time.tm_min < 10 ? "0" : "", date_time.tm_min,
date_time.tm_sec < 10 ? "0" : "", date_time.tm_sec);
}
else
{
// Intermediate hour var to set it on a 12H format
uint8_t hour = date_time.tm_hour;
if(hour > 12)hour -= 12;
sprintf(altimeterScreen->dateTimeValue.time_text, "%d:%s%d:%s%d%s", hour,
date_time.tm_min < 10 ? "0" : "", date_time.tm_min,
date_time.tm_sec < 10 ? "0" : "", date_time.tm_sec,
date_time.tm_hour < 13 ? "AM" : "PM");
}
static uint8_t cnt = 0;
strncpy(altimeterScreen->dateTimeValue.month_text, MONTH[cnt++ % 12], sizeof(altimeterScreen->dateTimeValue.month_text)-1);
date_time.tm_mday = (cnt % 32)+1;
sprintf(altimeterScreen->dateTimeValue.day_text, "%s%d", date_time.tm_mday < 10 ? "0":"", date_time.tm_mday);
lv_label_set_text_static(altimeterScreen->dateTimeValue.timeLabel, altimeterScreen->dateTimeValue.time_text);
lv_label_set_text_static(altimeterScreen->dateTimeValue.monthLabel, altimeterScreen->dateTimeValue.month_text);
lv_label_set_text_static(altimeterScreen->dateTimeValue.dayLabel, altimeterScreen->dateTimeValue.day_text);
}
else
{
LV_LOG_USER("altimeterScreenDateTimeCb is NULL, be sure to register a callback !");
}
}

View File

@ -3,6 +3,7 @@
#define ALTIMETER_SCREEN_H
#include "lvgl.h"
#include <time.h>
#define ALTITUDE_TIMER_UPDATE_RATE_HZ (10)
@ -36,6 +37,7 @@ typedef struct MinMaxVSIValue
typedef void (*AltimeterScreenOnStateChangeCb_t)(AltimeterScreenState_e altimeterScreenState);
typedef void(*AltimeterScreenMeasurementCb_t)(float * const temperature, float * const pressure, float * const altitude);
typedef void (*AltimeterScreenUserFeedbackCb_t)(void);
typedef void (*AltimeterScreenDateTimeCb_t)(struct tm * const dateTime);
typedef struct PressureChart
{
@ -48,6 +50,12 @@ typedef struct TemperatureValue
char value_text[9];
} TemperatureValue_t;
typedef struct DateTimeValue
{
lv_obj_t *timeLabel, *monthLabel, *dayLabel;
char time_text[11], month_text[5], day_text[3];
} DateTimeValue_t;
typedef struct SpinBox
{
lv_obj_t *spinbox;
@ -63,12 +71,14 @@ typedef struct AltimeterScreen
PressureChart_t pressureChart;
lv_timer_t *pressureUpdateTimer;
lv_timer_t *altitudeUpdateTimer;
lv_timer_t *dateTimeUpdateTimer;
MainValue_t pressureValue;
MainValue_t altitudeValue;
MinMaxVSIValue_t minValue;
MinMaxVSIValue_t maxValue;
MinMaxVSIValue_t vsiValue;
TemperatureValue_t temperatureValue;
DateTimeValue_t dateTimeValue;
float vsiFloat;
float lastReadAltitude;
//Should not be erased attributes
@ -76,13 +86,21 @@ typedef struct AltimeterScreen
AltimeterScreenMeasurementCb_t altimeterScreenMeasurementCb;
AltimeterScreenUserFeedbackCb_t altimeterScreenUserFeedbackCb;
AltimeterScreenOnStateChangeCb_t altimeterScreenOnStateChangeCb;
AltimeterScreenDateTimeCb_t altimeterScreenDateTimeCb;
float minValueFloat;
float maxValueFloat;
float altitudeOffset;
lv_coord_t pressure_data_points[10];
float pressure_data_points_float[10];
bool hour_24H_format : 1;
} AltimeterScreen_t;
/**
* @brief Initializes the altimeter screen context object
* @note This function has to be called first before any others
*
* @param altimeterScreen a pointer to the altimeter screen context structure to initialize.
*/
void altimeter_screen_init(AltimeterScreen_t * const altimeterScreen);
/**
@ -90,27 +108,62 @@ void altimeter_screen_init(AltimeterScreen_t * const altimeterScreen);
* This callback should be used to initialize and deinitialize needed devices drivers like the pressure/temperature sensor.
* @note The state of the application is passed as a parameter of the callback function.
*
* @param altimeterScreen a pointer to the altimeter screen object structure.
* @param altimeterScreen a pointer to the previously initialized altimeter screen object structure using @ref altimeter_screen_init.
* @param altimeterScreenOnStateChangeCb the callback of type @ref AltimeterScreenOnStateChangeCb_t to register.
*/
void altimeter_screen_register_on_state_change_cb(AltimeterScreen_t * const altimeterScreen, AltimeterScreenOnStateChangeCb_t altimeterScreenOnStateChangeCb);
/**
* @brief Registers a callback functions which will be called every time a user feedback should
* @brief Registers a callback function which will be called every time a user feedback should
* be made. In this case, every time a button is clicked, the callback will be called.
* This enables the app to react to this user event.
*
* @param menuScreen a pointer to the previously initialized menu screen's context structure.
* @param menuScreenUserFeedbackCb a pointer to a function having the following signature : void(void).
* @param altimeterScreen a pointer to the previously initialized altimeter screen object structure using @ref altimeter_screen_init.
* @param altimeterScreenUserFeedbackCb a pointer to a function having the following signature : void(void) @ref AltimeterScreenUserFeedbackCb_t.
*/
void altimeter_screen_register_user_feedback_cb(AltimeterScreen_t * const altimeterScreen, AltimeterScreenUserFeedbackCb_t altimeterScreenUserFeedbackCb);
/**
* @brief Registers the callback function used to retrieve the data displayed in the altimeter app.
* The various data are : the temperature in °C, the pressure in hPa and the altitude in meters.
*
* @param altimeterScreen a pointer to the previously initialized altimeter screen object structure using @ref altimeter_screen_init.
* @param altimeterScreenMeasurementCb the callback of type @ref AltimeterScreenMeasurementCb_t to register.
* The function's signature is : void(float * const, float * const, float * const).
*/
void altimeter_screen_register_measurement_cb(AltimeterScreen_t * const altimeterScreen, AltimeterScreenMeasurementCb_t altimeterScreenMeasurementCb);
/**
* @brief Registers the callback function used to retrieve the system time to be displayed on the altitude view.
*
* @param altimeterScreen a pointer to the previously initialized altimeter screen object structure using @ref altimeter_screen_init.
* @param altimeterScreenDateTimeCb the callback of type @ref AltimeterScreenDateTimeCb_t to register.
* The function's signature is : void(struct tm * const).
*/
void altimeter_screen_register_date_time_cb(AltimeterScreen_t * const altimeterScreen, AltimeterScreenDateTimeCb_t altimeterScreenDateTimeCb);
/**
* @brief Sets the format used to display the time on the altitude screen, ie 12H or 24H hour format.
*
* @param altimeterScreen altimeterScreen a pointer to the previously initialized altimeter screen object structure using @ref altimeter_screen_init.
* @param hour_24H_format a boolean value indicating if the hour format is 24H (true) or 12H (false).
*/
void altimeter_screen_set_displayed_hour_format(AltimeterScreen_t * const altimeterScreen, bool hour_24H_format);
void altimeter_screen_shift_chart_pressure_measurement(AltimeterScreen_t * const altimeterScreen, float pressure);
/**
* @brief Graphically builds the altimeter screen.
*
* @param altimeterScreen a pointer to the previously initialized altimeter screen object structure using @ref altimeter_screen_init.
*/
void altimeter_screen_create(AltimeterScreen_t * const altimeterScreen);
/**
* @brief Frees all resources used by the AltimeterScreen object.
*
* @param altimeterScreen a pointer to the previously initialized altimeter screen object structure using @ref altimeter_screen_init.
*/
void altimeter_screen_destroy(AltimeterScreen_t * const altimeterScreen);
#endif //ALTIMETER_SCREEN_H

View File

@ -120,7 +120,7 @@ static void alti_on_state_change_cb(AltimeterScreenState_e state)
static void alti_meas_cb(float * const temperature, float * const pressure, float * const altitude)
{
static float a = 425.5;
if(temperature) *temperature = (rand() % 20) + 10;
if(temperature) *temperature = (rand() % 30) + -10;
if(pressure) *pressure = (float)rand()/(float)(RAND_MAX) * 50 + 980;
a += 0.2;
@ -187,6 +187,8 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLi
altimeter_screen_register_on_state_change_cb(&altimeterScreen, &(alti_on_state_change_cb));
altimeter_screen_register_measurement_cb(&altimeterScreen, &(alti_meas_cb));
altimeter_screen_register_user_feedback_cb(&altimeterScreen, &(user_feedback));
altimeter_screen_register_date_time_cb(&altimeterScreen, &(date_time_cb));
altimeter_screen_set_displayed_hour_format(&altimeterScreen, false);
notification_screen_init(&notificationScreen);
notification_screen_register_on_state_change_cb(&notificationScreen, &(notification_screen_on_state_change_cb));
notification_screen_set_displayed_hour_format(&notificationScreen, false);

View File

@ -802,7 +802,7 @@ static void update_menu_list_item_text(lv_obj_t *menu_list_item, const char *tex
lv_obj_t *label = lv_obj_get_child(menu_list_item, 0);
if(label)
{
lv_label_set_text(label, text);
lv_label_set_text_static(label, text);
}
}

View File

@ -245,7 +245,8 @@ static void hide_hour_and_minutes_hand_cb(lv_event_t *e)
{
WatchFace_t *watchFace = lv_event_get_user_data(e);
if(255 == lv_obj_get_style_opa(watchFace->hourHand.handImg, LV_PART_MAIN))
// Consumes too much ram on embedded target :-(
/*if(255 == lv_obj_get_style_opa(watchFace->hourHand.handImg, LV_PART_MAIN))
{
lv_obj_set_style_opa(watchFace->hourHand.handImg, 120, LV_PART_MAIN);
lv_obj_set_style_opa(watchFace->minuteHand.handImg, 120, LV_PART_MAIN);
@ -254,9 +255,9 @@ static void hide_hour_and_minutes_hand_cb(lv_event_t *e)
{
lv_obj_set_style_opa(watchFace->hourHand.handImg, 255, LV_PART_MAIN);
lv_obj_set_style_opa(watchFace->minuteHand.handImg, 255, LV_PART_MAIN);
}
}*/
/*if(lv_obj_has_flag(watchFace->hourHand.handImg, LV_OBJ_FLAG_HIDDEN))
if(lv_obj_has_flag(watchFace->hourHand.handImg, LV_OBJ_FLAG_HIDDEN))
{
lv_obj_clear_flag(watchFace->hourHand.handImg, LV_OBJ_FLAG_HIDDEN);
lv_obj_clear_flag(watchFace->minuteHand.handImg, LV_OBJ_FLAG_HIDDEN);
@ -265,7 +266,7 @@ static void hide_hour_and_minutes_hand_cb(lv_event_t *e)
{
lv_obj_add_flag(watchFace->hourHand.handImg, LV_OBJ_FLAG_HIDDEN);
lv_obj_add_flag(watchFace->minuteHand.handImg, LV_OBJ_FLAG_HIDDEN);
}*/
}
//Just for testing purposes, create a new notification
char *title = malloc(strlen("JoeJohny John")+1);
@ -326,7 +327,7 @@ void watch_face_create(WatchFace_t * const watchFace)
//Our display is the watch face image :
watchFace->display = lv_img_create(NULL);
lv_img_set_src(watchFace->display, watch_face_img);
lv_obj_set_style_bg_color(watchFace->display, lv_color_black(), LV_PART_MAIN);
lv_obj_set_style_bg_color(watchFace->display, lv_color_white(), LV_PART_MAIN);
lv_obj_add_event_cb(watchFace->display, &(hide_hour_and_minutes_hand_cb), LV_EVENT_LONG_PRESSED, watchFace);
//Battery arc is created here