diff --git a/.vscode/settings.json b/.vscode/settings.json index 3f83e2c..cd5cf66 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -105,7 +105,8 @@ "bsp_board_extra.h": "c", "display.h": "c", "statemanagement.h": "c", - "communication.h": "c" + "communication.h": "c", + "mqtt_client.h": "c" }, "idf.pythonInstallPath": "/usr/bin/python3" } diff --git a/components/domotic_display/CMakeLists.txt b/components/domotic_display/CMakeLists.txt new file mode 100644 index 0000000..7a3c427 --- /dev/null +++ b/components/domotic_display/CMakeLists.txt @@ -0,0 +1,22 @@ +function (make_font fontSize) + execute_process(COMMAND podman run -v /home/marc/rgb_lcd/components/domotic_display/fonts:/app -w /app lvfontconv lv_font_conv --bpp 4 --size ${fontSize} --no-compress --font Montserrat-Medium.ttf --symbols "0123456789.°éèûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz %,'():ê/" --format lvgl -o montserrat_medium_${fontSize}.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575) +endfunction() + +make_font(12) +make_font(18) +make_font(24) + +idf_component_register(SRC_DIRS . fonts + INCLUDE_DIRS "include" + REQUIRES bsp_extra esp32_p4_function_ev_board meteofrance eventsManager) + + +if(${IDF_TARGET} STREQUAL "esp32p4") + lvgl_port_create_c_image("images/wifi_ok.png" "images/" "ARGB8888" "NONE") + lvgl_port_create_c_image("images/wifi_ko.png" "images/" "ARGB8888" "NONE") + lvgl_port_create_c_image("images/mqtt_ok.png" "images/" "AUTO" "NONE") + lvgl_port_create_c_image("images/mqtt_ko.png" "images/" "ARGB8888" "NONE") + lvgl_port_add_images(${COMPONENT_LIB} "images/") + littlefs_create_partition_image(littlefs images_meteo FLASH_IN_PROJECT) +endif() + diff --git a/components/domotic_display/domotic_display.c b/components/domotic_display/domotic_display.c new file mode 100644 index 0000000..0cde25b --- /dev/null +++ b/components/domotic_display/domotic_display.c @@ -0,0 +1,7 @@ +#include +#include "domotic_display.h" + +void func(void) +{ + +} diff --git a/main/fonts/Dockerfile b/components/domotic_display/fonts/Dockerfile similarity index 100% rename from main/fonts/Dockerfile rename to components/domotic_display/fonts/Dockerfile diff --git a/main/fonts/Montserrat-Medium.ttf b/components/domotic_display/fonts/Montserrat-Medium.ttf similarity index 100% rename from main/fonts/Montserrat-Medium.ttf rename to components/domotic_display/fonts/Montserrat-Medium.ttf diff --git a/main/fonts/fa-solid-900.ttf b/components/domotic_display/fonts/fa-solid-900.ttf similarity index 100% rename from main/fonts/fa-solid-900.ttf rename to components/domotic_display/fonts/fa-solid-900.ttf diff --git a/main/fonts/montserrat_medium_12.c b/components/domotic_display/fonts/montserrat_medium_12.c similarity index 67% rename from main/fonts/montserrat_medium_12.c rename to components/domotic_display/fonts/montserrat_medium_12.c index d850e56..26111b7 100644 --- a/main/fonts/montserrat_medium_12.c +++ b/components/domotic_display/fonts/montserrat_medium_12.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 12 px * Bpp: 4 - * Opts: --bpp 4 --size 12 --no-compress --font Montserrat-Medium.ttf --symbols 0123456789.°éèûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz %,'(): --format lvgl -o montserrat_medium_12.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575 + * Opts: --bpp 4 --size 12 --no-compress --font Montserrat-Medium.ttf --symbols 0123456789.°éèûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz %,'():ê/ --format lvgl -o montserrat_medium_12.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575 ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE @@ -51,6 +51,13 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { /* U+002E "." */ 0x2a, 0x4, 0xd0, + /* U+002F "/" */ + 0x0, 0x0, 0x34, 0x0, 0x0, 0xb5, 0x0, 0x0, + 0xf0, 0x0, 0x5, 0xb0, 0x0, 0xa, 0x60, 0x0, + 0xe, 0x10, 0x0, 0x4c, 0x0, 0x0, 0x97, 0x0, + 0x0, 0xe2, 0x0, 0x3, 0xd0, 0x0, 0x8, 0x70, + 0x0, 0xd, 0x20, 0x0, 0x2d, 0x0, 0x0, + /* U+0030 "0" */ 0x0, 0x9e, 0xe9, 0x0, 0xa, 0xd4, 0x4d, 0xa0, 0x1f, 0x20, 0x2, 0xf1, 0x5e, 0x0, 0x0, 0xd5, @@ -481,6 +488,13 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xc5, 0xd0, 0x0, 0x0, 0xe, 0x92, 0x3a, 0x20, 0x2b, 0xfe, 0x90, + /* U+00EA "ê" */ + 0x0, 0x4f, 0xa0, 0x0, 0x2c, 0x29, 0x60, 0x0, + 0x0, 0x0, 0x0, 0x2b, 0xfd, 0x50, 0xe, 0x81, + 0x4e, 0x45, 0xc0, 0x0, 0x6b, 0x7f, 0xee, 0xee, + 0xc5, 0xd0, 0x0, 0x0, 0xe, 0x92, 0x3a, 0x20, + 0x2b, 0xfe, 0x90, + /* U+00FB "û" */ 0x1, 0xdd, 0x10, 0x0, 0xa5, 0x4b, 0x0, 0x0, 0x0, 0x0, 0xf, 0x30, 0x2, 0xf0, 0xf3, 0x0, @@ -543,76 +557,78 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { {.bitmap_index = 69, .adv_w = 65, .box_w = 3, .box_h = 13, .ofs_x = 0, .ofs_y = -3}, {.bitmap_index = 89, .adv_w = 44, .box_w = 3, .box_h = 4, .ofs_x = 0, .ofs_y = -2}, {.bitmap_index = 95, .adv_w = 44, .box_w = 3, .box_h = 2, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 98, .adv_w = 128, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 134, .adv_w = 71, .box_w = 4, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 152, .adv_w = 110, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 184, .adv_w = 110, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 216, .adv_w = 128, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 252, .adv_w = 110, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 284, .adv_w = 118, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 320, .adv_w = 115, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 352, .adv_w = 124, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 388, .adv_w = 118, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 420, .adv_w = 44, .box_w = 3, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 431, .adv_w = 141, .box_w = 10, .box_h = 9, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 476, .adv_w = 145, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 512, .adv_w = 139, .box_w = 9, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 553, .adv_w = 159, .box_w = 9, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 594, .adv_w = 129, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 626, .adv_w = 122, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 658, .adv_w = 148, .box_w = 9, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 699, .adv_w = 156, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 735, .adv_w = 60, .box_w = 2, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 744, .adv_w = 98, .box_w = 6, .box_h = 9, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 771, .adv_w = 138, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 807, .adv_w = 114, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 839, .adv_w = 183, .box_w = 10, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 884, .adv_w = 156, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 920, .adv_w = 161, .box_w = 10, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 965, .adv_w = 139, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1001, .adv_w = 161, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 1061, .adv_w = 140, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1097, .adv_w = 119, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1129, .adv_w = 113, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1161, .adv_w = 152, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1197, .adv_w = 137, .box_w = 10, .box_h = 9, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 1242, .adv_w = 216, .box_w = 14, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1305, .adv_w = 129, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1341, .adv_w = 124, .box_w = 9, .box_h = 9, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 1382, .adv_w = 126, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1418, .adv_w = 115, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1443, .adv_w = 131, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1478, .adv_w = 110, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1503, .adv_w = 131, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1543, .adv_w = 118, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1568, .adv_w = 68, .box_w = 5, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1593, .adv_w = 132, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 1633, .adv_w = 131, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1668, .adv_w = 54, .box_w = 3, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1683, .adv_w = 55, .box_w = 5, .box_h = 13, .ofs_x = -2, .ofs_y = -3}, - {.bitmap_index = 1716, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1751, .adv_w = 54, .box_w = 2, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1761, .adv_w = 203, .box_w = 11, .box_h = 7, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1800, .adv_w = 131, .box_w = 7, .box_h = 7, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1825, .adv_w = 122, .box_w = 8, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1853, .adv_w = 131, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 1888, .adv_w = 131, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 1928, .adv_w = 79, .box_w = 4, .box_h = 7, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1942, .adv_w = 96, .box_w = 6, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1963, .adv_w = 79, .box_w = 5, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1986, .adv_w = 130, .box_w = 7, .box_h = 7, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2011, .adv_w = 107, .box_w = 8, .box_h = 7, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 2039, .adv_w = 173, .box_w = 11, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 2078, .adv_w = 106, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 2103, .adv_w = 107, .box_w = 8, .box_h = 10, .ofs_x = -1, .ofs_y = -3}, - {.bitmap_index = 2143, .adv_w = 100, .box_w = 6, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 2164, .adv_w = 80, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 5}, - {.bitmap_index = 2177, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 2212, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 2247, .adv_w = 130, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2282, .adv_w = 216, .box_w = 15, .box_h = 13, .ofs_x = -1, .ofs_y = -2}, - {.bitmap_index = 2380, .adv_w = 240, .box_w = 15, .box_h = 11, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 2463, .adv_w = 192, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = -2} + {.bitmap_index = 98, .adv_w = 68, .box_w = 6, .box_h = 13, .ofs_x = -1, .ofs_y = -1}, + {.bitmap_index = 137, .adv_w = 128, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 173, .adv_w = 71, .box_w = 4, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 191, .adv_w = 110, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 223, .adv_w = 110, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 255, .adv_w = 128, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 291, .adv_w = 110, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 323, .adv_w = 118, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 359, .adv_w = 115, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 391, .adv_w = 124, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 427, .adv_w = 118, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 459, .adv_w = 44, .box_w = 3, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 470, .adv_w = 141, .box_w = 10, .box_h = 9, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 515, .adv_w = 145, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 551, .adv_w = 139, .box_w = 9, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 592, .adv_w = 159, .box_w = 9, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 633, .adv_w = 129, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 665, .adv_w = 122, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 697, .adv_w = 148, .box_w = 9, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 738, .adv_w = 156, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 774, .adv_w = 60, .box_w = 2, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 783, .adv_w = 98, .box_w = 6, .box_h = 9, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 810, .adv_w = 138, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 846, .adv_w = 114, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 878, .adv_w = 183, .box_w = 10, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 923, .adv_w = 156, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 959, .adv_w = 161, .box_w = 10, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1004, .adv_w = 139, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1040, .adv_w = 161, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 1100, .adv_w = 140, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1136, .adv_w = 119, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1168, .adv_w = 113, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1200, .adv_w = 152, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1236, .adv_w = 137, .box_w = 10, .box_h = 9, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 1281, .adv_w = 216, .box_w = 14, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1344, .adv_w = 129, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1380, .adv_w = 124, .box_w = 9, .box_h = 9, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 1421, .adv_w = 126, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1457, .adv_w = 115, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1482, .adv_w = 131, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1517, .adv_w = 110, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1542, .adv_w = 131, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1582, .adv_w = 118, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1607, .adv_w = 68, .box_w = 5, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1632, .adv_w = 132, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 1672, .adv_w = 131, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1707, .adv_w = 54, .box_w = 3, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1722, .adv_w = 55, .box_w = 5, .box_h = 13, .ofs_x = -2, .ofs_y = -3}, + {.bitmap_index = 1755, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1790, .adv_w = 54, .box_w = 2, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1800, .adv_w = 203, .box_w = 11, .box_h = 7, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1839, .adv_w = 131, .box_w = 7, .box_h = 7, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1864, .adv_w = 122, .box_w = 8, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1892, .adv_w = 131, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 1927, .adv_w = 131, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 1967, .adv_w = 79, .box_w = 4, .box_h = 7, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1981, .adv_w = 96, .box_w = 6, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2002, .adv_w = 79, .box_w = 5, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2025, .adv_w = 130, .box_w = 7, .box_h = 7, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2050, .adv_w = 107, .box_w = 8, .box_h = 7, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 2078, .adv_w = 173, .box_w = 11, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2117, .adv_w = 106, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2142, .adv_w = 107, .box_w = 8, .box_h = 10, .ofs_x = -1, .ofs_y = -3}, + {.bitmap_index = 2182, .adv_w = 100, .box_w = 6, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2203, .adv_w = 80, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 5}, + {.bitmap_index = 2216, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2251, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2286, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2321, .adv_w = 130, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2356, .adv_w = 216, .box_w = 15, .box_h = 13, .ofs_x = -1, .ofs_y = -2}, + {.bitmap_index = 2454, .adv_w = 240, .box_w = 15, .box_h = 11, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2537, .adv_w = 192, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = -2} }; /*--------------------- @@ -621,13 +637,13 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { static const uint8_t glyph_id_ofs_list_0[] = { 0, 0, 0, 0, 0, 1, 0, 2, - 3, 4, 0, 0, 5, 0, 6, 0, - 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17 + 3, 4, 0, 0, 5, 0, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18 }; static const uint16_t unicode_list_3[] = { - 0x0, 0x38, 0x39, 0x4b, 0xef65, 0xf012, 0xf4c5 + 0x0, 0x38, 0x39, 0x3a, 0x4b, 0xef65, 0xf012, 0xf4c5 }; /*Collect the unicode lists and glyph_id offsets*/ @@ -638,16 +654,16 @@ static const lv_font_fmt_txt_cmap_t cmaps[] = .unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_0, .list_length = 27, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL }, { - .range_start = 65, .range_length = 26, .glyph_id_start = 19, + .range_start = 65, .range_length = 26, .glyph_id_start = 20, .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY }, { - .range_start = 97, .range_length = 26, .glyph_id_start = 45, + .range_start = 97, .range_length = 26, .glyph_id_start = 46, .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY }, { - .range_start = 176, .range_length = 62662, .glyph_id_start = 71, - .unicode_list = unicode_list_3, .glyph_id_ofs_list = NULL, .list_length = 7, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + .range_start = 176, .range_length = 62662, .glyph_id_start = 72, + .unicode_list = unicode_list_3, .glyph_id_ofs_list = NULL, .list_length = 8, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY } }; @@ -660,274 +676,290 @@ static const lv_font_fmt_txt_cmap_t cmaps[] = static const uint8_t kern_left_class_mapping[] = { 0, 0, 1, 2, 3, 4, 5, 5, - 6, 0, 7, 8, 9, 10, 11, 12, - 13, 6, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 22, 23, 24, 25, 22, - 22, 18, 26, 18, 27, 28, 29, 23, - 30, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 34, 40, 40, 41, - 37, 34, 34, 35, 35, 42, 43, 44, - 45, 40, 46, 46, 47, 46, 48, 49, - 38, 38, 40, 0, 0, 0 + 6, 7, 0, 8, 9, 10, 11, 12, + 13, 14, 7, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 23, 24, 25, 26, + 23, 23, 19, 27, 28, 29, 30, 31, + 24, 32, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 36, 42, 42, + 43, 39, 36, 36, 37, 37, 44, 45, + 46, 47, 42, 48, 48, 49, 48, 50, + 51, 40, 40, 40, 42, 0, 0, 0 }; /*Map glyph_ids to kern right classes*/ static const uint8_t kern_right_class_mapping[] = { 0, 0, 1, 2, 3, 4, 5, 5, - 6, 7, 8, 9, 10, 11, 6, 12, - 13, 14, 15, 16, 17, 18, 17, 17, - 17, 18, 17, 17, 19, 17, 17, 17, - 17, 18, 17, 18, 17, 20, 21, 22, - 23, 23, 24, 25, 26, 27, 28, 29, - 29, 29, 0, 29, 28, 30, 31, 28, - 28, 32, 32, 29, 32, 29, 32, 33, - 34, 35, 36, 36, 37, 36, 38, 39, - 29, 29, 35, 0, 0, 0 + 6, 7, 8, 9, 10, 11, 12, 7, + 13, 14, 15, 16, 17, 18, 19, 18, + 18, 18, 19, 18, 18, 20, 18, 18, + 18, 18, 19, 18, 19, 18, 21, 22, + 23, 24, 24, 25, 26, 27, 28, 29, + 30, 30, 30, 0, 30, 29, 31, 32, + 29, 29, 33, 33, 30, 33, 30, 33, + 34, 35, 36, 37, 37, 38, 37, 39, + 40, 30, 30, 30, 36, 0, 0, 0 }; /*Kern values between classes*/ static const int8_t kern_class_values[] = { - -23, -5, 0, -4, 6, 0, -4, 2, - 2, 6, 4, -3, 4, 0, 0, 0, + -23, -5, 0, -4, 6, 0, 0, -4, + 2, 2, 6, 4, -3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -5, 5, - 9, 0, 0, -11, 1, 9, 4, 3, - -8, 1, 9, 1, 8, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -5, + 5, 9, 0, 0, -11, -12, 1, 9, + 4, 3, -8, 1, 9, 1, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 2, 0, 0, -4, + 0, 0, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 6, 0, 2, + 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, -7, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -12, -11, 0, 0, - 0, -2, -2, 2, 2, -2, 0, -2, - 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -12, 0, 1, 0, 0, -2, - 0, -1, -1, -2, 0, 0, -1, 0, - 0, 0, -2, 0, 0, -4, 0, -4, - 0, -5, -6, -6, -4, 0, 0, 0, - 0, -2, 0, 0, 2, 0, 1, -2, - 0, 1, 2, 0, 0, 0, 2, -1, - 0, 0, 0, -4, 0, -1, 0, 0, - 0, 1, 0, 0, 2, 0, -1, 0, - -2, 0, -3, 0, 0, 0, -2, 0, - 0, 0, 0, 0, -1, 1, -1, -1, - 0, -2, -2, 0, 0, 0, 0, 0, + -12, -11, 0, 0, 0, 19, -2, -2, + 2, 2, -2, 0, -2, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -12, + 0, 12, 0, 6, -19, -13, -4, 6, + 0, 0, -13, 0, 2, -4, 0, -3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, + 0, 1, 0, 0, -2, -4, 0, -1, + -1, -2, 0, 0, -1, 0, 0, 0, + -2, 0, 0, -4, 0, -4, 0, -5, + -6, -6, -4, 0, 0, 0, 0, -2, + 0, 0, 2, 0, 1, -2, 0, 1, + 2, 0, 0, 0, 2, 2, -1, 0, + 0, 0, -4, 0, -1, 0, 0, 0, + 1, 0, 0, 2, 0, -1, 0, -2, + 0, -3, 0, 0, 0, -2, 0, 0, + 0, 0, 0, -1, 1, -1, -1, 0, + -2, -2, 0, 0, 0, 0, 0, 0, -1, -1, 0, -2, -2, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, -2, -2, -2, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, -2, 0, -3, - -6, -6, 0, 0, 4, 0, -5, -1, - -2, 0, -1, -9, 2, -1, 1, 0, - 0, 2, 1, -1, -10, 0, -10, -2, - -17, -1, 5, 0, 2, 0, 0, 0, - 0, 0, 0, -3, -2, 0, -6, -2, - 0, 0, 0, 0, 0, 0, -1, -1, - 0, -1, -2, 0, 0, 0, 0, 0, - 0, -2, 0, -2, 0, -1, -2, -2, + -6, -6, 0, 0, 4, 5, 0, -5, + -1, -2, 0, -1, -9, 2, -1, 1, + 0, 0, 2, 1, -1, -10, 0, -10, + -2, -17, -1, 5, 0, 2, 0, 0, + 0, 0, 0, 0, -3, -2, 0, -6, + -2, 0, 0, 0, 0, 0, 0, 0, + -1, -1, 0, -1, -2, 0, 0, 0, + 0, 0, 0, -2, 0, -2, 0, -1, + -2, -2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, -2, 0, -2, + -4, -1, 0, 0, 2, 2, 0, 0, + 0, 0, 0, 0, -1, 0, 0, 0, + 1, 0, 0, 0, 0, -2, 0, -2, + -1, -2, 0, 0, 0, 2, 0, -2, + 0, 0, 0, 0, -2, -3, 0, -4, + 1, 6, 0, 0, -10, -8, -4, 2, + 0, -2, -12, -3, 0, -3, 0, -4, + -12, 0, -3, -5, -1, 0, 0, 1, + -1, 2, -1, -7, 0, -10, -5, -4, + -5, -6, -2, -5, 0, -4, -5, 1, + -2, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -2, -2, 0, -2, -4, -1, - 0, 0, 2, 0, 0, 0, 0, 0, - 0, -1, 0, 0, 0, 1, 0, 0, - 0, 0, -2, 0, -2, -1, -2, 0, - 0, 0, 2, 0, -2, 0, 0, 0, - 0, -2, -3, 0, -4, 1, 6, 0, - 0, -10, -4, 2, 0, -2, -12, -3, - 0, -3, 0, -4, -12, 0, -3, -5, - -1, 0, 0, 1, -1, 2, -1, -7, - 0, -10, -5, -4, -5, -6, -2, -5, - 0, -4, -5, 1, -2, 1, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -1, 0, 0, -1, 0, - -2, 0, -3, -4, -4, -1, 0, 0, - 0, 0, -2, 0, 0, 0, 0, 1, - -1, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, + -1, 0, 0, -1, 0, -2, 0, -3, + -4, -4, -1, 0, 0, 0, 0, -2, + 0, 0, 0, 0, 1, -1, 0, 0, + 0, 2, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -8, 0, 0, 6, -2, - -8, 0, 2, -3, 0, -10, -1, -2, - 2, 2, 0, -2, 3, 0, -7, -3, - -7, -6, -8, 0, 0, 0, -1, 0, - 0, 0, -1, -1, -2, -5, -6, 0, - -18, 0, 0, 0, 0, 1, 0, 0, + 0, -8, 0, 0, 6, 6, -2, -8, + 0, 2, -3, 0, -10, -1, -2, 2, + 2, 0, -2, 3, 0, -7, -3, -7, + -6, -8, 0, 0, 0, -1, 0, 0, + 0, -1, -1, -2, -5, -6, 0, -18, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, -2, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, -4, 2, -1, - -1, -5, -2, 0, -2, -2, -1, -3, - 0, -3, 0, -1, -2, -1, -1, -3, - -2, 0, -1, 0, -4, 0, 0, 0, - -4, 0, -3, 0, -3, -3, 2, 0, - -3, 0, 2, -4, 0, -2, -2, -2, - 0, 0, 0, 0, 0, 0, -2, 0, - 0, -3, 0, -2, 0, -4, -5, -6, - -2, 0, 0, 0, 0, 15, 0, 0, - 1, 0, 0, -2, 0, 2, 0, 0, - 0, 0, 2, -3, 0, -1, -2, -6, - -1, -1, -1, -1, -1, 0, 0, -1, - 0, 0, 0, 0, -2, -2, -2, 0, - -1, 0, -1, 0, 0, 0, -1, -2, - -1, -2, -2, -2, 0, 0, 8, 0, - -1, -2, -2, 3, 0, 0, -9, -3, - 2, -3, 1, 0, -6, 0, -2, -3, - -1, 1, 0, 0, -3, 0, 0, -4, - 0, -3, -2, -3, -2, -2, 0, -3, - 1, -4, -3, 6, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, -4, 2, + -1, -1, -5, -2, 0, -2, -2, -1, + -3, 0, -3, 0, -1, -2, -1, -1, + -3, -2, 0, -1, 0, -4, 0, 0, + 0, -4, 0, -3, 0, -3, -3, 2, + 0, -3, 0, 2, -4, -4, 0, -2, + -2, -2, 0, 0, 0, 0, 0, 0, + -2, 0, 0, -3, 0, -2, 0, -4, + -5, -6, -2, 0, 0, 0, 0, 15, + 0, 0, 1, 0, 0, -2, 0, 2, + 0, 0, 0, 0, 2, 0, -3, 0, + -1, -2, -6, -1, -1, -1, -1, -1, + 0, 0, -1, 0, 0, 0, 0, -2, + -2, -2, 0, -1, 0, -1, 0, 0, + 0, -1, -2, -1, -2, -2, -2, 0, + 0, 8, 0, -1, -2, -8, -2, 3, + 0, 0, -9, -3, 2, -3, 1, 0, + -6, 0, -2, -3, -1, 1, 0, 0, + -3, 0, 0, -4, 0, -3, -2, -3, + -2, -2, 0, -3, 1, -4, -3, 6, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -3, 0, 0, 0, 0, -2, 0, - 0, -2, -2, 0, 0, 0, 0, 0, - -1, 0, 0, 0, 0, 0, -1, 0, - 0, 0, 0, 0, 0, 0, -4, 4, + 0, 0, 0, 0, -2, -2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -3, 0, 0, 0, 0, -2, 0, 0, + -2, -2, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, 0, -1, 0, 0, + 0, 0, 0, 0, 0, 1, -4, 4, 0, -1, -9, 0, 0, -4, -2, 0, -5, 0, -5, 0, -3, -8, -2, -8, -7, -9, 0, -2, 0, -4, -2, -1, -2, -3, -5, -3, -7, -8, -4, -2, - 0, 0, 0, 0, 6, -4, -7, 0, - 1, -6, 0, -10, -1, -2, 4, 1, - 0, -2, 0, -1, -12, -2, -10, -2, - -14, 0, 1, 0, -1, 0, 0, 0, - 0, -1, -1, -7, -1, 0, -12, 0, - 0, 0, -2, -5, 0, 0, -1, -3, - -6, -2, 0, -1, 0, 0, -9, -2, - 0, -6, 0, -6, -2, -3, -5, -2, - -3, -3, 0, -2, -4, -2, -4, 0, - 1, 0, -1, -6, 0, 4, 0, 0, - 0, 0, 0, 0, 0, 0, -1, -4, + 0, 0, 0, 0, 6, 4, -4, -7, + 0, 1, -6, 0, -10, -1, -2, 4, + 1, 0, -2, 0, -1, -12, -2, -10, + -2, -14, 0, 1, 0, -1, 0, 0, + 0, 0, -1, -1, -7, -1, 0, -12, + 0, 0, 0, -2, -5, -9, 0, 0, + -1, -3, -6, -2, 0, -1, 0, 0, + -9, -2, 0, -6, 0, -6, -2, -3, + -5, -2, -3, -3, 0, -2, -4, -2, + -4, 0, 1, 0, -1, -6, 0, 4, + 0, -3, 0, 2, -4, 8, 0, -2, + -2, -2, 0, 0, 0, 0, 0, 0, + -2, 0, 0, -3, 0, -2, 0, -4, + -5, -6, -2, 0, 0, 0, 0, 15, + 0, 0, 1, 0, 0, -2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - -2, 0, -2, 0, 0, -4, -2, 0, - -1, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 3, 0, -6, 0, - 0, 4, 0, -2, 0, -1, 2, 0, - -2, 0, -2, -1, 0, 0, 0, 0, - 0, -2, 0, 0, -2, -3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -2, -2, 0, -3, 0, 2, -3, 0, - -6, -4, 8, 3, 2, -17, -1, 4, - -2, 0, -2, -7, 0, -2, -2, -2, - 2, -2, -2, -6, -2, 0, -5, 0, - -11, -2, 6, -2, -7, 1, -2, -6, - -6, -2, 8, 0, 0, 0, 2, -7, - -5, 6, 0, 1, -14, -2, 2, -3, - -1, -4, -7, -3, -4, -3, -3, -2, - 0, 0, -4, -4, -2, -11, 0, -11, - -3, 0, -7, -11, -1, -6, -3, -6, - -5, 5, 0, 0, -2, 0, 0, -6, - 2, 0, 0, -10, 0, -2, -4, -3, - -1, -6, -4, -5, 0, -2, -6, -2, - -4, -4, -6, -2, -3, 0, -6, -2, - 0, -2, -4, -4, -5, -5, -7, -2, - -4, 0, 0, -2, 1, -7, -6, 6, + 0, -1, -4, 0, 0, 0, 0, 0, + 0, 0, 0, -2, 0, -2, 0, 0, + -4, -2, 0, -1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 3, + 0, -6, 0, 0, 4, 0, 0, -2, + 0, -1, 2, 0, -2, 0, -2, -1, + 0, 0, 0, 0, 0, -2, 0, 0, + -2, -3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, -2, 0, -3, + 0, 2, -3, 0, -6, -4, -4, 8, + 3, 2, -17, -1, 4, -2, 0, -2, + -7, 0, -2, -2, -2, 2, -2, -2, + -6, -2, 0, -5, 0, -11, -2, 6, + -2, -7, 1, -2, -6, -6, -2, 8, + 0, 0, 0, 2, -7, -8, -5, 6, + 0, 1, -14, -2, 2, -3, -1, -4, + -7, -3, -4, -3, -3, -2, 0, 0, + -4, -4, -2, -11, 0, -11, -3, 0, + -7, -11, -1, -6, -3, -6, -5, 5, + 0, 0, -2, 0, 0, 3, -6, 2, + 0, 0, -10, 0, -2, -4, -3, -1, + -6, -4, -5, 0, -2, -6, -2, -4, + -4, -6, -2, -3, 0, -6, -2, 0, + -2, -4, -4, -5, -5, -7, -2, -4, + 0, 0, -2, 1, -7, -4, -6, 6, -2, 1, -18, -3, 4, -4, -3, -7, -8, -2, -6, -2, -3, -2, -2, -4, -6, -1, 0, -12, 0, -12, -4, 5, -7, -13, -4, -7, -8, -10, -6, 4, - 0, 0, 0, 0, 4, -4, 4, 0, - 0, -6, -1, 0, -1, 0, 1, 0, - 0, -2, 0, 0, 0, 0, 0, -2, - 0, 0, 0, 0, -2, 0, 0, 0, - 0, -1, -1, -2, 0, 0, 0, -5, - 0, 0, 0, 0, 0, -4, -1, 0, - 0, 0, -4, 0, -2, 0, 0, 0, + 0, 0, 0, 0, 4, 1, -4, 4, + 0, 0, -6, -1, 0, -1, 0, 1, + 0, 0, -2, 0, 0, 0, 0, 0, + -2, 0, 0, 0, 0, -2, 0, 0, + 0, 0, -1, -1, -2, 0, 0, 0, + -5, 0, 0, 0, 0, 0, 0, -4, + -1, 0, 0, 0, -4, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, -2, 0, 0, -4, -5, -3, - 0, 0, -2, 0, -5, -2, -4, 0, - 0, -5, 0, -2, 0, -2, 0, 0, - 0, 0, -16, -4, -8, -2, -7, 0, - -1, 0, 0, 0, 0, 0, 0, 0, - 0, -3, -3, -2, -3, 0, 0, 0, - -4, 4, -1, -4, -1, -3, -4, 0, - -2, -1, -1, 1, 0, 0, -1, 0, - 0, -17, -2, -3, 0, -4, 0, 0, - -1, -2, 0, 0, 0, 0, 1, 0, - -1, -3, -1, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, -2, 0, 0, -4, + -5, -3, 0, 0, -2, 0, 0, -5, + -2, -4, 0, 0, -5, 0, -2, 0, + -2, 0, 0, 0, 0, -16, -4, -8, + -2, -7, 0, -1, 0, 0, 0, 0, + 0, 0, 0, 0, -3, -3, -2, -3, + 0, 0, 0, -4, 4, 0, -1, -4, + -1, -3, -4, 0, -2, -1, -1, 1, + 0, 0, -1, 0, 0, -17, -2, -3, + 0, -4, 0, 0, -1, -2, 0, 0, + 0, 0, 1, 0, -1, -3, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 0, 0, - 0, 0, 0, -1, -4, 0, 0, 0, - 0, -5, -2, -4, 0, 0, -5, 0, - -2, 0, 0, 0, 0, 0, 0, -19, - 0, -4, -7, -10, 0, -3, 0, 0, - 0, 0, 0, 0, 0, 0, -2, -3, - -1, -3, 3, 0, 0, 6, -2, 2, - 9, 3, 4, -5, 2, 8, 2, 6, - 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -2, 0, -2, 15, - 8, 15, 0, 0, 0, 2, 0, 0, - 7, 0, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, + -1, -4, 0, 0, 0, 0, 0, -5, + -2, -4, 0, 0, -5, 0, -2, 0, + 0, 0, 0, 0, 0, -19, 0, -4, + -7, -10, 0, -3, 0, 0, 0, 0, + 0, 0, 0, 0, -2, -3, -1, -3, + 3, 0, 0, 6, -2, -6, 2, 9, + 3, 4, -5, 2, 8, 2, 6, 4, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -2, 0, -2, 15, 8, + 15, 0, 0, 0, 2, 0, 0, 7, + 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -16, -2, -2, -8, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, -2, 2, 3, - 2, -6, 0, 0, -2, 2, 0, 0, - 0, 0, 0, 0, -5, 0, -2, -1, - -4, 0, -2, 0, -4, -1, 0, -1, - -3, 0, -2, -5, -4, -2, 0, 0, - 0, 0, 0, 0, 0, -1, 0, 0, + 0, 0, 0, 0, 2, 0, -2, 2, + 3, 2, -6, 0, 0, -2, 2, 0, + 0, 0, 0, 0, 0, -5, 0, -2, + -1, -4, 0, -2, 0, -4, -1, 0, + -1, -3, 0, -2, -5, -4, -2, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -3, -16, -2, -2, -8, -9, - 0, 0, 0, 0, 0, 10, 0, 0, + 0, 0, 0, 0, -3, -16, -2, -2, + -8, -9, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, - -2, -2, -2, 1, -1, 1, -1, -5, - 0, 4, 0, 2, 1, -8, -2, -5, - 0, -3, -7, -4, -5, -8, -7, 0, - -2, -1, -2, -1, 0, -1, -1, 3, - 0, 3, -1, 0, 6, 0, 0, 0, - 0, 0, 0, -1, -2, -2, 0, 0, - -5, 0, -1, 0, 0, 0, 0, 0, + 0, 0, -2, -2, -2, -8, 1, -1, + 1, -1, -5, 0, 4, 0, 2, 1, + -8, -2, -5, 0, -3, -7, -4, -5, + -8, -7, 0, -2, -1, -2, -1, 0, + -1, -1, 3, 0, 3, -1, 0, 6, + 0, 0, 0, 0, 0, 0, 0, -1, + -2, -2, 0, 0, -5, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -2, -2, 0, -2, 0, 0, 0, 0, - 2, -3, -4, -1, 0, -6, -1, -4, - -1, -2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, -2, 0, -2, + 0, 0, 0, 0, 2, 0, -3, -4, + -1, 0, -6, -1, -4, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -3, 0, 0, 0, 0, -2, 0, -2, - 0, 0, -1, 0, 0, 0, 0, -6, - 1, 2, 2, 0, -5, 1, 3, 1, - 6, 1, -5, 0, -1, 0, -1, -8, - 0, 0, -6, -5, 0, -3, 0, -3, - 0, -3, 0, -1, 3, 0, -2, -6, - -2, 7, 0, 0, 0, 0, 0, -2, - 2, 0, 0, -6, 0, -1, -1, 0, - -2, 0, 0, -2, 0, -2, -8, -2, - -4, 0, -6, 0, -2, 0, -3, 0, - 1, 0, -2, 0, -2, -6, 0, -2, - 2, 0, 0, 0, 0, 1, 0, -2, + 0, 0, 0, 0, 0, -3, 0, 0, + 0, 0, -2, 0, -2, 0, 0, -1, + 0, 0, 0, 0, -6, -6, 1, 2, + 2, 0, -5, 1, 3, 1, 6, 1, + -5, 0, -1, 0, -1, -8, 0, 0, + -6, -5, 0, -3, 0, -3, 0, -3, + 0, -1, 3, 0, -2, -6, -2, 7, + 0, 0, 0, 0, 0, 2, -2, 2, + 0, 0, -6, 0, -1, -1, 0, -2, + 0, 0, -2, 0, -2, -8, -2, -4, + 0, -6, 0, -2, 0, -3, 0, 1, + 0, -2, 0, -2, -6, 0, -2, 2, + 0, 0, 0, 0, 1, 0, 0, -2, -1, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, -2, -2, 0, 0, - 4, 4, 0, 0, -12, 1, 8, 6, - 3, -8, 1, 8, 0, 7, 0, 0, + 4, 4, 0, 0, -12, -11, 1, 8, + 6, 3, -8, 1, 8, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -937,8 +969,8 @@ static const lv_font_fmt_txt_kern_classes_t kern_classes = .class_pair_values = kern_class_values, .left_class_mapping = kern_left_class_mapping, .right_class_mapping = kern_right_class_mapping, - .left_class_cnt = 49, - .right_class_cnt = 39, + .left_class_cnt = 51, + .right_class_cnt = 40, }; /*-------------------- @@ -983,7 +1015,7 @@ lv_font_t montserrat_medium_12 = { #endif .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ - .line_height = 14, /*The maximum line height required by the font*/ + .line_height = 15, /*The maximum line height required by the font*/ .base_line = 3, /*Baseline measured from the bottom of the line*/ #if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) .subpx = LV_FONT_SUBPX_NONE, diff --git a/main/fonts/montserrat_medium_18.c b/components/domotic_display/fonts/montserrat_medium_18.c similarity index 77% rename from main/fonts/montserrat_medium_18.c rename to components/domotic_display/fonts/montserrat_medium_18.c index d69b1d7..7c6673b 100644 --- a/main/fonts/montserrat_medium_18.c +++ b/components/domotic_display/fonts/montserrat_medium_18.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 18 px * Bpp: 4 - * Opts: --bpp 4 --size 18 --no-compress --font Montserrat-Medium.ttf --symbols 0123456789.°éèûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz %,'(): --format lvgl -o montserrat_medium_18.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575 + * Opts: --bpp 4 --size 18 --no-compress --font Montserrat-Medium.ttf --symbols 0123456789.°éèûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz %,'():ê/ --format lvgl -o montserrat_medium_18.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575 ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE @@ -65,6 +65,17 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { /* U+002E "." */ 0x5, 0x60, 0x1f, 0xf2, 0xc, 0xd0, + /* U+002F "/" */ + 0x0, 0x0, 0x0, 0x57, 0x0, 0x0, 0x0, 0xea, + 0x0, 0x0, 0x3, 0xf5, 0x0, 0x0, 0x9, 0xf0, + 0x0, 0x0, 0xe, 0xa0, 0x0, 0x0, 0x4f, 0x40, + 0x0, 0x0, 0x9f, 0x0, 0x0, 0x0, 0xe9, 0x0, + 0x0, 0x4, 0xf4, 0x0, 0x0, 0x9, 0xe0, 0x0, + 0x0, 0xe, 0x90, 0x0, 0x0, 0x4f, 0x40, 0x0, + 0x0, 0xae, 0x0, 0x0, 0x0, 0xf9, 0x0, 0x0, + 0x5, 0xf3, 0x0, 0x0, 0xa, 0xe0, 0x0, 0x0, + 0xf, 0x90, 0x0, 0x0, 0x5f, 0x30, 0x0, 0x0, + /* U+0030 "0" */ 0x0, 0x4, 0xbe, 0xeb, 0x40, 0x0, 0x0, 0x6f, 0xfb, 0xbf, 0xf6, 0x0, 0x2, 0xfd, 0x10, 0x1, @@ -786,6 +797,18 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0x9, 0x10, 0x0, 0xdf, 0xda, 0xae, 0xf6, 0x0, 0x0, 0x7d, 0xff, 0xc5, 0x0, + /* U+00EA "ê" */ + 0x0, 0x0, 0xbf, 0xc0, 0x0, 0x0, 0x0, 0xae, + 0x4d, 0xb0, 0x0, 0x0, 0x49, 0x10, 0x18, 0x40, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, + 0xdf, 0xe9, 0x10, 0x0, 0x1d, 0xfb, 0x8a, 0xfe, + 0x20, 0xa, 0xf3, 0x0, 0x3, 0xfb, 0x0, 0xfa, + 0x0, 0x0, 0x9, 0xf1, 0x3f, 0xff, 0xff, 0xff, + 0xff, 0x33, 0xfa, 0x33, 0x33, 0x33, 0x30, 0xf, + 0xd0, 0x0, 0x0, 0x0, 0x0, 0x9f, 0x90, 0x0, + 0x9, 0x10, 0x0, 0xdf, 0xda, 0xae, 0xf6, 0x0, + 0x0, 0x7d, 0xff, 0xc5, 0x0, + /* U+00FB "û" */ 0x0, 0x4, 0xff, 0x50, 0x0, 0x0, 0x3f, 0x87, 0xf5, 0x0, 0x0, 0x75, 0x0, 0x47, 0x0, 0x0, @@ -890,76 +913,78 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { {.bitmap_index = 149, .adv_w = 97, .box_w = 5, .box_h = 18, .ofs_x = 0, .ofs_y = -4}, {.bitmap_index = 194, .adv_w = 65, .box_w = 4, .box_h = 6, .ofs_x = 0, .ofs_y = -3}, {.bitmap_index = 206, .adv_w = 65, .box_w = 4, .box_h = 3, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 212, .adv_w = 192, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 290, .adv_w = 107, .box_w = 5, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 323, .adv_w = 165, .box_w = 10, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 388, .adv_w = 165, .box_w = 10, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 453, .adv_w = 193, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 531, .adv_w = 165, .box_w = 10, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 596, .adv_w = 178, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 668, .adv_w = 172, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 740, .adv_w = 185, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 812, .adv_w = 178, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 884, .adv_w = 65, .box_w = 4, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 904, .adv_w = 211, .box_w = 15, .box_h = 13, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 1002, .adv_w = 218, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1080, .adv_w = 208, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1165, .adv_w = 238, .box_w = 13, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1250, .adv_w = 193, .box_w = 11, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1322, .adv_w = 183, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1387, .adv_w = 222, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1472, .adv_w = 234, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1550, .adv_w = 89, .box_w = 3, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1570, .adv_w = 148, .box_w = 9, .box_h = 13, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 1629, .adv_w = 207, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1707, .adv_w = 171, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1772, .adv_w = 275, .box_w = 15, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1870, .adv_w = 234, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1948, .adv_w = 242, .box_w = 15, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 2046, .adv_w = 208, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2124, .adv_w = 242, .box_w = 15, .box_h = 16, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 2244, .adv_w = 209, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2322, .adv_w = 179, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 2394, .adv_w = 169, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 2466, .adv_w = 228, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2544, .adv_w = 205, .box_w = 14, .box_h = 13, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 2635, .adv_w = 324, .box_w = 20, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 2765, .adv_w = 194, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 2843, .adv_w = 186, .box_w = 13, .box_h = 13, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 2928, .adv_w = 189, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 3006, .adv_w = 172, .box_w = 10, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 3056, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 3133, .adv_w = 164, .box_w = 10, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 3183, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 3260, .adv_w = 176, .box_w = 11, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 3315, .adv_w = 102, .box_w = 7, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 3364, .adv_w = 199, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = -4}, - {.bitmap_index = 3441, .adv_w = 196, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 3511, .adv_w = 80, .box_w = 3, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 3532, .adv_w = 82, .box_w = 6, .box_h = 18, .ofs_x = -2, .ofs_y = -4}, - {.bitmap_index = 3586, .adv_w = 177, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 3663, .adv_w = 80, .box_w = 3, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 3684, .adv_w = 304, .box_w = 17, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 3769, .adv_w = 196, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 3819, .adv_w = 183, .box_w = 11, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 3874, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = -4}, - {.bitmap_index = 3951, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = -4}, - {.bitmap_index = 4028, .adv_w = 118, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 4058, .adv_w = 144, .box_w = 9, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 4103, .adv_w = 119, .box_w = 7, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 4145, .adv_w = 195, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 4195, .adv_w = 161, .box_w = 12, .box_h = 10, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 4255, .adv_w = 259, .box_w = 17, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 4340, .adv_w = 159, .box_w = 10, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 4390, .adv_w = 161, .box_w = 12, .box_h = 14, .ofs_x = -1, .ofs_y = -4}, - {.bitmap_index = 4474, .adv_w = 150, .box_w = 9, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 4519, .adv_w = 121, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 6}, - {.bitmap_index = 4544, .adv_w = 176, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 4621, .adv_w = 176, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 4698, .adv_w = 195, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 4768, .adv_w = 324, .box_w = 21, .box_h = 19, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 4968, .adv_w = 360, .box_w = 23, .box_h = 17, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 5164, .adv_w = 288, .box_w = 18, .box_h = 19, .ofs_x = 0, .ofs_y = -3} + {.bitmap_index = 212, .adv_w = 101, .box_w = 8, .box_h = 18, .ofs_x = -1, .ofs_y = -2}, + {.bitmap_index = 284, .adv_w = 192, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 362, .adv_w = 107, .box_w = 5, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 395, .adv_w = 165, .box_w = 10, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 460, .adv_w = 165, .box_w = 10, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 525, .adv_w = 193, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 603, .adv_w = 165, .box_w = 10, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 668, .adv_w = 178, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 740, .adv_w = 172, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 812, .adv_w = 185, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 884, .adv_w = 178, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 956, .adv_w = 65, .box_w = 4, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 976, .adv_w = 211, .box_w = 15, .box_h = 13, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 1074, .adv_w = 218, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1152, .adv_w = 208, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1237, .adv_w = 238, .box_w = 13, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1322, .adv_w = 193, .box_w = 11, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1394, .adv_w = 183, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1459, .adv_w = 222, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1544, .adv_w = 234, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1622, .adv_w = 89, .box_w = 3, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1642, .adv_w = 148, .box_w = 9, .box_h = 13, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 1701, .adv_w = 207, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1779, .adv_w = 171, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1844, .adv_w = 275, .box_w = 15, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1942, .adv_w = 234, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2020, .adv_w = 242, .box_w = 15, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2118, .adv_w = 208, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2196, .adv_w = 242, .box_w = 15, .box_h = 16, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 2316, .adv_w = 209, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2394, .adv_w = 179, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2466, .adv_w = 169, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2538, .adv_w = 228, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2616, .adv_w = 205, .box_w = 14, .box_h = 13, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 2707, .adv_w = 324, .box_w = 20, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2837, .adv_w = 194, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2915, .adv_w = 186, .box_w = 13, .box_h = 13, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 3000, .adv_w = 189, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 3078, .adv_w = 172, .box_w = 10, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 3128, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3205, .adv_w = 164, .box_w = 10, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 3255, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 3332, .adv_w = 176, .box_w = 11, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 3387, .adv_w = 102, .box_w = 7, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 3436, .adv_w = 199, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = -4}, + {.bitmap_index = 3513, .adv_w = 196, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3583, .adv_w = 80, .box_w = 3, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3604, .adv_w = 82, .box_w = 6, .box_h = 18, .ofs_x = -2, .ofs_y = -4}, + {.bitmap_index = 3658, .adv_w = 177, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3735, .adv_w = 80, .box_w = 3, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3756, .adv_w = 304, .box_w = 17, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3841, .adv_w = 196, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3891, .adv_w = 183, .box_w = 11, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 3946, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = -4}, + {.bitmap_index = 4023, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = -4}, + {.bitmap_index = 4100, .adv_w = 118, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 4130, .adv_w = 144, .box_w = 9, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 4175, .adv_w = 119, .box_w = 7, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 4217, .adv_w = 195, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 4267, .adv_w = 161, .box_w = 12, .box_h = 10, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 4327, .adv_w = 259, .box_w = 17, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 4412, .adv_w = 159, .box_w = 10, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 4462, .adv_w = 161, .box_w = 12, .box_h = 14, .ofs_x = -1, .ofs_y = -4}, + {.bitmap_index = 4546, .adv_w = 150, .box_w = 9, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 4591, .adv_w = 121, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 6}, + {.bitmap_index = 4616, .adv_w = 176, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 4693, .adv_w = 176, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 4770, .adv_w = 176, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 4847, .adv_w = 195, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 4917, .adv_w = 324, .box_w = 21, .box_h = 19, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 5117, .adv_w = 360, .box_w = 23, .box_h = 17, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 5313, .adv_w = 288, .box_w = 18, .box_h = 19, .ofs_x = 0, .ofs_y = -3} }; /*--------------------- @@ -968,13 +993,13 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { static const uint8_t glyph_id_ofs_list_0[] = { 0, 0, 0, 0, 0, 1, 0, 2, - 3, 4, 0, 0, 5, 0, 6, 0, - 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17 + 3, 4, 0, 0, 5, 0, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18 }; static const uint16_t unicode_list_3[] = { - 0x0, 0x38, 0x39, 0x4b, 0xef65, 0xf012, 0xf4c5 + 0x0, 0x38, 0x39, 0x3a, 0x4b, 0xef65, 0xf012, 0xf4c5 }; /*Collect the unicode lists and glyph_id offsets*/ @@ -985,16 +1010,16 @@ static const lv_font_fmt_txt_cmap_t cmaps[] = .unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_0, .list_length = 27, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL }, { - .range_start = 65, .range_length = 26, .glyph_id_start = 19, + .range_start = 65, .range_length = 26, .glyph_id_start = 20, .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY }, { - .range_start = 97, .range_length = 26, .glyph_id_start = 45, + .range_start = 97, .range_length = 26, .glyph_id_start = 46, .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY }, { - .range_start = 176, .range_length = 62662, .glyph_id_start = 71, - .unicode_list = unicode_list_3, .glyph_id_ofs_list = NULL, .list_length = 7, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + .range_start = 176, .range_length = 62662, .glyph_id_start = 72, + .unicode_list = unicode_list_3, .glyph_id_ofs_list = NULL, .list_length = 8, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY } }; @@ -1007,274 +1032,290 @@ static const lv_font_fmt_txt_cmap_t cmaps[] = static const uint8_t kern_left_class_mapping[] = { 0, 0, 1, 2, 3, 4, 5, 5, - 6, 0, 7, 8, 9, 10, 11, 12, - 13, 6, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 22, 23, 24, 25, 22, - 22, 18, 26, 18, 27, 28, 29, 23, - 30, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 34, 40, 40, 41, - 37, 34, 34, 35, 35, 42, 43, 44, - 45, 40, 46, 46, 47, 46, 48, 49, - 38, 38, 40, 0, 0, 0 + 6, 7, 0, 8, 9, 10, 11, 12, + 13, 14, 7, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 23, 24, 25, 26, + 23, 23, 19, 27, 28, 29, 30, 31, + 24, 32, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 36, 42, 42, + 43, 39, 36, 36, 37, 37, 44, 45, + 46, 47, 42, 48, 48, 49, 48, 50, + 51, 40, 40, 40, 42, 0, 0, 0 }; /*Map glyph_ids to kern right classes*/ static const uint8_t kern_right_class_mapping[] = { 0, 0, 1, 2, 3, 4, 5, 5, - 6, 7, 8, 9, 10, 11, 6, 12, - 13, 14, 15, 16, 17, 18, 17, 17, - 17, 18, 17, 17, 19, 17, 17, 17, - 17, 18, 17, 18, 17, 20, 21, 22, - 23, 23, 24, 25, 26, 27, 28, 29, - 29, 29, 0, 29, 28, 30, 31, 28, - 28, 32, 32, 29, 32, 29, 32, 33, - 34, 35, 36, 36, 37, 36, 38, 39, - 29, 29, 35, 0, 0, 0 + 6, 7, 8, 9, 10, 11, 12, 7, + 13, 14, 15, 16, 17, 18, 19, 18, + 18, 18, 19, 18, 18, 20, 18, 18, + 18, 18, 19, 18, 19, 18, 21, 22, + 23, 24, 24, 25, 26, 27, 28, 29, + 30, 30, 30, 0, 30, 29, 31, 32, + 29, 29, 33, 33, 30, 33, 30, 33, + 34, 35, 36, 37, 37, 38, 37, 39, + 40, 30, 30, 30, 36, 0, 0, 0 }; /*Kern values between classes*/ static const int8_t kern_class_values[] = { - -35, -8, 0, -6, 9, 0, -6, 3, - 3, 10, 6, -5, 6, 0, 0, 0, + -35, -8, 0, -6, 9, 0, 0, -6, + 3, 3, 10, 6, -5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -8, 8, - 13, 0, 0, -16, 2, 14, 6, 5, - -12, 2, 14, 1, 12, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -8, + 8, 13, 0, 0, -16, -17, 2, 14, + 6, 5, -12, 2, 14, 1, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 0, 3, 0, 0, -6, + 0, 0, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 10, 0, 3, + 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, -11, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -18, -16, 0, 0, - 0, -3, -4, 3, 3, -3, 0, -4, - 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -18, 0, 2, 0, 0, -3, - 0, -1, -1, -3, 0, 0, -2, 0, - 0, 0, -2, 0, 0, -7, 0, -6, - 0, -7, -10, -10, -5, 0, 0, 0, - 0, -2, 0, 0, 3, 0, 2, -3, - 0, 1, 3, 0, 0, 0, 3, -1, - 0, 0, 0, -5, 0, -1, 0, 0, - 0, 1, 0, 0, 4, 0, -2, 0, - -3, 0, -5, 0, 0, 0, -3, 0, - 0, 0, 0, 0, -1, 1, -2, -2, - 0, -3, -3, 0, 0, 0, 0, 0, + -18, -16, 0, 0, 0, 29, -3, -4, + 3, 3, -3, 0, -4, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -18, + 0, 17, 0, 10, -28, -20, -6, 9, + 0, 0, -19, 0, 3, -7, 0, -4, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 14, + 0, 2, 0, 0, -3, -6, 0, -1, + -1, -3, 0, 0, -2, 0, 0, 0, + -2, 0, 0, -7, 0, -6, 0, -7, + -10, -10, -5, 0, 0, 0, 0, -2, + 0, 0, 3, 0, 2, -3, 0, 1, + 3, 0, 0, 0, 3, 3, -1, 0, + 0, 0, -5, 0, -1, 0, 0, 0, + 1, 0, 0, 4, 0, -2, 0, -3, + 0, -5, 0, 0, 0, -3, 0, 0, + 0, 0, 0, -1, 1, -2, -2, 0, + -3, -3, 0, 0, 0, 0, 0, 0, -1, -1, 0, -3, -3, 0, 0, 0, 1, 0, 0, 0, 0, -2, 0, -3, -3, -3, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, -2, -4, 0, -4, - -9, -9, 0, 0, 6, 0, -7, -1, - -3, 0, -1, -14, 3, -2, 2, 0, - 0, 3, 1, -2, -15, 0, -15, -2, - -25, -2, 8, 0, 4, 0, 0, 0, - 0, 1, 0, -5, -4, 0, -9, -3, - 0, 0, 0, 0, 0, 0, -1, -1, - 0, -1, -4, 0, 0, 0, 0, 0, - 0, -3, 0, -3, 0, -2, -3, -2, + -9, -9, 0, 0, 6, 8, 0, -7, + -1, -3, 0, -1, -14, 3, -2, 2, + 0, 0, 3, 1, -2, -15, 0, -15, + -2, -25, -2, 8, 0, 4, 0, 0, + 0, 0, 1, 0, -5, -4, 0, -9, + -3, 0, 0, 0, 0, 0, 0, 0, + -1, -1, 0, -1, -4, 0, 0, 0, + 0, 0, 0, -3, 0, -3, 0, -2, + -3, -2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -2, -2, 0, -3, + -6, -2, 0, 0, 3, 3, 0, 0, + 0, 0, 0, 0, -2, 0, 0, 0, + 2, 0, 0, 0, 0, -3, 0, -3, + -2, -3, 0, 0, 0, 2, 0, -2, + 0, 0, 0, 0, -3, -4, 0, -5, + 1, 9, 0, 0, -15, -12, -6, 3, + 0, -2, -19, -5, 0, -5, 0, -6, + -18, 0, -5, -8, -2, 0, 0, 1, + -1, 2, -2, -11, 0, -14, -7, -6, + -7, -9, -3, -8, -1, -5, -8, 2, + -3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -2, -2, 0, -3, -6, -2, - 0, 0, 3, 0, 0, 0, 0, 0, - 0, -2, 0, 0, 0, 2, 0, 0, - 0, 0, -3, 0, -3, -2, -3, 0, - 0, 0, 2, 0, -2, 0, 0, 0, - 0, -3, -4, 0, -5, 1, 9, 0, - 0, -15, -6, 3, 0, -2, -19, -5, - 0, -5, 0, -6, -18, 0, -5, -8, - -2, 0, 0, 1, -1, 2, -2, -11, - 0, -14, -7, -6, -7, -9, -3, -8, - -1, -5, -8, 2, -3, 1, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -1, 0, 0, -1, 0, - -3, 0, -5, -6, -6, -1, 0, 0, - 0, 0, -2, 0, 0, 0, 0, 1, - -2, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2, 0, + -1, 0, 0, -1, 0, -3, 0, -5, + -6, -6, -1, 0, 0, 0, 0, -2, + 0, 0, 0, 0, 1, -2, 0, 0, + 0, 3, 0, 0, 0, 14, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -12, 0, 0, 10, -2, - -12, 0, 3, -4, 0, -14, -1, -4, - 3, 4, 0, -3, 4, 0, -10, -4, - -11, -10, -12, 0, 0, 0, -1, 0, - 0, 0, -1, -1, -3, -8, -10, -1, - -27, 0, 0, 0, 0, 1, 0, 0, + 0, -12, 0, 0, 10, 9, -2, -12, + 0, 3, -4, 0, -14, -1, -4, 3, + 4, 0, -3, 4, 0, -10, -4, -11, + -10, -12, 0, 0, 0, -1, 0, 0, + 0, -1, -1, -3, -8, -10, -1, -27, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, -1, -3, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, -6, 3, -2, - -1, -7, -3, 0, -4, -3, -2, -5, - 0, -4, 0, -1, -2, -1, -2, -5, - -3, 0, -2, 0, -6, 0, 0, 0, - -6, 0, -5, 0, -5, -5, 3, 0, - -5, 0, 3, -6, 0, -3, -3, -3, - 0, 0, 0, 0, 0, 0, -3, 0, - 0, -4, 0, -3, 0, -6, -7, -9, - -2, 0, 0, 0, 0, 23, 0, 0, - 1, 0, 0, -4, 0, 3, 0, 0, - 0, 0, 3, -4, 0, -2, -3, -9, - -2, -2, -2, -1, -2, 0, 0, -1, - 0, 0, 0, 0, -3, -2, -2, 0, - -2, 0, -2, 0, 0, 0, -2, -3, - -2, -3, -3, -3, 0, 0, 12, 0, - -2, -3, -4, 4, 0, 0, -14, -5, - 3, -5, 2, 0, -9, 0, -2, -4, - -1, 1, 0, 0, -5, 0, 0, -5, - 0, -5, -3, -4, -3, -3, 0, -5, - 1, -5, -5, 9, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, -6, 3, + -2, -1, -7, -3, 0, -4, -3, -2, + -5, 0, -4, 0, -1, -2, -1, -2, + -5, -3, 0, -2, 0, -6, 0, 0, + 0, -6, 0, -5, 0, -5, -5, 3, + 0, -5, 0, 3, -6, -6, 0, -3, + -3, -3, 0, 0, 0, 0, 0, 0, + -3, 0, 0, -4, 0, -3, 0, -6, + -7, -9, -2, 0, 0, 0, 0, 23, + 0, 0, 1, 0, 0, -4, 0, 3, + 0, 0, 0, 0, 3, 0, -4, 0, + -2, -3, -9, -2, -2, -2, -1, -2, + 0, 0, -1, 0, 0, 0, 0, -3, + -2, -2, 0, -2, 0, -2, 0, 0, + 0, -2, -3, -2, -3, -3, -3, 0, + 0, 12, 0, -2, -3, -12, -4, 4, + 0, 0, -14, -5, 3, -5, 2, 0, + -9, 0, -2, -4, -1, 1, 0, 0, + -5, 0, 0, -5, 0, -5, -3, -4, + -3, -3, 0, -5, 1, -5, -5, 9, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -4, 0, 0, 0, 0, -4, 0, - 0, -3, -3, 0, 0, 0, 0, 0, - -1, 0, 0, 0, 0, 0, -2, 0, - 0, 0, 0, 0, 0, 0, -6, 6, + 0, 0, 0, 0, -2, -3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -4, 0, 0, 0, 0, -4, 0, 0, + -3, -3, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, 0, -2, 0, 0, + 0, 0, 0, 0, 0, 2, -6, 6, 1, -2, -14, 0, 0, -6, -3, 0, -8, 0, -7, 0, -4, -12, -3, -12, -11, -14, 0, -4, 0, -7, -3, -1, -3, -5, -8, -5, -11, -12, -7, -3, - 0, 0, 0, 0, 9, -6, -11, 0, - 1, -9, 0, -14, -2, -3, 6, 1, - 0, -4, 0, -2, -19, -3, -15, -3, - -21, 0, 1, 0, -2, 0, 0, 0, - 0, -1, -2, -11, -2, 0, -19, 0, - 0, 0, -3, -8, 0, 0, -1, -4, - -9, -3, 0, -2, 0, 0, -13, -3, - 0, -10, 0, -9, -2, -5, -7, -3, - -5, -4, 0, -3, -5, -3, -5, 0, - 1, 0, -2, -10, 0, 6, 0, 0, - 0, 0, 0, 0, 0, 0, -2, -6, + 0, 0, 0, 0, 9, 6, -6, -11, + 0, 1, -9, 0, -14, -2, -3, 6, + 1, 0, -4, 0, -2, -19, -3, -15, + -3, -21, 0, 1, 0, -2, 0, 0, + 0, 0, -1, -2, -11, -2, 0, -19, + 0, 0, 0, -3, -8, -14, 0, 0, + -1, -4, -9, -3, 0, -2, 0, 0, + -13, -3, 0, -10, 0, -9, -2, -5, + -7, -3, -5, -4, 0, -3, -5, -3, + -5, 0, 1, 0, -2, -10, 0, 6, + 0, -5, 0, 3, -6, 12, 0, -3, + -3, -3, 0, 0, 0, 0, 0, 0, + -3, 0, 0, -4, 0, -3, 0, -6, + -7, -9, -2, 0, 0, 0, 0, 23, + 0, 0, 1, 0, 0, -4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, - -3, 0, -3, 0, 0, -6, -3, 0, - -1, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 4, 0, -9, 0, - 0, 6, 0, -3, 0, -2, 3, 0, - -3, 0, -3, -1, 0, 0, 0, 0, - 0, -3, 0, 0, -4, -4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -3, -3, 0, -4, 0, 2, -5, 0, - -9, -6, 12, 5, 3, -25, -2, 6, - -3, 0, -3, -10, 0, -3, -3, -3, - 3, -4, -2, -9, -2, 0, -8, 0, - -16, -4, 8, -4, -11, 1, -4, -10, - -10, -3, 12, 0, 0, 0, 2, -11, - -7, 9, 0, 1, -21, -2, 3, -5, - -2, -7, -11, -4, -6, -4, -4, -2, - 0, 0, -7, -6, -3, -16, 0, -16, - -4, 0, -10, -17, -1, -9, -5, -10, - -8, 8, 0, 0, -3, 0, 0, -10, - 3, 0, 0, -15, 0, -3, -6, -5, - -2, -10, -7, -7, 0, -4, -9, -3, - -7, -5, -9, -3, -5, 0, -9, -3, - 0, -3, -6, -7, -8, -8, -11, -4, - -6, 0, 0, -3, 2, -11, -10, 10, + 0, -2, -6, 0, 0, 0, 0, 0, + 0, 0, 0, -3, 0, -3, 0, 0, + -6, -3, 0, -1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 4, + 0, -9, 0, 0, 6, 0, 0, -3, + 0, -2, 3, 0, -3, 0, -3, -1, + 0, 0, 0, 0, 0, -3, 0, 0, + -4, -4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -3, -3, 0, -4, + 0, 2, -5, 0, -9, -6, -6, 12, + 5, 3, -25, -2, 6, -3, 0, -3, + -10, 0, -3, -3, -3, 3, -4, -2, + -9, -2, 0, -8, 0, -16, -4, 8, + -4, -11, 1, -4, -10, -10, -3, 12, + 0, 0, 0, 2, -11, -12, -7, 9, + 0, 1, -21, -2, 3, -5, -2, -7, + -11, -4, -6, -4, -4, -2, 0, 0, + -7, -6, -3, -16, 0, -16, -4, 0, + -10, -17, -1, -9, -5, -10, -8, 8, + 0, 0, -3, 0, 0, 5, -10, 3, + 0, 0, -15, 0, -3, -6, -5, -2, + -10, -7, -7, 0, -4, -9, -3, -7, + -5, -9, -3, -5, 0, -9, -3, 0, + -3, -6, -7, -8, -8, -11, -4, -6, + 0, 0, -3, 2, -11, -6, -10, 10, -3, 1, -27, -5, 6, -6, -5, -11, -12, -3, -9, -3, -4, -2, -3, -6, -9, -1, 0, -19, 0, -17, -7, 7, -11, -20, -6, -10, -12, -14, -10, 6, - 0, 0, 0, 0, 6, -5, 6, 0, - 0, -9, -1, 0, -1, 0, 1, 0, - 0, -2, 0, 0, 0, 0, 0, -3, - 0, 0, 1, 0, -3, 0, 0, 0, - 0, -2, -2, -3, 0, 0, 0, -8, - 0, 0, 0, 0, 0, -6, -1, 0, - 0, 0, -6, 0, -3, 0, 0, 0, + 0, 0, 0, 0, 6, 2, -5, 6, + 0, 0, -9, -1, 0, -1, 0, 1, + 0, 0, -2, 0, 0, 0, 0, 0, + -3, 0, 0, 1, 0, -3, 0, 0, + 0, 0, -2, -2, -3, 0, 0, 0, + -8, 0, 0, 0, 0, 0, 0, -6, + -1, 0, 0, 0, -6, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, -3, 0, 0, -5, -8, -4, - 0, 0, -3, 0, -8, -3, -7, 0, - 0, -8, 0, -3, 0, -3, 0, 0, - 0, 0, -23, -5, -12, -3, -10, 0, - -1, 0, 0, 0, 0, 0, 0, 0, - 0, -4, -5, -2, -5, 0, 0, 0, - -6, 6, -2, -7, -2, -5, -5, 0, - -3, -1, -2, 2, 0, 0, -1, 0, - 0, -25, -2, -4, 0, -6, 0, 0, - -2, -2, 0, 0, 0, 0, 2, 0, - -2, -5, -2, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, -3, 0, 0, -5, + -8, -4, 0, 0, -3, 0, 0, -8, + -3, -7, 0, 0, -8, 0, -3, 0, + -3, 0, 0, 0, 0, -23, -5, -12, + -3, -10, 0, -1, 0, 0, 0, 0, + 0, 0, 0, 0, -4, -5, -2, -5, + 0, 0, 0, -6, 6, 0, -2, -7, + -2, -5, -5, 0, -3, -1, -2, 2, + 0, 0, -1, 0, 0, -25, -2, -4, + 0, -6, 0, 0, -2, -2, 0, 0, + 0, 0, 2, 0, -2, -5, -2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, -2, -6, 0, 0, 0, - 0, -8, -3, -6, 0, 0, -8, 0, - -3, 0, 0, 0, 0, 0, 0, -28, - 0, -6, -11, -14, 0, -4, 0, 0, - 0, 0, 0, 0, 0, 0, -3, -4, - -1, -4, 5, 0, 0, 9, -3, 3, - 14, 5, 6, -8, 3, 12, 3, 8, - 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -3, 0, -2, 23, - 12, 23, 0, 0, 0, 3, 0, 0, - 11, 0, 0, 0, 0, 0, 0, -2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, + -2, -6, 0, 0, 0, 0, 0, -8, + -3, -6, 0, 0, -8, 0, -3, 0, + 0, 0, 0, 0, 0, -28, 0, -6, + -11, -14, 0, -4, 0, 0, 0, 0, + 0, 0, 0, 0, -3, -4, -1, -4, + 5, 0, 0, 9, -3, -9, 3, 14, + 5, 6, -8, 3, 12, 3, 8, 6, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -3, 0, -2, 23, 12, + 23, 0, 0, 0, 3, 0, 0, 11, + 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -24, -3, -2, -12, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, -3, 2, 5, - 3, -9, 0, -1, -2, 3, 0, 0, - 0, 0, 0, 0, -7, 0, -3, -2, - -6, 0, -3, 0, -6, -2, 0, -2, - -5, 0, -3, -8, -6, -3, 0, 0, - 0, 0, 0, 0, 0, -2, 0, 0, + 0, 0, 0, 0, 3, 0, -3, 2, + 5, 3, -9, 0, -1, -2, 3, 0, + 0, 0, 0, 0, 0, -7, 0, -3, + -2, -6, 0, -3, 0, -6, -2, 0, + -2, -5, 0, -3, -8, -6, -3, 0, + 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -5, -24, -3, -2, -12, -14, - 0, 0, 0, 0, 0, 14, 0, 0, + 0, 0, 0, 0, -5, -24, -3, -2, + -12, -14, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, - -3, -3, -3, 1, -2, 1, -2, -8, - 1, 6, 1, 2, 1, -12, -3, -7, - 0, -5, -11, -5, -8, -12, -11, 0, - -2, -2, -3, -2, 0, -2, -1, 4, - 0, 4, -2, 0, 9, 0, 0, 0, - 0, 0, 0, -2, -3, -3, 0, 0, - -8, 0, -1, 0, 0, 0, 0, 0, + 0, 0, -3, -3, -3, -12, 1, -2, + 1, -2, -8, 1, 6, 1, 2, 1, + -12, -3, -7, 0, -5, -11, -5, -8, + -12, -11, 0, -2, -2, -3, -2, 0, + -2, -1, 4, 0, 4, -2, 0, 9, + 0, 0, 0, 0, 0, 0, 0, -2, + -3, -3, 0, 0, -8, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -3, -3, 0, -4, 0, 0, 0, 0, - 3, -5, -5, -2, 0, -8, -2, -6, - -2, -3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -3, -3, 0, -4, + 0, 0, 0, 0, 3, 0, -5, -5, + -2, 0, -8, -2, -6, -2, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -5, 0, 0, 0, 0, -4, 0, -3, - 0, 0, -1, 0, 0, 0, 0, -10, - 2, 3, 3, -1, -8, 2, 4, 2, - 9, 2, -8, 0, -2, 0, -2, -12, - 0, 0, -9, -8, 0, -5, 0, -4, - 0, -4, 0, -2, 4, 0, -2, -9, - -3, 11, 0, 0, 0, 0, 0, -3, - 2, 0, 0, -10, 0, -2, -1, 0, - -3, 0, 0, -2, 0, -3, -12, -3, - -6, 0, -9, 0, -3, 0, -5, 0, - 2, 0, -3, 0, -3, -9, 0, -3, - 3, 0, 0, 0, 0, 1, 0, -3, + 0, 0, 0, 0, 0, -5, 0, 0, + 0, 0, -4, 0, -3, 0, 0, -1, + 0, 0, 0, 0, -10, -9, 2, 3, + 3, -1, -8, 2, 4, 2, 9, 2, + -8, 0, -2, 0, -2, -12, 0, 0, + -9, -8, 0, -5, 0, -4, 0, -4, + 0, -2, 4, 0, -2, -9, -3, 11, + 0, 0, 0, 0, 0, 3, -3, 2, + 0, 0, -10, 0, -2, -1, 0, -3, + 0, 0, -2, 0, -3, -12, -3, -6, + 0, -9, 0, -3, 0, -5, 0, 2, + 0, -3, 0, -3, -9, 0, -3, 3, + 0, 0, 0, 0, 1, 0, 0, -3, -2, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 1, 0, -3, -3, 0, 0, - 7, 6, 0, 0, -18, 1, 12, 9, - 5, -12, 2, 12, 0, 11, 0, 0, + 7, 6, 0, 0, -18, -16, 1, 12, + 9, 5, -12, 2, 12, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -1284,8 +1325,8 @@ static const lv_font_fmt_txt_kern_classes_t kern_classes = .class_pair_values = kern_class_values, .left_class_mapping = kern_left_class_mapping, .right_class_mapping = kern_right_class_mapping, - .left_class_cnt = 49, - .right_class_cnt = 39, + .left_class_cnt = 51, + .right_class_cnt = 40, }; /*-------------------- diff --git a/main/fonts/montserrat_medium_24.c b/components/domotic_display/fonts/montserrat_medium_24.c similarity index 82% rename from main/fonts/montserrat_medium_24.c rename to components/domotic_display/fonts/montserrat_medium_24.c index 7f511ed..4aea77c 100644 --- a/main/fonts/montserrat_medium_24.c +++ b/components/domotic_display/fonts/montserrat_medium_24.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 24 px * Bpp: 4 - * Opts: --bpp 4 --size 24 --no-compress --font Montserrat-Medium.ttf --symbols 0123456789.°éèûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz %,'(): --format lvgl -o montserrat_medium_24.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575 + * Opts: --bpp 4 --size 24 --no-compress --font Montserrat-Medium.ttf --symbols 0123456789.°éèûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz %,'():ê/ --format lvgl -o montserrat_medium_24.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575 ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE @@ -81,6 +81,24 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { /* U+002E "." */ 0x4, 0x10, 0x9f, 0xf1, 0xdf, 0xf4, 0x6f, 0xb0, + /* U+002F "/" */ + 0x0, 0x0, 0x0, 0x0, 0xef, 0x20, 0x0, 0x0, + 0x0, 0x4f, 0xd0, 0x0, 0x0, 0x0, 0x9, 0xf7, + 0x0, 0x0, 0x0, 0x0, 0xef, 0x20, 0x0, 0x0, + 0x0, 0x4f, 0xc0, 0x0, 0x0, 0x0, 0xa, 0xf7, + 0x0, 0x0, 0x0, 0x0, 0xff, 0x10, 0x0, 0x0, + 0x0, 0x5f, 0xc0, 0x0, 0x0, 0x0, 0xa, 0xf6, + 0x0, 0x0, 0x0, 0x0, 0xff, 0x10, 0x0, 0x0, + 0x0, 0x5f, 0xb0, 0x0, 0x0, 0x0, 0xb, 0xf6, + 0x0, 0x0, 0x0, 0x1, 0xff, 0x10, 0x0, 0x0, + 0x0, 0x6f, 0xb0, 0x0, 0x0, 0x0, 0xb, 0xf5, + 0x0, 0x0, 0x0, 0x1, 0xff, 0x0, 0x0, 0x0, + 0x0, 0x6f, 0xa0, 0x0, 0x0, 0x0, 0xc, 0xf5, + 0x0, 0x0, 0x0, 0x2, 0xff, 0x0, 0x0, 0x0, + 0x0, 0x7f, 0xa0, 0x0, 0x0, 0x0, 0xd, 0xf4, + 0x0, 0x0, 0x0, 0x2, 0xfe, 0x0, 0x0, 0x0, + 0x0, 0x8f, 0x90, 0x0, 0x0, 0x0, 0x0, + /* U+0030 "0" */ 0x0, 0x1, 0x8d, 0xff, 0xd8, 0x10, 0x0, 0x0, 0x2e, 0xff, 0xff, 0xff, 0xe2, 0x0, 0x1, 0xff, @@ -1160,6 +1178,23 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0x0, 0x9f, 0xff, 0xff, 0xff, 0xf4, 0x0, 0x0, 0x3a, 0xdf, 0xfd, 0x81, 0x0, + /* U+00EA "ê" */ + 0x0, 0x0, 0x4f, 0xfd, 0x10, 0x0, 0x0, 0x0, + 0x4f, 0xe8, 0xfd, 0x10, 0x0, 0x0, 0x4f, 0xd2, + 0x4, 0xfd, 0x10, 0x0, 0x2, 0x30, 0x0, 0x1, + 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x5b, 0xef, 0xda, 0x30, 0x0, 0x0, + 0xaf, 0xff, 0xff, 0xff, 0x80, 0x0, 0xaf, 0xe6, + 0x10, 0x28, 0xff, 0x70, 0x4f, 0xf2, 0x0, 0x0, + 0x5, 0xff, 0x1a, 0xf9, 0x0, 0x0, 0x0, 0xc, + 0xf6, 0xdf, 0xcb, 0xbb, 0xbb, 0xbb, 0xdf, 0x9f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xdf, 0x60, + 0x0, 0x0, 0x0, 0x0, 0xa, 0xfc, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x4f, 0xf6, 0x0, 0x0, 0x0, + 0x60, 0x0, 0xaf, 0xfa, 0x31, 0x14, 0xbf, 0x80, + 0x0, 0x9f, 0xff, 0xff, 0xff, 0xf4, 0x0, 0x0, + 0x3a, 0xdf, 0xfd, 0x81, 0x0, + /* U+00FB "û" */ 0x0, 0x0, 0x8f, 0xfa, 0x0, 0x0, 0x0, 0x0, 0x9f, 0xba, 0xfa, 0x0, 0x0, 0x0, 0x9f, 0x90, @@ -1320,76 +1355,78 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { {.bitmap_index = 250, .adv_w = 130, .box_w = 6, .box_h = 23, .ofs_x = 0, .ofs_y = -5}, {.bitmap_index = 319, .adv_w = 87, .box_w = 4, .box_h = 7, .ofs_x = 1, .ofs_y = -4}, {.bitmap_index = 333, .adv_w = 87, .box_w = 4, .box_h = 4, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 341, .adv_w = 256, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 460, .adv_w = 142, .box_w = 7, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 520, .adv_w = 220, .box_w = 13, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 631, .adv_w = 220, .box_w = 13, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 742, .adv_w = 257, .box_w = 16, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 878, .adv_w = 220, .box_w = 13, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 989, .adv_w = 237, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1108, .adv_w = 230, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1227, .adv_w = 247, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1346, .adv_w = 237, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1465, .adv_w = 87, .box_w = 4, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1491, .adv_w = 281, .box_w = 19, .box_h = 17, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 1653, .adv_w = 291, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1781, .adv_w = 278, .box_w = 16, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1917, .adv_w = 317, .box_w = 17, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2062, .adv_w = 257, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2173, .adv_w = 244, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2284, .adv_w = 296, .box_w = 16, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2420, .adv_w = 312, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2548, .adv_w = 119, .box_w = 3, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2574, .adv_w = 197, .box_w = 11, .box_h = 17, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 2668, .adv_w = 276, .box_w = 16, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2804, .adv_w = 228, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2915, .adv_w = 367, .box_w = 19, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 3077, .adv_w = 312, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 3205, .adv_w = 323, .box_w = 19, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 3367, .adv_w = 277, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 3495, .adv_w = 323, .box_w = 19, .box_h = 20, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 3685, .adv_w = 279, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 3813, .adv_w = 238, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 3932, .adv_w = 225, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 4051, .adv_w = 304, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 4179, .adv_w = 273, .box_w = 19, .box_h = 17, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 4341, .adv_w = 432, .box_w = 27, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 4571, .adv_w = 258, .box_w = 16, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 4707, .adv_w = 248, .box_w = 17, .box_h = 17, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 4852, .adv_w = 252, .box_w = 15, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 4980, .adv_w = 230, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 5058, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 5184, .adv_w = 219, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 5262, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 5388, .adv_w = 235, .box_w = 13, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 5473, .adv_w = 136, .box_w = 10, .box_h = 18, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 5563, .adv_w = 265, .box_w = 14, .box_h = 18, .ofs_x = 1, .ofs_y = -5}, - {.bitmap_index = 5689, .adv_w = 262, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 5806, .adv_w = 107, .box_w = 4, .box_h = 18, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 5842, .adv_w = 109, .box_w = 9, .box_h = 23, .ofs_x = -3, .ofs_y = -5}, - {.bitmap_index = 5946, .adv_w = 237, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 6063, .adv_w = 107, .box_w = 3, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 6090, .adv_w = 406, .box_w = 22, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 6233, .adv_w = 262, .box_w = 13, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 6318, .adv_w = 244, .box_w = 14, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 6409, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 2, .ofs_y = -5}, - {.bitmap_index = 6535, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 1, .ofs_y = -5}, - {.bitmap_index = 6661, .adv_w = 157, .box_w = 8, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 6713, .adv_w = 192, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 6791, .adv_w = 159, .box_w = 10, .box_h = 16, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 6871, .adv_w = 260, .box_w = 13, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 6956, .adv_w = 215, .box_w = 15, .box_h = 13, .ofs_x = -1, .ofs_y = 0}, - {.bitmap_index = 7054, .adv_w = 345, .box_w = 22, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 7197, .adv_w = 212, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 7282, .adv_w = 215, .box_w = 15, .box_h = 18, .ofs_x = -1, .ofs_y = -5}, - {.bitmap_index = 7417, .adv_w = 200, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 7495, .adv_w = 161, .box_w = 8, .box_h = 10, .ofs_x = 1, .ofs_y = 9}, - {.bitmap_index = 7535, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 7652, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 7769, .adv_w = 260, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 7886, .adv_w = 432, .box_w = 28, .box_h = 25, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 8236, .adv_w = 480, .box_w = 30, .box_h = 22, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 8566, .adv_w = 384, .box_w = 24, .box_h = 24, .ofs_x = 0, .ofs_y = -3} + {.bitmap_index = 341, .adv_w = 135, .box_w = 11, .box_h = 23, .ofs_x = -1, .ofs_y = -2}, + {.bitmap_index = 468, .adv_w = 256, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 587, .adv_w = 142, .box_w = 7, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 647, .adv_w = 220, .box_w = 13, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 758, .adv_w = 220, .box_w = 13, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 869, .adv_w = 257, .box_w = 16, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1005, .adv_w = 220, .box_w = 13, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1116, .adv_w = 237, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1235, .adv_w = 230, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1354, .adv_w = 247, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1473, .adv_w = 237, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1592, .adv_w = 87, .box_w = 4, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1618, .adv_w = 281, .box_w = 19, .box_h = 17, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 1780, .adv_w = 291, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1908, .adv_w = 278, .box_w = 16, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2044, .adv_w = 317, .box_w = 17, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 2189, .adv_w = 257, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 2300, .adv_w = 244, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 2411, .adv_w = 296, .box_w = 16, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2547, .adv_w = 312, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 2675, .adv_w = 119, .box_w = 3, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 2701, .adv_w = 197, .box_w = 11, .box_h = 17, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 2795, .adv_w = 276, .box_w = 16, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 2931, .adv_w = 228, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 3042, .adv_w = 367, .box_w = 19, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 3204, .adv_w = 312, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 3332, .adv_w = 323, .box_w = 19, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 3494, .adv_w = 277, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 3622, .adv_w = 323, .box_w = 19, .box_h = 20, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 3812, .adv_w = 279, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 3940, .adv_w = 238, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 4059, .adv_w = 225, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 4178, .adv_w = 304, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 4306, .adv_w = 273, .box_w = 19, .box_h = 17, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 4468, .adv_w = 432, .box_w = 27, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 4698, .adv_w = 258, .box_w = 16, .box_h = 17, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 4834, .adv_w = 248, .box_w = 17, .box_h = 17, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 4979, .adv_w = 252, .box_w = 15, .box_h = 17, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 5107, .adv_w = 230, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 5185, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 5311, .adv_w = 219, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 5389, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 5515, .adv_w = 235, .box_w = 13, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 5600, .adv_w = 136, .box_w = 10, .box_h = 18, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 5690, .adv_w = 265, .box_w = 14, .box_h = 18, .ofs_x = 1, .ofs_y = -5}, + {.bitmap_index = 5816, .adv_w = 262, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 5933, .adv_w = 107, .box_w = 4, .box_h = 18, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 5969, .adv_w = 109, .box_w = 9, .box_h = 23, .ofs_x = -3, .ofs_y = -5}, + {.bitmap_index = 6073, .adv_w = 237, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 6190, .adv_w = 107, .box_w = 3, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 6217, .adv_w = 406, .box_w = 22, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 6360, .adv_w = 262, .box_w = 13, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 6445, .adv_w = 244, .box_w = 14, .box_h = 13, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 6536, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 2, .ofs_y = -5}, + {.bitmap_index = 6662, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 1, .ofs_y = -5}, + {.bitmap_index = 6788, .adv_w = 157, .box_w = 8, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 6840, .adv_w = 192, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 6918, .adv_w = 159, .box_w = 10, .box_h = 16, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 6998, .adv_w = 260, .box_w = 13, .box_h = 13, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 7083, .adv_w = 215, .box_w = 15, .box_h = 13, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 7181, .adv_w = 345, .box_w = 22, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 7324, .adv_w = 212, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 7409, .adv_w = 215, .box_w = 15, .box_h = 18, .ofs_x = -1, .ofs_y = -5}, + {.bitmap_index = 7544, .adv_w = 200, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 7622, .adv_w = 161, .box_w = 8, .box_h = 10, .ofs_x = 1, .ofs_y = 9}, + {.bitmap_index = 7662, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 7779, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 7896, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 8013, .adv_w = 260, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 8130, .adv_w = 432, .box_w = 28, .box_h = 25, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 8480, .adv_w = 480, .box_w = 30, .box_h = 22, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 8810, .adv_w = 384, .box_w = 24, .box_h = 24, .ofs_x = 0, .ofs_y = -3} }; /*--------------------- @@ -1398,13 +1435,13 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { static const uint8_t glyph_id_ofs_list_0[] = { 0, 0, 0, 0, 0, 1, 0, 2, - 3, 4, 0, 0, 5, 0, 6, 0, - 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17 + 3, 4, 0, 0, 5, 0, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18 }; static const uint16_t unicode_list_3[] = { - 0x0, 0x38, 0x39, 0x4b, 0xef65, 0xf012, 0xf4c5 + 0x0, 0x38, 0x39, 0x3a, 0x4b, 0xef65, 0xf012, 0xf4c5 }; /*Collect the unicode lists and glyph_id offsets*/ @@ -1415,16 +1452,16 @@ static const lv_font_fmt_txt_cmap_t cmaps[] = .unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_0, .list_length = 27, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL }, { - .range_start = 65, .range_length = 26, .glyph_id_start = 19, + .range_start = 65, .range_length = 26, .glyph_id_start = 20, .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY }, { - .range_start = 97, .range_length = 26, .glyph_id_start = 45, + .range_start = 97, .range_length = 26, .glyph_id_start = 46, .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY }, { - .range_start = 176, .range_length = 62662, .glyph_id_start = 71, - .unicode_list = unicode_list_3, .glyph_id_ofs_list = NULL, .list_length = 7, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + .range_start = 176, .range_length = 62662, .glyph_id_start = 72, + .unicode_list = unicode_list_3, .glyph_id_ofs_list = NULL, .list_length = 8, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY } }; @@ -1437,274 +1474,290 @@ static const lv_font_fmt_txt_cmap_t cmaps[] = static const uint8_t kern_left_class_mapping[] = { 0, 0, 1, 2, 3, 4, 5, 5, - 6, 0, 7, 8, 9, 10, 11, 12, - 13, 6, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 22, 23, 24, 25, 22, - 22, 18, 26, 18, 27, 28, 29, 23, - 30, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 34, 40, 40, 41, - 37, 34, 34, 35, 35, 42, 43, 44, - 45, 40, 46, 46, 47, 46, 48, 49, - 38, 38, 40, 0, 0, 0 + 6, 7, 0, 8, 9, 10, 11, 12, + 13, 14, 7, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 23, 24, 25, 26, + 23, 23, 19, 27, 28, 29, 30, 31, + 24, 32, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 36, 42, 42, + 43, 39, 36, 36, 37, 37, 44, 45, + 46, 47, 42, 48, 48, 49, 48, 50, + 51, 40, 40, 40, 42, 0, 0, 0 }; /*Map glyph_ids to kern right classes*/ static const uint8_t kern_right_class_mapping[] = { 0, 0, 1, 2, 3, 4, 5, 5, - 6, 7, 8, 9, 10, 11, 6, 12, - 13, 14, 15, 16, 17, 18, 17, 17, - 17, 18, 17, 17, 19, 17, 17, 17, - 17, 18, 17, 18, 17, 20, 21, 22, - 23, 23, 24, 25, 26, 27, 28, 29, - 29, 29, 0, 29, 28, 30, 31, 28, - 28, 32, 32, 29, 32, 29, 32, 33, - 34, 35, 36, 36, 37, 36, 38, 39, - 29, 29, 35, 0, 0, 0 + 6, 7, 8, 9, 10, 11, 12, 7, + 13, 14, 15, 16, 17, 18, 19, 18, + 18, 18, 19, 18, 18, 20, 18, 18, + 18, 18, 19, 18, 19, 18, 21, 22, + 23, 24, 24, 25, 26, 27, 28, 29, + 30, 30, 30, 0, 30, 29, 31, 32, + 29, 29, 33, 33, 30, 33, 30, 33, + 34, 35, 36, 37, 37, 38, 37, 39, + 40, 30, 30, 30, 36, 0, 0, 0 }; /*Kern values between classes*/ static const int8_t kern_class_values[] = { - -46, -10, 0, -8, 12, 0, -8, 4, - 4, 13, 8, -7, 8, 0, 0, 0, + -46, -10, 0, -8, 12, 0, 0, -8, + 4, 4, 13, 8, -7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -10, 10, - 17, 0, 0, -21, 3, 18, 8, 7, - -15, 3, 19, 1, 16, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -10, + 10, 17, 0, 0, -21, -23, 3, 18, + 8, 7, -15, 3, 19, 1, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 8, 0, 0, - 0, 0, 0, 0, 4, 0, 0, -8, + 0, 0, 0, 0, 0, 0, 0, 8, + 0, 0, 0, 0, 0, 13, 0, 4, + 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, -14, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -24, -21, 0, 0, - 0, -5, -5, 4, 4, -3, 0, -5, - 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -24, 0, 3, 0, 0, -5, - 0, -1, -1, -4, 0, 0, -3, 0, - 0, 0, -3, 0, 0, -9, 0, -8, - 0, -10, -13, -13, -7, 0, 0, 0, - 0, -3, 0, 0, 4, 0, 3, -4, - 0, 1, 4, 0, 0, 0, 4, -1, - 0, 0, 0, -7, 0, -1, 0, 0, - 0, 1, 0, 0, 5, 0, -3, 0, - -5, 0, -7, 0, 0, 0, -4, 0, - 0, 0, 0, 0, -1, 1, -3, -3, - 0, -4, -4, 0, 0, 0, 0, 0, + -24, -21, 0, 0, 0, 38, -5, -5, + 4, 4, -3, 0, -5, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -24, + 0, 23, 0, 13, -37, -26, -8, 12, + 0, 0, -26, 0, 5, -9, 0, -6, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 18, + 0, 3, 0, 0, -5, -8, 0, -1, + -1, -4, 0, 0, -3, 0, 0, 0, + -3, 0, 0, -9, 0, -8, 0, -10, + -13, -13, -7, 0, 0, 0, 0, -3, + 0, 0, 4, 0, 3, -4, 0, 1, + 4, 0, 0, 0, 4, 4, -1, 0, + 0, 0, -7, 0, -1, 0, 0, 0, + 1, 0, 0, 5, 0, -3, 0, -5, + 0, -7, 0, 0, 0, -4, 0, 0, + 0, 0, 0, -1, 1, -3, -3, 0, + -4, -4, 0, 0, 0, 0, 0, 0, -2, -2, 0, -4, -5, 0, 0, 0, 1, 0, 0, 0, 0, -3, 0, -4, -4, -4, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, -3, -5, 0, -6, - -12, -12, 0, 0, 8, 0, -10, -1, - -5, 0, -1, -18, 4, -3, 3, 0, - 0, 4, 1, -3, -20, 0, -20, -3, - -33, -3, 11, 0, 5, 0, 0, 0, - 0, 1, 0, -7, -5, 0, -12, -4, - 0, 0, 0, 0, 0, 0, -2, -2, - 0, -2, -5, 0, 0, 0, 0, 0, - 0, -4, 0, -4, 0, -3, -5, -3, + -12, -12, 0, 0, 8, 10, 0, -10, + -1, -5, 0, -1, -18, 4, -3, 3, + 0, 0, 4, 1, -3, -20, 0, -20, + -3, -33, -3, 11, 0, 5, 0, 0, + 0, 0, 1, 0, -7, -5, 0, -12, + -4, 0, 0, 0, 0, 0, 0, 0, + -2, -2, 0, -2, -5, 0, 0, 0, + 0, 0, 0, -4, 0, -4, 0, -3, + -5, -3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -3, -3, 0, -5, + -8, -3, 0, 0, 4, 4, 0, 0, + 0, 0, 0, 0, -3, 0, 0, 0, + 3, 0, 0, 0, 0, -4, 0, -4, + -3, -5, 0, 0, 0, 3, 0, -3, + 0, 0, 0, 0, -4, -6, 0, -7, + 1, 12, 0, 0, -20, -16, -8, 4, + 0, -3, -25, -7, 0, -7, 0, -8, + -25, 0, -7, -10, -3, 0, 0, 2, + -1, 3, -3, -15, 0, -19, -9, -8, + -9, -12, -5, -10, -1, -7, -10, 2, + -4, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -3, -3, 0, -5, -8, -3, - 0, 0, 4, 0, 0, 0, 0, 0, - 0, -3, 0, 0, 0, 3, 0, 0, - 0, 0, -4, 0, -4, -3, -5, 0, - 0, 0, 3, 0, -3, 0, 0, 0, - 0, -4, -6, 0, -7, 1, 12, 0, - 0, -20, -8, 4, 0, -3, -25, -7, - 0, -7, 0, -8, -25, 0, -7, -10, - -3, 0, 0, 2, -1, 3, -3, -15, - 0, -19, -9, -8, -9, -12, -5, -10, - -1, -7, -10, 2, -4, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -2, 0, 0, -1, 0, - -4, 0, -7, -8, -8, -1, 0, 0, - 0, 0, -3, 0, 0, 0, 0, 2, - -2, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3, 0, + -2, 0, 0, -1, 0, -4, 0, -7, + -8, -8, -1, 0, 0, 0, 0, -3, + 0, 0, 0, 0, 2, -2, 0, 0, + 0, 4, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -17, 0, 0, 13, -3, - -16, 0, 4, -6, 0, -19, -2, -5, - 4, 5, 0, -4, 6, 0, -13, -6, - -14, -13, -16, 0, 0, 0, -2, 0, - 0, 0, -2, -2, -4, -10, -13, -1, - -36, 0, 0, 0, 0, 1, 0, 0, + 0, -17, 0, 0, 13, 12, -3, -16, + 0, 4, -6, 0, -19, -2, -5, 4, + 5, 0, -4, 6, 0, -13, -6, -14, + -13, -16, 0, 0, 0, -2, 0, 0, + 0, -2, -2, -4, -10, -13, -1, -36, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, -2, -4, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, -8, 4, -3, - -1, -10, -4, 0, -5, -4, -3, -7, - 0, -6, 0, -1, -3, -1, -3, -7, - -5, 0, -3, 0, -8, 0, 0, 0, - -8, 0, -7, 0, -7, -7, 4, 0, - -7, 0, 5, -8, 0, -4, -4, -5, - 0, 0, 0, 0, 0, 0, -4, 0, - 0, -6, 0, -4, 0, -8, -10, -12, - -3, 0, 0, 0, 0, 31, 0, 0, - 2, 0, 0, -5, 0, 4, 0, 0, - 0, 0, 4, -5, 0, -3, -5, -12, - -3, -3, -3, -1, -3, 0, 0, -1, - 0, 0, 0, 0, -4, -3, -3, 0, - -3, 0, -3, 0, 0, 0, -3, -5, - -3, -3, -5, -3, 0, 0, 15, 0, - -3, -4, -5, 6, 0, 0, -18, -7, - 4, -7, 3, 0, -12, 0, -3, -6, - -1, 2, 0, 0, -7, 0, 0, -7, - 0, -7, -4, -6, -4, -4, 0, -7, - 2, -7, -7, 12, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, -8, 4, + -3, -1, -10, -4, 0, -5, -4, -3, + -7, 0, -6, 0, -1, -3, -1, -3, + -7, -5, 0, -3, 0, -8, 0, 0, + 0, -8, 0, -7, 0, -7, -7, 4, + 0, -7, 0, 5, -8, -8, 0, -4, + -4, -5, 0, 0, 0, 0, 0, 0, + -4, 0, 0, -6, 0, -4, 0, -8, + -10, -12, -3, 0, 0, 0, 0, 31, + 0, 0, 2, 0, 0, -5, 0, 4, + 0, 0, 0, 0, 4, 0, -5, 0, + -3, -5, -12, -3, -3, -3, -1, -3, + 0, 0, -1, 0, 0, 0, 0, -4, + -3, -3, 0, -3, 0, -3, 0, 0, + 0, -3, -5, -3, -3, -5, -3, 0, + 0, 15, 0, -3, -4, -16, -5, 6, + 0, 0, -18, -7, 4, -7, 3, 0, + -12, 0, -3, -6, -1, 2, 0, 0, + -7, 0, 0, -7, 0, -7, -4, -6, + -4, -4, 0, -7, 2, -7, -7, 12, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -6, 0, 0, 0, 0, -5, 0, - 0, -4, -4, 0, 0, 0, 0, 0, - -2, 0, 0, 0, 0, 0, -3, 0, - 0, 0, 0, 0, 0, 0, -8, 8, + 0, 0, 0, 0, -3, -4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -6, 0, 0, 0, 0, -5, 0, 0, + -4, -4, 0, 0, 0, 0, 0, -2, + 0, 0, 0, 0, 0, -3, 0, 0, + 0, 0, 0, 0, 0, 3, -8, 8, 1, -3, -18, 0, 0, -8, -4, 0, -11, 0, -10, 0, -6, -17, -4, -15, -15, -18, 0, -5, 0, -9, -4, -1, -4, -7, -10, -7, -14, -16, -9, -4, - 0, 0, 0, 0, 12, -8, -14, 0, - 1, -12, 0, -19, -3, -4, 8, 1, - 0, -5, 0, -3, -25, -5, -20, -4, - -28, 0, 1, 0, -3, 0, 0, 0, - 0, -2, -3, -15, -3, 0, -25, 0, - 0, 0, -3, -11, 0, 0, -2, -6, - -12, -4, 0, -3, 0, 0, -17, -4, - 0, -13, 0, -12, -3, -7, -10, -4, - -7, -6, 0, -5, -7, -4, -7, 0, - 2, 0, -3, -13, 0, 8, 0, 0, - 0, 0, 0, 0, 0, 0, -3, -8, + 0, 0, 0, 0, 12, 8, -8, -14, + 0, 1, -12, 0, -19, -3, -4, 8, + 1, 0, -5, 0, -3, -25, -5, -20, + -4, -28, 0, 1, 0, -3, 0, 0, + 0, 0, -2, -3, -15, -3, 0, -25, + 0, 0, 0, -3, -11, -18, 0, 0, + -2, -6, -12, -4, 0, -3, 0, 0, + -17, -4, 0, -13, 0, -12, -3, -7, + -10, -4, -7, -6, 0, -5, -7, -4, + -7, 0, 2, 0, -3, -13, 0, 8, + 0, -7, 0, 5, -8, 16, 0, -4, + -4, -5, 0, 0, 0, 0, 0, 0, + -4, 0, 0, -6, 0, -4, 0, -8, + -10, -12, -3, 0, 0, 0, 0, 31, + 0, 0, 2, 0, 0, -5, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, - -4, 0, -4, 0, 0, -8, -4, 0, - -2, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 6, 0, -12, 0, - 0, 8, 0, -4, 0, -3, 4, 0, - -4, 0, -4, -2, 0, 0, 0, 0, - 0, -4, 0, 0, -5, -6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - -4, -4, 0, -6, 0, 3, -6, 0, - -12, -8, 15, 7, 4, -33, -3, 8, - -4, 0, -4, -13, 0, -4, -4, -3, - 4, -5, -3, -12, -3, 0, -11, 0, - -21, -5, 11, -5, -15, 1, -5, -13, - -13, -4, 15, 0, 0, 0, 3, -14, - -10, 12, 0, 1, -28, -3, 4, -7, - -3, -9, -14, -6, -8, -6, -6, -3, - 0, 0, -9, -8, -4, -21, 0, -21, - -5, 0, -13, -22, -1, -12, -7, -13, - -11, 10, 0, 0, -3, 0, 0, -13, - 4, 0, 0, -20, 0, -4, -8, -7, - -3, -13, -9, -10, 0, -5, -12, -4, - -9, -7, -12, -4, -7, 0, -12, -4, - 0, -4, -8, -9, -10, -11, -15, -5, - -8, 0, 0, -5, 2, -14, -13, 13, + 0, -3, -8, 0, 0, 0, 0, 0, + 0, 0, 0, -4, 0, -4, 0, 0, + -8, -4, 0, -2, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 6, + 0, -12, 0, 0, 8, 0, 0, -4, + 0, -3, 4, 0, -4, 0, -4, -2, + 0, 0, 0, 0, 0, -4, 0, 0, + -5, -6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -4, -4, 0, -6, + 0, 3, -6, 0, -12, -8, -8, 15, + 7, 4, -33, -3, 8, -4, 0, -4, + -13, 0, -4, -4, -3, 4, -5, -3, + -12, -3, 0, -11, 0, -21, -5, 11, + -5, -15, 1, -5, -13, -13, -4, 15, + 0, 0, 0, 3, -14, -15, -10, 12, + 0, 1, -28, -3, 4, -7, -3, -9, + -14, -6, -8, -6, -6, -3, 0, 0, + -9, -8, -4, -21, 0, -21, -5, 0, + -13, -22, -1, -12, -7, -13, -11, 10, + 0, 0, -3, 0, 0, 7, -13, 4, + 0, 0, -20, 0, -4, -8, -7, -3, + -13, -9, -10, 0, -5, -12, -4, -9, + -7, -12, -4, -7, 0, -12, -4, 0, + -4, -8, -9, -10, -11, -15, -5, -8, + 0, 0, -5, 2, -14, -8, -13, 13, -4, 2, -36, -7, 8, -8, -7, -14, -16, -5, -12, -4, -6, -3, -4, -8, -12, -1, 0, -25, 0, -23, -9, 9, -15, -26, -8, -13, -16, -19, -13, 8, - 0, 0, 0, 0, 8, -7, 8, 0, - 0, -12, -1, 0, -1, 0, 1, 0, - 0, -3, 0, 0, 0, 0, 0, -4, - 0, 0, 1, 0, -5, 0, 0, 0, - 0, -3, -3, -5, 0, 0, 0, -11, - 0, 0, 0, 0, 0, -8, -2, 0, - 0, 0, -8, 0, -5, 0, 0, 0, + 0, 0, 0, 0, 8, 3, -7, 8, + 0, 0, -12, -1, 0, -1, 0, 1, + 0, 0, -3, 0, 0, 0, 0, 0, + -4, 0, 0, 1, 0, -5, 0, 0, + 0, 0, -3, -3, -5, 0, 0, 0, + -11, 0, 0, 0, 0, 0, 0, -8, + -2, 0, 0, 0, -8, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, -4, 0, 0, -7, -10, -6, - 0, 0, -5, 0, -10, -4, -9, 0, - 0, -10, 0, -4, 0, -4, 0, 0, - 0, 0, -31, -7, -15, -4, -14, 0, - -2, 0, 0, 0, 0, 0, 0, 0, - 0, -6, -7, -3, -7, 0, 0, 0, - -8, 8, -3, -9, -3, -7, -7, 0, - -5, -2, -3, 3, 0, 0, -1, 0, - 0, -34, -3, -5, 0, -8, 0, 0, - -3, -3, 0, 0, 0, 0, 3, 0, - -3, -7, -3, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, -4, 0, 0, -7, + -10, -6, 0, 0, -5, 0, 0, -10, + -4, -9, 0, 0, -10, 0, -4, 0, + -4, 0, 0, 0, 0, -31, -7, -15, + -4, -14, 0, -2, 0, 0, 0, 0, + 0, 0, 0, 0, -6, -7, -3, -7, + 0, 0, 0, -8, 8, 0, -3, -9, + -3, -7, -7, 0, -5, -2, -3, 3, + 0, 0, -1, 0, 0, -34, -3, -5, + 0, -8, 0, 0, -3, -3, 0, 0, + 0, 0, 3, 0, -3, -7, -3, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 5, 0, 0, - 0, 0, 0, -3, -8, 0, 0, 0, - 0, -10, -4, -8, 0, 0, -11, 0, - -4, 0, 0, 0, 0, 0, 0, -37, - 0, -8, -14, -19, 0, -6, 0, 0, - 0, 0, 0, 0, 0, 0, -4, -6, - -2, -6, 7, 0, 0, 12, -4, 5, - 19, 7, 8, -10, 5, 16, 5, 11, - 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -4, 0, -3, 31, - 17, 31, 0, 0, 0, 4, 0, 0, - 14, 0, 0, 0, 0, 0, 0, -3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 0, 0, + -3, -8, 0, 0, 0, 0, 0, -10, + -4, -8, 0, 0, -11, 0, -4, 0, + 0, 0, 0, 0, 0, -37, 0, -8, + -14, -19, 0, -6, 0, 0, 0, 0, + 0, 0, 0, 0, -4, -6, -2, -6, + 7, 0, 0, 12, -4, -12, 5, 19, + 7, 8, -10, 5, 16, 5, 11, 8, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -4, 0, -3, 31, 17, + 31, 0, 0, 0, 4, 0, 0, 14, + 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, -32, -5, -3, -16, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, -4, 3, 7, - 4, -12, 0, -1, -3, 4, 0, 0, - 0, 0, 0, 0, -10, 0, -3, -3, - -8, 0, -4, 0, -8, -3, 0, -3, - -7, 0, -4, -11, -8, -5, 0, 0, - 0, 0, 0, 0, 0, -3, 0, 0, + 0, 0, 0, 0, 4, 0, -4, 3, + 7, 4, -12, 0, -1, -3, 4, 0, + 0, 0, 0, 0, 0, -10, 0, -3, + -3, -8, 0, -4, 0, -8, -3, 0, + -3, -7, 0, -4, -11, -8, -5, 0, + 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -6, -32, -5, -3, -16, -19, - 0, 0, 0, 0, 0, 19, 0, 0, + 0, 0, 0, 0, -6, -32, -5, -3, + -16, -19, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, - -5, -3, -4, 1, -2, 1, -3, -10, - 1, 8, 1, 3, 1, -15, -5, -9, - 0, -6, -15, -7, -10, -16, -15, 0, - -3, -3, -5, -3, 0, -3, -1, 6, - 0, 6, -3, 0, 12, 0, 0, 0, - 0, 0, 0, -3, -4, -4, 0, 0, - -10, 0, -2, 0, 0, 0, 0, 0, + 0, 0, -5, -3, -4, -15, 1, -2, + 1, -3, -10, 1, 8, 1, 3, 1, + -15, -5, -9, 0, -6, -15, -7, -10, + -16, -15, 0, -3, -3, -5, -3, 0, + -3, -1, 6, 0, 6, -3, 0, 12, + 0, 0, 0, 0, 0, 0, 0, -3, + -4, -4, 0, 0, -10, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -4, -4, 0, -5, 0, 0, 0, 0, - 4, -7, -7, -3, 0, -11, -3, -8, - -3, -5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -4, -4, 0, -5, + 0, 0, 0, 0, 4, 0, -7, -7, + -3, 0, -11, -3, -8, -3, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -7, 0, 0, 0, 0, -5, 0, -4, - 0, 0, -2, 0, 0, 0, 0, -13, - 3, 4, 4, -1, -11, 3, 6, 3, - 12, 3, -10, 0, -3, 0, -3, -15, - 0, 0, -12, -10, 0, -7, 0, -6, - 0, -6, 0, -3, 6, 0, -3, -12, - -4, 14, 0, 0, 0, 0, 0, -4, - 3, 0, 0, -13, 0, -3, -1, 0, - -4, 0, 0, -3, 0, -3, -16, -5, - -8, 0, -12, 0, -4, 0, -7, 0, - 2, 0, -4, 0, -4, -12, 0, -4, - 4, 0, 0, 0, 0, 1, 0, -5, + 0, 0, 0, 0, 0, -7, 0, 0, + 0, 0, -5, 0, -4, 0, 0, -2, + 0, 0, 0, 0, -13, -12, 3, 4, + 4, -1, -11, 3, 6, 3, 12, 3, + -10, 0, -3, 0, -3, -15, 0, 0, + -12, -10, 0, -7, 0, -6, 0, -6, + 0, -3, 6, 0, -3, -12, -4, 14, + 0, 0, 0, 0, 0, 4, -4, 3, + 0, 0, -13, 0, -3, -1, 0, -4, + 0, 0, -3, 0, -3, -16, -5, -8, + 0, -12, 0, -4, 0, -7, 0, 2, + 0, -4, 0, -4, -12, 0, -4, 4, + 0, 0, 0, 0, 1, 0, 0, -5, -3, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 1, 0, -4, -4, 0, 0, - 9, 8, 0, 0, -24, 1, 17, 12, - 7, -15, 3, 16, 0, 14, 0, 0, + 9, 8, 0, 0, -24, -22, 1, 17, + 12, 7, -15, 3, 16, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -1714,8 +1767,8 @@ static const lv_font_fmt_txt_kern_classes_t kern_classes = .class_pair_values = kern_class_values, .left_class_mapping = kern_left_class_mapping, .right_class_mapping = kern_right_class_mapping, - .left_class_cnt = 49, - .right_class_cnt = 39, + .left_class_cnt = 51, + .right_class_cnt = 40, }; /*-------------------- diff --git a/main/fonts/notomedium16.c b/components/domotic_display/fonts/notomedium16.c similarity index 100% rename from main/fonts/notomedium16.c rename to components/domotic_display/fonts/notomedium16.c diff --git a/main/ihm.c b/components/domotic_display/ihm.c similarity index 99% rename from main/ihm.c rename to components/domotic_display/ihm.c index 41fe71f..e2877a3 100644 --- a/main/ihm.c +++ b/components/domotic_display/ihm.c @@ -7,9 +7,9 @@ #include "esp_log.h" #include "string.h" #include "meteofrance.h" -#include "main.h" #include "bsp/esp-bsp.h" #include "cJSON.h" +#include "eventsManager.h" #define upEvent "monter" @@ -145,7 +145,8 @@ void drawIhm(void *xIHMEventQueueParam) { case IHM_EVT_PUISSANCE_EMISE: if (display_lock("updateChart")) { - int val = (int)xReceivedEvent->pvData; + int val = *(int*)xReceivedEvent->pvData; + ESP_LOGE(TAG, "On a recu %i", val); if (val == 0) { lv_chart_set_next_value(myChart, ser, LV_CHART_POINT_NONE); } else { @@ -165,7 +166,7 @@ void drawIhm(void *xIHMEventQueueParam) { time_t rawtime = (time_t)(depuisQuand); struct tm *heure_locale = localtime(&rawtime); char heureFormattee[50]; - strftime(heureFormattee, sizeof(heureFormattee), "%d/%m/%Y %I:%M:%S %p", heure_locale); + strftime(heureFormattee, sizeof(heureFormattee), "%d/%m/%Y %H:%M:%S", heure_locale); ESP_LOGE(TAG,"Heure: %s", heureFormattee); char etatFormate[90]; if(enRoute){ @@ -182,7 +183,7 @@ void drawIhm(void *xIHMEventQueueParam) { case IHM_EVT_HAUTEUR_CUVE: if (display_lock("updateCuve")) { float hauteur = *(float *)xReceivedEvent->pvData; - lv_label_set_text_fmt(lblHauteurCuve, "%.2f cm", hauteur); + lv_label_set_text_fmt(lblHauteurCuve, "%.0f cm", hauteur); display_unlock("updateCuve"); } break; diff --git a/main/images/.gitignore b/components/domotic_display/images/.gitignore similarity index 100% rename from main/images/.gitignore rename to components/domotic_display/images/.gitignore diff --git a/main/images/Variable.svg b/components/domotic_display/images/Variable.svg similarity index 100% rename from main/images/Variable.svg rename to components/domotic_display/images/Variable.svg diff --git a/main/images/esp_logo.png b/components/domotic_display/images/esp_logo.png similarity index 100% rename from main/images/esp_logo.png rename to components/domotic_display/images/esp_logo.png diff --git a/main/images/mqtt_ko.png b/components/domotic_display/images/mqtt_ko.png similarity index 100% rename from main/images/mqtt_ko.png rename to components/domotic_display/images/mqtt_ko.png diff --git a/main/images/mqtt_ok.png b/components/domotic_display/images/mqtt_ok.png similarity index 100% rename from main/images/mqtt_ok.png rename to components/domotic_display/images/mqtt_ok.png diff --git a/main/images/plan_etage.c:Zone.Identifier b/components/domotic_display/images/plan_etage.c:Zone.Identifier similarity index 100% rename from main/images/plan_etage.c:Zone.Identifier rename to components/domotic_display/images/plan_etage.c:Zone.Identifier diff --git a/main/images/plan_rdc.c:Zone.Identifier b/components/domotic_display/images/plan_rdc.c:Zone.Identifier similarity index 100% rename from main/images/plan_rdc.c:Zone.Identifier rename to components/domotic_display/images/plan_rdc.c:Zone.Identifier diff --git a/main/images/wifi_ko.png b/components/domotic_display/images/wifi_ko.png similarity index 100% rename from main/images/wifi_ko.png rename to components/domotic_display/images/wifi_ko.png diff --git a/main/images/wifi_ko_orig.png b/components/domotic_display/images/wifi_ko_orig.png similarity index 100% rename from main/images/wifi_ko_orig.png rename to components/domotic_display/images/wifi_ko_orig.png diff --git a/main/images/wifi_ok.png b/components/domotic_display/images/wifi_ok.png similarity index 100% rename from main/images/wifi_ok.png rename to components/domotic_display/images/wifi_ok.png diff --git a/main/images/wifi_ok_orig.png b/components/domotic_display/images/wifi_ok_orig.png similarity index 100% rename from main/images/wifi_ok_orig.png rename to components/domotic_display/images/wifi_ok_orig.png diff --git a/main/images_meteo/p10j.png b/components/domotic_display/images_meteo/p10j.png similarity index 100% rename from main/images_meteo/p10j.png rename to components/domotic_display/images_meteo/p10j.png diff --git a/main/images_meteo/p10n.png b/components/domotic_display/images_meteo/p10n.png similarity index 100% rename from main/images_meteo/p10n.png rename to components/domotic_display/images_meteo/p10n.png diff --git a/main/images_meteo/p11j.png b/components/domotic_display/images_meteo/p11j.png similarity index 100% rename from main/images_meteo/p11j.png rename to components/domotic_display/images_meteo/p11j.png diff --git a/main/images_meteo/p11n.png b/components/domotic_display/images_meteo/p11n.png similarity index 100% rename from main/images_meteo/p11n.png rename to components/domotic_display/images_meteo/p11n.png diff --git a/main/images_meteo/p12bisj.png b/components/domotic_display/images_meteo/p12bisj.png similarity index 100% rename from main/images_meteo/p12bisj.png rename to components/domotic_display/images_meteo/p12bisj.png diff --git a/main/images_meteo/p12j.png b/components/domotic_display/images_meteo/p12j.png similarity index 100% rename from main/images_meteo/p12j.png rename to components/domotic_display/images_meteo/p12j.png diff --git a/main/images_meteo/p12n.png b/components/domotic_display/images_meteo/p12n.png similarity index 100% rename from main/images_meteo/p12n.png rename to components/domotic_display/images_meteo/p12n.png diff --git a/main/images_meteo/p13bisj.png b/components/domotic_display/images_meteo/p13bisj.png similarity index 100% rename from main/images_meteo/p13bisj.png rename to components/domotic_display/images_meteo/p13bisj.png diff --git a/main/images_meteo/p13j.png b/components/domotic_display/images_meteo/p13j.png similarity index 100% rename from main/images_meteo/p13j.png rename to components/domotic_display/images_meteo/p13j.png diff --git a/main/images_meteo/p13n.png b/components/domotic_display/images_meteo/p13n.png similarity index 100% rename from main/images_meteo/p13n.png rename to components/domotic_display/images_meteo/p13n.png diff --git a/main/images_meteo/p14bisj.png b/components/domotic_display/images_meteo/p14bisj.png similarity index 100% rename from main/images_meteo/p14bisj.png rename to components/domotic_display/images_meteo/p14bisj.png diff --git a/main/images_meteo/p14j.png b/components/domotic_display/images_meteo/p14j.png similarity index 100% rename from main/images_meteo/p14j.png rename to components/domotic_display/images_meteo/p14j.png diff --git a/main/images_meteo/p14n.png b/components/domotic_display/images_meteo/p14n.png similarity index 100% rename from main/images_meteo/p14n.png rename to components/domotic_display/images_meteo/p14n.png diff --git a/main/images_meteo/p15j.png b/components/domotic_display/images_meteo/p15j.png similarity index 100% rename from main/images_meteo/p15j.png rename to components/domotic_display/images_meteo/p15j.png diff --git a/main/images_meteo/p15n.png b/components/domotic_display/images_meteo/p15n.png similarity index 100% rename from main/images_meteo/p15n.png rename to components/domotic_display/images_meteo/p15n.png diff --git a/main/images_meteo/p16bisj.png b/components/domotic_display/images_meteo/p16bisj.png similarity index 100% rename from main/images_meteo/p16bisj.png rename to components/domotic_display/images_meteo/p16bisj.png diff --git a/main/images_meteo/p16j.png b/components/domotic_display/images_meteo/p16j.png similarity index 100% rename from main/images_meteo/p16j.png rename to components/domotic_display/images_meteo/p16j.png diff --git a/main/images_meteo/p16n.png b/components/domotic_display/images_meteo/p16n.png similarity index 100% rename from main/images_meteo/p16n.png rename to components/domotic_display/images_meteo/p16n.png diff --git a/main/images_meteo/p17j.png b/components/domotic_display/images_meteo/p17j.png similarity index 100% rename from main/images_meteo/p17j.png rename to components/domotic_display/images_meteo/p17j.png diff --git a/main/images_meteo/p17n.png b/components/domotic_display/images_meteo/p17n.png similarity index 100% rename from main/images_meteo/p17n.png rename to components/domotic_display/images_meteo/p17n.png diff --git a/main/images_meteo/p18j.png b/components/domotic_display/images_meteo/p18j.png similarity index 100% rename from main/images_meteo/p18j.png rename to components/domotic_display/images_meteo/p18j.png diff --git a/main/images_meteo/p18n.png b/components/domotic_display/images_meteo/p18n.png similarity index 100% rename from main/images_meteo/p18n.png rename to components/domotic_display/images_meteo/p18n.png diff --git a/main/images_meteo/p19j.png b/components/domotic_display/images_meteo/p19j.png similarity index 100% rename from main/images_meteo/p19j.png rename to components/domotic_display/images_meteo/p19j.png diff --git a/main/images_meteo/p19n.png b/components/domotic_display/images_meteo/p19n.png similarity index 100% rename from main/images_meteo/p19n.png rename to components/domotic_display/images_meteo/p19n.png diff --git a/main/images_meteo/p1j.png b/components/domotic_display/images_meteo/p1j.png similarity index 100% rename from main/images_meteo/p1j.png rename to components/domotic_display/images_meteo/p1j.png diff --git a/main/images_meteo/p1n.png b/components/domotic_display/images_meteo/p1n.png similarity index 100% rename from main/images_meteo/p1n.png rename to components/domotic_display/images_meteo/p1n.png diff --git a/main/images_meteo/p20j.png b/components/domotic_display/images_meteo/p20j.png similarity index 100% rename from main/images_meteo/p20j.png rename to components/domotic_display/images_meteo/p20j.png diff --git a/main/images_meteo/p20n.png b/components/domotic_display/images_meteo/p20n.png similarity index 100% rename from main/images_meteo/p20n.png rename to components/domotic_display/images_meteo/p20n.png diff --git a/main/images_meteo/p21j.png b/components/domotic_display/images_meteo/p21j.png similarity index 100% rename from main/images_meteo/p21j.png rename to components/domotic_display/images_meteo/p21j.png diff --git a/main/images_meteo/p21n.png b/components/domotic_display/images_meteo/p21n.png similarity index 100% rename from main/images_meteo/p21n.png rename to components/domotic_display/images_meteo/p21n.png diff --git a/main/images_meteo/p22j.png b/components/domotic_display/images_meteo/p22j.png similarity index 100% rename from main/images_meteo/p22j.png rename to components/domotic_display/images_meteo/p22j.png diff --git a/main/images_meteo/p22n.png b/components/domotic_display/images_meteo/p22n.png similarity index 100% rename from main/images_meteo/p22n.png rename to components/domotic_display/images_meteo/p22n.png diff --git a/main/images_meteo/p23j.png b/components/domotic_display/images_meteo/p23j.png similarity index 100% rename from main/images_meteo/p23j.png rename to components/domotic_display/images_meteo/p23j.png diff --git a/main/images_meteo/p23n.png b/components/domotic_display/images_meteo/p23n.png similarity index 100% rename from main/images_meteo/p23n.png rename to components/domotic_display/images_meteo/p23n.png diff --git a/main/images_meteo/p24j.png b/components/domotic_display/images_meteo/p24j.png similarity index 100% rename from main/images_meteo/p24j.png rename to components/domotic_display/images_meteo/p24j.png diff --git a/main/images_meteo/p24n.png b/components/domotic_display/images_meteo/p24n.png similarity index 100% rename from main/images_meteo/p24n.png rename to components/domotic_display/images_meteo/p24n.png diff --git a/main/images_meteo/p25j.png b/components/domotic_display/images_meteo/p25j.png similarity index 100% rename from main/images_meteo/p25j.png rename to components/domotic_display/images_meteo/p25j.png diff --git a/main/images_meteo/p25n.png b/components/domotic_display/images_meteo/p25n.png similarity index 100% rename from main/images_meteo/p25n.png rename to components/domotic_display/images_meteo/p25n.png diff --git a/main/images_meteo/p26j.png b/components/domotic_display/images_meteo/p26j.png similarity index 100% rename from main/images_meteo/p26j.png rename to components/domotic_display/images_meteo/p26j.png diff --git a/main/images_meteo/p26n.png b/components/domotic_display/images_meteo/p26n.png similarity index 100% rename from main/images_meteo/p26n.png rename to components/domotic_display/images_meteo/p26n.png diff --git a/main/images_meteo/p27j.png b/components/domotic_display/images_meteo/p27j.png similarity index 100% rename from main/images_meteo/p27j.png rename to components/domotic_display/images_meteo/p27j.png diff --git a/main/images_meteo/p27n.png b/components/domotic_display/images_meteo/p27n.png similarity index 100% rename from main/images_meteo/p27n.png rename to components/domotic_display/images_meteo/p27n.png diff --git a/main/images_meteo/p28j.png b/components/domotic_display/images_meteo/p28j.png similarity index 100% rename from main/images_meteo/p28j.png rename to components/domotic_display/images_meteo/p28j.png diff --git a/main/images_meteo/p28n.png b/components/domotic_display/images_meteo/p28n.png similarity index 100% rename from main/images_meteo/p28n.png rename to components/domotic_display/images_meteo/p28n.png diff --git a/main/images_meteo/p29j.png b/components/domotic_display/images_meteo/p29j.png similarity index 100% rename from main/images_meteo/p29j.png rename to components/domotic_display/images_meteo/p29j.png diff --git a/main/images_meteo/p29n.png b/components/domotic_display/images_meteo/p29n.png similarity index 100% rename from main/images_meteo/p29n.png rename to components/domotic_display/images_meteo/p29n.png diff --git a/main/images_meteo/p2j.png b/components/domotic_display/images_meteo/p2j.png similarity index 100% rename from main/images_meteo/p2j.png rename to components/domotic_display/images_meteo/p2j.png diff --git a/main/images_meteo/p2n.png b/components/domotic_display/images_meteo/p2n.png similarity index 100% rename from main/images_meteo/p2n.png rename to components/domotic_display/images_meteo/p2n.png diff --git a/main/images_meteo/p30j.png b/components/domotic_display/images_meteo/p30j.png similarity index 100% rename from main/images_meteo/p30j.png rename to components/domotic_display/images_meteo/p30j.png diff --git a/main/images_meteo/p30n.png b/components/domotic_display/images_meteo/p30n.png similarity index 100% rename from main/images_meteo/p30n.png rename to components/domotic_display/images_meteo/p30n.png diff --git a/main/images_meteo/p31j.png b/components/domotic_display/images_meteo/p31j.png similarity index 100% rename from main/images_meteo/p31j.png rename to components/domotic_display/images_meteo/p31j.png diff --git a/main/images_meteo/p31n.png b/components/domotic_display/images_meteo/p31n.png similarity index 100% rename from main/images_meteo/p31n.png rename to components/domotic_display/images_meteo/p31n.png diff --git a/main/images_meteo/p32j.png b/components/domotic_display/images_meteo/p32j.png similarity index 100% rename from main/images_meteo/p32j.png rename to components/domotic_display/images_meteo/p32j.png diff --git a/main/images_meteo/p32n.png b/components/domotic_display/images_meteo/p32n.png similarity index 100% rename from main/images_meteo/p32n.png rename to components/domotic_display/images_meteo/p32n.png diff --git a/main/images_meteo/p3bisj.png b/components/domotic_display/images_meteo/p3bisj.png similarity index 100% rename from main/images_meteo/p3bisj.png rename to components/domotic_display/images_meteo/p3bisj.png diff --git a/main/images_meteo/p3j.png b/components/domotic_display/images_meteo/p3j.png similarity index 100% rename from main/images_meteo/p3j.png rename to components/domotic_display/images_meteo/p3j.png diff --git a/main/images_meteo/p3n.png b/components/domotic_display/images_meteo/p3n.png similarity index 100% rename from main/images_meteo/p3n.png rename to components/domotic_display/images_meteo/p3n.png diff --git a/main/images_meteo/p4j.png b/components/domotic_display/images_meteo/p4j.png similarity index 100% rename from main/images_meteo/p4j.png rename to components/domotic_display/images_meteo/p4j.png diff --git a/main/images_meteo/p4n.png b/components/domotic_display/images_meteo/p4n.png similarity index 100% rename from main/images_meteo/p4n.png rename to components/domotic_display/images_meteo/p4n.png diff --git a/main/images_meteo/p5bisj.png b/components/domotic_display/images_meteo/p5bisj.png similarity index 100% rename from main/images_meteo/p5bisj.png rename to components/domotic_display/images_meteo/p5bisj.png diff --git a/main/images_meteo/p5j.png b/components/domotic_display/images_meteo/p5j.png similarity index 100% rename from main/images_meteo/p5j.png rename to components/domotic_display/images_meteo/p5j.png diff --git a/main/images_meteo/p5n.png b/components/domotic_display/images_meteo/p5n.png similarity index 100% rename from main/images_meteo/p5n.png rename to components/domotic_display/images_meteo/p5n.png diff --git a/main/images_meteo/p6bisj.png b/components/domotic_display/images_meteo/p6bisj.png similarity index 100% rename from main/images_meteo/p6bisj.png rename to components/domotic_display/images_meteo/p6bisj.png diff --git a/main/images_meteo/p6j.png b/components/domotic_display/images_meteo/p6j.png similarity index 100% rename from main/images_meteo/p6j.png rename to components/domotic_display/images_meteo/p6j.png diff --git a/main/images_meteo/p6n.png b/components/domotic_display/images_meteo/p6n.png similarity index 100% rename from main/images_meteo/p6n.png rename to components/domotic_display/images_meteo/p6n.png diff --git a/main/images_meteo/p7j.png b/components/domotic_display/images_meteo/p7j.png similarity index 100% rename from main/images_meteo/p7j.png rename to components/domotic_display/images_meteo/p7j.png diff --git a/main/images_meteo/p7n.png b/components/domotic_display/images_meteo/p7n.png similarity index 100% rename from main/images_meteo/p7n.png rename to components/domotic_display/images_meteo/p7n.png diff --git a/main/images_meteo/p8j.png b/components/domotic_display/images_meteo/p8j.png similarity index 100% rename from main/images_meteo/p8j.png rename to components/domotic_display/images_meteo/p8j.png diff --git a/main/images_meteo/p8n.png b/components/domotic_display/images_meteo/p8n.png similarity index 100% rename from main/images_meteo/p8n.png rename to components/domotic_display/images_meteo/p8n.png diff --git a/main/images_meteo/p9j.png b/components/domotic_display/images_meteo/p9j.png similarity index 100% rename from main/images_meteo/p9j.png rename to components/domotic_display/images_meteo/p9j.png diff --git a/main/images_meteo/p9n.png b/components/domotic_display/images_meteo/p9n.png similarity index 100% rename from main/images_meteo/p9n.png rename to components/domotic_display/images_meteo/p9n.png diff --git a/components/domotic_display/include/domotic_display.h b/components/domotic_display/include/domotic_display.h new file mode 100644 index 0000000..f6f3a61 --- /dev/null +++ b/components/domotic_display/include/domotic_display.h @@ -0,0 +1 @@ +void func(void); diff --git a/main/ihm.h b/components/domotic_display/include/ihm.h similarity index 62% rename from main/ihm.h rename to components/domotic_display/include/ihm.h index 0665285..a7ae952 100644 --- a/main/ihm.h +++ b/components/domotic_display/include/ihm.h @@ -31,23 +31,6 @@ void draw_tabCuve(lv_obj_t * parent); void draw_tabHome(lv_obj_t * parent); void draw_tabSettings(lv_obj_t * parent); -typedef enum eIHMEvent_t{ - IHM_EVT_WIFI_STATUS, - IHM_EVT_TIME_SETTED, - IHM_EVT_OTA_STARTED, - IHM_EVT_OTA_PROGRESS, - IHM_EVT_HUMID_TEMP, - IHM_EVT_PUISSANCE_EMISE, - IHM_EVT_ETAT_MACHINE, - IHM_EVT_HAUTEUR_CUVE, -} eIHMEvent_t; - -typedef struct IHM_EVENT -{ - eIHMEvent_t eEventType; /* Tells the receiving task what the event is. */ - void *pvData; /* Holds or points to any data associated with the event. */ - bool bNeedToFreeData; // ← Important ! -} xIHMEvent_t; void drawIhm(void *pvParameter); diff --git a/main/lv_theme_domotic.h b/components/domotic_display/include/lv_theme_domotic.h similarity index 100% rename from main/lv_theme_domotic.h rename to components/domotic_display/include/lv_theme_domotic.h diff --git a/main/lv_theme_domotic.c b/components/domotic_display/lv_theme_domotic.c similarity index 100% rename from main/lv_theme_domotic.c rename to components/domotic_display/lv_theme_domotic.c diff --git a/components/eventsManager/CMakeLists.txt b/components/eventsManager/CMakeLists.txt new file mode 100644 index 0000000..1560a01 --- /dev/null +++ b/components/eventsManager/CMakeLists.txt @@ -0,0 +1,3 @@ +idf_component_register(SRCS "eventsManager.c" + INCLUDE_DIRS "include" + REQUIRES mqtt) diff --git a/components/eventsManager/eventsManager.c b/components/eventsManager/eventsManager.c new file mode 100644 index 0000000..432a40a --- /dev/null +++ b/components/eventsManager/eventsManager.c @@ -0,0 +1,125 @@ +#include +#include +#include "eventsManager.h" +#include "esp_log.h" +#include "mqtt_client.h" + +EventGroupHandle_t domotic_event_group; +QueueHandle_t ihm_queue; +extern esp_mqtt_client_handle_t client; + +static const char *TAG = "evtMgr"; + +void startEvtManager(){ + domotic_event_group = xEventGroupCreate(); + ihm_queue = xQueueCreate(10,sizeof(xIHMEvent_t *)); +} + +QueueHandle_t getIHMQueueHandle(){ + return ihm_queue; +} + +void send_event(domo_events evt, void* pDatas) { + ESP_LOGE(TAG,"On est dans l'event handler %i", evt); + + xIHMEvent_t *ihmEvt = malloc(sizeof(xIHMEvent_t)); + if (!ihmEvt) { + ESP_LOGE(TAG, "malloc failed for event struct"); + return; + } + + switch (evt) { + case EVT_WIFI_CONNECTED: { + xEventGroupSetBits(domotic_event_group, WIFI_CONNECTED_BIT); + ESP_LOGI(TAG, "connected to AP SSID"); + + bool *wifiStatus = malloc(sizeof(bool)); + if (!wifiStatus) { + ESP_LOGE(TAG, "malloc failed for wifiStatus"); + free(ihmEvt); + return; + } + *wifiStatus = true; + + ihmEvt->eEventType = IHM_EVT_WIFI_STATUS; + ihmEvt->pvData = wifiStatus; + ihmEvt->bNeedToFreeData = true; + break; + } + + case EVT_TIME_SETTED: + const char *msg = (const char *)pDatas; + char *msg_copy = malloc(strlen(msg) + 1); + if (!msg_copy) { + ESP_LOGE(TAG, "malloc failed for message string"); + free(ihmEvt); + return; + } + strcpy(msg_copy, msg); + ihmEvt->eEventType = IHM_EVT_TIME_SETTED; + ihmEvt->pvData = msg_copy; + ihmEvt->bNeedToFreeData = true; + break; + + case EVT_BTN_VOLET: + esp_mqtt_client_publish(client, "volets", pDatas, 0, 0, 0); + free(ihmEvt); // rien à envoyer à l'IHM + return; + + case EVT_PUISSANCE_RECUE: + ESP_LOGE(TAG, "Puissance recue %i", *(int*)pDatas); + int *data = malloc(sizeof(int)); + if (!data) { + ESP_LOGE(TAG, "malloc failed for puissance_5mn"); + free(ihmEvt); + return; + } + *data = *(int *)pDatas; + ihmEvt->eEventType = IHM_EVT_PUISSANCE_EMISE; + ihmEvt->pvData = data; + ihmEvt->bNeedToFreeData = true; + break; + + case EVT_ETAT_MACHINE: + const char *msg2 = (const char *)pDatas; + char *msg_copy2 = malloc(strlen(msg2) + 1); + if (!msg_copy2) { + ESP_LOGE(TAG, "malloc failed for message string"); + free(ihmEvt); + return; + } + strcpy(msg_copy2, msg2); + ihmEvt->eEventType = IHM_EVT_ETAT_MACHINE; + ihmEvt->pvData = msg_copy2; + ihmEvt->bNeedToFreeData = true; + break; + + case EVT_HAUTEUR_CUVE: { + float *data = malloc(sizeof(float)); + if (!data) { + ESP_LOGE(TAG, "malloc failed for hauteur_cuve"); + free(ihmEvt); + return; + } + *data = *(float *)pDatas; + ESP_LOGE(TAG, "EVENT_HANDLER -> On a recu %f", *data); + ihmEvt->eEventType = IHM_EVT_HAUTEUR_CUVE; + ihmEvt->pvData = data; + ihmEvt->bNeedToFreeData = true; + break; + } + + default: + ESP_LOGE(TAG, "Unhandled event type"); + free(ihmEvt); + return; + } + ESP_LOGE(TAG, "Envoi d'un evt %i a l'IHM", ihmEvt->eEventType); + if (ihmEvt && xQueueSendToFront(ihm_queue, &ihmEvt, pdMS_TO_TICKS(10)) != pdPASS) { + ESP_LOGE(TAG, "La queue est pleine"); + if (ihmEvt->bNeedToFreeData && ihmEvt->pvData) { + free(ihmEvt->pvData); + } + free(ihmEvt); + } +} diff --git a/components/eventsManager/include/eventsManager.h b/components/eventsManager/include/eventsManager.h new file mode 100644 index 0000000..38ef2dc --- /dev/null +++ b/components/eventsManager/include/eventsManager.h @@ -0,0 +1,33 @@ +#include +#include "freertos/FreeRTOS.h" + +typedef enum eIHMEvent_t{ + IHM_EVT_WIFI_STATUS, + IHM_EVT_TIME_SETTED, + IHM_EVT_OTA_STARTED, + IHM_EVT_OTA_PROGRESS, + IHM_EVT_HUMID_TEMP, + IHM_EVT_PUISSANCE_EMISE, + IHM_EVT_ETAT_MACHINE, + IHM_EVT_HAUTEUR_CUVE, +} eIHMEvent_t; + +typedef struct IHM_EVENT +{ + eIHMEvent_t eEventType; /* Tells the receiving task what the event is. */ + void *pvData; /* Holds or points to any data associated with the event. */ + bool bNeedToFreeData; // ← Important ! +} xIHMEvent_t; + +#define WIFI_CONNECTED_BIT BIT0 +typedef enum domo_events{ + EVT_WIFI_CONNECTED, + EVT_TIME_SETTED, + EVT_BTN_VOLET, + EVT_PUISSANCE_RECUE, + EVT_ETAT_MACHINE, + EVT_HAUTEUR_CUVE +} domo_events; +void startEvtManager(); +QueueHandle_t getIHMQueueHandle(); +void send_event(domo_events evt, void *pDatas); diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index d4ec8da..12a6880 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -1,25 +1,15 @@ set(EXTRA_COMPONENT_DIRS ../components) -set(comps heap nvs_flash meteofrance esp_netif image_downloader fatfs protocol_examples_common mqtt ) +set(comps heap nvs_flash meteofrance esp_netif image_downloader fatfs protocol_examples_common mqtt domotic_display ) if(${IDF_TARGET} STREQUAL "esp32p4") - list(APPEND comps bsp_extra esp32_p4_function_ev_board sdmmc vfs littlefs wifi_logger app_update esp_https_ota espcoredump esp_http_server esp_wifi) + list(APPEND comps sdmmc vfs littlefs wifi_logger app_update esp_https_ota espcoredump esp_http_server esp_wifi) endif() - -function (make_font fontSize) - execute_process(COMMAND podman run -v /home/marc/rgb_lcd/main/fonts:/app -w /app lvfontconv lv_font_conv --bpp 4 --size ${fontSize} --no-compress --font Montserrat-Medium.ttf --symbols "0123456789.°éèûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz %,'():" --format lvgl -o montserrat_medium_${fontSize}.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575) -endfunction() - -make_font(12) -make_font(18) -make_font(24) - - -idf_component_register(SRC_DIRS . fonts - INCLUDE_DIRS "." - REQUIRES ${comps} - EMBED_TXTFILES ${project_dir}/main/ca_cert.pem - EMBED_FILES "index.html") +idf_component_register(SRC_DIRS . + INCLUDE_DIRS "." + REQUIRES ${comps} + EMBED_TXTFILES ${project_dir}/main/ca_cert.pem + EMBED_FILES "index.html") set_source_files_properties( @@ -27,14 +17,7 @@ set_source_files_properties( "-DLV_LVGL_H_INCLUDE_SIMPLE;-Wno-format;-DLV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(montserrat_medium_12) LV_FONT_DECLARE(montserrat_medium_18) LV_FONT_DECLARE(montserrat_medium_24)" ) -if(${IDF_TARGET} STREQUAL "esp32p4") - lvgl_port_create_c_image("images/wifi_ok.png" "images/" "ARGB8888" "NONE") - lvgl_port_create_c_image("images/wifi_ko.png" "images/" "ARGB8888" "NONE") - lvgl_port_create_c_image("images/mqtt_ok.png" "images/" "AUTO" "NONE") - lvgl_port_create_c_image("images/mqtt_ko.png" "images/" "ARGB8888" "NONE") - lvgl_port_add_images(${COMPONENT_LIB} "images/") - littlefs_create_partition_image(littlefs images_meteo FLASH_IN_PROJECT) -endif() + diff --git a/main/main.c b/main/main.c index d059459..aa3cee2 100644 --- a/main/main.c +++ b/main/main.c @@ -33,6 +33,7 @@ #include "stateManagement.h" #include "driver/gpio.h" #include "am2302_rmt.h" +#include "eventsManager.h" #include "esp_timer.h" @@ -55,15 +56,12 @@ static const char *TAG = "domoTic"; -extern esp_mqtt_client_handle_t client; #define WIFI_RDY 0b0001 -EventGroupHandle_t domotic_event_group; -QueueHandle_t ihm_queue; static void wifiStatus_obs_cb(lv_observer_t * observer, lv_subject_t * subject); @@ -98,10 +96,10 @@ void mqtt_cb(mqtt_evt evt, esp_mqtt_event_handle_t event){ ESP_LOGD(TAG, "\nMQTT_EVENT_DATA"); ESP_LOGD(TAG, "TOPIC=%.*s\n", event->topic_len, event->topic); ESP_LOGD(TAG, "DATA=%.*s\n", event->data_len, event->data); - if (strncmp(event->topic, topicTempExt, event->topic_len) == 0) + char *topic = strndup(event->topic, event->topic_len); + if (strcmp(topic, topicTempExt) == 0) { if(lvgl_port_lock(50)){ - // on retransforme en float pour ne garder que la partie entiere de la température float temp = strtof(event->data, NULL); char buff[5]; sprintf(buff,"%.1f",temp); @@ -110,7 +108,7 @@ void mqtt_cb(mqtt_evt evt, esp_mqtt_event_handle_t event){ lvgl_port_unlock(); } } - else if (strncmp(event->topic, topicTempInt, event->topic_len) == 0) + else if (strcmp(topic, topicTempInt) == 0) { if(lvgl_port_lock(0)){ // on retransforme en float pour ne garder que la partie entiere de la température @@ -136,9 +134,12 @@ void mqtt_cb(mqtt_evt evt, esp_mqtt_event_handle_t event){ // lv_subject_copy_string(&hauteurCuveEvolSubj, event->data); }*/ - else if (strncmp(event->topic, topicHauteurCuve, event->topic_len) == 0) + else if (strcmp(topic, topicHauteurCuve) == 0) { - float f = strtof(event->data, NULL); + char* datas = malloc(event->data_len+1); + strncpy(datas, event->data, event->data_len); + float f = strtof(datas, NULL); + free(datas); ESP_LOGE(TAG,"%f recu mqtt", f); send_event(EVT_HAUTEUR_CUVE,&f); /* @@ -150,21 +151,23 @@ void mqtt_cb(mqtt_evt evt, esp_mqtt_event_handle_t event){ lvgl_port_unlock(); } */ - }else if (strncmp(event->topic, topicTest, event->topic_len) == 0){ + }else if (strcmp(topic, topicTest) == 0){ ESP_LOGD(TAG,"Msg reecu sur test"); - }else if (strncmp(event->topic, topicConsoElec, event->topic_len) == 0){ - //char* datas = malloc(event->data_len+1); - //strncpy(datas, event->data, event->data_len); - - send_event(EVT_PUISSANCE_RECUE,(int*)atoi(event->data)); + }else if (strcmp(topic, topicConsoElec) == 0){ + char* datas = malloc(event->data_len+1); + strncpy(datas, event->data, event->data_len); + int puissanceRecue = atoi(datas); + free(datas); + ESP_LOGE(TAG, "MQTT: Puissance recue %i", puissanceRecue); + send_event(EVT_PUISSANCE_RECUE,&puissanceRecue); - }else if (strncmp(event->topic, topicEtatMachine, event->topic_len) == 0){ + }else if (strcmp(topic, topicEtatMachine) == 0){ char* datas = malloc(event->data_len+1); strncpy(datas, event->data, event->data_len); send_event(EVT_ETAT_MACHINE,datas); - }else if (strncmp(event->topic, topicdomoticCommand, event->topic_len) == 0){ + }else if (strcmp(topic, topicdomoticCommand) == 0){ if(strncmp(event->data,"restart",7)==0){ ESP_LOGI(TAG," Commande 'restart' recue"); esp_restart(); @@ -172,8 +175,9 @@ void mqtt_cb(mqtt_evt evt, esp_mqtt_event_handle_t event){ } else { - ESP_LOGE(TAG, "None match :-( %.*s", event->topic_len, event->topic); + ESP_LOGE(TAG, "None match :-( %s", topic); } + free(topic); if (lvgl_port_lock(50)){ lv_subject_set_int(&mqttStatus,3); lvgl_port_unlock(); @@ -186,102 +190,6 @@ void mqtt_cb(mqtt_evt evt, esp_mqtt_event_handle_t event){ } -void send_event(domo_events evt, void* pDatas) { - ESP_LOGE(TAG,"On est dans l'event handler %i", evt); - - xIHMEvent_t *ihmEvt = malloc(sizeof(xIHMEvent_t)); - if (!ihmEvt) { - ESP_LOGE(TAG, "malloc failed for event struct"); - return; - } - - switch (evt) { - case EVT_WIFI_CONNECTED: { - xEventGroupSetBits(domotic_event_group, WIFI_CONNECTED_BIT); - ESP_LOGI(TAG, "connected to AP SSID"); - - bool *wifiStatus = malloc(sizeof(bool)); - if (!wifiStatus) { - ESP_LOGE(TAG, "malloc failed for wifiStatus"); - free(ihmEvt); - return; - } - *wifiStatus = true; - - ihmEvt->eEventType = IHM_EVT_WIFI_STATUS; - ihmEvt->pvData = wifiStatus; - ihmEvt->bNeedToFreeData = true; - break; - } - - case EVT_TIME_SETTED: - const char *msg = (const char *)pDatas; - char *msg_copy = malloc(strlen(msg) + 1); - if (!msg_copy) { - ESP_LOGE(TAG, "malloc failed for message string"); - free(ihmEvt); - return; - } - strcpy(msg_copy, msg); - ihmEvt->eEventType = IHM_EVT_TIME_SETTED; - ihmEvt->pvData = msg_copy; - ihmEvt->bNeedToFreeData = true; - break; - - case EVT_BTN_VOLET: - esp_mqtt_client_publish(client, "volets", pDatas, 0, 0, 0); - free(ihmEvt); // rien à envoyer à l'IHM - return; - - case EVT_PUISSANCE_RECUE: - ihmEvt->eEventType = IHM_EVT_PUISSANCE_EMISE; - ihmEvt->pvData = pDatas; - ihmEvt->bNeedToFreeData = false; - break; - - case EVT_ETAT_MACHINE: - const char *msg2 = (const char *)pDatas; - char *msg_copy2 = malloc(strlen(msg2) + 1); - if (!msg_copy2) { - ESP_LOGE(TAG, "malloc failed for message string"); - free(ihmEvt); - return; - } - strcpy(msg_copy2, msg2); - ihmEvt->eEventType = IHM_EVT_ETAT_MACHINE; - ihmEvt->pvData = msg_copy2; - ihmEvt->bNeedToFreeData = true; - break; - - case EVT_HAUTEUR_CUVE: { - float *data = malloc(sizeof(float)); - if (!data) { - ESP_LOGE(TAG, "malloc failed for hauteur_cuve"); - free(ihmEvt); - return; - } - *data = *(float *)pDatas; - ESP_LOGE(TAG, "EVENT_HANDLER -> On a recu %f", *data); - ihmEvt->eEventType = IHM_EVT_HAUTEUR_CUVE; - ihmEvt->pvData = data; - ihmEvt->bNeedToFreeData = true; - break; - } - - default: - ESP_LOGE(TAG, "Unhandled event type"); - free(ihmEvt); - return; - } - ESP_LOGE(TAG, "Envoi d'un evt %i a l'IHM", ihmEvt->eEventType); - if (ihmEvt && xQueueSendToFront(ihm_queue, &ihmEvt, pdMS_TO_TICKS(10)) != pdPASS) { - ESP_LOGE(TAG, "La queue est pleine"); - if (ihmEvt->bNeedToFreeData && ihmEvt->pvData) { - free(ihmEvt->pvData); - } - free(ihmEvt); - } -} struct state mainState={ .wifi_init=false, @@ -861,8 +769,7 @@ static void mqttStatus_obs_cb(lv_observer_t * observer, lv_subject_t * subject) void app_main(void) { - domotic_event_group = xEventGroupCreate(); - ihm_queue = xQueueCreate(10,sizeof(xIHMEvent_t *)); + startEvtManager(); //init_display(); const esp_timer_create_args_t periodic_timer_args = { .callback = &presence_timer_callback, @@ -925,7 +832,7 @@ void app_main(void) // On affiche au plus tot l'ecran de démarrage // ESP_ERROR_CHECK(esp_lcd_panel_mirror(lcd_panel,true,true)); - xTaskCreatePinnedToCore(&drawIhm,"ihm_task",10000,ihm_queue,10,NULL,0); + xTaskCreatePinnedToCore(&drawIhm,"ihm_task",10000,getIHMQueueHandle(),10,NULL,0); // Initialize NVS esp_err_t ret = nvs_flash_init(); diff --git a/main/main.h b/main/main.h index f4903f3..77e8145 100644 --- a/main/main.h +++ b/main/main.h @@ -1,11 +1,2 @@ #pragma once -#define WIFI_CONNECTED_BIT BIT0 -typedef enum domo_events{ - EVT_WIFI_CONNECTED, - EVT_TIME_SETTED, - EVT_BTN_VOLET, - EVT_PUISSANCE_RECUE, - EVT_ETAT_MACHINE, - EVT_HAUTEUR_CUVE -} domo_events; -void send_event(domo_events evt, void* pDatas); + diff --git a/main/obtain_time.c b/main/obtain_time.c index b5dbff5..1fc83c8 100644 --- a/main/obtain_time.c +++ b/main/obtain_time.c @@ -4,7 +4,7 @@ #include "obtain_time.h" #include "esp_lvgl_port.h" #include "ihm.h" -#include "main.h" +#include "eventsManager.h" static const char *TAG = "sntp"; extern lv_subject_t dateHeureSubj; diff --git a/version.txt b/version.txt index ceab6e1..be58634 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.1 \ No newline at end of file +0.3