From 9a11e6f47bb048ba9cc15e9d520e328afcd684ab Mon Sep 17 00:00:00 2001 From: Ken Van Hoeylandt Date: Sun, 15 Feb 2026 01:41:47 +0100 Subject: [PATCH] Implement UI scaling and more (#501) **New Features** * Runtime font accessors and new symbol fonts for text, launcher, statusbar, and shared icons. * Added font height base setting to device.properties * Text fonts now have 3 sizes: small, default, large **Improvements** * Renamed `UiScale` to `UiDensity` * Statusbar, toolbar and many UI components now compute heights and spacing from fonts/density. * SSD1306 initialization sequence refined for more stable startup. * Multiple image assets replaced by symbol-font rendering. * Many layout improvements related to density, font scaling and icon scaling * Updated folder name capitalization for newer style --- Buildscripts/TactilitySDK/CMakeLists.txt | 18 +- Buildscripts/device.cmake | 25 +- Buildscripts/properties.cmake | 23 + Buildscripts/release-sdk.py | 24 +- Buildscripts/sdkconfig/default.properties | 2 - CMakeLists.txt | 6 +- Data/system/app/TimeZone/assets/search.png | Bin 753 -> 0 bytes .../MemoryChecker/assets/memory_alert.png | Bin 273 -> 0 bytes .../service/Statusbar/assets/location.png | Bin 528 -> 0 bytes .../service/Statusbar/assets/power_0.png | Bin 142 -> 0 bytes .../service/Statusbar/assets/power_10.png | Bin 144 -> 0 bytes .../service/Statusbar/assets/power_100.png | Bin 149 -> 0 bytes .../service/Statusbar/assets/power_20.png | Bin 146 -> 0 bytes .../service/Statusbar/assets/power_30.png | Bin 146 -> 0 bytes .../service/Statusbar/assets/power_40.png | Bin 149 -> 0 bytes .../service/Statusbar/assets/power_50.png | Bin 149 -> 0 bytes .../service/Statusbar/assets/power_60.png | Bin 149 -> 0 bytes .../service/Statusbar/assets/power_70.png | Bin 149 -> 0 bytes .../service/Statusbar/assets/power_80.png | Bin 149 -> 0 bytes .../service/Statusbar/assets/power_90.png | Bin 149 -> 0 bytes .../service/Statusbar/assets/sdcard.png | Bin 193 -> 0 bytes .../service/Statusbar/assets/sdcard_alert.png | Bin 196 -> 0 bytes .../Statusbar/assets/webserver_ap_white.png | Bin 663 -> 0 bytes .../assets/webserver_station_white.png | Bin 755 -> 0 bytes .../Statusbar/assets/wifi_off_white.png | Bin 394 -> 0 bytes .../Statusbar/assets/wifi_scan_white.png | Bin 407 -> 0 bytes .../assets/wifi_signal_medium_white.png | Bin 524 -> 0 bytes .../assets/wifi_signal_strong_white.png | Bin 517 -> 0 bytes .../assets/wifi_signal_weak_white.png | Bin 534 -> 0 bytes Devices/btt-panda-touch/devicetree.yaml | 2 +- Devices/cyd-2432s024c/devicetree.yaml | 2 +- Devices/cyd-2432s028r/devicetree.yaml | 2 +- Devices/cyd-2432s028rv3/devicetree.yaml | 2 +- Devices/cyd-2432s032c/devicetree.yaml | 2 +- Devices/cyd-4848s040c/devicetree.yaml | 2 +- Devices/cyd-8048s043c/devicetree.yaml | 2 +- Devices/cyd-e32r28t/devicetree.yaml | 2 +- Devices/cyd-e32r32p/devicetree.yaml | 2 +- .../devicetree.yaml | 2 +- .../devicetree.yaml | 2 +- .../devicetree.yaml | 2 +- .../devicetree.yaml | 2 +- .../devicetree.yaml | 2 +- .../devicetree.yaml | 2 +- Devices/generic-esp32/devicetree.yaml | 2 +- Devices/generic-esp32c6/devicetree.yaml | 2 +- Devices/generic-esp32p4/devicetree.yaml | 2 +- Devices/generic-esp32s3/devicetree.yaml | 2 +- .../guition-jc1060p470ciwy/devicetree.yaml | 2 +- Devices/guition-jc2432w328c/devicetree.yaml | 2 +- Devices/guition-jc3248w535c/devicetree.yaml | 2 +- Devices/guition-jc8048w550c/devicetree.yaml | 2 +- .../Source/Configuration.cpp | 2 +- .../heltec-wifi-lora-32-v3/device.properties | 2 + .../heltec-wifi-lora-32-v3/devicetree.yaml | 2 +- Devices/lilygo-tdeck/devicetree.yaml | 2 +- Devices/lilygo-tdisplay-s3/devicetree.yaml | 2 +- .../lilygo-tdisplay/Source/Configuration.cpp | 2 +- Devices/lilygo-tdisplay/devicetree.yaml | 2 +- .../Source/Configuration.cpp | 2 +- Devices/lilygo-tdongle-s3/devicetree.yaml | 2 +- Devices/lilygo-tlora-pager/CMakeLists.txt | 2 +- Devices/lilygo-tlora-pager/device.properties | 1 + Devices/lilygo-tlora-pager/devicetree.yaml | 2 +- .../Source/Configuration.cpp | 2 +- Devices/m5stack-cardputer-adv/devicetree.yaml | 2 +- .../Source/Configuration.cpp | 2 +- Devices/m5stack-cardputer/devicetree.yaml | 2 +- Devices/m5stack-core2/devicetree.yaml | 2 +- Devices/m5stack-cores3/devicetree.yaml | 2 +- Devices/m5stack-papers3/devicetree.yaml | 2 +- .../Source/Configuration.cpp | 2 +- Devices/m5stack-stickc-plus/devicetree.yaml | 2 +- .../Source/Configuration.cpp | 2 +- Devices/m5stack-stickc-plus2/devicetree.yaml | 2 +- Devices/m5stack-tab5/device.properties | 2 + Devices/m5stack-tab5/devicetree.yaml | 2 +- Devices/simulator/devicetree.yaml | 2 +- Devices/unphone/devicetree.yaml | 2 +- .../Source/Configuration.cpp | 2 +- .../waveshare-esp32-s3-geek/devicetree.yaml | 2 +- .../Source/Configuration.cpp | 2 +- Devices/waveshare-s3-lcd-13/devicetree.yaml | 2 +- .../Source/Configuration.cpp | 2 +- .../devicetree.yaml | 2 +- .../Source/Configuration.cpp | 2 +- .../devicetree.yaml | 2 +- .../device.properties | 1 + .../waveshare-s3-touch-lcd-43/devicetree.yaml | 2 +- .../devicetree.yaml | 2 +- Documentation/ideas.md | 1 - Drivers/SSD1306/Source/Ssd1306Display.cpp | 96 +- Firmware/CMakeLists.txt | 4 +- Firmware/Kconfig | 38 +- Modules/hal-device-module/CMakeLists.txt | 4 +- .../tactility/drivers/hal_device.h | 0 .../tactility/drivers/hal_device.hpp | 0 .../tactility/hal/Device.h | 0 .../tactility/hal_device_module.h | 0 .../{Source => source}/drivers/hal_device.cpp | 0 .../{Source => source}/hal/Device.cpp | 0 .../{Source => source}/module.cpp | 0 Modules/lvgl-module/Assets/.gitignore | 2 - Modules/lvgl-module/CMakeLists.txt | 62 +- .../Include/tactility/lvgl_fonts.h | 31 - Modules/lvgl-module/assets/.gitignore | 3 + .../{Assets => assets}/generate-all.py | 43 +- .../include/tactility/lvgl_fonts.h | 30 + .../tactility/lvgl_module.h | 0 .../tactility/lvgl_symbols_launcher.h | 0 .../tactility/lvgl_symbols_shared.h | 0 .../tactility/lvgl_symbols_statusbar.h | 3 + .../material_symbols_launcher_30.c | 176 +++ .../material_symbols_launcher_36.c | 2 +- .../material_symbols_launcher_42.c | 220 ++++ .../material_symbols_launcher_48.c | 246 ++++ .../material_symbols_launcher_64.c | 348 ++++++ .../material_symbols_launcher_72.c | 397 +++++++ .../source-fonts/material_symbols_shared_12.c | 378 ++++++ .../material_symbols_shared_16.c | 2 +- .../source-fonts/material_symbols_shared_20.c | 581 +++++++++ .../source-fonts/material_symbols_shared_24.c | 673 +++++++++++ .../source-fonts/material_symbols_shared_32.c | 1037 +++++++++++++++++ .../material_symbols_statusbar_12.c | 246 ++++ .../material_symbols_statusbar_16.c | 283 +++++ .../material_symbols_statusbar_20.c | 75 +- .../material_symbols_statusbar_30.c | 514 ++++++++ .../{Source => source}/arch/lvgl_esp32.c | 0 .../{Source => source}/arch/lvgl_posix.c | 0 Modules/lvgl-module/source/lvgl_fonts.c | 42 + .../lvgl-module/{Source => source}/module.c | 0 .../lvgl-module/{Source => source}/symbols.c | 0 Platforms/PlatformPosix/CMakeLists.txt | 8 - .../CMakeLists.txt | 8 +- .../bindings}/espressif,esp32-gpio.yaml | 0 .../bindings}/espressif,esp32-i2c.yaml | 0 .../bindings}/espressif,esp32-i2s.yaml | 0 .../bindings}/espressif,esp32-spi.yaml | 0 .../bindings}/espressif,esp32-uart.yaml | 0 .../devicetree.yaml | 2 +- .../include}/tactility/bindings/esp32_gpio.h | 0 .../include}/tactility/bindings/esp32_i2c.h | 0 .../include}/tactility/bindings/esp32_i2s.h | 0 .../include}/tactility/bindings/esp32_spi.h | 0 .../include}/tactility/bindings/esp32_uart.h | 0 .../include}/tactility/drivers/esp32_gpio.h | 0 .../include}/tactility/drivers/esp32_i2c.h | 0 .../include}/tactility/drivers/esp32_i2s.h | 0 .../include}/tactility/drivers/esp32_spi.h | 0 .../include}/tactility/drivers/esp32_uart.h | 0 .../include}/tactility/error_esp32.h | 0 .../tactility/drivers/esp32_gpio_helpers.h | 0 .../source}/drivers/esp32_gpio.cpp | 0 .../source}/drivers/esp32_gpio_helpers.cpp | 0 .../source}/drivers/esp32_i2c.cpp | 0 .../source}/drivers/esp32_i2s.cpp | 0 .../source}/drivers/esp32_spi.cpp | 0 .../source}/drivers/esp32_uart.cpp | 0 .../source}/error_esp32.cpp | 0 .../source}/module.cpp | 0 Platforms/platform-posix/CMakeLists.txt | 8 + .../devicetree.yaml | 0 .../source}/freertos.c | 0 .../source}/module.cpp | 0 Tactility/CMakeLists.txt | 4 +- .../Include/Tactility/hal/Configuration.h | 10 +- Tactility/Include/Tactility/lvgl/Statusbar.h | 4 +- Tactility/Include/Tactility/lvgl/Toolbar.h | 2 +- Tactility/Source/Tactility.cpp | 1 + Tactility/Source/app/applist/AppList.cpp | 2 +- .../Source/app/appsettings/AppSettings.cpp | 2 +- .../app/crashdiagnostics/CrashDiagnostics.cpp | 2 +- Tactility/Source/app/display/Display.cpp | 6 +- Tactility/Source/app/launcher/Launcher.cpp | 50 +- .../app/localesettings/LocaleSettings.cpp | 7 +- .../Source/app/screenshot/Screenshot.cpp | 4 +- Tactility/Source/app/settings/Settings.cpp | 2 +- .../Source/app/systeminfo/SystemInfo.cpp | 20 +- Tactility/Source/app/timezone/TimeZone.cpp | 20 +- .../app/trackball/TrackballSettings.cpp | 6 +- Tactility/Source/app/wifimanage/View.cpp | 3 +- Tactility/Source/lvgl/Statusbar.cpp | 25 +- Tactility/Source/lvgl/Toolbar.cpp | 110 +- Tactility/Source/lvgl/wrappers/button.cpp | 2 +- Tactility/Source/lvgl/wrappers/dropdown.cpp | 2 +- Tactility/Source/lvgl/wrappers/list.cpp | 4 +- Tactility/Source/lvgl/wrappers/obj.cpp | 4 +- Tactility/Source/lvgl/wrappers/switch.cpp | 2 +- Tactility/Source/lvgl/wrappers/textarea.cpp | 2 +- Tactility/Source/network/Http.cpp | 20 +- .../memorychecker/MemoryCheckerService.cpp | 8 +- .../Source/service/statusbar/Statusbar.cpp | 99 +- .../service/webserver/WebServerService.cpp | 37 +- TactilityC/Include/tt_hal.h | 18 +- .../Source/symbols/gcc_soft_float_p4.cpp | 4 + TactilityC/Source/tt_hal.cpp | 9 +- TactilityC/Source/tt_init.cpp | 1 + TactilityKernel/CMakeLists.txt | 4 +- .../gpio-controller.yaml | 0 .../i2c-controller.yaml | 0 .../{Bindings => bindings}/i2c-device.yaml | 0 .../i2s-controller.yaml | 0 .../{Bindings => bindings}/root.yaml | 0 .../spi-controller.yaml | 0 .../uart-controller.yaml | 0 TactilityKernel/devicetree.yaml | 2 +- .../tactility/bindings/bindings.h | 0 .../tactility/bindings/gpio.h | 0 .../tactility/bindings/root.h | 0 .../{Include => include}/tactility/check.h | 0 .../tactility/concurrent/dispatcher.h | 0 .../tactility/concurrent/event_group.h | 0 .../tactility/concurrent/mutex.h | 0 .../tactility/concurrent/recursive_mutex.h | 0 .../tactility/concurrent/thread.h | 0 .../tactility/concurrent/timer.h | 0 .../{Include => include}/tactility/defines.h | 0 .../{Include => include}/tactility/delay.h | 0 .../{Include => include}/tactility/device.h | 0 .../{Include => include}/tactility/driver.h | 0 .../tactility/drivers/gpio.h | 0 .../tactility/drivers/gpio_controller.h | 0 .../tactility/drivers/gpio_descriptor.h | 0 .../tactility/drivers/i2c_controller.h | 0 .../tactility/drivers/i2s_controller.h | 0 .../tactility/drivers/root.h | 0 .../tactility/drivers/spi_controller.h | 0 .../tactility/drivers/uart_controller.h | 0 .../{Include => include}/tactility/dts.h | 0 .../{Include => include}/tactility/error.h | 0 .../tactility/freertos/README.md | 0 .../tactility/freertos/event_groups.h | 0 .../tactility/freertos/freertos.h | 0 .../tactility/freertos/port.h | 0 .../tactility/freertos/queue.h | 0 .../tactility/freertos/semphr.h | 0 .../tactility/freertos/task.h | 0 .../tactility/freertos/timers.h | 0 .../tactility/kernel_init.h | 0 .../{Include => include}/tactility/log.h | 0 .../{Include => include}/tactility/module.h | 0 .../{Include => include}/tactility/time.h | 0 .../concurrent/dispatcher.cpp | 0 .../concurrent/event_group.cpp | 0 .../{Source => source}/concurrent/thread.cpp | 0 .../{Source => source}/concurrent/timer.c | 0 TactilityKernel/{Source => source}/crash.cpp | 0 TactilityKernel/{Source => source}/device.cpp | 0 TactilityKernel/{Source => source}/driver.cpp | 0 .../drivers/gpio_controller.cpp | 0 .../drivers/i2c_controller.cpp | 0 .../drivers/i2s_controller.cpp | 0 .../{Source => source}/drivers/root.cpp | 0 .../drivers/spi_controller.cpp | 0 .../drivers/uart_controller.cpp | 0 TactilityKernel/{Source => source}/error.cpp | 0 .../{Source => source}/kernel_init.cpp | 0 .../{Source => source}/kernel_symbols.c | 0 TactilityKernel/{Source => source}/log.cpp | 0 TactilityKernel/{Source => source}/module.cpp | 0 Tests/Tactility/CMakeLists.txt | 2 +- Tests/TactilityKernel/CMakeLists.txt | 2 +- device.py | 132 ++- lv_conf.h | 2 +- 264 files changed, 5923 insertions(+), 494 deletions(-) create mode 100644 Buildscripts/properties.cmake delete mode 100644 Data/system/app/TimeZone/assets/search.png delete mode 100644 Data/system/service/MemoryChecker/assets/memory_alert.png delete mode 100644 Data/system/service/Statusbar/assets/location.png delete mode 100644 Data/system/service/Statusbar/assets/power_0.png delete mode 100644 Data/system/service/Statusbar/assets/power_10.png delete mode 100644 Data/system/service/Statusbar/assets/power_100.png delete mode 100644 Data/system/service/Statusbar/assets/power_20.png delete mode 100644 Data/system/service/Statusbar/assets/power_30.png delete mode 100644 Data/system/service/Statusbar/assets/power_40.png delete mode 100644 Data/system/service/Statusbar/assets/power_50.png delete mode 100644 Data/system/service/Statusbar/assets/power_60.png delete mode 100644 Data/system/service/Statusbar/assets/power_70.png delete mode 100644 Data/system/service/Statusbar/assets/power_80.png delete mode 100644 Data/system/service/Statusbar/assets/power_90.png delete mode 100644 Data/system/service/Statusbar/assets/sdcard.png delete mode 100644 Data/system/service/Statusbar/assets/sdcard_alert.png delete mode 100644 Data/system/service/Statusbar/assets/webserver_ap_white.png delete mode 100644 Data/system/service/Statusbar/assets/webserver_station_white.png delete mode 100644 Data/system/service/Statusbar/assets/wifi_off_white.png delete mode 100644 Data/system/service/Statusbar/assets/wifi_scan_white.png delete mode 100644 Data/system/service/Statusbar/assets/wifi_signal_medium_white.png delete mode 100644 Data/system/service/Statusbar/assets/wifi_signal_strong_white.png delete mode 100644 Data/system/service/Statusbar/assets/wifi_signal_weak_white.png rename Modules/hal-device-module/{Include => include}/tactility/drivers/hal_device.h (100%) rename Modules/hal-device-module/{Include => include}/tactility/drivers/hal_device.hpp (100%) rename Modules/hal-device-module/{Include => include}/tactility/hal/Device.h (100%) rename Modules/hal-device-module/{Include => include}/tactility/hal_device_module.h (100%) rename Modules/hal-device-module/{Source => source}/drivers/hal_device.cpp (100%) rename Modules/hal-device-module/{Source => source}/hal/Device.cpp (100%) rename Modules/hal-device-module/{Source => source}/module.cpp (100%) delete mode 100644 Modules/lvgl-module/Assets/.gitignore delete mode 100644 Modules/lvgl-module/Include/tactility/lvgl_fonts.h create mode 100644 Modules/lvgl-module/assets/.gitignore rename Modules/lvgl-module/{Assets => assets}/generate-all.py (84%) create mode 100644 Modules/lvgl-module/include/tactility/lvgl_fonts.h rename Modules/lvgl-module/{Include => include}/tactility/lvgl_module.h (100%) rename Modules/lvgl-module/{Include => include}/tactility/lvgl_symbols_launcher.h (100%) rename Modules/lvgl-module/{Include => include}/tactility/lvgl_symbols_shared.h (100%) rename Modules/lvgl-module/{Include => include}/tactility/lvgl_symbols_statusbar.h (85%) create mode 100644 Modules/lvgl-module/source-fonts/material_symbols_launcher_30.c rename Modules/lvgl-module/{Source/fonts => source-fonts}/material_symbols_launcher_36.c (99%) create mode 100644 Modules/lvgl-module/source-fonts/material_symbols_launcher_42.c create mode 100644 Modules/lvgl-module/source-fonts/material_symbols_launcher_48.c create mode 100644 Modules/lvgl-module/source-fonts/material_symbols_launcher_64.c create mode 100644 Modules/lvgl-module/source-fonts/material_symbols_launcher_72.c create mode 100644 Modules/lvgl-module/source-fonts/material_symbols_shared_12.c rename Modules/lvgl-module/{Source/fonts => source-fonts}/material_symbols_shared_16.c (99%) create mode 100644 Modules/lvgl-module/source-fonts/material_symbols_shared_20.c create mode 100644 Modules/lvgl-module/source-fonts/material_symbols_shared_24.c create mode 100644 Modules/lvgl-module/source-fonts/material_symbols_shared_32.c create mode 100644 Modules/lvgl-module/source-fonts/material_symbols_statusbar_12.c create mode 100644 Modules/lvgl-module/source-fonts/material_symbols_statusbar_16.c rename Modules/lvgl-module/{Source/fonts => source-fonts}/material_symbols_statusbar_20.c (76%) create mode 100644 Modules/lvgl-module/source-fonts/material_symbols_statusbar_30.c rename Modules/lvgl-module/{Source => source}/arch/lvgl_esp32.c (100%) rename Modules/lvgl-module/{Source => source}/arch/lvgl_posix.c (100%) create mode 100644 Modules/lvgl-module/source/lvgl_fonts.c rename Modules/lvgl-module/{Source => source}/module.c (100%) rename Modules/lvgl-module/{Source => source}/symbols.c (100%) delete mode 100644 Platforms/PlatformPosix/CMakeLists.txt rename Platforms/{PlatformEsp32 => platform-esp32}/CMakeLists.txt (53%) rename Platforms/{PlatformEsp32/Bindings => platform-esp32/bindings}/espressif,esp32-gpio.yaml (100%) rename Platforms/{PlatformEsp32/Bindings => platform-esp32/bindings}/espressif,esp32-i2c.yaml (100%) rename Platforms/{PlatformEsp32/Bindings => platform-esp32/bindings}/espressif,esp32-i2s.yaml (100%) rename Platforms/{PlatformEsp32/Bindings => platform-esp32/bindings}/espressif,esp32-spi.yaml (100%) rename Platforms/{PlatformEsp32/Bindings => platform-esp32/bindings}/espressif,esp32-uart.yaml (100%) rename Platforms/{PlatformEsp32 => platform-esp32}/devicetree.yaml (64%) rename Platforms/{PlatformEsp32/Include => platform-esp32/include}/tactility/bindings/esp32_gpio.h (100%) rename Platforms/{PlatformEsp32/Include => platform-esp32/include}/tactility/bindings/esp32_i2c.h (100%) rename Platforms/{PlatformEsp32/Include => platform-esp32/include}/tactility/bindings/esp32_i2s.h (100%) rename Platforms/{PlatformEsp32/Include => platform-esp32/include}/tactility/bindings/esp32_spi.h (100%) rename Platforms/{PlatformEsp32/Include => platform-esp32/include}/tactility/bindings/esp32_uart.h (100%) rename Platforms/{PlatformEsp32/Include => platform-esp32/include}/tactility/drivers/esp32_gpio.h (100%) rename Platforms/{PlatformEsp32/Include => platform-esp32/include}/tactility/drivers/esp32_i2c.h (100%) rename Platforms/{PlatformEsp32/Include => platform-esp32/include}/tactility/drivers/esp32_i2s.h (100%) rename Platforms/{PlatformEsp32/Include => platform-esp32/include}/tactility/drivers/esp32_spi.h (100%) rename Platforms/{PlatformEsp32/Include => platform-esp32/include}/tactility/drivers/esp32_uart.h (100%) rename Platforms/{PlatformEsp32/Include => platform-esp32/include}/tactility/error_esp32.h (100%) rename Platforms/{PlatformEsp32/Private => platform-esp32/private}/tactility/drivers/esp32_gpio_helpers.h (100%) rename Platforms/{PlatformEsp32/Source => platform-esp32/source}/drivers/esp32_gpio.cpp (100%) rename Platforms/{PlatformEsp32/Source => platform-esp32/source}/drivers/esp32_gpio_helpers.cpp (100%) rename Platforms/{PlatformEsp32/Source => platform-esp32/source}/drivers/esp32_i2c.cpp (100%) rename Platforms/{PlatformEsp32/Source => platform-esp32/source}/drivers/esp32_i2s.cpp (100%) rename Platforms/{PlatformEsp32/Source => platform-esp32/source}/drivers/esp32_spi.cpp (100%) rename Platforms/{PlatformEsp32/Source => platform-esp32/source}/drivers/esp32_uart.cpp (100%) rename Platforms/{PlatformEsp32/Source => platform-esp32/source}/error_esp32.cpp (100%) rename Platforms/{PlatformEsp32/Source => platform-esp32/source}/module.cpp (100%) create mode 100644 Platforms/platform-posix/CMakeLists.txt rename Platforms/{PlatformPosix => platform-posix}/devicetree.yaml (100%) rename Platforms/{PlatformPosix/Source => platform-posix/source}/freertos.c (100%) rename Platforms/{PlatformPosix/Source => platform-posix/source}/module.cpp (100%) rename TactilityKernel/{Bindings => bindings}/gpio-controller.yaml (100%) rename TactilityKernel/{Bindings => bindings}/i2c-controller.yaml (100%) rename TactilityKernel/{Bindings => bindings}/i2c-device.yaml (100%) rename TactilityKernel/{Bindings => bindings}/i2s-controller.yaml (100%) rename TactilityKernel/{Bindings => bindings}/root.yaml (100%) rename TactilityKernel/{Bindings => bindings}/spi-controller.yaml (100%) rename TactilityKernel/{Bindings => bindings}/uart-controller.yaml (100%) rename TactilityKernel/{Include => include}/tactility/bindings/bindings.h (100%) rename TactilityKernel/{Include => include}/tactility/bindings/gpio.h (100%) rename TactilityKernel/{Include => include}/tactility/bindings/root.h (100%) rename TactilityKernel/{Include => include}/tactility/check.h (100%) rename TactilityKernel/{Include => include}/tactility/concurrent/dispatcher.h (100%) rename TactilityKernel/{Include => include}/tactility/concurrent/event_group.h (100%) rename TactilityKernel/{Include => include}/tactility/concurrent/mutex.h (100%) rename TactilityKernel/{Include => include}/tactility/concurrent/recursive_mutex.h (100%) rename TactilityKernel/{Include => include}/tactility/concurrent/thread.h (100%) rename TactilityKernel/{Include => include}/tactility/concurrent/timer.h (100%) rename TactilityKernel/{Include => include}/tactility/defines.h (100%) rename TactilityKernel/{Include => include}/tactility/delay.h (100%) rename TactilityKernel/{Include => include}/tactility/device.h (100%) rename TactilityKernel/{Include => include}/tactility/driver.h (100%) rename TactilityKernel/{Include => include}/tactility/drivers/gpio.h (100%) rename TactilityKernel/{Include => include}/tactility/drivers/gpio_controller.h (100%) rename TactilityKernel/{Include => include}/tactility/drivers/gpio_descriptor.h (100%) rename TactilityKernel/{Include => include}/tactility/drivers/i2c_controller.h (100%) rename TactilityKernel/{Include => include}/tactility/drivers/i2s_controller.h (100%) rename TactilityKernel/{Include => include}/tactility/drivers/root.h (100%) rename TactilityKernel/{Include => include}/tactility/drivers/spi_controller.h (100%) rename TactilityKernel/{Include => include}/tactility/drivers/uart_controller.h (100%) rename TactilityKernel/{Include => include}/tactility/dts.h (100%) rename TactilityKernel/{Include => include}/tactility/error.h (100%) rename TactilityKernel/{Include => include}/tactility/freertos/README.md (100%) rename TactilityKernel/{Include => include}/tactility/freertos/event_groups.h (100%) rename TactilityKernel/{Include => include}/tactility/freertos/freertos.h (100%) rename TactilityKernel/{Include => include}/tactility/freertos/port.h (100%) rename TactilityKernel/{Include => include}/tactility/freertos/queue.h (100%) rename TactilityKernel/{Include => include}/tactility/freertos/semphr.h (100%) rename TactilityKernel/{Include => include}/tactility/freertos/task.h (100%) rename TactilityKernel/{Include => include}/tactility/freertos/timers.h (100%) rename TactilityKernel/{Include => include}/tactility/kernel_init.h (100%) rename TactilityKernel/{Include => include}/tactility/log.h (100%) rename TactilityKernel/{Include => include}/tactility/module.h (100%) rename TactilityKernel/{Include => include}/tactility/time.h (100%) rename TactilityKernel/{Source => source}/concurrent/dispatcher.cpp (100%) rename TactilityKernel/{Source => source}/concurrent/event_group.cpp (100%) rename TactilityKernel/{Source => source}/concurrent/thread.cpp (100%) rename TactilityKernel/{Source => source}/concurrent/timer.c (100%) rename TactilityKernel/{Source => source}/crash.cpp (100%) rename TactilityKernel/{Source => source}/device.cpp (100%) rename TactilityKernel/{Source => source}/driver.cpp (100%) rename TactilityKernel/{Source => source}/drivers/gpio_controller.cpp (100%) rename TactilityKernel/{Source => source}/drivers/i2c_controller.cpp (100%) rename TactilityKernel/{Source => source}/drivers/i2s_controller.cpp (100%) rename TactilityKernel/{Source => source}/drivers/root.cpp (100%) rename TactilityKernel/{Source => source}/drivers/spi_controller.cpp (100%) rename TactilityKernel/{Source => source}/drivers/uart_controller.cpp (100%) rename TactilityKernel/{Source => source}/error.cpp (100%) rename TactilityKernel/{Source => source}/kernel_init.cpp (100%) rename TactilityKernel/{Source => source}/kernel_symbols.c (100%) rename TactilityKernel/{Source => source}/log.cpp (100%) rename TactilityKernel/{Source => source}/module.cpp (100%) diff --git a/Buildscripts/TactilitySDK/CMakeLists.txt b/Buildscripts/TactilitySDK/CMakeLists.txt index 3f787301..ac48c94f 100644 --- a/Buildscripts/TactilitySDK/CMakeLists.txt +++ b/Buildscripts/TactilitySDK/CMakeLists.txt @@ -1,17 +1,17 @@ idf_component_register( INCLUDE_DIRS - "Libraries/TactilityC/Include" - "Libraries/TactilityKernel/Include" - "Libraries/TactilityFreeRtos/Include" - "Libraries/lvgl/Include" - "Libraries/lvgl-module/Include" + "Libraries/TactilityC/include" + "Libraries/TactilityKernel/include" + "Libraries/TactilityFreeRtos/include" + "Libraries/lvgl/include" + "Libraries/lvgl-module/include" REQUIRES esp_timer ) -add_prebuilt_library(TactilityC Libraries/TactilityC/Binary/libTactilityC.a) -add_prebuilt_library(TactilityKernel Libraries/TactilityKernel/Binary/libTactilityKernel.a) -add_prebuilt_library(lvgl Libraries/lvgl/Binary/liblvgl.a) -add_prebuilt_library(lvgl-module Libraries/lvgl-module/Binary/liblvgl-module.a) +add_prebuilt_library(TactilityC Libraries/TactilityC/binary/libTactilityC.a) +add_prebuilt_library(TactilityKernel Libraries/TactilityKernel/binary/libTactilityKernel.a) +add_prebuilt_library(lvgl Libraries/lvgl/binary/liblvgl.a) +add_prebuilt_library(lvgl-module Libraries/lvgl-module/binary/liblvgl-module.a) target_link_libraries(${COMPONENT_LIB} INTERFACE TactilityC) target_link_libraries(${COMPONENT_LIB} INTERFACE TactilityKernel) diff --git a/Buildscripts/device.cmake b/Buildscripts/device.cmake index b3004383..f6a54cee 100644 --- a/Buildscripts/device.cmake +++ b/Buildscripts/device.cmake @@ -7,23 +7,13 @@ else () set(Cyan "") endif () + +include("${CMAKE_CURRENT_LIST_DIR}/properties.cmake") + function(INIT_TACTILITY_GLOBALS SDKCONFIG_FILE) - get_filename_component(SDKCONFIG_FILE_ABS ${SDKCONFIG_FILE} ABSOLUTE) - # Find the device identifier in the sdkconfig file - if (NOT EXISTS ${SDKCONFIG_FILE_ABS}) - message(FATAL_ERROR "sdkconfig file not found:\nMake sure you select a device by running \"python device.py [device-id]\"\n") - endif () - file(READ ${SDKCONFIG_FILE_ABS} sdkconfig_text) - string(REGEX MATCH "(CONFIG_TT_DEVICE_ID\=\"[^\"]*\")" sdkconfig_device_id "${sdkconfig_text}") - if (sdkconfig_device_id STREQUAL "CONFIG_TT_DEVICE_ID=\"\"" OR sdkconfig_device_id STREQUAL "") - message(FATAL_ERROR "CONFIG_TT_DEVICE_ID not found in sdkconfig:\nMake sure you select a device with 'python device.py device-id'") - endif () - string(LENGTH ${sdkconfig_device_id} sdkconfig_device_id_length) - set(id_length 0) - # Total length minus chars of 'CONFIG_TT_DEVICE_ID=""' - math(EXPR id_length "${sdkconfig_device_id_length} - 22") - # Skip 'CONFIG_TT_DEVICE_ID="' then read the relevant (remaining) chars - string(SUBSTRING ${sdkconfig_device_id} 21 ${id_length} device_id) + GET_PROPERTY_FILE_CONTENT(${SDKCONFIG_FILE} sdkconfig_text) + # Get device id + GET_PROPERTY_VALUE(sdkconfig_text "CONFIG_TT_DEVICE_ID" device_id) # Validate device id if (NOT device_id MATCHES "^[a-z0-9\-]*$") message(FATAL_ERROR "Device identifier ${device_id} contains invalid characters. Valid characters: a-z 0-9 \"-\"") @@ -31,7 +21,8 @@ function(INIT_TACTILITY_GLOBALS SDKCONFIG_FILE) # Output results message("Device identifier: ${Cyan}${device_id}${ColorReset}") set(TACTILITY_DEVICE_PROJECT ${device_id}) - message("Device project path: ${Cyan}Devices/${TACTILITY_DEVICE_PROJECT}${ColorReset}\n") + message("Device project path: ${Cyan}Devices/${TACTILITY_DEVICE_PROJECT}${ColorReset} ") + message("") set_property(GLOBAL PROPERTY TACTILITY_DEVICE_PROJECT ${TACTILITY_DEVICE_PROJECT}) set_property(GLOBAL PROPERTY TACTILITY_DEVICE_ID ${device_id}) endfunction() diff --git a/Buildscripts/properties.cmake b/Buildscripts/properties.cmake new file mode 100644 index 00000000..65449733 --- /dev/null +++ b/Buildscripts/properties.cmake @@ -0,0 +1,23 @@ +function(GET_PROPERTY_VALUE PROPERTIES_CONTENT_VAR KEY_NAME RESULT_VAR) + # Search for the key and its value in the properties content + # Supports KEY=VALUE, KEY="VALUE", and optional spaces around = + # Use parentheses to capture the value + # We use ^ and $ with multiline if available, but string(REGEX) doesn't support them easily for lines. + # So we look for the key at the beginning of the string or after a newline. + if ("${${PROPERTIES_CONTENT_VAR}}" MATCHES "(^|\n)${KEY_NAME}[ \t]*=[ \t]*\"?([^\n\"]*)\"?") + set(${RESULT_VAR} "${CMAKE_MATCH_2}" PARENT_SCOPE) + else () + message(FATAL_ERROR "Property '${KEY_NAME}' not found in the properties content.") + endif () +endfunction() + +function(GET_PROPERTY_FILE_CONTENT PROPERTY_FILE RESULT_VAR) + get_filename_component(PROPERTY_FILE_ABS ${PROPERTY_FILE} ABSOLUTE) + # Find the device identifier in the sdkconfig file + if (NOT EXISTS ${PROPERTY_FILE_ABS}) + message(FATAL_ERROR "Property file not found: ${PROPERTY_FILE}\nMake sure you select a device by running \"python device.py [device-id]\"\n") + endif () + file(READ ${PROPERTY_FILE_ABS} file_content) + set(${RESULT_VAR} "${file_content}" PARENT_SCOPE) +endfunction() + diff --git a/Buildscripts/release-sdk.py b/Buildscripts/release-sdk.py index bb7def30..d1a155d8 100644 --- a/Buildscripts/release-sdk.py +++ b/Buildscripts/release-sdk.py @@ -73,31 +73,31 @@ def main(): mappings = [ {'src': 'version.txt', 'dst': ''}, # TactilityC - {'src': 'build/esp-idf/TactilityC/libTactilityC.a', 'dst': 'Libraries/TactilityC/Binary/'}, - {'src': 'TactilityC/Include/*', 'dst': 'Libraries/TactilityC/Include/'}, + {'src': 'build/esp-idf/TactilityC/libTactilityC.a', 'dst': 'Libraries/TactilityC/binary/'}, + {'src': 'TactilityC/Include/*', 'dst': 'Libraries/TactilityC/include/'}, {'src': 'TactilityC/CMakeLists.txt', 'dst': 'Libraries/TactilityC/'}, {'src': 'TactilityC/LICENSE*.*', 'dst': 'Libraries/TactilityC/'}, # TactilityFreeRtos - {'src': 'TactilityFreeRtos/Include/**', 'dst': 'Libraries/TactilityFreeRtos/Include/'}, + {'src': 'TactilityFreeRtos/Include/**', 'dst': 'Libraries/TactilityFreeRtos/include/'}, {'src': 'TactilityFreeRtos/CMakeLists.txt', 'dst': 'Libraries/TactilityFreeRtos/'}, {'src': 'TactilityFreeRtos/LICENSE*.*', 'dst': 'Libraries/TactilityFreeRtos/'}, # TactilityKernel - {'src': 'build/esp-idf/TactilityKernel/libTactilityKernel.a', 'dst': 'Libraries/TactilityKernel/Binary/'}, - {'src': 'TactilityKernel/Include/**', 'dst': 'Libraries/TactilityKernel/Include/'}, + {'src': 'build/esp-idf/TactilityKernel/libTactilityKernel.a', 'dst': 'Libraries/TactilityKernel/binary/'}, + {'src': 'TactilityKernel/include/**', 'dst': 'Libraries/TactilityKernel/include/'}, {'src': 'TactilityKernel/CMakeLists.txt', 'dst': 'Libraries/TactilityKernel/'}, {'src': 'TactilityKernel/LICENSE*.*', 'dst': 'Libraries/TactilityKernel/'}, # lvgl-module - {'src': 'build/esp-idf/lvgl-module/liblvgl-module.a', 'dst': 'Libraries/lvgl-module/Binary/'}, - {'src': 'Modules/lvgl-module/Include/**', 'dst': 'Libraries/lvgl-module/Include/'}, + {'src': 'build/esp-idf/lvgl-module/liblvgl-module.a', 'dst': 'Libraries/lvgl-module/binary/'}, + {'src': 'Modules/lvgl-module/include/**', 'dst': 'Libraries/lvgl-module/include/'}, {'src': 'Modules/lvgl-module/CMakeLists.txt', 'dst': 'Libraries/lvgl-module/'}, {'src': 'Modules/lvgl-module/LICENSE*.*', 'dst': 'Libraries/lvgl-module/'}, # lvgl (basics) - {'src': 'build/esp-idf/lvgl__lvgl/liblvgl__lvgl.a', 'dst': 'Libraries/lvgl/Binary/liblvgl.a'}, - {'src': 'Libraries/lvgl/lvgl.h', 'dst': 'Libraries/lvgl/Include/'}, - {'src': 'Libraries/lvgl/lv_version.h', 'dst': 'Libraries/lvgl/Include/'}, + {'src': 'build/esp-idf/lvgl__lvgl/liblvgl__lvgl.a', 'dst': 'Libraries/lvgl/binary/liblvgl.a'}, + {'src': 'Libraries/lvgl/lvgl.h', 'dst': 'Libraries/lvgl/include/'}, + {'src': 'Libraries/lvgl/lv_version.h', 'dst': 'Libraries/lvgl/include/'}, {'src': 'Libraries/lvgl/LICENCE*.*', 'dst': 'Libraries/lvgl/'}, - {'src': 'Libraries/lvgl/src/lv_conf_kconfig.h', 'dst': 'Libraries/lvgl/Include/lv_conf.h'}, - {'src': 'Libraries/lvgl/src/**/*.h', 'dst': 'Libraries/lvgl/Include/src/'}, + {'src': 'Libraries/lvgl/src/lv_conf_kconfig.h', 'dst': 'Libraries/lvgl/include/lv_conf.h'}, + {'src': 'Libraries/lvgl/src/**/*.h', 'dst': 'Libraries/lvgl/include/src/'}, # elf_loader {'src': 'Libraries/elf_loader/elf_loader.cmake', 'dst': 'Libraries/elf_loader/'}, {'src': 'Libraries/elf_loader/license.txt', 'dst': 'Libraries/elf_loader/'}, diff --git a/Buildscripts/sdkconfig/default.properties b/Buildscripts/sdkconfig/default.properties index b51bc5ef..9ef8eb4c 100644 --- a/Buildscripts/sdkconfig/default.properties +++ b/Buildscripts/sdkconfig/default.properties @@ -11,8 +11,6 @@ CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y # EmbedTLS CONFIG_MBEDTLS_SSL_PROTO_TLS1_3=y # LVGL -CONFIG_LV_FONT_MONTSERRAT_14=y -CONFIG_LV_FONT_MONTSERRAT_18=y CONFIG_LV_USE_USER_DATA=y CONFIG_LV_USE_FS_STDIO=y CONFIG_LV_FS_STDIO_LETTER=65 diff --git a/CMakeLists.txt b/CMakeLists.txt index 887dd940..b56c51c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,8 @@ if (DEFINED ENV{ESP_IDF_VERSION}) else () set(TACTILITY_DEVICE_PROJECT "Devices/simulator") set(TACTILITY_DEVICE_ID "simulator") + set_property(GLOBAL PROPERTY TACTILITY_DEVICE_PROJECT ${TACTILITY_DEVICE_PROJECT}) + set_property(GLOBAL PROPERTY TACTILITY_DEVICE_ID ${TACTILITY_DEVICE_ID}) endif () if (DEFINED ENV{ESP_IDF_VERSION}) @@ -37,7 +39,7 @@ if (DEFINED ENV{ESP_IDF_VERSION}) "Devices/${TACTILITY_DEVICE_PROJECT}" "Drivers" "Modules" - "Platforms/PlatformEsp32" + "Platforms/platform-esp32" "TactilityKernel" "Tactility" "TactilityC" @@ -82,7 +84,7 @@ if (NOT DEFINED ENV{ESP_IDF_VERSION}) add_subdirectory(TactilityCore) add_subdirectory(TactilityFreeRtos) add_subdirectory(TactilityKernel) - add_subdirectory(Platforms/PlatformPosix) + add_subdirectory(Platforms/platform-posix) add_subdirectory(Devices/simulator) add_subdirectory(Libraries/cJSON) add_subdirectory(Libraries/lv_screenshot) diff --git a/Data/system/app/TimeZone/assets/search.png b/Data/system/app/TimeZone/assets/search.png deleted file mode 100644 index b71e195050aa2312c407b1e5e03141892b960e06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 753 zcmVpF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10)9zE zK~zYIt&~4Z6LA#BKkr8yNg64=_O2zaHPOU4FsKW0W5mHl6NxowjElRjj3mlJh>1ju z4oq$)hy%ghKVi}c0|d0kwZ%#t3iO^s@5qI4M~!@^_sj3S_j&K-{eGgVMCH0}Mop?B z$Ov!&uz}x#tSSD2XzID+WLN1@5(T(!{TfE5fq{gWJrO3Ig7p~K?;7BG^@ku&0TbM{ zQ9fei2TB%n5XeSi7j~M~NV!bwSU^zun;^M@OyTd27mLNMh;Q2U8lxx^2o`|AOUJe< ziGXUgn!%*M(;15@jFoKbMO=XAd1arT4}m|T3_FhXKF;5$NmV$QxlAP`2e55>MaA3< z&nogL$=?Lq0?@|a9Zzx&RVwr^fh-1yq4j1n7Ym@XiU6Mu%{)=6%m-$wx79uu4^Rr7 z2>IDe8Vf;t9)bl3TXE1|ugmT$2Dg?E9S zb-l)DH_2+r~G%&bYRApWa8|u@Ka5)%DCKB%}I##mt zv&R8gS>aS)w((5ic2Y%wz5o~LyrV=&_;XS&({gO9BFb>^N{{-AmleHJw5>r!#{i$s zCeBp7dL^-g!&+}PbG@zhc~D1{om7gi`Fwse>QnXV6+vc_I*A2zE4Q|N1J&0+51=CQ zz$xUOh4&^tv^y0Gxj95`0c|=3PjA(>@1GdpILLpGD5|5zbs`;vDi(5cir%HOU81U& jPPBti!FCN5ZR_4&G=3Bru+9oF00000NkvXXu0mjfiBnN9 diff --git a/Data/system/service/MemoryChecker/assets/memory_alert.png b/Data/system/service/MemoryChecker/assets/memory_alert.png deleted file mode 100644 index fc678c3dd8a903113aba120ff716b301570cdf02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jPK-BC>eK@{Ea{HEjtmSN z`?>!lvI6-E$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?e4-L!642cY{D{G94NwB;1OBOz`zf*hCh*Uh5hnOpdfpRr>`sfOKv`14W^6Izhr?z zp`I>|Ar`04PB!E^;K0F>-aJ9i_uv1kIa16ki{^+;f9WC-6UZ=U!kH`5zF*A3GyDyN zSPG^ndtBPQB~`HPNciP#3{zPTTpF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10i8)i zK~y-6rIXES6Hyq3pYKe}MvBv<=_HGyD=T;df-8FgDk8cGt%B%UdIJjHgmobS1<_3x zg@RsyLNA~QVx`b#<|H!>xRKa7uM68+(?~5na8~F2p6@w-CW+IG%1H|bgF!sp)!h(u zu{m8^{9l0cKA#KD&6{)!IP07}I@Tafi_5OUf?z)nG;a}C zB?9o#%$}$mF5}L80hZ%99vlWl-sjgadnj=OqiXOuh^MBglO*Rh0KDI63r#ra>^H0c zWW8bovl&1bFA2PuPHLY{x3mOo0R~)`aeKSppFLc>T@*8jIWt}X z+YUc^MX|QI-<4A5j^ZD!jU{tCNxUl<2|95Zc$n17^E@VD`m-;+x^?I|C zNPWJZ`h0CP>&9JQvl)LYE4By(hkKA^#TDR^P-isz&v($8oZR%i;yvO%jyhtfvifE; zH`d@_dqK~EI&e?MN~<-|KM^2F>MMv%z|6uC{bK<@iD?P=noLctjtkgnzw<90M908P Sq9D=$0000f2V7O}drHR#AbVhd1} migaLf%!^V`f5x^@j)9v&_LlM1E%iXN7(8A5T-G@yGywoOJtdU@ diff --git a/Data/system/service/Statusbar/assets/power_10.png b/Data/system/service/Statusbar/assets/power_10.png deleted file mode 100644 index 0ef185e539c01046544aa303f457586ab7b5c2cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GmKsJ9O;|lxbnLt4& zPZ!4!3;*NK ofO&(~#S={2zC}riGhQ$2_X|dSGz$)#K7qvizjeTMq!{wb40xU^!H-JVmc)I$ztaD0e0st^yCnNv> diff --git a/Data/system/service/Statusbar/assets/power_50.png b/Data/system/service/Statusbar/assets/power_50.png deleted file mode 100644 index 06a056f2a7493f4e41c38dae7f32ff82dd84374b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GmKsJ9O;|lxbnLt5z zPZ!4!3;*N@+jO0gYtvboFyt=akR{0GGfimH+?% diff --git a/Data/system/service/Statusbar/assets/power_80.png b/Data/system/service/Statusbar/assets/power_80.png deleted file mode 100644 index e8d8062f9580d876ce10e4dd2bca538e0ec5a56b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GmKsJ9O;|lxbnLt5z zPZ!4!3;*NoD}{YVqG>EaAx8&TQmqAz@#@Ah^(J!>-+YD?Wy9 oDLKHj=ACK(detLE3+&f39XwnllKih6XgdRgr>mdKI;Vst01jqFtu~$>Ny>&qJ<|4&bV0a z)|57{UigK>B~F6^->9(kf{r+&Nw4od+N*meDxluI!Po2BG?A+|PP;$maWDSgec)FS s=OX5Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0xU^HK~y+Tm6Xkk zPhk|t&vR$UyNo8XP*cQWcHT;pg_I&$u*59l4OOl*|&3HSz_vfbY`Sm3(e(lpJ%rfK%u-fTNX8(;-+SuIa(FPdy< zyOMMX*wl)D4guGs{H;y==aKXlI1eoE8t(^APc|!od_vL>P$P5$IB9!N(=_{lGm^%- zvAhFzmi}qj?vwOD(wObd<#`WaucY_Dh4Sn#fW^Ie0EZ;q6M8G@jil=}_10)FUsZZ% zMbgD?W*>!a3f+_RyCzX6U(dfmM` zpvS=WQa3Ni`P}60p$|e$+c^KU>yc7FE5JHQ6H^xYh|ra8|D1DvUV3IF=X`w1moe7< zG*~0)YgaQcRQe(!s-={g|0@wiU%7D7L$&zl{UQ+6N xbOHX2?IpI4+S(RT)xh2U{{A~DC70SBzX6d;N;5i?S|Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0*FaOK~y+Tg_J>v zl~okS|L49Ldm&{OXqP%x+GR*+8xX9|KR`&3PKwZF>*!$fkH7cyDZ+ znG3eJ$#yR@zsbz2zzb@-eH?f{$%~o!-=;A~kU!i02$<=N2f%kp{cu3R=G0d~gp1 z*bUqSF1Oc&8DQ6FG&%@e0M=|DsCAMQbzltetfZlo2c_Pe?MEYGF(S@yY;4T-`~B;+ z=79jSwl7T>`B&iOx_->W4sB0CE=H7PNk2*&*q-Uqw$H`j zq@E-xyfY%6lXO_pX~}aG4J0XIvUXw+xZHll9Pp;36-o29vZ%b#<(BRdbxbrYrJT2Y z!}dxtu8zYtW^ zmfBTIbxb``&(uA2KjK^URXtRvBM;P3bz6N?Ujjmn8tS}y5O+7#VboLgNu7&Ip8G(u z7UJG9>Xh16ch#gWs*mbgkL09os2#P)hgC?U4? znpbFUu$ddZr%h;is;kpD?fD0hS*&VPNaalJ=b;_RPo@ diff --git a/Data/system/service/Statusbar/assets/wifi_scan_white.png b/Data/system/service/Statusbar/assets/wifi_scan_white.png deleted file mode 100644 index 4154e4091afa7a6b28d780a415d63339352a95b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmV;I0cie-P)`~xtdhE>UWDAXT0!loy{2o z17z~Qr^+EmiL;uzua@IUOsNswPg0`*BQ^GK{06ohyR)*%epLVf002ovPDHLkV1j8J Bv1s#dEv zBy9ngii#dpfMs9-cPmML1eED1@K z;V`>57^PnZqg0bfdV{0%uA~J?1VL~`((fVmdQ{IYWv>t$Mb(GE`$E48_y7j`KaS7c zs@KUU)>yBT50CT)Y|W(mD=X(;0Ogh0Xq4WR*^U$M%3uJB(#OcMY_Zh)NwVHglJ#k} z5`Pht7>v@*Q#06{<@c{szBWUjkeLL|+zxO69C&!!v;4+e_+Od(H~s=uRupo}2YBfK O0000@-F5c;#g*VAJnR)L!-#2gOJ(I*Z=8TmMxWg8^-R@MD z+3ia-3sAvMTvtD;)#~Y=TtXvC&d1Ay|xEr*8*Xftm4=XuuzbH z0iS`NMLY*A0ym2I3yz*o`~C-ONAWYmUIVVdSEQE{6P34~=k@xJ@AZ1##l__V%(et~ zfJ|u9MOMeCn6cfsReM#I)=rWI%bj@uIr;Y)-#-HOfc+>=wC3|2{AaVDSFzwDzdk5KKLz(U7;-E|hpeX$sX_`)zemjnr+Ht%zY_G&$0wsbd zS?}w?`Y7JNp7Qbtf51ixMC7}3?#Fqolt-}ER?;-RFCzDVTT{r-fPGcntyZf$?RNWYOwedF zR#kNiSoYwbz(-Y00Ysz%r`lq5O9`^hFcM`|(I`Gm@{30UH@;rZ?B+2N{@wHm* zQW%D}RdoZn;x~F!0TzJ^z|$y-o|mf`W0pl^2|!i9B}wub*s<2`rfIq%BAdXXs4C57 z^IEst{a~%FWLZ`R9s^6~H2A8jFGi!$tHEIK%NTRrIrn}nVyo2(^E`h8tonvbRS&!d zH-O0J--cm$x6|q56Sv^kegdom4|=`cp8BGQNWEUaBO=>C&pEd_Zc^0=kK=fujE{!H zm80QsWm>KDzX(b{J~>@GJ~>tIYqN0wddfFv#1l4?ppar4I0Oy@f~{G&2@(It=KhVp Y0ZC5#Wq{_AD*ylh07*qoM6N<$f?Ch>bpQYW diff --git a/Devices/btt-panda-touch/devicetree.yaml b/Devices/btt-panda-touch/devicetree.yaml index 7497f5c0..63084cb8 100644 --- a/Devices/btt-panda-touch/devicetree.yaml +++ b/Devices/btt-panda-touch/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: bigtreetech,panda-touch.dts diff --git a/Devices/cyd-2432s024c/devicetree.yaml b/Devices/cyd-2432s024c/devicetree.yaml index 1080dfcd..18b3502e 100644 --- a/Devices/cyd-2432s024c/devicetree.yaml +++ b/Devices/cyd-2432s024c/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: cyd,2432s024c.dts diff --git a/Devices/cyd-2432s028r/devicetree.yaml b/Devices/cyd-2432s028r/devicetree.yaml index 56c2aa3f..1bf60056 100644 --- a/Devices/cyd-2432s028r/devicetree.yaml +++ b/Devices/cyd-2432s028r/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: cyd,2432s028r.dts diff --git a/Devices/cyd-2432s028rv3/devicetree.yaml b/Devices/cyd-2432s028rv3/devicetree.yaml index 03b0114b..23931297 100644 --- a/Devices/cyd-2432s028rv3/devicetree.yaml +++ b/Devices/cyd-2432s028rv3/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: cyd,2432s028rv3.dts diff --git a/Devices/cyd-2432s032c/devicetree.yaml b/Devices/cyd-2432s032c/devicetree.yaml index c36ab500..98ce4168 100644 --- a/Devices/cyd-2432s032c/devicetree.yaml +++ b/Devices/cyd-2432s032c/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: cyd,2432s032c.dts diff --git a/Devices/cyd-4848s040c/devicetree.yaml b/Devices/cyd-4848s040c/devicetree.yaml index 5cf83ae9..23397664 100644 --- a/Devices/cyd-4848s040c/devicetree.yaml +++ b/Devices/cyd-4848s040c/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: cyd,4848s040c.dts diff --git a/Devices/cyd-8048s043c/devicetree.yaml b/Devices/cyd-8048s043c/devicetree.yaml index a3390e0f..59692b41 100644 --- a/Devices/cyd-8048s043c/devicetree.yaml +++ b/Devices/cyd-8048s043c/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: cyd,8048s043c.dts diff --git a/Devices/cyd-e32r28t/devicetree.yaml b/Devices/cyd-e32r28t/devicetree.yaml index 9474d017..a658b391 100644 --- a/Devices/cyd-e32r28t/devicetree.yaml +++ b/Devices/cyd-e32r28t/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: cyd,e32r28t.dts diff --git a/Devices/cyd-e32r32p/devicetree.yaml b/Devices/cyd-e32r32p/devicetree.yaml index 62572876..34099aab 100644 --- a/Devices/cyd-e32r32p/devicetree.yaml +++ b/Devices/cyd-e32r32p/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: cyd,e32r32p.dts diff --git a/Devices/elecrow-crowpanel-advance-28/devicetree.yaml b/Devices/elecrow-crowpanel-advance-28/devicetree.yaml index b9dab81e..bb752ac5 100644 --- a/Devices/elecrow-crowpanel-advance-28/devicetree.yaml +++ b/Devices/elecrow-crowpanel-advance-28/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: elecrow,crowpanel-advance-28.dts diff --git a/Devices/elecrow-crowpanel-advance-35/devicetree.yaml b/Devices/elecrow-crowpanel-advance-35/devicetree.yaml index e1db137b..f2e8c40b 100644 --- a/Devices/elecrow-crowpanel-advance-35/devicetree.yaml +++ b/Devices/elecrow-crowpanel-advance-35/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: elecrow,crowpanel-advance-35.dts diff --git a/Devices/elecrow-crowpanel-advance-50/devicetree.yaml b/Devices/elecrow-crowpanel-advance-50/devicetree.yaml index fcea222d..23c65cc5 100644 --- a/Devices/elecrow-crowpanel-advance-50/devicetree.yaml +++ b/Devices/elecrow-crowpanel-advance-50/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: elecrow,crowpanel-advance-50.dts diff --git a/Devices/elecrow-crowpanel-basic-28/devicetree.yaml b/Devices/elecrow-crowpanel-basic-28/devicetree.yaml index d2f7ac46..61fa12e3 100644 --- a/Devices/elecrow-crowpanel-basic-28/devicetree.yaml +++ b/Devices/elecrow-crowpanel-basic-28/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: elecrow,crowpanel-basic-28.dts diff --git a/Devices/elecrow-crowpanel-basic-35/devicetree.yaml b/Devices/elecrow-crowpanel-basic-35/devicetree.yaml index fde7e421..04d739cc 100644 --- a/Devices/elecrow-crowpanel-basic-35/devicetree.yaml +++ b/Devices/elecrow-crowpanel-basic-35/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: elecrow,crowpanel-basic-35.dts diff --git a/Devices/elecrow-crowpanel-basic-50/devicetree.yaml b/Devices/elecrow-crowpanel-basic-50/devicetree.yaml index 054029d7..bb3e38a8 100644 --- a/Devices/elecrow-crowpanel-basic-50/devicetree.yaml +++ b/Devices/elecrow-crowpanel-basic-50/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: elecrow,crowpanel-basic-50.dts diff --git a/Devices/generic-esp32/devicetree.yaml b/Devices/generic-esp32/devicetree.yaml index 24e199c8..6a9f8cbb 100644 --- a/Devices/generic-esp32/devicetree.yaml +++ b/Devices/generic-esp32/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: generic,esp32.dts diff --git a/Devices/generic-esp32c6/devicetree.yaml b/Devices/generic-esp32c6/devicetree.yaml index 751f4cb3..3b5ab4d4 100644 --- a/Devices/generic-esp32c6/devicetree.yaml +++ b/Devices/generic-esp32c6/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: generic,esp32c6.dts diff --git a/Devices/generic-esp32p4/devicetree.yaml b/Devices/generic-esp32p4/devicetree.yaml index a87db210..4c31671a 100644 --- a/Devices/generic-esp32p4/devicetree.yaml +++ b/Devices/generic-esp32p4/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: generic,esp32p4.dts diff --git a/Devices/generic-esp32s3/devicetree.yaml b/Devices/generic-esp32s3/devicetree.yaml index ed8b5b83..1a525a8a 100644 --- a/Devices/generic-esp32s3/devicetree.yaml +++ b/Devices/generic-esp32s3/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: generic,esp32s3.dts diff --git a/Devices/guition-jc1060p470ciwy/devicetree.yaml b/Devices/guition-jc1060p470ciwy/devicetree.yaml index 211048d4..199ba532 100644 --- a/Devices/guition-jc1060p470ciwy/devicetree.yaml +++ b/Devices/guition-jc1060p470ciwy/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: guition,jc1060p470ciwy.dts diff --git a/Devices/guition-jc2432w328c/devicetree.yaml b/Devices/guition-jc2432w328c/devicetree.yaml index 0a6b0f25..ca67575e 100644 --- a/Devices/guition-jc2432w328c/devicetree.yaml +++ b/Devices/guition-jc2432w328c/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: guition,jc2432w328c.dts diff --git a/Devices/guition-jc3248w535c/devicetree.yaml b/Devices/guition-jc3248w535c/devicetree.yaml index 2b696c93..7b534b58 100644 --- a/Devices/guition-jc3248w535c/devicetree.yaml +++ b/Devices/guition-jc3248w535c/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: guition,jc3248w535c.dts diff --git a/Devices/guition-jc8048w550c/devicetree.yaml b/Devices/guition-jc8048w550c/devicetree.yaml index 22a293c7..07eeef5e 100644 --- a/Devices/guition-jc8048w550c/devicetree.yaml +++ b/Devices/guition-jc8048w550c/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: guition,jc8048w550c.dts diff --git a/Devices/heltec-wifi-lora-32-v3/Source/Configuration.cpp b/Devices/heltec-wifi-lora-32-v3/Source/Configuration.cpp index c6d3b1f0..f0097608 100644 --- a/Devices/heltec-wifi-lora-32-v3/Source/Configuration.cpp +++ b/Devices/heltec-wifi-lora-32-v3/Source/Configuration.cpp @@ -44,6 +44,6 @@ static std::vector> createDevices() { extern const Configuration hardwareConfiguration = { .initBoot = initBoot, - .uiScale = UiScale::Smallest, + .uiDensity = UiDensity::Compact, .createDevices = createDevices }; diff --git a/Devices/heltec-wifi-lora-32-v3/device.properties b/Devices/heltec-wifi-lora-32-v3/device.properties index 92b32ed3..9692f452 100644 --- a/Devices/heltec-wifi-lora-32-v3/device.properties +++ b/Devices/heltec-wifi-lora-32-v3/device.properties @@ -5,6 +5,7 @@ incubating=true [apps] launcherAppId=Launcher +autoStartAppId=ApWebServer [hardware] target=ESP32S3 @@ -24,3 +25,4 @@ infoMessage=Due to the small size of the screen, the icons don't render properly [lvgl] theme=Mono colorDepth=16 +uiScale=70 diff --git a/Devices/heltec-wifi-lora-32-v3/devicetree.yaml b/Devices/heltec-wifi-lora-32-v3/devicetree.yaml index 0a5a13f1..41589b61 100644 --- a/Devices/heltec-wifi-lora-32-v3/devicetree.yaml +++ b/Devices/heltec-wifi-lora-32-v3/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: heltec,wifi-lora-32-v3.dts diff --git a/Devices/lilygo-tdeck/devicetree.yaml b/Devices/lilygo-tdeck/devicetree.yaml index ff23f99a..a19f9045 100644 --- a/Devices/lilygo-tdeck/devicetree.yaml +++ b/Devices/lilygo-tdeck/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: lilygo,tdeck.dts diff --git a/Devices/lilygo-tdisplay-s3/devicetree.yaml b/Devices/lilygo-tdisplay-s3/devicetree.yaml index dbaf4c62..52f68f0d 100644 --- a/Devices/lilygo-tdisplay-s3/devicetree.yaml +++ b/Devices/lilygo-tdisplay-s3/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: lilygo,tdisplay-s3.dts diff --git a/Devices/lilygo-tdisplay/Source/Configuration.cpp b/Devices/lilygo-tdisplay/Source/Configuration.cpp index cb68ebfc..3a6e99c9 100644 --- a/Devices/lilygo-tdisplay/Source/Configuration.cpp +++ b/Devices/lilygo-tdisplay/Source/Configuration.cpp @@ -19,6 +19,6 @@ static std::vector> createDevices() { extern const Configuration hardwareConfiguration = { .initBoot = initBoot, - .uiScale = UiScale::Smallest, + .uiDensity = UiDensity::Compact, .createDevices = createDevices }; diff --git a/Devices/lilygo-tdisplay/devicetree.yaml b/Devices/lilygo-tdisplay/devicetree.yaml index 668b09a4..1c6b1fe9 100644 --- a/Devices/lilygo-tdisplay/devicetree.yaml +++ b/Devices/lilygo-tdisplay/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: lilygo,tdisplay.dts diff --git a/Devices/lilygo-tdongle-s3/Source/Configuration.cpp b/Devices/lilygo-tdongle-s3/Source/Configuration.cpp index acec5b45..8ae45844 100644 --- a/Devices/lilygo-tdongle-s3/Source/Configuration.cpp +++ b/Devices/lilygo-tdongle-s3/Source/Configuration.cpp @@ -16,6 +16,6 @@ static std::vector> createDevices() { extern const Configuration hardwareConfiguration = { .initBoot = initBoot, - .uiScale = UiScale::Smallest, + .uiDensity = UiDensity::Compact, .createDevices = createDevices }; diff --git a/Devices/lilygo-tdongle-s3/devicetree.yaml b/Devices/lilygo-tdongle-s3/devicetree.yaml index 53c6ca9c..3ba9ef3c 100644 --- a/Devices/lilygo-tdongle-s3/devicetree.yaml +++ b/Devices/lilygo-tdongle-s3/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: lilygo,tdongle-s3.dts diff --git a/Devices/lilygo-tlora-pager/CMakeLists.txt b/Devices/lilygo-tlora-pager/CMakeLists.txt index a15cda62..e03a44c2 100644 --- a/Devices/lilygo-tlora-pager/CMakeLists.txt +++ b/Devices/lilygo-tlora-pager/CMakeLists.txt @@ -3,5 +3,5 @@ file(GLOB_RECURSE SOURCE_FILES Source/*.c*) idf_component_register( SRCS ${SOURCE_FILES} INCLUDE_DIRS "Source" - REQUIRES Tactility esp_lcd ST7796 BQ25896 BQ27220 TCA8418 DRV2605 PwmBacklight driver esp_adc PlatformEsp32 + REQUIRES Tactility esp_lcd ST7796 BQ25896 BQ27220 TCA8418 DRV2605 PwmBacklight driver esp_adc platform-esp32 ) diff --git a/Devices/lilygo-tlora-pager/device.properties b/Devices/lilygo-tlora-pager/device.properties index 9b24c3c8..33cceeb9 100644 --- a/Devices/lilygo-tlora-pager/device.properties +++ b/Devices/lilygo-tlora-pager/device.properties @@ -22,3 +22,4 @@ dpi=227 [lvgl] colorDepth=16 +dpi=150 diff --git a/Devices/lilygo-tlora-pager/devicetree.yaml b/Devices/lilygo-tlora-pager/devicetree.yaml index 82fd189b..5d71c58e 100644 --- a/Devices/lilygo-tlora-pager/devicetree.yaml +++ b/Devices/lilygo-tlora-pager/devicetree.yaml @@ -1,4 +1,4 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 bindings: ./ dts: lilygo,tlora-pager.dts diff --git a/Devices/m5stack-cardputer-adv/Source/Configuration.cpp b/Devices/m5stack-cardputer-adv/Source/Configuration.cpp index 1d16e201..8b297dff 100644 --- a/Devices/m5stack-cardputer-adv/Source/Configuration.cpp +++ b/Devices/m5stack-cardputer-adv/Source/Configuration.cpp @@ -28,6 +28,6 @@ static DeviceVector createDevices() { extern const Configuration hardwareConfiguration = { .initBoot = initBoot, - .uiScale = UiScale::Smallest, + .uiDensity = UiDensity::Compact, .createDevices = createDevices }; diff --git a/Devices/m5stack-cardputer-adv/devicetree.yaml b/Devices/m5stack-cardputer-adv/devicetree.yaml index a14c75f4..2548e656 100644 --- a/Devices/m5stack-cardputer-adv/devicetree.yaml +++ b/Devices/m5stack-cardputer-adv/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: m5stack,cardputer-adv.dts diff --git a/Devices/m5stack-cardputer/Source/Configuration.cpp b/Devices/m5stack-cardputer/Source/Configuration.cpp index 604ba926..85d0ba8e 100644 --- a/Devices/m5stack-cardputer/Source/Configuration.cpp +++ b/Devices/m5stack-cardputer/Source/Configuration.cpp @@ -26,6 +26,6 @@ static DeviceVector createDevices() { extern const Configuration hardwareConfiguration = { .initBoot = initBoot, - .uiScale = UiScale::Smallest, + .uiDensity = UiDensity::Compact, .createDevices = createDevices }; diff --git a/Devices/m5stack-cardputer/devicetree.yaml b/Devices/m5stack-cardputer/devicetree.yaml index bc62574f..b82a4df7 100644 --- a/Devices/m5stack-cardputer/devicetree.yaml +++ b/Devices/m5stack-cardputer/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: m5stack,cardputer.dts diff --git a/Devices/m5stack-core2/devicetree.yaml b/Devices/m5stack-core2/devicetree.yaml index a245dbaa..3016b01a 100644 --- a/Devices/m5stack-core2/devicetree.yaml +++ b/Devices/m5stack-core2/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: m5stack,core2.dts diff --git a/Devices/m5stack-cores3/devicetree.yaml b/Devices/m5stack-cores3/devicetree.yaml index d352fc41..daa64904 100644 --- a/Devices/m5stack-cores3/devicetree.yaml +++ b/Devices/m5stack-cores3/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: m5stack,cores3.dts diff --git a/Devices/m5stack-papers3/devicetree.yaml b/Devices/m5stack-papers3/devicetree.yaml index 867ba7af..e1585b29 100644 --- a/Devices/m5stack-papers3/devicetree.yaml +++ b/Devices/m5stack-papers3/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: m5stack,papers3.dts diff --git a/Devices/m5stack-stickc-plus/Source/Configuration.cpp b/Devices/m5stack-stickc-plus/Source/Configuration.cpp index 8f395ec3..9e35b683 100644 --- a/Devices/m5stack-stickc-plus/Source/Configuration.cpp +++ b/Devices/m5stack-stickc-plus/Source/Configuration.cpp @@ -25,6 +25,6 @@ static DeviceVector createDevices() { extern const Configuration hardwareConfiguration = { .initBoot = initBoot, - .uiScale = UiScale::Smallest, + .uiDensity = UiDensity::Compact, .createDevices = createDevices }; diff --git a/Devices/m5stack-stickc-plus/devicetree.yaml b/Devices/m5stack-stickc-plus/devicetree.yaml index cdf52486..dcb567e8 100644 --- a/Devices/m5stack-stickc-plus/devicetree.yaml +++ b/Devices/m5stack-stickc-plus/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: m5stack,stickc-plus.dts diff --git a/Devices/m5stack-stickc-plus2/Source/Configuration.cpp b/Devices/m5stack-stickc-plus2/Source/Configuration.cpp index 6c8f3854..ccef04bf 100644 --- a/Devices/m5stack-stickc-plus2/Source/Configuration.cpp +++ b/Devices/m5stack-stickc-plus2/Source/Configuration.cpp @@ -28,6 +28,6 @@ static DeviceVector createDevices() { extern const Configuration hardwareConfiguration = { .initBoot = initBoot, - .uiScale = UiScale::Smallest, + .uiDensity = UiDensity::Compact, .createDevices = createDevices }; diff --git a/Devices/m5stack-stickc-plus2/devicetree.yaml b/Devices/m5stack-stickc-plus2/devicetree.yaml index 2e21c419..7d3045f0 100644 --- a/Devices/m5stack-stickc-plus2/devicetree.yaml +++ b/Devices/m5stack-stickc-plus2/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: m5stack,stickc-plus2.dts diff --git a/Devices/m5stack-tab5/device.properties b/Devices/m5stack-tab5/device.properties index 1a71cd41..541092dc 100644 --- a/Devices/m5stack-tab5/device.properties +++ b/Devices/m5stack-tab5/device.properties @@ -20,6 +20,8 @@ dpi=294 [lvgl] colorDepth=16 +fontSize=28 +dpi=250 [cdn] warningMessage=Only the original hardware variant with the ILI9881C display is supported for now diff --git a/Devices/m5stack-tab5/devicetree.yaml b/Devices/m5stack-tab5/devicetree.yaml index 87a600ac..82cc35c4 100644 --- a/Devices/m5stack-tab5/devicetree.yaml +++ b/Devices/m5stack-tab5/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: m5stack,tab5.dts diff --git a/Devices/simulator/devicetree.yaml b/Devices/simulator/devicetree.yaml index a64ac4e1..b6a0ebda 100644 --- a/Devices/simulator/devicetree.yaml +++ b/Devices/simulator/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformPosix + - Platforms/platform-posix dts: simulator.dts diff --git a/Devices/unphone/devicetree.yaml b/Devices/unphone/devicetree.yaml index b1d3970c..c2902c36 100644 --- a/Devices/unphone/devicetree.yaml +++ b/Devices/unphone/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: unphone.dts diff --git a/Devices/waveshare-esp32-s3-geek/Source/Configuration.cpp b/Devices/waveshare-esp32-s3-geek/Source/Configuration.cpp index c93cd002..55d33578 100644 --- a/Devices/waveshare-esp32-s3-geek/Source/Configuration.cpp +++ b/Devices/waveshare-esp32-s3-geek/Source/Configuration.cpp @@ -21,6 +21,6 @@ static bool initBoot() { extern const Configuration hardwareConfiguration = { .initBoot = initBoot, - .uiScale = UiScale::Smallest, + .uiDensity = UiDensity::Compact, .createDevices = createDevices }; \ No newline at end of file diff --git a/Devices/waveshare-esp32-s3-geek/devicetree.yaml b/Devices/waveshare-esp32-s3-geek/devicetree.yaml index e6a28236..e8514114 100644 --- a/Devices/waveshare-esp32-s3-geek/devicetree.yaml +++ b/Devices/waveshare-esp32-s3-geek/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: waveshare,esp32-s3-geek.dts diff --git a/Devices/waveshare-s3-lcd-13/Source/Configuration.cpp b/Devices/waveshare-s3-lcd-13/Source/Configuration.cpp index 42cb0e13..a5a59037 100644 --- a/Devices/waveshare-s3-lcd-13/Source/Configuration.cpp +++ b/Devices/waveshare-s3-lcd-13/Source/Configuration.cpp @@ -20,6 +20,6 @@ static bool initBoot() { extern const Configuration hardwareConfiguration = { .initBoot = initBoot, - .uiScale = UiScale::Smallest, + .uiDensity = UiDensity::Compact, .createDevices = createDevices }; diff --git a/Devices/waveshare-s3-lcd-13/devicetree.yaml b/Devices/waveshare-s3-lcd-13/devicetree.yaml index 5b6d6f6f..9321802e 100644 --- a/Devices/waveshare-s3-lcd-13/devicetree.yaml +++ b/Devices/waveshare-s3-lcd-13/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: waveshare,s3-lcd-13.dts diff --git a/Devices/waveshare-s3-touch-lcd-128/Source/Configuration.cpp b/Devices/waveshare-s3-touch-lcd-128/Source/Configuration.cpp index ce63c418..9afbdb08 100644 --- a/Devices/waveshare-s3-touch-lcd-128/Source/Configuration.cpp +++ b/Devices/waveshare-s3-touch-lcd-128/Source/Configuration.cpp @@ -20,6 +20,6 @@ static bool initBoot() { extern const Configuration hardwareConfiguration = { .initBoot = initBoot, - .uiScale = UiScale::Smallest, + .uiDensity = UiDensity::Compact, .createDevices = createDevices }; diff --git a/Devices/waveshare-s3-touch-lcd-128/devicetree.yaml b/Devices/waveshare-s3-touch-lcd-128/devicetree.yaml index a46f5865..e51ea4a1 100644 --- a/Devices/waveshare-s3-touch-lcd-128/devicetree.yaml +++ b/Devices/waveshare-s3-touch-lcd-128/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: waveshare,s3-touch-lcd-128.dts diff --git a/Devices/waveshare-s3-touch-lcd-147/Source/Configuration.cpp b/Devices/waveshare-s3-touch-lcd-147/Source/Configuration.cpp index acec5b45..8ae45844 100644 --- a/Devices/waveshare-s3-touch-lcd-147/Source/Configuration.cpp +++ b/Devices/waveshare-s3-touch-lcd-147/Source/Configuration.cpp @@ -16,6 +16,6 @@ static std::vector> createDevices() { extern const Configuration hardwareConfiguration = { .initBoot = initBoot, - .uiScale = UiScale::Smallest, + .uiDensity = UiDensity::Compact, .createDevices = createDevices }; diff --git a/Devices/waveshare-s3-touch-lcd-147/devicetree.yaml b/Devices/waveshare-s3-touch-lcd-147/devicetree.yaml index 784d0525..6712e245 100644 --- a/Devices/waveshare-s3-touch-lcd-147/devicetree.yaml +++ b/Devices/waveshare-s3-touch-lcd-147/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: waveshare,s3-touch-lcd-147.dts diff --git a/Devices/waveshare-s3-touch-lcd-43/device.properties b/Devices/waveshare-s3-touch-lcd-43/device.properties index 94bb54f0..1d373a5a 100644 --- a/Devices/waveshare-s3-touch-lcd-43/device.properties +++ b/Devices/waveshare-s3-touch-lcd-43/device.properties @@ -21,3 +21,4 @@ dpi=217 [lvgl] colorDepth=16 +fontSize=18 diff --git a/Devices/waveshare-s3-touch-lcd-43/devicetree.yaml b/Devices/waveshare-s3-touch-lcd-43/devicetree.yaml index 50d9c1a0..fa100bdc 100644 --- a/Devices/waveshare-s3-touch-lcd-43/devicetree.yaml +++ b/Devices/waveshare-s3-touch-lcd-43/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: waveshare,s3-touch-lcd-43.dts diff --git a/Devices/wireless-tag-wt32-sc01-plus/devicetree.yaml b/Devices/wireless-tag-wt32-sc01-plus/devicetree.yaml index f40d8931..5355dd5c 100644 --- a/Devices/wireless-tag-wt32-sc01-plus/devicetree.yaml +++ b/Devices/wireless-tag-wt32-sc01-plus/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - - Platforms/PlatformEsp32 + - Platforms/platform-esp32 dts: wireless-tag,wt32-sc01-plus.dts diff --git a/Documentation/ideas.md b/Documentation/ideas.md index f53ac29c..8f24536e 100644 --- a/Documentation/ideas.md +++ b/Documentation/ideas.md @@ -87,7 +87,6 @@ - Remove flex_flow from app_container in Gui.cpp - Files app: copy/cut/paste actions - ElfAppManifest: change name (remove "manifest" as it's confusing), remove icon and title, publish snapshot SDK on CDN -- `UiScale` implementation for devices like the CYD 2432S032C - Bug: CYD 2432S032C screen rotation fails due to touch driver issue - Calculator app should show regular text input field on non-touch devices that have a keyboard (Cardputer, T-Lora Pager) - Allow for WSAD keys to navigate LVGL (this is extra nice for cardputer, but just handy in general) diff --git a/Drivers/SSD1306/Source/Ssd1306Display.cpp b/Drivers/SSD1306/Source/Ssd1306Display.cpp index 7cda1adb..a03595b3 100644 --- a/Drivers/SSD1306/Source/Ssd1306Display.cpp +++ b/Drivers/SSD1306/Source/Ssd1306Display.cpp @@ -13,6 +13,7 @@ static const auto LOGGER = tt::Logger("Ssd1306Display"); // SSD1306 commands +#define SSD1306_CMD_SET_CLOCK 0xD5 #define SSD1306_CMD_SET_CHARGE_PUMP 0x8D #define SSD1306_CMD_SET_SEGMENT_REMAP 0xA0 #define SSD1306_CMD_SET_COM_SCAN_DIR 0xC0 @@ -20,11 +21,17 @@ static const auto LOGGER = tt::Logger("Ssd1306Display"); #define SSD1306_CMD_SET_CONTRAST 0x81 #define SSD1306_CMD_SET_PRECHARGE 0xD9 #define SSD1306_CMD_SET_VCOMH_DESELECT 0xDB -#define SSD1306_CMD_DISPLAY_INVERT 0xA6 +#define SSD1306_CMD_DISPLAY_NORMAL 0xA6 +#define SSD1306_CMD_DISPLAY_INVERT 0xA7 +#define SSD1306_CMD_DISPLAY_OFF 0xAE #define SSD1306_CMD_DISPLAY_ON 0xAF -#define SSD1306_CMD_SET_MEMORY_ADDR_MODE 0x20 +#define SSD1306_CMD_SET_MEMORY_MODE 0x20 #define SSD1306_CMD_SET_COLUMN_RANGE 0x21 #define SSD1306_CMD_SET_PAGE_RANGE 0x22 +#define SSD1306_CMD_SET_MULTIPLEX 0xA8 +#define SSD1306_CMD_SET_OFFSET 0xD3 +#define SSD1306_CMD_STOP_SCROLL 0x2E +#define SSD1306_CMD_SET_SCAN_DIRECTION_REVERSED 0xC8 // Helper to send I2C commands directly static bool ssd1306_i2c_send_cmd(i2c_port_t port, uint8_t addr, uint8_t cmd) { @@ -40,15 +47,20 @@ static bool ssd1306_i2c_send_cmd(i2c_port_t port, uint8_t addr, uint8_t cmd) { bool Ssd1306Display::createIoHandle(esp_lcd_panel_io_handle_t& ioHandle) { const esp_lcd_panel_io_i2c_config_t io_config = { .dev_addr = configuration->deviceAddress, + .on_color_trans_done = nullptr, + .user_ctx = nullptr, .control_phase_bytes = 1, .dc_bit_offset = 6, + .lcd_cmd_bits = 0, + .lcd_param_bits = 0, .flags = { .dc_low_on_data = false, .disable_control_phase = false, }, + .scl_speed_hz = 0 }; - if (esp_lcd_new_panel_io_i2c((esp_lcd_i2c_bus_handle_t)configuration->port, &io_config, &ioHandle) != ESP_OK) { + if (esp_lcd_new_panel_io_i2c(static_cast(configuration->port), &io_config, &ioHandle) != ESP_OK) { LOGGER.error("Failed to create IO handle"); return false; } @@ -78,6 +90,7 @@ bool Ssd1306Display::createPanelHandle(esp_lcd_panel_io_handle_t ioHandle, esp_l esp_lcd_panel_dev_config_t panel_config = { .reset_gpio_num = GPIO_NUM_NC, // Already handled above .color_space = ESP_LCD_COLOR_SPACE_MONOCHROME, + .data_endian = LCD_RGB_DATA_ENDIAN_BIG, .bits_per_pixel = 1, // Must be 1 for monochrome .flags = { .reset_active_high = false, @@ -104,40 +117,35 @@ bool Ssd1306Display::createPanelHandle(esp_lcd_panel_io_handle_t ioHandle, esp_l auto addr = configuration->deviceAddress; LOGGER.info("Sending Heltec V3 custom init sequence"); - + // Display off while configuring - ssd1306_i2c_send_cmd(port, addr, 0xAE); - vTaskDelay(pdMS_TO_TICKS(10)); // Important: let display stabilize after turning off - + ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_DISPLAY_OFF); + // Set oscillator frequency (MUST come early in sequence) - ssd1306_i2c_send_cmd(port, addr, 0xD5); - ssd1306_i2c_send_cmd(port, addr, 0x80); - + ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_SET_CLOCK); + ssd1306_i2c_send_cmd(port, addr, 0xF0); // ~96 Hz + // Set multiplex ratio - ssd1306_i2c_send_cmd(port, addr, 0xA8); + ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_SET_MULTIPLEX); ssd1306_i2c_send_cmd(port, addr, configuration->verticalResolution - 1); - - // Set display offset - ssd1306_i2c_send_cmd(port, addr, 0xD3); + + ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_SET_OFFSET); ssd1306_i2c_send_cmd(port, addr, 0x00); - - // Set display start line ssd1306_i2c_send_cmd(port, addr, 0x40); - + // Enable charge pump (required for Heltec V3 - must be before memory mode) ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_SET_CHARGE_PUMP); ssd1306_i2c_send_cmd(port, addr, 0x14); // Enable - + // Horizontal addressing mode - ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_SET_MEMORY_ADDR_MODE); - ssd1306_i2c_send_cmd(port, addr, 0x00); - + ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_SET_MEMORY_MODE); + ssd1306_i2c_send_cmd(port, addr, 0x00); // Horizontal addressing + // Segment remap (0xA1 for Heltec V3 orientation) ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_SET_SEGMENT_REMAP | 0x01); - - // COM scan direction (0xC8 = reversed) - ssd1306_i2c_send_cmd(port, addr, 0xC8); - + + ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_SET_SCAN_DIRECTION_REVERSED ); + // COM pin configuration ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_SET_COM_PIN_CFG); if (configuration->verticalResolution == 64) { @@ -145,31 +153,35 @@ bool Ssd1306Display::createPanelHandle(esp_lcd_panel_io_handle_t ioHandle, esp_l } else { ssd1306_i2c_send_cmd(port, addr, 0x02); // Sequential COM pin config for 32-row displays } - - // Contrast (0xCF = bright, good for Heltec OLED) + ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_SET_CONTRAST); ssd1306_i2c_send_cmd(port, addr, 0xCF); - - // Precharge period (0xF1 for Heltec OLED) + ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_SET_PRECHARGE); ssd1306_i2c_send_cmd(port, addr, 0xF1); - - // VCOMH deselect level + ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_SET_VCOMH_DESELECT); ssd1306_i2c_send_cmd(port, addr, 0x40); - - // Normal display mode (not inverse/all-on) - ssd1306_i2c_send_cmd(port, addr, 0xA6); - - // Invert display (0xA7) - // This is what your old working driver did unconditionally - ssd1306_i2c_send_cmd(port, addr, 0xA7); - - // Display ON + + ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_SET_COLUMN_RANGE); + ssd1306_i2c_send_cmd(port, addr, 0); + ssd1306_i2c_send_cmd(port, addr, configuration->horizontalResolution - 1); + + ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_SET_PAGE_RANGE); + ssd1306_i2c_send_cmd(port, addr, 0); + if (configuration->verticalResolution == 64) + ssd1306_i2c_send_cmd(port, addr, 0x7); + else if (configuration->verticalResolution == 32) + ssd1306_i2c_send_cmd(port, addr, 0x3); + else + check(false, "Not supported"); + + ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_DISPLAY_INVERT); + ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_STOP_SCROLL); ssd1306_i2c_send_cmd(port, addr, SSD1306_CMD_DISPLAY_ON); - + vTaskDelay(pdMS_TO_TICKS(100)); // Let display stabilize - + LOGGER.info("Heltec V3 display initialized successfully"); return true; diff --git a/Firmware/CMakeLists.txt b/Firmware/CMakeLists.txt index 6d10c571..c9048351 100644 --- a/Firmware/CMakeLists.txt +++ b/Firmware/CMakeLists.txt @@ -25,7 +25,7 @@ if (DEFINED ENV{ESP_IDF_VERSION}) idf_component_register( SRCS ${SOURCE_FILES} "${GENERATED_DIR}/devicetree.c" - REQUIRES Tactility TactilityC TactilityKernel PlatformEsp32 ${TACTILITY_DEVICE_PROJECT} + REQUIRES Tactility TactilityC TactilityKernel platform-esp32 ${TACTILITY_DEVICE_PROJECT} ) else () @@ -39,7 +39,7 @@ else () hal-device-module lvgl-module Simulator - PlatformPosix + platform-posix SDL2::SDL2-static SDL2-static ) diff --git a/Firmware/Kconfig b/Firmware/Kconfig index b56ea426..c35baffd 100644 --- a/Firmware/Kconfig +++ b/Firmware/Kconfig @@ -17,7 +17,43 @@ menu "Tactility App" help The applications that gives access to other application. This is the first thing that starts after the boot screen. - The user can override it from a boot.properties file. + The user can override it with a boot.properties file + config TT_LVGL_FONT_SIZE_SMALL + int "Small font size" + default 10 + range 8 200 + help + Small font size in pixels + config TT_LVGL_FONT_SIZE_DEFAULT + int "Default font size" + default 14 + range 8 200 + help + Default font size in pixels + config TT_LVGL_FONT_SIZE_LARGE + int "Large font size" + default 18 + range 8 200 + help + Large font size in pixels + config TT_LVGL_STATUSBAR_ICON_SIZE + int "Statusbar icon size" + default 20 + range 0 200 + help + Statusbar icon size in pixels + config TT_LVGL_LAUNCHER_ICON_SIZE + int "Launcher icon size" + default 20 + range 0 200 + help + Launcher icon size in pixels + config TT_LVGL_SHARED_ICON_SIZE + int "Shared icon size" + default 16 + range 0 200 + help + Shared icon size in pixels config TT_AUTO_START_APP_ID string "Auto Start App ID" default "" diff --git a/Modules/hal-device-module/CMakeLists.txt b/Modules/hal-device-module/CMakeLists.txt index 63ac40be..5b866cf2 100644 --- a/Modules/hal-device-module/CMakeLists.txt +++ b/Modules/hal-device-module/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.20) include("${CMAKE_CURRENT_LIST_DIR}/../../Buildscripts/module.cmake") -file(GLOB_RECURSE SOURCE_FILES "Source/*.c*") +file(GLOB_RECURSE SOURCE_FILES "source/*.c*") list(APPEND REQUIRES_LIST TactilityKernel @@ -16,6 +16,6 @@ endif () tactility_add_module(hal-device-module SRCS ${SOURCE_FILES} - INCLUDE_DIRS Include/ + INCLUDE_DIRS include/ REQUIRES ${REQUIRES_LIST} ) diff --git a/Modules/hal-device-module/Include/tactility/drivers/hal_device.h b/Modules/hal-device-module/include/tactility/drivers/hal_device.h similarity index 100% rename from Modules/hal-device-module/Include/tactility/drivers/hal_device.h rename to Modules/hal-device-module/include/tactility/drivers/hal_device.h diff --git a/Modules/hal-device-module/Include/tactility/drivers/hal_device.hpp b/Modules/hal-device-module/include/tactility/drivers/hal_device.hpp similarity index 100% rename from Modules/hal-device-module/Include/tactility/drivers/hal_device.hpp rename to Modules/hal-device-module/include/tactility/drivers/hal_device.hpp diff --git a/Modules/hal-device-module/Include/tactility/hal/Device.h b/Modules/hal-device-module/include/tactility/hal/Device.h similarity index 100% rename from Modules/hal-device-module/Include/tactility/hal/Device.h rename to Modules/hal-device-module/include/tactility/hal/Device.h diff --git a/Modules/hal-device-module/Include/tactility/hal_device_module.h b/Modules/hal-device-module/include/tactility/hal_device_module.h similarity index 100% rename from Modules/hal-device-module/Include/tactility/hal_device_module.h rename to Modules/hal-device-module/include/tactility/hal_device_module.h diff --git a/Modules/hal-device-module/Source/drivers/hal_device.cpp b/Modules/hal-device-module/source/drivers/hal_device.cpp similarity index 100% rename from Modules/hal-device-module/Source/drivers/hal_device.cpp rename to Modules/hal-device-module/source/drivers/hal_device.cpp diff --git a/Modules/hal-device-module/Source/hal/Device.cpp b/Modules/hal-device-module/source/hal/Device.cpp similarity index 100% rename from Modules/hal-device-module/Source/hal/Device.cpp rename to Modules/hal-device-module/source/hal/Device.cpp diff --git a/Modules/hal-device-module/Source/module.cpp b/Modules/hal-device-module/source/module.cpp similarity index 100% rename from Modules/hal-device-module/Source/module.cpp rename to Modules/hal-device-module/source/module.cpp diff --git a/Modules/lvgl-module/Assets/.gitignore b/Modules/lvgl-module/Assets/.gitignore deleted file mode 100644 index 7a87f94d..00000000 --- a/Modules/lvgl-module/Assets/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.ttf -*.codepoints \ No newline at end of file diff --git a/Modules/lvgl-module/CMakeLists.txt b/Modules/lvgl-module/CMakeLists.txt index b60f4908..24954ec8 100644 --- a/Modules/lvgl-module/CMakeLists.txt +++ b/Modules/lvgl-module/CMakeLists.txt @@ -1,6 +1,48 @@ cmake_minimum_required(VERSION 3.20) -file(GLOB_RECURSE SOURCE_FILES "Source/*.c*") +# #################################### +# Read properties +# #################################### + +include("${CMAKE_CURRENT_LIST_DIR}/../../Buildscripts/properties.cmake") + +if (DEFINED ENV{ESP_IDF_VERSION}) + GET_PROPERTY_FILE_CONTENT("${CMAKE_CURRENT_LIST_DIR}/../../sdkconfig" sdkconfig_text) + GET_PROPERTY_VALUE(sdkconfig_text "CONFIG_TT_LVGL_FONT_SIZE_SMALL" font_size_small) + GET_PROPERTY_VALUE(sdkconfig_text "CONFIG_TT_LVGL_FONT_SIZE_DEFAULT" font_size_default) + GET_PROPERTY_VALUE(sdkconfig_text "CONFIG_TT_LVGL_FONT_SIZE_LARGE" font_size_large) + GET_PROPERTY_VALUE(sdkconfig_text "CONFIG_TT_LVGL_STATUSBAR_ICON_SIZE" statusbar_symbol_size) + GET_PROPERTY_VALUE(sdkconfig_text "CONFIG_TT_LVGL_LAUNCHER_ICON_SIZE" launcher_symbol_size) + GET_PROPERTY_VALUE(sdkconfig_text "CONFIG_TT_LVGL_SHARED_ICON_SIZE" shared_symbol_size) +else () + # Default values for simulator + set(font_size_small 10) + set(font_size_default 14) + set(font_size_large 18) + set(statusbar_symbol_size 20) + set(launcher_symbol_size 36) + set(shared_symbol_size 16) +endif () + +message("Font sizes:") +message(" - small: ${font_size_small}") +message(" - default: ${font_size_default}") +message(" - large: ${font_size_large}") +message("Icon sizes:") +message(" - statusbar: ${statusbar_symbol_size}") +message(" - launcher: ${launcher_symbol_size}") +message(" - shared: ${shared_symbol_size}") + +# #################################### +# Create module +# #################################### + +# Regular source files +file(GLOB_RECURSE SOURCE_FILES "source/*.c*") +# Font source files +list(APPEND SOURCE_FILES "source-fonts/material_symbols_statusbar_${statusbar_symbol_size}.c") +list(APPEND SOURCE_FILES "source-fonts/material_symbols_launcher_${launcher_symbol_size}.c") +list(APPEND SOURCE_FILES "source-fonts/material_symbols_shared_${shared_symbol_size}.c") list(APPEND REQUIRES_LIST TactilityKernel @@ -17,10 +59,24 @@ include("${CMAKE_CURRENT_LIST_DIR}/../../Buildscripts/module.cmake") tactility_add_module(lvgl-module SRCS ${SOURCE_FILES} - INCLUDE_DIRS Include/ + INCLUDE_DIRS include/ REQUIRES ${REQUIRES_LIST} ) tactility_get_module_name("lvgl-module" MODULE_NAME) -target_compile_definitions(${MODULE_NAME} PUBLIC "-DLV_LVGL_H_INCLUDE_SIMPLE") +target_compile_definitions(${MODULE_NAME} PUBLIC + "-DLV_LVGL_H_INCLUDE_SIMPLE" + "-DTT_LVGL_TEXT_FONT_SMALL_SIZE=${font_size_small}" + "-DTT_LVGL_TEXT_FONT_SMALL_SYMBOL=lv_font_montserrat_${font_size_small}" + "-DTT_LVGL_TEXT_FONT_DEFAULT_SIZE=${font_size_default}" + "-DTT_LVGL_TEXT_FONT_DEFAULT_SYMBOL=lv_font_montserrat_${font_size_default}" + "-DTT_LVGL_TEXT_FONT_LARGE_SIZE=${font_size_large}" + "-DTT_LVGL_TEXT_FONT_LARGE_SYMBOL=lv_font_montserrat_${font_size_large}" + "-DTT_LVGL_STATUSBAR_FONT_ICON_SIZE=${statusbar_symbol_size}" + "-DTT_LVGL_STATUSBAR_FONT_ICON_SYMBOL=material_symbols_statusbar_${statusbar_symbol_size}" + "-DTT_LVGL_LAUNCHER_FONT_ICON_SIZE=${launcher_symbol_size}" + "-DTT_LVGL_LAUNCHER_FONT_ICON_SYMBOL=material_symbols_launcher_${launcher_symbol_size}" + "-DTT_LVGL_SHARED_FONT_ICON_SIZE=${shared_symbol_size}" + "-DTT_LVGL_SHARED_FONT_ICON_SYMBOL=material_symbols_shared_${shared_symbol_size}" +) diff --git a/Modules/lvgl-module/Include/tactility/lvgl_fonts.h b/Modules/lvgl-module/Include/tactility/lvgl_fonts.h deleted file mode 100644 index 6874dcbd..00000000 --- a/Modules/lvgl-module/Include/tactility/lvgl_fonts.h +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -extern const lv_font_t material_symbols_statusbar_20; - -extern const lv_font_t material_symbols_shared_16; - -extern const lv_font_t material_symbols_launcher_36; - -//#define lvgl_get_text_font_smaller() &lv_font_montserrat_12 -// TODO: Make function so it's easier to use this cross-platform -#define LVGL_TEXT_FONT_DEFAULT &lv_font_montserrat_14 -#define LVGL_TEXT_FONT_LARGER &lv_font_montserrat_18 - -// TODO: Make function so it's easier to use this cross-platform -#define LVGL_SYMBOL_FONT_DEFAULT &material_symbols_shared_16 - -#define LVGL_SYMBOL_FONT_LAUNCHER &material_symbols_launcher_36 - -// TODO: Make function so it's easier to use this cross-platform -#define LVGL_TOPBAR_FONT &material_symbols_statusbar_20 -#define LVGL_TOPBAR_ICON_HEIGHT 20 - -#ifdef __cplusplus -} -#endif diff --git a/Modules/lvgl-module/assets/.gitignore b/Modules/lvgl-module/assets/.gitignore new file mode 100644 index 00000000..e0e0a3fe --- /dev/null +++ b/Modules/lvgl-module/assets/.gitignore @@ -0,0 +1,3 @@ +*.ttf +*.codepoints +__pycache__/ diff --git a/Modules/lvgl-module/Assets/generate-all.py b/Modules/lvgl-module/assets/generate-all.py similarity index 84% rename from Modules/lvgl-module/Assets/generate-all.py rename to Modules/lvgl-module/assets/generate-all.py index ecd3bdba..d2440397 100644 --- a/Modules/lvgl-module/Assets/generate-all.py +++ b/Modules/lvgl-module/assets/generate-all.py @@ -10,10 +10,12 @@ def download_file(url: str, filename: str): def generate(bpp, size, font_file: str, symbols: list, output: str): output_file_name = f"{output}_{size}.c" - output_path = os.path.join("..", "Source", "fonts", output_file_name) + output_path = os.path.join("..", "source-fonts", output_file_name) print(f"Generating {output_file_name}") cmd = "lv_font_conv --no-compress --no-prefilter --bpp {} --size {} --font {} -r {} --format lvgl -o {} --force-fast-kern-format".format(bpp, size, font_file, ",".join(symbols), output_path) - os.system(cmd) + ret = os.system(cmd) + if ret != 0: + raise RuntimeError(f"Font generation failed for {output_file_name} (exit code {ret})") def read_code_points_map(file_path: str): codepoints = {} @@ -43,7 +45,7 @@ def generate_icon_fonts(font_file, font_sizes, symbols, output): def generate_icon_names(codepoint_map: dict, codepoint_names: list, filename: str): print(f"Generating {filename}") - output_path = os.path.join("..", "Include", "tactility", filename) + output_path = os.path.join("..", "include", "tactility", filename) with open(output_path, 'w') as f: f.write("#pragma once\n\n") for name in codepoint_names: @@ -112,6 +114,8 @@ statusbar_symbol_code_point_names = [ "location_on", # Development server "cloud", + # Low on available memory + "memory", # SD Card "sd_card", "sd_card_alert", @@ -122,6 +126,7 @@ statusbar_symbol_code_point_names = [ "network_wifi_3_bar", "signal_wifi_4_bar", "signal_wifi_off", + "signal_wifi_bad", # Battery "battery_android_frame_1", "battery_android_frame_2", @@ -129,6 +134,7 @@ statusbar_symbol_code_point_names = [ "battery_android_frame_4", "battery_android_frame_5", "battery_android_frame_6", + "battery_android_frame_full", "battery_android_frame_bolt" ] @@ -137,8 +143,29 @@ launcher_symbol_code_point_names = [ "folder", "settings" ] -shared_symbol_font_sizes = [ - 16 # Fits with montserrat 14 in lv_list as icon with text + +shared_symbol_sizes = [ + 12, + 16, # T-Deck reference, with montserrat 14 in lv_list as icon with text + 20, + 24, + 32 +] + +statusbar_symbol_sizes = [ + 12, + 16, # T-Deck reference + 20, + 30 +] + +launcher_symbol_sizes = [ + 30, + 36, # T-Deck reference + 42, + 48, + 64, + 72 ] # Resolve file path relative to this script so it can be executed from any CWD @@ -160,16 +187,16 @@ codepoints_map = read_code_points_map(codepoints_map_path) # Shared symbols shared_symbol_code_points = get_code_points(codepoints_map, shared_symbol_code_point_names) -generate_icon_fonts(ttf_filename, shared_symbol_font_sizes, shared_symbol_code_points, "material_symbols_shared") +generate_icon_fonts(ttf_filename, shared_symbol_sizes, shared_symbol_code_points, "material_symbols_shared") generate_icon_names(codepoints_map, shared_symbol_code_point_names, "lvgl_symbols_shared.h") # Statusbar symbols statusbar_symbol_code_points = get_code_points(codepoints_map, statusbar_symbol_code_point_names) -generate_icon_fonts(ttf_filename, [20], statusbar_symbol_code_points, "material_symbols_statusbar") +generate_icon_fonts(ttf_filename, statusbar_symbol_sizes, statusbar_symbol_code_points, "material_symbols_statusbar") generate_icon_names(codepoints_map, statusbar_symbol_code_point_names, "lvgl_symbols_statusbar.h") # Launcher symbols launcher_symbol_code_points = get_code_points(codepoints_map, launcher_symbol_code_point_names) -generate_icon_fonts(ttf_filename, [36], launcher_symbol_code_points, "material_symbols_launcher") +generate_icon_fonts(ttf_filename, launcher_symbol_sizes, launcher_symbol_code_points, "material_symbols_launcher") generate_icon_names(codepoints_map, launcher_symbol_code_point_names, "lvgl_symbols_launcher.h") diff --git a/Modules/lvgl-module/include/tactility/lvgl_fonts.h b/Modules/lvgl-module/include/tactility/lvgl_fonts.h new file mode 100644 index 00000000..44ea3b13 --- /dev/null +++ b/Modules/lvgl-module/include/tactility/lvgl_fonts.h @@ -0,0 +1,30 @@ +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +enum LvglFontSize { + FONT_SIZE_SMALL, + FONT_SIZE_DEFAULT, + FONT_SIZE_LARGE, +}; + +const lv_font_t* lvgl_get_shared_icon_font(); +uint32_t lvgl_get_shared_icon_font_height(); + +const lv_font_t* lvgl_get_text_font(enum LvglFontSize font_size); +uint32_t lvgl_get_text_font_height(enum LvglFontSize font_size); + +const lv_font_t* lvgl_get_launcher_icon_font(); +uint32_t lvgl_get_launcher_icon_font_height(); + +const lv_font_t* lvgl_get_statusbar_icon_font(); +uint32_t lvgl_get_statusbar_icon_font_height(); + +#ifdef __cplusplus +} +#endif diff --git a/Modules/lvgl-module/Include/tactility/lvgl_module.h b/Modules/lvgl-module/include/tactility/lvgl_module.h similarity index 100% rename from Modules/lvgl-module/Include/tactility/lvgl_module.h rename to Modules/lvgl-module/include/tactility/lvgl_module.h diff --git a/Modules/lvgl-module/Include/tactility/lvgl_symbols_launcher.h b/Modules/lvgl-module/include/tactility/lvgl_symbols_launcher.h similarity index 100% rename from Modules/lvgl-module/Include/tactility/lvgl_symbols_launcher.h rename to Modules/lvgl-module/include/tactility/lvgl_symbols_launcher.h diff --git a/Modules/lvgl-module/Include/tactility/lvgl_symbols_shared.h b/Modules/lvgl-module/include/tactility/lvgl_symbols_shared.h similarity index 100% rename from Modules/lvgl-module/Include/tactility/lvgl_symbols_shared.h rename to Modules/lvgl-module/include/tactility/lvgl_symbols_shared.h diff --git a/Modules/lvgl-module/Include/tactility/lvgl_symbols_statusbar.h b/Modules/lvgl-module/include/tactility/lvgl_symbols_statusbar.h similarity index 85% rename from Modules/lvgl-module/Include/tactility/lvgl_symbols_statusbar.h rename to Modules/lvgl-module/include/tactility/lvgl_symbols_statusbar.h index d062faea..e1c40cef 100644 --- a/Modules/lvgl-module/Include/tactility/lvgl_symbols_statusbar.h +++ b/Modules/lvgl-module/include/tactility/lvgl_symbols_statusbar.h @@ -2,6 +2,7 @@ #define LVGL_SYMBOL_LOCATION_ON "\xEF\x87\x9B" #define LVGL_SYMBOL_CLOUD "\xEF\x85\x9C" +#define LVGL_SYMBOL_MEMORY "\xEE\x8C\xA2" #define LVGL_SYMBOL_SD_CARD "\xEE\x98\xA3" #define LVGL_SYMBOL_SD_CARD_ALERT "\xEF\x81\x97" #define LVGL_SYMBOL_SIGNAL_WIFI_0_BAR "\xEF\x82\xB0" @@ -10,10 +11,12 @@ #define LVGL_SYMBOL_NETWORK_WIFI_3_BAR "\xEE\xAF\xA1" #define LVGL_SYMBOL_SIGNAL_WIFI_4_BAR "\xEF\x81\xA5" #define LVGL_SYMBOL_SIGNAL_WIFI_OFF "\xEE\x87\x9A" +#define LVGL_SYMBOL_SIGNAL_WIFI_BAD "\xEF\x81\xA4" #define LVGL_SYMBOL_BATTERY_ANDROID_FRAME_1 "\xEF\x89\x97" #define LVGL_SYMBOL_BATTERY_ANDROID_FRAME_2 "\xEF\x89\x96" #define LVGL_SYMBOL_BATTERY_ANDROID_FRAME_3 "\xEF\x89\x95" #define LVGL_SYMBOL_BATTERY_ANDROID_FRAME_4 "\xEF\x89\x94" #define LVGL_SYMBOL_BATTERY_ANDROID_FRAME_5 "\xEF\x89\x93" #define LVGL_SYMBOL_BATTERY_ANDROID_FRAME_6 "\xEF\x89\x92" +#define LVGL_SYMBOL_BATTERY_ANDROID_FRAME_FULL "\xEF\x89\x8F" #define LVGL_SYMBOL_BATTERY_ANDROID_FRAME_BOLT "\xEF\x89\x90" diff --git a/Modules/lvgl-module/source-fonts/material_symbols_launcher_30.c b/Modules/lvgl-module/source-fonts/material_symbols_launcher_30.c new file mode 100644 index 00000000..a6bcedad --- /dev/null +++ b/Modules/lvgl-module/source-fonts/material_symbols_launcher_30.c @@ -0,0 +1,176 @@ +/******************************************************************************* + * Size: 30 px + * Bpp: 2 + * Opts: --no-compress --no-prefilter --bpp 2 --size 30 --font MaterialSymbolsRounded.ttf -r 0xE5C3,0xE2C7,0xE8B8 --format lvgl -o ../source-fonts/material_symbols_launcher_30.c --force-fast-kern-format + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef MATERIAL_SYMBOLS_LAUNCHER_30 +#define MATERIAL_SYMBOLS_LAUNCHER_30 1 +#endif + +#if MATERIAL_SYMBOLS_LAUNCHER_30 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+E2C7 "" */ + 0x1f, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x3, 0xff, + 0xff, 0xf0, 0x0, 0x0, 0x0, 0x7e, 0xaa, 0xaf, + 0xea, 0xaa, 0xa9, 0xb, 0xc0, 0x0, 0xbf, 0xff, + 0xff, 0xfc, 0xbc, 0x0, 0x2, 0xff, 0xff, 0xff, + 0xdb, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0xbc, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xeb, 0xc0, 0x0, + 0x0, 0x0, 0x0, 0x3e, 0xbc, 0x0, 0x0, 0x0, + 0x0, 0x3, 0xeb, 0xc0, 0x0, 0x0, 0x0, 0x0, + 0x3e, 0xbc, 0x0, 0x0, 0x0, 0x0, 0x3, 0xeb, + 0xc0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0xbc, 0x0, + 0x0, 0x0, 0x0, 0x3, 0xeb, 0xc0, 0x0, 0x0, + 0x0, 0x0, 0x3e, 0xbc, 0x0, 0x0, 0x0, 0x0, + 0x3, 0xeb, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x3e, + 0xbc, 0x0, 0x0, 0x0, 0x0, 0x3, 0xe7, 0xea, + 0xaa, 0xaa, 0xaa, 0xaa, 0xbd, 0x3f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xf4, + + /* U+E5C3 "" */ + 0x2e, 0x0, 0xbd, 0x1, 0xf4, 0xbf, 0x81, 0xff, + 0x3, 0xfd, 0xff, 0xc2, 0xff, 0x7, 0xfe, 0xbf, + 0x81, 0xff, 0x3, 0xfd, 0x2e, 0x0, 0xbd, 0x1, + 0xf4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7f, 0x40, 0xfe, 0x2, 0xf8, 0xff, 0xc2, 0xff, + 0x7, 0xfd, 0xff, 0xc2, 0xff, 0x7, 0xfd, 0xbf, + 0x81, 0xff, 0x3, 0xfc, 0x19, 0x0, 0x68, 0x0, + 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x2e, 0x0, 0xbd, 0x1, 0xf4, + 0xbf, 0x81, 0xff, 0x3, 0xfd, 0xff, 0xc2, 0xff, + 0x7, 0xfe, 0xbf, 0x81, 0xff, 0x3, 0xfd, 0x2e, + 0x0, 0xbd, 0x1, 0xf4, + + /* U+E8B8 "" */ + 0x0, 0x0, 0x1, 0xa4, 0x0, 0x0, 0x0, 0x0, + 0x1, 0xff, 0xf4, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xff, 0x80, 0x0, 0x0, 0x0, 0x3, 0xe0, 0xbc, + 0x0, 0x0, 0x0, 0x90, 0x3e, 0xb, 0xc0, 0x60, + 0x0, 0x3f, 0xff, 0xd0, 0x7f, 0xff, 0xc0, 0xb, + 0xff, 0xf8, 0x2, 0xff, 0xfe, 0x1, 0xf8, 0xbc, + 0x0, 0x3, 0xe2, 0xf4, 0x3f, 0x0, 0x0, 0x50, + 0x0, 0xf, 0xc3, 0xf4, 0x0, 0xbf, 0xe0, 0x1, + 0xfc, 0x1f, 0xe0, 0x2f, 0xff, 0x80, 0xbf, 0x40, + 0x7f, 0x43, 0xff, 0xfc, 0x1f, 0xd0, 0x1, 0xf0, + 0x7f, 0xff, 0xd0, 0xf4, 0x0, 0x1f, 0x7, 0xff, + 0xfd, 0xf, 0x40, 0x7, 0xf4, 0x3f, 0xff, 0xc1, + 0xfd, 0x1, 0xfe, 0x2, 0xff, 0xf8, 0xb, 0xf4, + 0x3f, 0x40, 0xb, 0xfe, 0x0, 0x1f, 0xc3, 0xf0, + 0x0, 0x5, 0x0, 0x0, 0xf8, 0x1f, 0x8b, 0xc0, + 0x0, 0x3e, 0x2f, 0x40, 0xbf, 0xff, 0x80, 0x2f, + 0xff, 0xe0, 0x3, 0xff, 0xfd, 0x7, 0xff, 0xfc, + 0x0, 0x9, 0x3, 0xe0, 0xbc, 0xa, 0x0, 0x0, + 0x0, 0x3e, 0xb, 0xc0, 0x0, 0x0, 0x0, 0x2, + 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, + 0x40, 0x0, 0x0, 0x0, 0x0, 0x1a, 0x40, 0x0, + 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 480, .box_w = 26, .box_h = 20, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 130, .adv_w = 480, .box_w = 20, .box_h = 20, .ofs_x = 5, .ofs_y = 5}, + {.bitmap_index = 230, .adv_w = 480, .box_w = 26, .box_h = 26, .ofs_x = 2, .ofs_y = 2} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x2fc, 0x5f1 +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 58055, .range_length = 1522, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 3, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LVGL_VERSION_MAJOR == 8 +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +#endif + +#if LVGL_VERSION_MAJOR >= 8 +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 1, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 0, +#if LVGL_VERSION_MAJOR == 8 + .cache = &cache +#endif +}; + + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LVGL_VERSION_MAJOR >= 8 +const lv_font_t material_symbols_launcher_30 = { +#else +lv_font_t material_symbols_launcher_30 = { +#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 = 26, /*The maximum line height required by the font*/ + .base_line = -2, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8 + .underline_position = 0, + .underline_thickness = 0, +#endif + .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9 + .fallback = NULL, +#endif + .user_data = NULL, +}; + + + +#endif /*#if MATERIAL_SYMBOLS_LAUNCHER_30*/ + diff --git a/Modules/lvgl-module/Source/fonts/material_symbols_launcher_36.c b/Modules/lvgl-module/source-fonts/material_symbols_launcher_36.c similarity index 99% rename from Modules/lvgl-module/Source/fonts/material_symbols_launcher_36.c rename to Modules/lvgl-module/source-fonts/material_symbols_launcher_36.c index bee62547..61e4816b 100644 --- a/Modules/lvgl-module/Source/fonts/material_symbols_launcher_36.c +++ b/Modules/lvgl-module/source-fonts/material_symbols_launcher_36.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 36 px * Bpp: 2 - * Opts: --no-compress --no-prefilter --bpp 2 --size 36 --font MaterialSymbolsRounded.ttf -r 0xE5C3,0xE2C7,0xE8B8 --format lvgl -o ../Source/fonts/material_symbols_launcher_36.c --force-fast-kern-format + * Opts: --no-compress --no-prefilter --bpp 2 --size 36 --font MaterialSymbolsRounded.ttf -r 0xE5C3,0xE2C7,0xE8B8 --format lvgl -o ../source-fonts/material_symbols_launcher_36.c --force-fast-kern-format ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/Modules/lvgl-module/source-fonts/material_symbols_launcher_42.c b/Modules/lvgl-module/source-fonts/material_symbols_launcher_42.c new file mode 100644 index 00000000..7e665509 --- /dev/null +++ b/Modules/lvgl-module/source-fonts/material_symbols_launcher_42.c @@ -0,0 +1,220 @@ +/******************************************************************************* + * Size: 42 px + * Bpp: 2 + * Opts: --no-compress --no-prefilter --bpp 2 --size 42 --font MaterialSymbolsRounded.ttf -r 0xE5C3,0xE2C7,0xE8B8 --format lvgl -o ../source-fonts/material_symbols_launcher_42.c --force-fast-kern-format + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef MATERIAL_SYMBOLS_LAUNCHER_42 +#define MATERIAL_SYMBOLS_LAUNCHER_42 1 +#endif + +#if MATERIAL_SYMBOLS_LAUNCHER_42 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+E2C7 "" */ + 0xb, 0xff, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x3f, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0xc0, 0x0, + 0x0, 0x0, 0x0, 0x7f, 0xaa, 0xaa, 0xbf, 0xfa, + 0xaa, 0xaa, 0xaa, 0x40, 0xbf, 0x0, 0x0, 0xf, + 0xff, 0xff, 0xff, 0xff, 0xf4, 0xbf, 0x0, 0x0, + 0x3, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xbf, 0x0, + 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xbf, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, + 0xbf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xfe, 0xbf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xfe, 0xbf, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xfe, 0xbf, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xfe, 0xbf, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xfe, 0xbf, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0xbf, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0xbf, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, + 0xbf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xfe, 0xbf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xfe, 0xbf, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xfe, 0xbf, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xfe, 0xbf, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xfe, 0xbf, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0xbf, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0xbf, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, + 0x7f, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xfd, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfd, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfc, 0xb, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xe0, + + /* U+E5C3 "" */ + 0x1f, 0xd0, 0x0, 0xbe, 0x0, 0xb, 0xe0, 0x7f, + 0xf4, 0x3, 0xff, 0x80, 0x3f, 0xfc, 0xff, 0xfc, + 0xb, 0xff, 0xc0, 0x7f, 0xfd, 0xff, 0xfc, 0xb, + 0xff, 0xd0, 0x7f, 0xfe, 0xff, 0xfc, 0xb, 0xff, + 0xc0, 0x7f, 0xfd, 0x7f, 0xf4, 0x3, 0xff, 0x80, + 0x3f, 0xfc, 0x1f, 0xd0, 0x0, 0xbe, 0x0, 0xb, + 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xe0, 0x1, + 0xff, 0x0, 0xf, 0xf4, 0xbf, 0xf8, 0x3, 0xff, + 0xc0, 0x3f, 0xfc, 0xff, 0xfc, 0xb, 0xff, 0xc0, + 0x7f, 0xfd, 0xff, 0xfc, 0xb, 0xff, 0xc0, 0x7f, + 0xfe, 0xbf, 0xf8, 0x7, 0xff, 0xc0, 0x3f, 0xfd, + 0x3f, 0xf0, 0x3, 0xff, 0x40, 0x2f, 0xf8, 0xa, + 0x80, 0x0, 0x68, 0x0, 0x6, 0x90, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1f, 0xd0, 0x0, 0xbe, 0x0, + 0xb, 0xe0, 0x7f, 0xf4, 0x3, 0xff, 0x80, 0x3f, + 0xfc, 0xff, 0xfc, 0xb, 0xff, 0xc0, 0x7f, 0xfd, + 0xff, 0xfc, 0xb, 0xff, 0xd0, 0x7f, 0xfe, 0xff, + 0xfc, 0xb, 0xff, 0xc0, 0x7f, 0xfd, 0x7f, 0xf4, + 0x3, 0xff, 0x80, 0x3f, 0xfc, 0x1f, 0xd0, 0x0, + 0xbe, 0x0, 0xb, 0xe0, + + /* U+E8B8 "" */ + 0x0, 0x0, 0x0, 0x6, 0xa9, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x7, 0xff, 0xfd, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xf0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0xfc, 0x3, 0xf4, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x3f, + 0x40, 0x0, 0x0, 0x1, 0xfe, 0x7, 0xfc, 0x3, + 0xfd, 0xb, 0xf4, 0x0, 0x3f, 0xff, 0xff, 0xc0, + 0x3f, 0xff, 0xff, 0xc0, 0xf, 0xff, 0xff, 0xf8, + 0x2, 0xff, 0xff, 0xff, 0x1, 0xff, 0xff, 0xf8, + 0x0, 0x2, 0xff, 0xff, 0xf4, 0x3f, 0xc1, 0xbc, + 0x0, 0x0, 0x3, 0xe4, 0x3f, 0xc7, 0xf8, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x2, 0xfd, 0xbf, 0x0, + 0x0, 0xb, 0xfe, 0x0, 0x0, 0x1f, 0xe7, 0xfd, + 0x0, 0x3, 0xff, 0xfd, 0x0, 0x7, 0xfd, 0x3f, + 0xf8, 0x0, 0xff, 0xff, 0xf0, 0x2, 0xff, 0xc0, + 0xbf, 0xe0, 0x1f, 0xff, 0xff, 0x80, 0xbf, 0xe0, + 0x2, 0xfd, 0x3, 0xff, 0xff, 0xfc, 0xb, 0xf8, + 0x0, 0xf, 0xd0, 0x3f, 0xff, 0xff, 0xc0, 0x7f, + 0x0, 0x0, 0xfd, 0x3, 0xff, 0xff, 0xfc, 0x7, + 0xf0, 0x0, 0x2f, 0xd0, 0x3f, 0xff, 0xff, 0xc0, + 0xbf, 0x40, 0xb, 0xfe, 0x1, 0xff, 0xff, 0xf8, + 0xb, 0xfe, 0x3, 0xff, 0x80, 0xf, 0xff, 0xff, + 0x0, 0x2f, 0xfc, 0x7f, 0xd0, 0x0, 0x3f, 0xff, + 0xd0, 0x0, 0x7f, 0xdb, 0xf0, 0x0, 0x0, 0xbf, + 0xe0, 0x0, 0x1, 0xfe, 0x7f, 0x80, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x2f, 0xd3, 0xfc, 0x1b, 0xc0, + 0x0, 0x0, 0x3e, 0x43, 0xfc, 0x1f, 0xff, 0xff, + 0x40, 0x0, 0x1f, 0xff, 0xff, 0x40, 0xff, 0xff, + 0xff, 0x80, 0x2f, 0xff, 0xff, 0xe0, 0x3, 0xff, + 0xff, 0xfc, 0x3, 0xff, 0xff, 0xfc, 0x0, 0x1f, + 0xe0, 0x7f, 0xc0, 0x3f, 0xd0, 0xbf, 0x0, 0x0, + 0x0, 0x1, 0xfc, 0x3, 0xf4, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1f, 0xc0, 0x3f, 0x40, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xff, 0xff, 0xf0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x7f, 0xff, 0xd0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x6a, 0x90, 0x0, + 0x0, 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 672, .box_w = 36, .box_h = 28, .ofs_x = 3, .ofs_y = 7}, + {.bitmap_index = 252, .adv_w = 672, .box_w = 28, .box_h = 28, .ofs_x = 7, .ofs_y = 7}, + {.bitmap_index = 448, .adv_w = 672, .box_w = 34, .box_h = 36, .ofs_x = 4, .ofs_y = 3} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x2fc, 0x5f1 +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 58055, .range_length = 1522, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 3, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LVGL_VERSION_MAJOR == 8 +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +#endif + +#if LVGL_VERSION_MAJOR >= 8 +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 1, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 0, +#if LVGL_VERSION_MAJOR == 8 + .cache = &cache +#endif +}; + + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LVGL_VERSION_MAJOR >= 8 +const lv_font_t material_symbols_launcher_42 = { +#else +lv_font_t material_symbols_launcher_42 = { +#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 = 36, /*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, +#endif +#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8 + .underline_position = 0, + .underline_thickness = 0, +#endif + .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9 + .fallback = NULL, +#endif + .user_data = NULL, +}; + + + +#endif /*#if MATERIAL_SYMBOLS_LAUNCHER_42*/ + diff --git a/Modules/lvgl-module/source-fonts/material_symbols_launcher_48.c b/Modules/lvgl-module/source-fonts/material_symbols_launcher_48.c new file mode 100644 index 00000000..f7816be9 --- /dev/null +++ b/Modules/lvgl-module/source-fonts/material_symbols_launcher_48.c @@ -0,0 +1,246 @@ +/******************************************************************************* + * Size: 48 px + * Bpp: 2 + * Opts: --no-compress --no-prefilter --bpp 2 --size 48 --font MaterialSymbolsRounded.ttf -r 0xE5C3,0xE2C7,0xE8B8 --format lvgl -o ../source-fonts/material_symbols_launcher_48.c --force-fast-kern-format + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef MATERIAL_SYMBOLS_LAUNCHER_48 +#define MATERIAL_SYMBOLS_LAUNCHER_48 1 +#endif + +#if MATERIAL_SYMBOLS_LAUNCHER_48 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+E2C7 "" */ + 0xb, 0xff, 0xff, 0xff, 0x40, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, 0xd0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xbf, 0xff, 0xff, 0xff, + 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xff, 0x0, 0x0, 0x3, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xe0, 0xff, 0x0, 0x0, 0x0, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfc, 0xff, 0x0, 0x0, 0x0, + 0x3f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x0, + 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, + 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, + 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, + 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, + 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, + + /* U+E5C3 "" */ + 0xb, 0xe0, 0x0, 0xb, 0xe0, 0x0, 0xb, 0xe0, + 0x3f, 0xfc, 0x0, 0x3f, 0xfc, 0x0, 0x3f, 0xfc, + 0xbf, 0xfe, 0x0, 0xbf, 0xfe, 0x0, 0xbf, 0xfe, + 0xff, 0xff, 0x0, 0xff, 0xff, 0x0, 0xff, 0xff, + 0xff, 0xff, 0x0, 0xff, 0xff, 0x0, 0xff, 0xff, + 0xbf, 0xfe, 0x0, 0xbf, 0xfe, 0x0, 0xbf, 0xfe, + 0x3f, 0xfc, 0x0, 0x3f, 0xfc, 0x0, 0x3f, 0xfc, + 0xb, 0xe0, 0x0, 0xb, 0xe0, 0x0, 0xb, 0xe0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xb, 0xe0, 0x0, 0xb, 0xe0, 0x0, 0xb, 0xe0, + 0x3f, 0xfc, 0x0, 0x3f, 0xfc, 0x0, 0x3f, 0xfc, + 0xbf, 0xfe, 0x0, 0xbf, 0xfe, 0x0, 0xbf, 0xfe, + 0xff, 0xff, 0x0, 0xff, 0xff, 0x0, 0xff, 0xff, + 0xff, 0xff, 0x0, 0xff, 0xff, 0x0, 0xff, 0xff, + 0xbf, 0xfe, 0x0, 0xbf, 0xfe, 0x0, 0xbf, 0xfe, + 0x3f, 0xfc, 0x0, 0x3f, 0xfc, 0x0, 0x3f, 0xfc, + 0xb, 0xe0, 0x0, 0xb, 0xe0, 0x0, 0xb, 0xe0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xb, 0xe0, 0x0, 0xb, 0xe0, 0x0, 0xb, 0xe0, + 0x3f, 0xfc, 0x0, 0x3f, 0xfc, 0x0, 0x3f, 0xfc, + 0xbf, 0xfe, 0x0, 0xbf, 0xfe, 0x0, 0xbf, 0xfe, + 0xff, 0xff, 0x0, 0xff, 0xff, 0x0, 0xff, 0xff, + 0xff, 0xff, 0x0, 0xff, 0xff, 0x0, 0xff, 0xff, + 0xbf, 0xfe, 0x0, 0xbf, 0xfe, 0x0, 0xbf, 0xfe, + 0x3f, 0xfc, 0x0, 0x3f, 0xfc, 0x0, 0x3f, 0xfc, + 0xb, 0xe0, 0x0, 0xb, 0xe0, 0x0, 0xb, 0xe0, + + /* U+E8B8 "" */ + 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xff, + 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb, + 0xff, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xf, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xf, 0xf0, 0xf, 0xf0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0xf, + 0xf0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x40, 0x2f, + 0xe0, 0xb, 0xf8, 0x1, 0xb4, 0x0, 0x0, 0xff, + 0xf9, 0xff, 0xe0, 0xb, 0xff, 0x6f, 0xff, 0x0, + 0x2, 0xff, 0xff, 0xff, 0xd0, 0x7, 0xff, 0xff, + 0xff, 0x80, 0x3, 0xff, 0xff, 0xff, 0x80, 0x2, + 0xff, 0xff, 0xff, 0xc0, 0xb, 0xfd, 0xff, 0xf4, + 0x0, 0x0, 0x1f, 0xff, 0x7f, 0xe0, 0xf, 0xf4, + 0x1b, 0xc0, 0x0, 0x0, 0x3, 0xe4, 0x1f, 0xf0, + 0x2f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xf, 0xf8, 0x3f, 0xd0, 0x0, 0x0, 0x2f, 0xf8, + 0x0, 0x0, 0x7, 0xfc, 0x3f, 0xf4, 0x0, 0x1, + 0xff, 0xff, 0x40, 0x0, 0x1f, 0xfc, 0x2f, 0xfe, + 0x0, 0x7, 0xff, 0xff, 0xd0, 0x0, 0xbf, 0xf8, + 0xb, 0xff, 0xc0, 0xf, 0xff, 0xff, 0xf0, 0x3, + 0xff, 0xe0, 0x1, 0xff, 0xd0, 0x1f, 0xff, 0xff, + 0xf8, 0x7, 0xff, 0x40, 0x0, 0x7f, 0xc0, 0x2f, + 0xff, 0xff, 0xfc, 0x3, 0xfd, 0x0, 0x0, 0x3f, + 0xc0, 0x3f, 0xff, 0xff, 0xfc, 0x3, 0xfc, 0x0, + 0x0, 0x3f, 0xc0, 0x3f, 0xff, 0xff, 0xfc, 0x3, + 0xfc, 0x0, 0x0, 0x7f, 0xc0, 0x2f, 0xff, 0xff, + 0xfc, 0x3, 0xfc, 0x0, 0x1, 0xff, 0xd0, 0x1f, + 0xff, 0xff, 0xf8, 0x7, 0xff, 0x40, 0xb, 0xff, + 0xc0, 0xf, 0xff, 0xff, 0xf0, 0x3, 0xff, 0xe0, + 0x2f, 0xfe, 0x0, 0x7, 0xff, 0xff, 0xd0, 0x0, + 0xbf, 0xf4, 0x3f, 0xf4, 0x0, 0x1, 0xff, 0xff, + 0x40, 0x0, 0x1f, 0xfc, 0x3f, 0xd0, 0x0, 0x0, + 0x2f, 0xf8, 0x0, 0x0, 0x7, 0xfc, 0x2f, 0xf0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf8, + 0xf, 0xf4, 0x1b, 0xc0, 0x0, 0x0, 0x3, 0xe4, + 0x1f, 0xf0, 0xb, 0xfd, 0xff, 0xf4, 0x0, 0x0, + 0x1f, 0xff, 0x7f, 0xe0, 0x3, 0xff, 0xff, 0xff, + 0x80, 0x2, 0xff, 0xff, 0xff, 0xc0, 0x2, 0xff, + 0xff, 0xff, 0xd0, 0x7, 0xff, 0xff, 0xff, 0x40, + 0x0, 0xff, 0xf9, 0xff, 0xe0, 0xb, 0xff, 0x6f, + 0xfe, 0x0, 0x0, 0x2e, 0x40, 0x2f, 0xe0, 0xb, + 0xf8, 0x1, 0xf4, 0x0, 0x0, 0x0, 0x0, 0xf, + 0xf0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xf, 0xf0, 0xf, 0xf0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xf0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xb, 0xff, 0xff, + 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, + 0xff, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 768, .box_w = 40, .box_h = 32, .ofs_x = 4, .ofs_y = 8}, + {.bitmap_index = 320, .adv_w = 768, .box_w = 32, .box_h = 32, .ofs_x = 8, .ofs_y = 8}, + {.bitmap_index = 576, .adv_w = 768, .box_w = 40, .box_h = 40, .ofs_x = 4, .ofs_y = 4} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x2fc, 0x5f1 +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 58055, .range_length = 1522, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 3, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LVGL_VERSION_MAJOR == 8 +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +#endif + +#if LVGL_VERSION_MAJOR >= 8 +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 1, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 0, +#if LVGL_VERSION_MAJOR == 8 + .cache = &cache +#endif +}; + + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LVGL_VERSION_MAJOR >= 8 +const lv_font_t material_symbols_launcher_48 = { +#else +lv_font_t material_symbols_launcher_48 = { +#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 = 40, /*The maximum line height required by the font*/ + .base_line = -4, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8 + .underline_position = 0, + .underline_thickness = 0, +#endif + .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9 + .fallback = NULL, +#endif + .user_data = NULL, +}; + + + +#endif /*#if MATERIAL_SYMBOLS_LAUNCHER_48*/ + diff --git a/Modules/lvgl-module/source-fonts/material_symbols_launcher_64.c b/Modules/lvgl-module/source-fonts/material_symbols_launcher_64.c new file mode 100644 index 00000000..9b61cb11 --- /dev/null +++ b/Modules/lvgl-module/source-fonts/material_symbols_launcher_64.c @@ -0,0 +1,348 @@ +/******************************************************************************* + * Size: 64 px + * Bpp: 2 + * Opts: --no-compress --no-prefilter --bpp 2 --size 64 --font MaterialSymbolsRounded.ttf -r 0xE5C3,0xE2C7,0xE8B8 --format lvgl -o ../source-fonts/material_symbols_launcher_64.c --force-fast-kern-format + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef MATERIAL_SYMBOLS_LAUNCHER_64 +#define MATERIAL_SYMBOLS_LAUNCHER_64 1 +#endif + +#if MATERIAL_SYMBOLS_LAUNCHER_64 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+E2C7 "" */ + 0x0, 0x15, 0x55, 0x55, 0x55, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xff, + 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x2f, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xff, 0xd0, 0x0, 0x0, 0x1, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xf, 0xfd, + 0x0, 0x0, 0x0, 0x7, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xe0, 0xff, 0xd0, 0x0, 0x0, + 0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x8f, 0xfd, 0x0, 0x0, 0x0, 0x0, 0x7f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, + 0xd0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xfd, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x5f, 0xfd, 0xff, 0xd0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xdf, + 0xfd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xf, 0xfd, 0xff, 0xd0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xff, 0xdf, 0xfd, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xfd, + 0xff, 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xff, 0xdf, 0xfd, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xf, 0xfd, 0xff, 0xd0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, + 0xdf, 0xfd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xf, 0xfd, 0xff, 0xd0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xff, 0xdf, 0xfd, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, + 0xfd, 0xff, 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xdf, 0xfd, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xf, 0xfd, 0xff, 0xd0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xff, 0xdf, 0xfd, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xfd, 0xff, + 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xff, 0xdf, 0xfd, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xf, 0xfd, 0xff, 0xd0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xdf, + 0xfd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xf, 0xfd, 0xff, 0xd0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xff, 0xdf, 0xfd, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xfd, + 0xff, 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xff, 0xdf, 0xfd, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xf, 0xfd, 0xff, 0xd0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, + 0xdf, 0xfd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xf, 0xfd, 0xff, 0xd0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xff, 0xdf, 0xfd, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, + 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xc2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x7, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf8, 0x0, 0x1, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x54, 0x0, + + /* U+E5C3 "" */ + 0x0, 0x55, 0x0, 0x0, 0x0, 0x55, 0x0, 0x0, + 0x0, 0x55, 0x0, 0x3, 0xff, 0xd0, 0x0, 0x3, + 0xff, 0xd0, 0x0, 0x3, 0xff, 0xd0, 0xf, 0xff, + 0xf4, 0x0, 0xf, 0xff, 0xf4, 0x0, 0xf, 0xff, + 0xf4, 0x2f, 0xff, 0xfc, 0x0, 0x2f, 0xff, 0xfc, + 0x0, 0x2f, 0xff, 0xfc, 0x3f, 0xff, 0xfc, 0x0, + 0x3f, 0xff, 0xfc, 0x0, 0x3f, 0xff, 0xfc, 0x3f, + 0xff, 0xfd, 0x0, 0x3f, 0xff, 0xfd, 0x0, 0x3f, + 0xff, 0xfd, 0x3f, 0xff, 0xfd, 0x0, 0x3f, 0xff, + 0xfd, 0x0, 0x3f, 0xff, 0xfd, 0x3f, 0xff, 0xfc, + 0x0, 0x3f, 0xff, 0xfc, 0x0, 0x3f, 0xff, 0xfc, + 0x1f, 0xff, 0xf8, 0x0, 0x1f, 0xff, 0xf8, 0x0, + 0x1f, 0xff, 0xf8, 0xb, 0xff, 0xf0, 0x0, 0xb, + 0xff, 0xf0, 0x0, 0xb, 0xff, 0xf0, 0x1, 0xff, + 0x80, 0x0, 0x1, 0xff, 0x80, 0x0, 0x1, 0xff, + 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x55, 0x0, 0x0, 0x0, 0x55, 0x0, 0x0, + 0x0, 0x55, 0x0, 0x3, 0xff, 0xd0, 0x0, 0x3, + 0xff, 0xd0, 0x0, 0x3, 0xff, 0xd0, 0xf, 0xff, + 0xf4, 0x0, 0xf, 0xff, 0xf4, 0x0, 0xf, 0xff, + 0xf4, 0x2f, 0xff, 0xfc, 0x0, 0x2f, 0xff, 0xfc, + 0x0, 0x2f, 0xff, 0xfc, 0x3f, 0xff, 0xfc, 0x0, + 0x3f, 0xff, 0xfc, 0x0, 0x3f, 0xff, 0xfc, 0x3f, + 0xff, 0xfd, 0x0, 0x3f, 0xff, 0xfd, 0x0, 0x3f, + 0xff, 0xfd, 0x3f, 0xff, 0xfd, 0x0, 0x3f, 0xff, + 0xfd, 0x0, 0x3f, 0xff, 0xfd, 0x3f, 0xff, 0xfc, + 0x0, 0x3f, 0xff, 0xfc, 0x0, 0x3f, 0xff, 0xfc, + 0x1f, 0xff, 0xf8, 0x0, 0x1f, 0xff, 0xf8, 0x0, + 0x1f, 0xff, 0xf8, 0xb, 0xff, 0xf0, 0x0, 0xb, + 0xff, 0xf0, 0x0, 0xb, 0xff, 0xf0, 0x1, 0xff, + 0x80, 0x0, 0x1, 0xff, 0x80, 0x0, 0x1, 0xff, + 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x55, 0x0, 0x0, 0x0, 0x55, 0x0, 0x0, + 0x0, 0x55, 0x0, 0x3, 0xff, 0xd0, 0x0, 0x3, + 0xff, 0xd0, 0x0, 0x3, 0xff, 0xd0, 0xf, 0xff, + 0xf4, 0x0, 0xf, 0xff, 0xf4, 0x0, 0xf, 0xff, + 0xf4, 0x2f, 0xff, 0xfc, 0x0, 0x2f, 0xff, 0xfc, + 0x0, 0x2f, 0xff, 0xfc, 0x3f, 0xff, 0xfc, 0x0, + 0x3f, 0xff, 0xfc, 0x0, 0x3f, 0xff, 0xfc, 0x3f, + 0xff, 0xfd, 0x0, 0x3f, 0xff, 0xfd, 0x0, 0x3f, + 0xff, 0xfd, 0x3f, 0xff, 0xfd, 0x0, 0x3f, 0xff, + 0xfd, 0x0, 0x3f, 0xff, 0xfd, 0x3f, 0xff, 0xfc, + 0x0, 0x3f, 0xff, 0xfc, 0x0, 0x3f, 0xff, 0xfc, + 0x1f, 0xff, 0xf8, 0x0, 0x1f, 0xff, 0xf8, 0x0, + 0x1f, 0xff, 0xf8, 0xb, 0xff, 0xf0, 0x0, 0xb, + 0xff, 0xf0, 0x0, 0xb, 0xff, 0xf0, 0x1, 0xff, + 0x80, 0x0, 0x1, 0xff, 0x80, 0x0, 0x1, 0xff, + 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + + /* U+E8B8 "" */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0x55, 0x50, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, + 0xff, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x7, 0xff, 0xff, 0xff, 0xd0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xb, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, + 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xf, 0xfd, 0x0, 0x7f, 0xf0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, + 0xfc, 0x0, 0x3f, 0xf0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1f, 0xfc, 0x0, 0x3f, + 0xf4, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb, 0xfd, + 0x0, 0x7f, 0xfc, 0x0, 0x3f, 0xfd, 0x0, 0x7f, + 0xe0, 0x0, 0x0, 0x3f, 0xff, 0xe3, 0xff, 0xfc, + 0x0, 0x3f, 0xff, 0xcb, 0xff, 0xfc, 0x0, 0x0, + 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0, 0x2f, 0xff, + 0xff, 0xff, 0xff, 0x0, 0x1, 0xff, 0xff, 0xff, + 0xff, 0xf8, 0x0, 0x2f, 0xff, 0xff, 0xff, 0xff, + 0x40, 0x3, 0xff, 0xff, 0xff, 0xff, 0x90, 0x0, + 0x6, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xb, 0xff, + 0xaf, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x2f, 0xff, + 0xfa, 0xff, 0xe0, 0xf, 0xff, 0x1, 0xff, 0xd0, + 0x0, 0x0, 0x0, 0x7, 0xff, 0x40, 0xff, 0xf0, + 0x2f, 0xfe, 0x0, 0x1b, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xe4, 0x0, 0xbf, 0xf8, 0x3f, 0xfc, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3f, 0xfc, 0x7f, 0xf4, 0x0, 0x0, 0x0, 0x6, + 0xff, 0xd0, 0x0, 0x0, 0x0, 0x1f, 0xfd, 0x7f, + 0xfc, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xfd, 0x0, + 0x0, 0x0, 0x3f, 0xfd, 0x3f, 0xff, 0x40, 0x0, + 0x1, 0xff, 0xff, 0xff, 0x80, 0x0, 0x1, 0xff, + 0xfc, 0x2f, 0xff, 0xe0, 0x0, 0x3, 0xff, 0xff, + 0xff, 0xd0, 0x0, 0xb, 0xff, 0xf8, 0xb, 0xff, + 0xfc, 0x0, 0xf, 0xff, 0xff, 0xff, 0xf0, 0x0, + 0x3f, 0xff, 0xe0, 0x1, 0xff, 0xff, 0x0, 0x1f, + 0xff, 0xff, 0xff, 0xf8, 0x0, 0xff, 0xff, 0x40, + 0x0, 0x7f, 0xfe, 0x0, 0x3f, 0xff, 0xff, 0xff, + 0xfc, 0x0, 0xbf, 0xfd, 0x0, 0x0, 0xf, 0xfd, + 0x0, 0x3f, 0xff, 0xff, 0xff, 0xfd, 0x0, 0x7f, + 0xf0, 0x0, 0x0, 0xf, 0xfd, 0x0, 0x3f, 0xff, + 0xff, 0xff, 0xfd, 0x0, 0x7f, 0xf0, 0x0, 0x0, + 0xf, 0xfd, 0x0, 0x3f, 0xff, 0xff, 0xff, 0xfd, + 0x0, 0x7f, 0xf0, 0x0, 0x0, 0xf, 0xfd, 0x0, + 0x3f, 0xff, 0xff, 0xff, 0xfd, 0x0, 0x7f, 0xf0, + 0x0, 0x0, 0x2f, 0xfe, 0x0, 0x3f, 0xff, 0xff, + 0xff, 0xfc, 0x0, 0xbf, 0xf8, 0x0, 0x0, 0xff, + 0xfe, 0x0, 0x2f, 0xff, 0xff, 0xff, 0xfc, 0x0, + 0xbf, 0xfe, 0x0, 0x7, 0xff, 0xfe, 0x0, 0xf, + 0xff, 0xff, 0xff, 0xf4, 0x0, 0xbf, 0xff, 0xc0, + 0xf, 0xff, 0xf4, 0x0, 0xb, 0xff, 0xff, 0xff, + 0xf0, 0x0, 0x1f, 0xff, 0xf0, 0x3f, 0xff, 0xc0, + 0x0, 0x2, 0xff, 0xff, 0xff, 0xc0, 0x0, 0x3, + 0xff, 0xfc, 0x3f, 0xfe, 0x0, 0x0, 0x0, 0xbf, + 0xff, 0xff, 0x0, 0x0, 0x0, 0xbf, 0xfc, 0x7f, + 0xf4, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xf4, 0x0, + 0x0, 0x0, 0x1f, 0xfd, 0x7f, 0xf8, 0x0, 0x0, + 0x0, 0x0, 0x59, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xfc, 0x3f, 0xfd, 0x0, 0x5, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x40, 0x0, 0x7f, 0xfc, 0x1f, 0xff, + 0x0, 0x7f, 0x80, 0x0, 0x0, 0x0, 0x2, 0xfd, + 0x0, 0xff, 0xf4, 0xf, 0xff, 0x4b, 0xff, 0xf0, + 0x0, 0x0, 0x0, 0xf, 0xff, 0xe1, 0xff, 0xe0, + 0x3, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0, 0x0, + 0xbf, 0xff, 0xff, 0xff, 0xc0, 0x2, 0xff, 0xff, + 0xff, 0xff, 0xf4, 0x0, 0x1f, 0xff, 0xff, 0xff, + 0xff, 0x80, 0x0, 0xff, 0xff, 0xff, 0xff, 0xf8, + 0x0, 0x2f, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, + 0x7f, 0xff, 0xfb, 0xff, 0xf8, 0x0, 0x2f, 0xff, + 0xef, 0xff, 0xfd, 0x0, 0x0, 0x1f, 0xff, 0x40, + 0xff, 0xfc, 0x0, 0x3f, 0xff, 0x1, 0xff, 0xf4, + 0x0, 0x0, 0x2, 0xa0, 0x0, 0x2f, 0xfc, 0x0, + 0x3f, 0xf8, 0x0, 0x1a, 0x80, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1f, 0xfc, 0x0, 0x3f, 0xf0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, + 0xfc, 0x0, 0x7f, 0xf0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xf, 0xfe, 0x55, 0xbf, + 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xf, 0xff, 0xff, 0xff, 0xf0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb, 0xff, + 0xff, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x3, 0xff, 0xff, 0xff, 0xc0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0xff, 0xff, 0xff, 0x40, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xff, + 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 1024, .box_w = 54, .box_h = 44, .ofs_x = 5, .ofs_y = 10}, + {.bitmap_index = 594, .adv_w = 1024, .box_w = 44, .box_h = 44, .ofs_x = 10, .ofs_y = 10}, + {.bitmap_index = 1078, .adv_w = 1024, .box_w = 52, .box_h = 54, .ofs_x = 6, .ofs_y = 5} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x2fc, 0x5f1 +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 58055, .range_length = 1522, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 3, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LVGL_VERSION_MAJOR == 8 +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +#endif + +#if LVGL_VERSION_MAJOR >= 8 +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 1, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 0, +#if LVGL_VERSION_MAJOR == 8 + .cache = &cache +#endif +}; + + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LVGL_VERSION_MAJOR >= 8 +const lv_font_t material_symbols_launcher_64 = { +#else +lv_font_t material_symbols_launcher_64 = { +#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 = 54, /*The maximum line height required by the font*/ + .base_line = -5, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8 + .underline_position = 0, + .underline_thickness = 0, +#endif + .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9 + .fallback = NULL, +#endif + .user_data = NULL, +}; + + + +#endif /*#if MATERIAL_SYMBOLS_LAUNCHER_64*/ + diff --git a/Modules/lvgl-module/source-fonts/material_symbols_launcher_72.c b/Modules/lvgl-module/source-fonts/material_symbols_launcher_72.c new file mode 100644 index 00000000..48236ecf --- /dev/null +++ b/Modules/lvgl-module/source-fonts/material_symbols_launcher_72.c @@ -0,0 +1,397 @@ +/******************************************************************************* + * Size: 72 px + * Bpp: 2 + * Opts: --no-compress --no-prefilter --bpp 2 --size 72 --font MaterialSymbolsRounded.ttf -r 0xE5C3,0xE2C7,0xE8B8 --format lvgl -o ../source-fonts/material_symbols_launcher_72.c --force-fast-kern-format + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef MATERIAL_SYMBOLS_LAUNCHER_72 +#define MATERIAL_SYMBOLS_LAUNCHER_72 1 +#endif + +#if MATERIAL_SYMBOLS_LAUNCHER_72 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+E2C7 "" */ + 0x1, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xff, 0xf0, 0x0, 0x0, 0x0, 0xf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x40, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x3, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, + 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, + 0xf0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xf0, + 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x0, + 0x0, 0x0, 0x0, 0x3, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xf, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xf, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, + 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, + 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, + 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xf0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xf0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xf, 0xff, 0xff, 0xf0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xf, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xf, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, + 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, + 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, + 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xf0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xf0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xf, 0xff, 0xff, 0xf0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xf, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xf, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, + 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, + 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, + 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xf0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xf0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xf, 0xff, 0xff, 0xf0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xf, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xf, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, + 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, + 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, + 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfd, 0x3f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfc, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x40, + + /* U+E5C3 "" */ + 0x1, 0xff, 0x40, 0x0, 0x0, 0x1f, 0xf4, 0x0, + 0x0, 0x1, 0xff, 0x40, 0xf, 0xff, 0xf0, 0x0, + 0x0, 0xff, 0xff, 0x0, 0x0, 0xf, 0xff, 0xf0, + 0x3f, 0xff, 0xfc, 0x0, 0x3, 0xff, 0xff, 0xc0, + 0x0, 0x3f, 0xff, 0xfc, 0x7f, 0xff, 0xfd, 0x0, + 0x7, 0xff, 0xff, 0xd0, 0x0, 0x7f, 0xff, 0xfd, + 0xff, 0xff, 0xff, 0x0, 0xf, 0xff, 0xff, 0xf0, + 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, + 0xf, 0xff, 0xff, 0xf0, 0x0, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x0, 0xf, 0xff, 0xff, 0xf0, + 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, + 0xf, 0xff, 0xff, 0xf0, 0x0, 0xff, 0xff, 0xff, + 0x7f, 0xff, 0xfd, 0x0, 0x7, 0xff, 0xff, 0xd0, + 0x0, 0x7f, 0xff, 0xfd, 0x3f, 0xff, 0xfc, 0x0, + 0x3, 0xff, 0xff, 0xc0, 0x0, 0x3f, 0xff, 0xfc, + 0xf, 0xff, 0xf0, 0x0, 0x0, 0xff, 0xff, 0x0, + 0x0, 0xf, 0xff, 0xf0, 0x1, 0xff, 0x40, 0x0, + 0x0, 0x1f, 0xf4, 0x0, 0x0, 0x1, 0xff, 0x40, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0xff, 0x40, 0x0, 0x0, 0x1f, 0xf4, 0x0, + 0x0, 0x1, 0xff, 0x40, 0xf, 0xff, 0xf0, 0x0, + 0x0, 0xff, 0xff, 0x0, 0x0, 0xf, 0xff, 0xf0, + 0x3f, 0xff, 0xfc, 0x0, 0x3, 0xff, 0xff, 0xc0, + 0x0, 0x3f, 0xff, 0xfc, 0x7f, 0xff, 0xfd, 0x0, + 0x7, 0xff, 0xff, 0xd0, 0x0, 0x7f, 0xff, 0xfd, + 0xff, 0xff, 0xff, 0x0, 0xf, 0xff, 0xff, 0xf0, + 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, + 0xf, 0xff, 0xff, 0xf0, 0x0, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x0, 0xf, 0xff, 0xff, 0xf0, + 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, + 0xf, 0xff, 0xff, 0xf0, 0x0, 0xff, 0xff, 0xff, + 0x7f, 0xff, 0xfd, 0x0, 0x7, 0xff, 0xff, 0xd0, + 0x0, 0x7f, 0xff, 0xfd, 0x3f, 0xff, 0xfc, 0x0, + 0x3, 0xff, 0xff, 0xc0, 0x0, 0x3f, 0xff, 0xfc, + 0xf, 0xff, 0xf0, 0x0, 0x0, 0xff, 0xff, 0x0, + 0x0, 0xf, 0xff, 0xf0, 0x1, 0xff, 0x40, 0x0, + 0x0, 0x1f, 0xf4, 0x0, 0x0, 0x1, 0xff, 0x40, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0xff, 0x40, 0x0, 0x0, 0x1f, 0xf4, 0x0, + 0x0, 0x1, 0xff, 0x40, 0xf, 0xff, 0xf0, 0x0, + 0x0, 0xff, 0xff, 0x0, 0x0, 0xf, 0xff, 0xf0, + 0x3f, 0xff, 0xfc, 0x0, 0x3, 0xff, 0xff, 0xc0, + 0x0, 0x3f, 0xff, 0xfc, 0x7f, 0xff, 0xfd, 0x0, + 0x7, 0xff, 0xff, 0xd0, 0x0, 0x7f, 0xff, 0xfd, + 0xff, 0xff, 0xff, 0x0, 0xf, 0xff, 0xff, 0xf0, + 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, + 0xf, 0xff, 0xff, 0xf0, 0x0, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x0, 0xf, 0xff, 0xff, 0xf0, + 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, + 0xf, 0xff, 0xff, 0xf0, 0x0, 0xff, 0xff, 0xff, + 0x7f, 0xff, 0xfd, 0x0, 0x7, 0xff, 0xff, 0xd0, + 0x0, 0x7f, 0xff, 0xfd, 0x3f, 0xff, 0xfc, 0x0, + 0x3, 0xff, 0xff, 0xc0, 0x0, 0x3f, 0xff, 0xfc, + 0xf, 0xff, 0xf0, 0x0, 0x0, 0xff, 0xff, 0x0, + 0x0, 0xf, 0xff, 0xf0, 0x1, 0xff, 0x40, 0x0, + 0x0, 0x1f, 0xf4, 0x0, 0x0, 0x1, 0xff, 0x40, + + /* U+E8B8 "" */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbf, 0xff, + 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xff, 0xff, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfe, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xb, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3f, 0xff, 0xff, 0xff, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, + 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0xc0, + 0x3, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1f, 0xfe, 0x0, 0xf, + 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xbf, 0xf8, 0x0, 0x3f, 0xfc, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xa8, + 0x0, 0x3, 0xff, 0xd0, 0x0, 0xff, 0xf4, 0x0, + 0x6, 0xe4, 0x0, 0x0, 0x0, 0x7f, 0xff, 0x40, + 0x7f, 0xff, 0x40, 0x2, 0xff, 0xfc, 0x2, 0xff, + 0xf8, 0x0, 0x0, 0x3, 0xff, 0xff, 0xef, 0xff, + 0xfc, 0x0, 0xb, 0xff, 0xfe, 0xbf, 0xff, 0xfc, + 0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xf0, + 0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x0, + 0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0, + 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x0, 0xf, + 0xff, 0xff, 0xff, 0xff, 0xe4, 0x0, 0x0, 0x2f, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0, 0xbf, 0xfe, + 0xff, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x7, 0xff, + 0xff, 0xef, 0xff, 0xc0, 0x3, 0xff, 0xf0, 0x6f, + 0xff, 0x40, 0x0, 0x0, 0x0, 0x2, 0xff, 0xf8, + 0x1f, 0xff, 0x80, 0x2f, 0xff, 0x40, 0xb, 0xf0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0xfd, 0x0, 0x2f, + 0xff, 0x41, 0xff, 0xf8, 0x0, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x40, 0x0, 0x3f, 0xff, + 0xb, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x15, + 0x40, 0x0, 0x0, 0x0, 0x0, 0xbf, 0xfc, 0x3f, + 0xfe, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xff, 0xf4, + 0x0, 0x0, 0x0, 0x0, 0xff, 0xf4, 0xbf, 0xfe, + 0x0, 0x0, 0x0, 0x7, 0xff, 0xff, 0xfc, 0x0, + 0x0, 0x0, 0x1f, 0xff, 0xc1, 0xff, 0xff, 0x0, + 0x0, 0x0, 0x7f, 0xff, 0xff, 0xfd, 0x0, 0x0, + 0x2, 0xff, 0xff, 0x3, 0xff, 0xff, 0x40, 0x0, + 0x7, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x3f, + 0xff, 0xf4, 0x3, 0xff, 0xff, 0x80, 0x0, 0x3f, + 0xff, 0xff, 0xff, 0xfc, 0x0, 0x7, 0xff, 0xff, + 0x80, 0x3, 0xff, 0xff, 0xc0, 0x2, 0xff, 0xff, + 0xff, 0xff, 0xf4, 0x0, 0x3f, 0xff, 0xf4, 0x0, + 0x2, 0xff, 0xfe, 0x0, 0xf, 0xff, 0xff, 0xff, + 0xff, 0xf0, 0x0, 0xff, 0xff, 0x40, 0x0, 0x1, + 0xff, 0xf4, 0x0, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x3, 0xff, 0xe0, 0x0, 0x0, 0x2, 0xff, + 0xd0, 0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x40, + 0xf, 0xff, 0x0, 0x0, 0x0, 0xb, 0xff, 0x40, + 0xb, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x0, 0x3f, + 0xfd, 0x0, 0x0, 0x0, 0x2f, 0xfd, 0x0, 0x2f, + 0xff, 0xff, 0xff, 0xff, 0xf4, 0x0, 0xff, 0xf4, + 0x0, 0x0, 0x0, 0xbf, 0xf4, 0x0, 0x7f, 0xff, + 0xff, 0xff, 0xff, 0xd0, 0x3, 0xff, 0xc0, 0x0, + 0x0, 0x7, 0xff, 0xd0, 0x1, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x0, 0xf, 0xff, 0x80, 0x0, 0x0, + 0xbf, 0xff, 0x80, 0x3, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0x0, 0x3f, 0xff, 0xc0, 0x0, 0xf, 0xff, + 0xff, 0x0, 0xb, 0xff, 0xff, 0xff, 0xff, 0xd0, + 0x0, 0xff, 0xff, 0xd0, 0x0, 0xff, 0xff, 0xe0, + 0x0, 0xf, 0xff, 0xff, 0xff, 0xff, 0x0, 0x1, + 0xff, 0xff, 0xe0, 0xf, 0xff, 0xfd, 0x0, 0x0, + 0x1f, 0xff, 0xff, 0xff, 0xf0, 0x0, 0x0, 0xff, + 0xff, 0xd0, 0x7f, 0xff, 0xc0, 0x0, 0x0, 0x1f, + 0xff, 0xff, 0xff, 0x40, 0x0, 0x0, 0xbf, 0xff, + 0xc2, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x1f, 0xff, + 0xff, 0xf0, 0x0, 0x0, 0x0, 0x7f, 0xff, 0xf, + 0xff, 0x80, 0x0, 0x0, 0x0, 0xb, 0xff, 0xfd, + 0x0, 0x0, 0x0, 0x0, 0x3f, 0xfc, 0x2f, 0xff, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x55, 0x0, 0x0, + 0x0, 0x0, 0x2, 0xff, 0xf0, 0x7f, 0xfe, 0x0, + 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, + 0x0, 0xf, 0xff, 0x80, 0xbf, 0xfd, 0x0, 0x2f, + 0xc0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf4, 0x0, + 0xbf, 0xfc, 0x0, 0xff, 0xfc, 0x1b, 0xff, 0xd0, + 0x0, 0x0, 0x0, 0x0, 0xbf, 0xfe, 0x7, 0xff, + 0xe0, 0x2, 0xff, 0xfb, 0xff, 0xff, 0xe0, 0x0, + 0x0, 0x0, 0x1f, 0xff, 0xff, 0xbf, 0xff, 0x0, + 0x3, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x0, 0x0, + 0xb, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x0, 0x7, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0, 0xf, 0xff, + 0xff, 0xff, 0xff, 0xfc, 0x0, 0x7, 0xff, 0xff, + 0xff, 0xff, 0xfd, 0x0, 0x0, 0xf, 0xff, 0xff, + 0xbf, 0xff, 0xf0, 0x0, 0x2f, 0xff, 0xfa, 0xff, + 0xff, 0xe0, 0x0, 0x0, 0x1f, 0xff, 0xd0, 0x1f, + 0xff, 0xc0, 0x0, 0xbf, 0xff, 0x0, 0xbf, 0xfe, + 0x0, 0x0, 0x0, 0x6, 0xa0, 0x0, 0xf, 0xff, + 0x40, 0x3, 0xff, 0xd0, 0x0, 0x1b, 0x90, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xfd, 0x0, + 0xf, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x7f, 0xf8, 0x0, 0x3f, + 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0xff, 0xf0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xf, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xff, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, + 0xff, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xff, 0xff, + 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x2f, 0xff, 0xff, 0x80, + 0x0, 0x0, 0x0, 0x0, 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 1152, .box_w = 60, .box_h = 48, .ofs_x = 6, .ofs_y = 12}, + {.bitmap_index = 720, .adv_w = 1152, .box_w = 48, .box_h = 48, .ofs_x = 12, .ofs_y = 12}, + {.bitmap_index = 1296, .adv_w = 1152, .box_w = 59, .box_h = 60, .ofs_x = 6, .ofs_y = 6} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x2fc, 0x5f1 +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 58055, .range_length = 1522, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 3, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LVGL_VERSION_MAJOR == 8 +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +#endif + +#if LVGL_VERSION_MAJOR >= 8 +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 1, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 0, +#if LVGL_VERSION_MAJOR == 8 + .cache = &cache +#endif +}; + + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LVGL_VERSION_MAJOR >= 8 +const lv_font_t material_symbols_launcher_72 = { +#else +lv_font_t material_symbols_launcher_72 = { +#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 = 60, /*The maximum line height required by the font*/ + .base_line = -6, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8 + .underline_position = 0, + .underline_thickness = 0, +#endif + .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9 + .fallback = NULL, +#endif + .user_data = NULL, +}; + + + +#endif /*#if MATERIAL_SYMBOLS_LAUNCHER_72*/ + diff --git a/Modules/lvgl-module/source-fonts/material_symbols_shared_12.c b/Modules/lvgl-module/source-fonts/material_symbols_shared_12.c new file mode 100644 index 00000000..ba6d5efa --- /dev/null +++ b/Modules/lvgl-module/source-fonts/material_symbols_shared_12.c @@ -0,0 +1,378 @@ +/******************************************************************************* + * Size: 12 px + * Bpp: 2 + * Opts: --no-compress --no-prefilter --bpp 2 --size 12 --font MaterialSymbolsRounded.ttf -r 0xE145,0xE5C3,0xE770,0xEF40,0xEBCC,0xEFE6,0xEF4A,0xE5CD,0xF15C,0xE5CA,0xE92E,0xE326,0xEB97,0xE745,0xEC1C,0xE2C7,0xF720,0xF090,0xE8AF,0xE30F,0xE8FD,0xE9F4,0xE3F4,0xE316,0xE90F,0xE894,0xE9B9,0xE159,0xE5D2,0xE28D,0xE5D4,0xE405,0xE89C,0xF8C7,0xE5D5,0xE8B6,0xE8B8,0xE9F7,0xE55D,0xF028,0xE1E0,0xE63E --format lvgl -o ../source-fonts/material_symbols_shared_12.c --force-fast-kern-format + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef MATERIAL_SYMBOLS_SHARED_12 +#define MATERIAL_SYMBOLS_SHARED_12 1 +#endif + +#if MATERIAL_SYMBOLS_SHARED_12 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+E145 "" */ + 0x0, 0x0, 0x2, 0x40, 0x2, 0x40, 0x17, 0x54, + 0x6b, 0xe8, 0x2, 0x40, 0x2, 0x40, 0x1, 0x0, + + /* U+E159 "" */ + 0xff, 0xff, 0xfe, 0x0, 0xb, 0xdd, 0x7, 0x7c, + 0x2f, 0x83, 0xc0, 0x0, 0x3c, 0x0, 0x3, 0xc0, + 0x0, 0x3f, 0xff, 0xff, + + /* U+E1E0 "" */ + 0x2, 0x0, 0x7, 0x80, 0x3, 0x0, 0x73, 0x3c, + 0xb3, 0x3c, 0x33, 0x18, 0x3f, 0xf4, 0x3, 0x0, + 0x3, 0x40, 0x3, 0x40, + + /* U+E28D "" */ + 0x0, 0x0, 0x0, 0x2, 0xf0, 0x0, 0xc, 0xc0, + 0x0, 0x33, 0x0, 0x0, 0xcc, 0x0, 0x1b, 0xba, + 0x42, 0xaa, 0xab, 0x9, 0x55, 0x5c, 0x3a, 0xaa, + 0xb4, 0xc4, 0x85, 0xa6, 0x67, 0x69, 0x8a, 0xaa, + 0xa9, + + /* U+E2C7 "" */ + 0xff, 0x40, 0xc, 0xf, 0xff, 0xc0, 0x0, 0x3c, + 0x0, 0x3, 0xc0, 0x0, 0x3c, 0x0, 0x3, 0xc0, + 0x0, 0x3f, 0xff, 0xff, + + /* U+E30F "" */ + 0x2, 0xf0, 0x0, 0x26, 0x40, 0x2, 0x74, 0x1, + 0xe, 0x4, 0xed, 0xb, 0xbd, 0xb0, 0xd7, 0xa8, + 0xe2, 0xa0, 0x2b, 0x0, 0x2, 0x64, 0x0, 0x2f, + 0x0, + + /* U+E316 "" */ + 0x5, 0x1, 0xf8, 0x70, 0xd4, 0x1, + + /* U+E326 "" */ + 0x7f, 0xff, 0xda, 0x0, 0x0, 0xa0, 0xf, 0xfa, + 0x0, 0xc3, 0xa0, 0xc, 0x37, 0xa4, 0xc3, 0x1a, + 0x4c, 0x3f, 0xfc, 0xff, + + /* U+E3F4 "" */ + 0x15, 0x55, 0xb, 0xaa, 0xac, 0x90, 0x0, 0xc9, + 0x0, 0xc, 0x90, 0x0, 0xc9, 0x1, 0xc, 0x97, + 0x3c, 0xc9, 0xaa, 0x8c, 0x95, 0x55, 0xc6, 0xaa, + 0xa8, + + /* U+E405 "" */ + 0x0, 0x40, 0x3f, 0x3, 0xa0, 0x30, 0x3, 0x0, + 0x30, 0xbf, 0xf, 0xf0, 0xff, 0x2, 0x80, + + /* U+E55D "" */ + 0x0, 0x0, 0x2, 0x80, 0x3, 0xc0, 0xa, 0xa0, + 0xc, 0x30, 0x18, 0x24, 0x30, 0xc, 0x77, 0xdd, + 0xf8, 0x2f, 0x40, 0x1, + + /* U+E5C3 "" */ + 0xf3, 0xcf, 0xf3, 0xcf, 0x0, 0x0, 0xf3, 0xcf, + 0xf3, 0xcf, 0x0, 0x0, 0xf3, 0xcf, 0xf3, 0xcf, + + /* U+E5CA "" */ + 0x0, 0x2, 0x0, 0xd, 0x0, 0x34, 0xa0, 0xd0, + 0x2b, 0x40, 0x9, 0x0, + + /* U+E5CD "" */ + 0x10, 0x0, 0x34, 0x1c, 0xd, 0x70, 0x3, 0xc0, + 0x7, 0xd0, 0x1c, 0x34, 0x30, 0xc, 0x0, 0x0, + + /* U+E5D2 "" */ + 0xbf, 0xff, 0xc0, 0x0, 0x0, 0x15, 0x55, 0x46, + 0xaa, 0xa8, 0x0, 0x0, 0xb, 0xff, 0xfc, + + /* U+E5D4 "" */ + 0xff, 0xf, 0xf0, 0xff, + + /* U+E5D5 "" */ + 0xb, 0xe3, 0x34, 0x2f, 0x90, 0x1b, 0xc0, 0x6a, + 0xc0, 0x0, 0x90, 0x5, 0x34, 0x1c, 0xb, 0xe0, + + /* U+E63E "" */ + 0x6, 0xff, 0x80, 0x2f, 0xaa, 0xf8, 0xb4, 0x0, + 0x2d, 0x1, 0xfe, 0x40, 0xb, 0xeb, 0xd0, 0x0, + 0x0, 0x40, 0x0, 0x3c, 0x0, 0x0, 0x7c, 0x0, + 0x0, 0x14, 0x0, + + /* U+E745 "" */ + 0xff, 0xc0, 0x0, 0x0, 0xf, 0xfc, 0x0, 0x0, + 0x4, 0xfd, 0xb, 0xc0, 0xa, 0xd0, 0x9, 0x90, + 0x2, 0xd0, + + /* U+E770 "" */ + 0x0, 0xa0, 0x0, 0x2a, 0xd0, 0x57, 0x6, 0xcb, + 0xd0, 0xc, 0x94, 0x90, 0xc9, 0x1f, 0x8c, 0xbb, + 0xff, 0xcb, 0xff, 0xfc, 0x0, 0x0, 0x0, + + /* U+E894 "" */ + 0x6, 0xf9, 0x2, 0xea, 0xb8, 0x73, 0x1c, 0xdb, + 0xff, 0xfe, 0xc3, 0xc, 0x3c, 0x30, 0xc3, 0xbf, + 0xff, 0xe7, 0x31, 0xcd, 0x2e, 0xab, 0x80, 0x6f, + 0x90, + + /* U+E89C "" */ + 0xff, 0xd0, 0xc0, 0xb8, 0xc0, 0xbd, 0xc0, 0x2b, + 0xc1, 0x43, 0xc6, 0x93, 0xc6, 0x93, 0xc1, 0x43, + 0xc0, 0x3, 0xff, 0xff, + + /* U+E8AF "" */ + 0xff, 0xfc, 0xc, 0x0, 0x90, 0xc0, 0x9, 0x6c, + 0x0, 0x9b, 0xc5, 0x5d, 0xbf, 0xaa, 0x8b, 0x8a, + 0xaa, 0xf0, 0xff, 0xff, 0x0, 0x0, 0xb0, 0x0, + 0x0, + + /* U+E8B6 "" */ + 0x0, 0x0, 0x2, 0xfe, 0x0, 0x70, 0x34, 0x9, + 0x1, 0x80, 0x90, 0x18, 0x3, 0x47, 0x40, 0x1f, + 0xec, 0x0, 0x0, 0x70, 0x0, 0x1, 0xc0, 0x0, + 0x0, + + /* U+E8B8 "" */ + 0x1, 0xf4, 0x1, 0x25, 0x84, 0x7e, 0xb, 0xda, + 0xa, 0xa, 0x36, 0xf9, 0xc3, 0x2f, 0x9c, 0xa0, + 0xa0, 0xa7, 0xe0, 0xbd, 0x12, 0x58, 0x40, 0x1f, + 0x40, + + /* U+E8FD "" */ + 0x6, 0xf9, 0x2, 0xd0, 0x78, 0x70, 0xf4, 0xd9, + 0x1, 0x86, 0xc0, 0x24, 0x3c, 0x6, 0x3, 0x90, + 0x0, 0x67, 0x9, 0xd, 0x2d, 0x7, 0x80, 0x6f, + 0x90, + + /* U+E90F "" */ + 0xb, 0xe0, 0x34, 0x1c, 0xa0, 0xa, 0x90, 0x6, + 0x90, 0x6, 0x70, 0xd, 0x1f, 0xf4, 0x6, 0x90, + 0x6, 0x90, 0x3, 0xc0, + + /* U+E92E "" */ + 0x2, 0x80, 0xff, 0xff, 0xa0, 0xa, 0xa5, 0x5a, + 0xa5, 0x5a, 0xa5, 0x5a, 0xa5, 0x5a, 0xa5, 0x5a, + 0x65, 0x59, 0x2a, 0xa8, + + /* U+E9B9 "" */ + 0xf3, 0xff, 0xff, 0x3f, 0xff, 0x0, 0x0, 0xf, + 0x3f, 0xff, 0xf3, 0xff, 0xf0, 0x0, 0x0, 0xf3, + 0xff, 0xff, 0x3f, 0xff, + + /* U+E9F4 "" */ + 0x0, 0x7c, 0x0, 0x0, 0x9c, 0x0, 0x0, 0x38, + 0x0, 0x74, 0x20, 0x1d, 0xdc, 0xbd, 0x37, 0xbb, + 0xc3, 0xae, 0x1, 0x83, 0x0, 0x0, 0xea, 0x0, + 0x1, 0xab, 0x40, 0x1f, 0x2, 0xf4, 0x1b, 0x2, + 0xa4, 0xa, 0x0, 0xa0, + + /* U+E9F7 "" */ + 0x15, 0x55, 0x7, 0xaa, 0xac, 0xa0, 0x0, 0x9b, + 0xff, 0xfd, 0xa0, 0x0, 0x9a, 0x0, 0x9, 0xa0, + 0x0, 0x9a, 0x0, 0x9, 0x65, 0x55, 0xd2, 0xaa, + 0xa8, + + /* U+EB97 "" */ + 0x15, 0x55, 0x4e, 0xaa, 0xab, 0xc0, 0x0, 0x3c, + 0xaa, 0x63, 0xc1, 0x0, 0x3c, 0xdf, 0xf3, 0xc1, + 0x0, 0x3d, 0x55, 0x57, 0x6b, 0xfe, 0x90, 0x2a, + 0x80, + + /* U+EBCC "" */ + 0x8, 0x2, 0x7, 0xff, 0xfc, 0x90, 0x0, 0xcb, + 0xff, 0xfc, 0x90, 0x0, 0xc9, 0x88, 0x8c, 0x90, + 0x0, 0xc9, 0x88, 0x8c, 0x90, 0x0, 0xc7, 0xff, + 0xfc, + + /* U+EC1C "" */ + 0x0, 0x30, 0x0, 0xe0, 0x3, 0xc0, 0xf, 0xc0, + 0x36, 0xfe, 0xbf, 0x9c, 0x3, 0xf0, 0x3, 0xc0, + 0xb, 0x0, 0xc, 0x0, + + /* U+EF40 "" */ + 0xf3, 0xcf, 0x3c, 0xf3, 0xc0, 0x0, 0x3, 0xcf, + 0x4, 0xf3, 0xcb, 0xc0, 0xa, 0xef, 0x6, 0xa3, + 0xc1, 0xe0, + + /* U+EF4A "" */ + 0x6, 0xf9, 0x2, 0xd0, 0x78, 0x70, 0x0, 0xd9, + 0x0, 0x6, 0xc0, 0x0, 0x3c, 0x0, 0x3, 0x90, + 0x0, 0x67, 0x0, 0xd, 0x2d, 0x7, 0x80, 0x6f, + 0x90, + + /* U+EFE6 "" */ + 0x0, 0x1, 0x1, 0xf8, 0x78, 0x24, 0xcf, 0xc2, + 0x4c, 0xfc, 0x24, 0xc3, 0x2, 0x4c, 0x30, 0x7c, + 0xc3, 0xb, 0xdc, 0x30, 0x7c, 0xa7, 0x2, 0x42, + 0x80, + + /* U+F028 "" */ + 0x7f, 0xff, 0xfc, 0x90, 0x0, 0xc, 0x98, 0x88, + 0x8c, 0x90, 0x0, 0xc, 0x98, 0x88, 0x8c, 0x90, + 0x54, 0xc, 0x90, 0x54, 0xc, 0x7f, 0xff, 0xfc, + + /* U+F090 "" */ + 0x2, 0x0, 0x2, 0x40, 0x2, 0x40, 0x1a, 0x70, + 0xb, 0xd0, 0x42, 0x41, 0xc0, 0x3, 0xff, 0xff, + + /* U+F15C "" */ + 0x0, 0xbd, 0x0, 0x3, 0x43, 0x40, 0x9, 0x0, + 0xc0, 0x38, 0x0, 0xd0, 0xa0, 0x0, 0x68, 0x90, + 0x0, 0xc, 0x70, 0x0, 0xc, 0x1f, 0xff, 0xf4, + + /* U+F720 "" */ + 0x1, 0xe0, 0x7, 0x8b, 0x47, 0x40, 0x3a, 0xf0, + 0x2f, 0x97, 0xb4, 0xe4, 0x30, 0x39, 0xc, 0xd, + 0xd3, 0xe, 0x1e, 0xed, 0x0, 0xb8, 0x0, + + /* U+F8C7 "" */ + 0x0, 0x80, 0x0, 0x9, 0x0, 0x70, 0x91, 0xcd, + 0x9, 0xd, 0xc0, 0x90, 0xac, 0x4, 0x6, 0xd0, + 0x0, 0x97, 0x0, 0x1c, 0x2c, 0x7, 0x0, 0x7f, + 0x80 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 192, .box_w = 8, .box_h = 8, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 16, .adv_w = 192, .box_w = 10, .box_h = 8, .ofs_x = 1, .ofs_y = 2}, + {.bitmap_index = 36, .adv_w = 192, .box_w = 8, .box_h = 10, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 56, .adv_w = 192, .box_w = 11, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 89, .adv_w = 192, .box_w = 10, .box_h = 8, .ofs_x = 1, .ofs_y = 2}, + {.bitmap_index = 109, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 134, .adv_w = 192, .box_w = 6, .box_h = 4, .ofs_x = 3, .ofs_y = 4}, + {.bitmap_index = 140, .adv_w = 192, .box_w = 10, .box_h = 8, .ofs_x = 1, .ofs_y = 2}, + {.bitmap_index = 160, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 185, .adv_w = 192, .box_w = 6, .box_h = 10, .ofs_x = 3, .ofs_y = 1}, + {.bitmap_index = 200, .adv_w = 192, .box_w = 8, .box_h = 10, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 220, .adv_w = 192, .box_w = 8, .box_h = 8, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 236, .adv_w = 192, .box_w = 8, .box_h = 6, .ofs_x = 2, .ofs_y = 3}, + {.bitmap_index = 248, .adv_w = 192, .box_w = 8, .box_h = 8, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 264, .adv_w = 192, .box_w = 10, .box_h = 6, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 279, .adv_w = 192, .box_w = 2, .box_h = 8, .ofs_x = 5, .ofs_y = 2}, + {.bitmap_index = 283, .adv_w = 192, .box_w = 8, .box_h = 8, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 299, .adv_w = 192, .box_w = 12, .box_h = 9, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 326, .adv_w = 192, .box_w = 9, .box_h = 8, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 344, .adv_w = 192, .box_w = 10, .box_h = 9, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 367, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 392, .adv_w = 192, .box_w = 8, .box_h = 10, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 412, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 437, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 462, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 487, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 512, .adv_w = 192, .box_w = 8, .box_h = 10, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 532, .adv_w = 192, .box_w = 8, .box_h = 10, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 552, .adv_w = 192, .box_w = 10, .box_h = 8, .ofs_x = 1, .ofs_y = 2}, + {.bitmap_index = 572, .adv_w = 192, .box_w = 12, .box_h = 12, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 608, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 633, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 658, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 683, .adv_w = 192, .box_w = 8, .box_h = 10, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 703, .adv_w = 192, .box_w = 9, .box_h = 8, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 721, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 746, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 771, .adv_w = 192, .box_w = 12, .box_h = 8, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 795, .adv_w = 192, .box_w = 8, .box_h = 8, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 811, .adv_w = 192, .box_w = 12, .box_h = 8, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 835, .adv_w = 192, .box_w = 9, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 858, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x14, 0x9b, 0x148, 0x182, 0x1ca, 0x1d1, 0x1e1, + 0x2af, 0x2c0, 0x418, 0x47e, 0x485, 0x488, 0x48d, 0x48f, + 0x490, 0x4f9, 0x600, 0x62b, 0x74f, 0x757, 0x76a, 0x771, + 0x773, 0x7b8, 0x7ca, 0x7e9, 0x874, 0x8af, 0x8b2, 0xa52, + 0xa87, 0xad7, 0xdfb, 0xe05, 0xea1, 0xee3, 0xf4b, 0x1017, + 0x15db, 0x1782 +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 57669, .range_length = 6019, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 42, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LVGL_VERSION_MAJOR == 8 +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +#endif + +#if LVGL_VERSION_MAJOR >= 8 +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 1, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 0, +#if LVGL_VERSION_MAJOR == 8 + .cache = &cache +#endif +}; + + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LVGL_VERSION_MAJOR >= 8 +const lv_font_t material_symbols_shared_12 = { +#else +lv_font_t material_symbols_shared_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 = 12, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8 + .underline_position = 0, + .underline_thickness = 0, +#endif + .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9 + .fallback = NULL, +#endif + .user_data = NULL, +}; + + + +#endif /*#if MATERIAL_SYMBOLS_SHARED_12*/ + diff --git a/Modules/lvgl-module/Source/fonts/material_symbols_shared_16.c b/Modules/lvgl-module/source-fonts/material_symbols_shared_16.c similarity index 99% rename from Modules/lvgl-module/Source/fonts/material_symbols_shared_16.c rename to Modules/lvgl-module/source-fonts/material_symbols_shared_16.c index 36b521c0..129816e8 100644 --- a/Modules/lvgl-module/Source/fonts/material_symbols_shared_16.c +++ b/Modules/lvgl-module/source-fonts/material_symbols_shared_16.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 16 px * Bpp: 2 - * Opts: --no-compress --no-prefilter --bpp 2 --size 16 --font MaterialSymbolsRounded.ttf -r 0xE145,0xE5C3,0xE770,0xEF40,0xEBCC,0xEFE6,0xEF4A,0xE5CD,0xF15C,0xE5CA,0xE92E,0xE326,0xEB97,0xE745,0xEC1C,0xE2C7,0xF720,0xF090,0xE8AF,0xE30F,0xE8FD,0xE9F4,0xE3F4,0xE316,0xE90F,0xE894,0xE9B9,0xE159,0xE5D2,0xE28D,0xE5D4,0xE405,0xE89C,0xF8C7,0xE5D5,0xE8B6,0xE8B8,0xE9F7,0xE55D,0xF028,0xE1E0,0xE63E --format lvgl -o ../Source/fonts/material_symbols_shared_16.c --force-fast-kern-format + * Opts: --no-compress --no-prefilter --bpp 2 --size 16 --font MaterialSymbolsRounded.ttf -r 0xE145,0xE5C3,0xE770,0xEF40,0xEBCC,0xEFE6,0xEF4A,0xE5CD,0xF15C,0xE5CA,0xE92E,0xE326,0xEB97,0xE745,0xEC1C,0xE2C7,0xF720,0xF090,0xE8AF,0xE30F,0xE8FD,0xE9F4,0xE3F4,0xE316,0xE90F,0xE894,0xE9B9,0xE159,0xE5D2,0xE28D,0xE5D4,0xE405,0xE89C,0xF8C7,0xE5D5,0xE8B6,0xE8B8,0xE9F7,0xE55D,0xF028,0xE1E0,0xE63E --format lvgl -o ../source-fonts/material_symbols_shared_16.c --force-fast-kern-format ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/Modules/lvgl-module/source-fonts/material_symbols_shared_20.c b/Modules/lvgl-module/source-fonts/material_symbols_shared_20.c new file mode 100644 index 00000000..0b787055 --- /dev/null +++ b/Modules/lvgl-module/source-fonts/material_symbols_shared_20.c @@ -0,0 +1,581 @@ +/******************************************************************************* + * Size: 20 px + * Bpp: 2 + * Opts: --no-compress --no-prefilter --bpp 2 --size 20 --font MaterialSymbolsRounded.ttf -r 0xE145,0xE5C3,0xE770,0xEF40,0xEBCC,0xEFE6,0xEF4A,0xE5CD,0xF15C,0xE5CA,0xE92E,0xE326,0xEB97,0xE745,0xEC1C,0xE2C7,0xF720,0xF090,0xE8AF,0xE30F,0xE8FD,0xE9F4,0xE3F4,0xE316,0xE90F,0xE894,0xE9B9,0xE159,0xE5D2,0xE28D,0xE5D4,0xE405,0xE89C,0xF8C7,0xE5D5,0xE8B6,0xE8B8,0xE9F7,0xE55D,0xF028,0xE1E0,0xE63E --format lvgl -o ../source-fonts/material_symbols_shared_20.c --force-fast-kern-format + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef MATERIAL_SYMBOLS_SHARED_20 +#define MATERIAL_SYMBOLS_SHARED_20 1 +#endif + +#if MATERIAL_SYMBOLS_SHARED_20 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+E145 "" */ + 0x0, 0x14, 0x0, 0x0, 0x3c, 0x0, 0x0, 0x3c, + 0x0, 0x0, 0x3c, 0x0, 0x0, 0x3c, 0x0, 0x7f, + 0xff, 0xfd, 0xbf, 0xff, 0xfe, 0x0, 0x3c, 0x0, + 0x0, 0x3c, 0x0, 0x0, 0x3c, 0x0, 0x0, 0x3c, + 0x0, 0x0, 0x28, 0x0, + + /* U+E159 "" */ + 0x1a, 0xaa, 0xaa, 0xaa, 0x83, 0xff, 0xff, 0xff, + 0xfd, 0x3d, 0x0, 0x0, 0x2, 0xe3, 0xfc, 0x0, + 0x1, 0xfe, 0x39, 0xf8, 0x0, 0xf8, 0xe3, 0x82, + 0xf4, 0xbc, 0xe, 0x38, 0x3, 0xfd, 0x0, 0xe3, + 0x80, 0x6, 0x0, 0xe, 0x38, 0x0, 0x0, 0x0, + 0xe3, 0x80, 0x0, 0x0, 0xe, 0x38, 0x0, 0x0, + 0x0, 0xe3, 0x80, 0x0, 0x0, 0xe, 0x3f, 0xff, + 0xff, 0xff, 0xd1, 0xaa, 0xaa, 0xaa, 0xa8, + + /* U+E1E0 "" */ + 0x0, 0x0, 0x0, 0x0, 0x28, 0x0, 0x0, 0x7d, + 0x0, 0x0, 0xff, 0x0, 0x0, 0x38, 0x0, 0x10, + 0x38, 0x14, 0xbc, 0x38, 0x7f, 0xfd, 0x38, 0x7f, + 0x7c, 0x38, 0x7f, 0x38, 0x38, 0x2c, 0x3d, 0x7d, + 0x6c, 0x2f, 0xff, 0xfc, 0x5, 0x7d, 0x50, 0x0, + 0x38, 0x0, 0x0, 0x3c, 0x0, 0x0, 0xbe, 0x0, + 0x0, 0x7d, 0x0, 0x0, 0x0, 0x0, + + /* U+E28D "" */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb, 0xe0, + 0x0, 0x0, 0x0, 0x7f, 0xd0, 0x0, 0x0, 0x2, + 0xc3, 0x80, 0x0, 0x0, 0xb, 0xe, 0x0, 0x0, + 0x0, 0x2c, 0x38, 0x0, 0x0, 0x0, 0xb0, 0xe0, + 0x0, 0x0, 0x2, 0xc3, 0x80, 0x0, 0x0, 0xb, + 0xe, 0x0, 0x0, 0x2f, 0xff, 0xff, 0xf8, 0x2, + 0xff, 0xff, 0xff, 0xf8, 0xb, 0x0, 0x0, 0x0, + 0xe0, 0x2e, 0xaa, 0xaa, 0xab, 0x80, 0xff, 0xff, + 0xff, 0xff, 0x3, 0x80, 0x0, 0x0, 0x2c, 0x1d, + 0x34, 0x3c, 0x1c, 0x74, 0xb0, 0xe0, 0xf0, 0xb0, + 0xe2, 0xeb, 0xeb, 0xeb, 0xeb, 0xc7, 0xff, 0xff, + 0xff, 0xfd, 0x0, 0x0, 0x0, 0x0, 0x0, + + /* U+E2C7 "" */ + 0x1a, 0xa9, 0x0, 0x0, 0x3, 0xff, 0xf8, 0x0, + 0x0, 0x38, 0x2, 0xff, 0xff, 0xc3, 0x80, 0xa, + 0xaa, 0xae, 0x38, 0x0, 0x0, 0x0, 0xe3, 0x80, + 0x0, 0x0, 0xe, 0x38, 0x0, 0x0, 0x0, 0xe3, + 0x80, 0x0, 0x0, 0xe, 0x38, 0x0, 0x0, 0x0, + 0xe3, 0x80, 0x0, 0x0, 0xe, 0x38, 0x0, 0x0, + 0x0, 0xe3, 0x80, 0x0, 0x0, 0xe, 0x3f, 0xff, + 0xff, 0xff, 0xd1, 0xaa, 0xaa, 0xaa, 0xa8, + + /* U+E30F "" */ + 0x0, 0x1, 0xa8, 0x0, 0x0, 0x0, 0x3f, 0xe0, + 0x0, 0x0, 0x3, 0x8e, 0x0, 0x0, 0x0, 0x38, + 0xe0, 0x0, 0x0, 0x3, 0xce, 0x0, 0x0, 0x0, + 0x2f, 0xd0, 0x0, 0x2a, 0xa0, 0xb4, 0x2a, 0x83, + 0xff, 0x80, 0xf, 0xfe, 0x38, 0x2d, 0x3, 0xd0, + 0xe3, 0x82, 0xd0, 0x3d, 0xe, 0x3f, 0xf8, 0x20, + 0xff, 0xe1, 0xa9, 0xf, 0x82, 0xa8, 0x0, 0x3, + 0xfe, 0x0, 0x0, 0x0, 0x38, 0xe0, 0x0, 0x0, + 0x3, 0x8e, 0x0, 0x0, 0x0, 0x3e, 0xe0, 0x0, + 0x0, 0x3, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, + + /* U+E316 "" */ + 0x0, 0xe0, 0x0, 0x3f, 0x80, 0xf, 0x6e, 0x3, + 0xd0, 0xb8, 0xb4, 0x2, 0xd1, 0x0, 0x4, + + /* U+E326 "" */ + 0x6, 0xaa, 0xaa, 0xaa, 0x1, 0xff, 0xff, 0xff, + 0xf4, 0x2c, 0x0, 0x0, 0x0, 0x2, 0xc0, 0x0, + 0x1a, 0xa4, 0x2c, 0x0, 0x3, 0xff, 0xd2, 0xc0, + 0x0, 0x38, 0xe, 0x2c, 0x0, 0x3, 0x98, 0xe2, + 0xc0, 0x0, 0x38, 0xe, 0x2c, 0x0, 0x3, 0x80, + 0xe1, 0xea, 0xa4, 0x38, 0xe, 0xf, 0xff, 0xc3, + 0x80, 0xe0, 0x0, 0x0, 0x38, 0xe, 0x3f, 0xff, + 0xc3, 0xff, 0xe2, 0xaa, 0xa4, 0x1a, 0xa8, + + /* U+E3F4 "" */ + 0x1a, 0xaa, 0xaa, 0xa4, 0x7f, 0xff, 0xff, 0xfd, + 0xb0, 0x0, 0x0, 0xe, 0xb0, 0x0, 0x0, 0xe, + 0xb0, 0x0, 0x0, 0xe, 0xb0, 0x0, 0x0, 0xe, + 0xb0, 0x0, 0x0, 0xe, 0xb0, 0x0, 0x0, 0xe, + 0xb0, 0x0, 0x24, 0xe, 0xb0, 0x30, 0x7c, 0xe, + 0xb0, 0xf8, 0xfe, 0xe, 0xb1, 0xff, 0xff, 0x4e, + 0xb0, 0x55, 0x55, 0xe, 0xb0, 0x0, 0x0, 0xe, + 0x7f, 0xff, 0xff, 0xfd, 0x1a, 0xaa, 0xaa, 0xa4, + + /* U+E405 "" */ + 0x0, 0x5, 0x40, 0x3, 0xff, 0x0, 0x3f, 0xf0, + 0x3, 0xff, 0x0, 0x38, 0x0, 0x3, 0x80, 0x0, + 0x38, 0x0, 0x3, 0x80, 0x0, 0x38, 0x2, 0xff, + 0x80, 0x7f, 0xf8, 0xf, 0xff, 0x80, 0xff, 0xf8, + 0xb, 0xff, 0x40, 0x3f, 0xe0, 0x0, 0x54, 0x0, + + /* U+E55D "" */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x0, 0x0, + 0x1f, 0x40, 0x0, 0x2, 0xf8, 0x0, 0x0, 0x3a, + 0xc0, 0x0, 0xb, 0xe, 0x0, 0x0, 0xf0, 0xf0, + 0x0, 0x1d, 0x7, 0x40, 0x3, 0xc0, 0x3c, 0x0, + 0x74, 0x1, 0xd0, 0xf, 0x0, 0xf, 0x1, 0xe0, + 0xa0, 0xb4, 0x2d, 0xff, 0xf7, 0x83, 0xfe, 0xb, + 0xfc, 0x7d, 0x0, 0x7, 0xd1, 0x0, 0x0, 0x4, + + /* U+E5C3 "" */ + 0x14, 0x5, 0x1, 0x4b, 0xd2, 0xf4, 0xbd, 0xbe, + 0x2f, 0x8b, 0xe3, 0x80, 0xe0, 0x38, 0x0, 0x0, + 0x0, 0x1, 0x40, 0x50, 0x14, 0xbd, 0x2f, 0x4b, + 0xdb, 0xe2, 0xf8, 0xbe, 0x38, 0xe, 0x3, 0x80, + 0x0, 0x0, 0x0, 0x14, 0x5, 0x1, 0x4b, 0xd2, + 0xf4, 0xbd, 0xbe, 0x2f, 0x8b, 0xe3, 0x80, 0xe0, + 0x38, + + /* U+E5CA "" */ + 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x3d, 0x0, + 0x0, 0xf, 0x40, 0x0, 0x3, 0xd0, 0x10, 0x0, + 0xf4, 0x7, 0xc0, 0x3d, 0x0, 0x2f, 0xf, 0x40, + 0x0, 0xbf, 0xd0, 0x0, 0x2, 0xf4, 0x0, 0x0, + 0x5, 0x0, 0x0, + + /* U+E5CD "" */ + 0x20, 0x0, 0x9, 0x3c, 0x0, 0x2e, 0x1f, 0x0, + 0xb8, 0x7, 0xc2, 0xe0, 0x1, 0xfb, 0x80, 0x0, + 0x7e, 0x0, 0x0, 0xbf, 0x0, 0x2, 0xe7, 0xc0, + 0xb, 0x81, 0xf0, 0x2e, 0x0, 0x7c, 0x38, 0x0, + 0x1e, 0x0, 0x0, 0x0, + + /* U+E5D2 "" */ + 0xbf, 0xff, 0xff, 0xfc, 0x6a, 0xaa, 0xaa, 0xa8, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6a, 0xaa, 0xaa, 0xa8, 0x7f, 0xff, 0xff, 0xfc, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x6a, 0xaa, 0xaa, 0xa8, 0xbf, 0xff, 0xff, 0xfc, + + /* U+E5D4 "" */ + 0x14, 0xbd, 0xbe, 0x38, 0x0, 0x14, 0xbd, 0xbe, + 0x38, 0x0, 0x14, 0xbd, 0xbe, 0x38, + + /* U+E5D5 "" */ + 0x0, 0x1a, 0x40, 0x50, 0x2f, 0xff, 0x8e, 0xf, + 0x80, 0x6f, 0xe2, 0xd0, 0x0, 0x7e, 0x38, 0x0, + 0xab, 0xe7, 0x0, 0xf, 0xfe, 0xb0, 0x0, 0x0, + 0xb, 0x0, 0x0, 0x0, 0x70, 0x0, 0x0, 0x3, + 0x80, 0x0, 0x2c, 0x2d, 0x0, 0x7, 0x80, 0xf8, + 0x6, 0xf0, 0x2, 0xff, 0xf8, 0x0, 0x1, 0xa4, + 0x0, + + /* U+E63E "" */ + 0x0, 0x1, 0x6a, 0x40, 0x0, 0x0, 0x7f, 0xff, + 0xfe, 0x0, 0x7, 0xff, 0xff, 0xff, 0xe0, 0x2f, + 0xf4, 0x0, 0x1b, 0xfc, 0x3f, 0x40, 0x0, 0x0, + 0xbe, 0x28, 0x0, 0x6a, 0x40, 0x18, 0x0, 0x1f, + 0xff, 0xf8, 0x0, 0x0, 0xbf, 0xff, 0xff, 0x0, + 0x0, 0xbd, 0x0, 0x6f, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x2d, 0x0, 0x0, 0x0, + 0x0, 0xbf, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, + 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x0, + 0x4, 0x0, 0x0, + + /* U+E745 "" */ + 0x6a, 0xaa, 0x80, 0x0, 0x7f, 0xff, 0xd0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x2a, 0xaa, 0x80, 0x0, + 0xbf, 0xff, 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xb4, 0x7f, 0xf0, 0x2, 0xfc, + 0x6a, 0xa0, 0xb, 0xfc, 0x0, 0x0, 0x2d, 0xf8, + 0x0, 0x0, 0x74, 0xe0, 0x0, 0x0, 0xd3, 0x80, + 0x0, 0x0, 0xde, 0x0, 0x0, 0x0, 0xf8, 0x0, + + /* U+E770 "" */ + 0x0, 0x1, 0x80, 0x0, 0x0, 0x7, 0xf4, 0x0, + 0x0, 0xf, 0x7e, 0x0, 0x0, 0x3d, 0xb, 0xfc, + 0xb4, 0xb8, 0x1, 0xae, 0xbf, 0xf0, 0x0, 0xe, + 0xbb, 0xc0, 0x0, 0xe, 0xb1, 0x42, 0xc0, 0xe, + 0xb0, 0x7, 0xf4, 0xe, 0xb4, 0xf, 0xfe, 0xe, + 0xbe, 0x3f, 0xff, 0xce, 0xbf, 0xff, 0xff, 0xfe, + 0xbf, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xfd, + + /* U+E894 "" */ + 0x0, 0x1, 0x64, 0x0, 0x0, 0x2, 0xff, 0xfc, + 0x0, 0x1, 0xff, 0xef, 0xf4, 0x0, 0x7c, 0xb4, + 0xe3, 0xd0, 0xf, 0xf, 0xb, 0xf, 0x2, 0xfa, + 0xfa, 0xba, 0xb8, 0x3f, 0xff, 0xff, 0xff, 0xc3, + 0x82, 0xc0, 0x3c, 0x1d, 0x34, 0x2c, 0x3, 0xc1, + 0xd3, 0x42, 0xc0, 0x3c, 0x1d, 0x3e, 0xbe, 0xab, + 0xea, 0xc2, 0xff, 0xff, 0xff, 0xfc, 0x1e, 0xe, + 0xb, 0x4b, 0x80, 0xb4, 0xf0, 0xf1, 0xf0, 0x3, + 0xe7, 0x9e, 0xbc, 0x0, 0xb, 0xff, 0xff, 0x0, + 0x0, 0x1b, 0xfe, 0x40, 0x0, 0x0, 0x0, 0x0, + 0x0, + + /* U+E89C "" */ + 0x1a, 0xaa, 0x40, 0xb, 0xff, 0xfe, 0x0, 0xb0, + 0x1, 0xf8, 0xb, 0x0, 0xf, 0xe0, 0xb0, 0x0, + 0xff, 0x8b, 0x0, 0xf, 0xfd, 0xb0, 0x0, 0x15, + 0xeb, 0x0, 0xa0, 0xe, 0xb0, 0xf, 0x0, 0xeb, + 0x5, 0xf5, 0xe, 0xb0, 0xff, 0xf0, 0xeb, 0x1, + 0xf4, 0xe, 0xb0, 0xf, 0x0, 0xeb, 0x0, 0x50, + 0xe, 0xb0, 0x0, 0x0, 0xeb, 0xaa, 0xaa, 0xae, + 0x7f, 0xff, 0xff, 0xd0, 0x0, 0x0, 0x0, + + /* U+E8AF "" */ + 0xa, 0xaa, 0xaa, 0x40, 0x3, 0xff, 0xff, 0xfd, + 0x0, 0x38, 0x0, 0x0, 0xe0, 0x3, 0x80, 0x0, + 0xe, 0x0, 0x38, 0x0, 0x0, 0xe3, 0xc3, 0x80, + 0x0, 0xe, 0x3e, 0x38, 0x0, 0x0, 0xe3, 0xe3, + 0x80, 0x0, 0xe, 0x3e, 0x3a, 0xaa, 0xaa, 0xe3, + 0xe3, 0xff, 0xff, 0xfc, 0x3e, 0x3e, 0x0, 0x0, + 0x3, 0xe3, 0x86, 0xaa, 0xaa, 0xfe, 0x0, 0xbf, + 0xff, 0xff, 0xe0, 0x7, 0xff, 0xff, 0xfe, 0x0, + 0x0, 0x0, 0x3, 0xe0, 0x0, 0x0, 0x0, 0x1d, + 0x0, 0x0, 0x0, 0x0, 0x0, + + /* U+E8B6 "" */ + 0x0, 0x55, 0x0, 0x0, 0x7, 0xff, 0xd0, 0x0, + 0x1f, 0x41, 0xf4, 0x0, 0x3c, 0x0, 0x3c, 0x0, + 0x74, 0x0, 0x2c, 0x0, 0x70, 0x0, 0x1d, 0x0, + 0x74, 0x0, 0x1d, 0x0, 0x38, 0x0, 0x2c, 0x0, + 0x3d, 0x0, 0x78, 0x0, 0xf, 0xeb, 0xfc, 0x0, + 0x2, 0xff, 0x5f, 0x0, 0x0, 0x0, 0x7, 0xc0, + 0x0, 0x0, 0x1, 0xf0, 0x0, 0x0, 0x0, 0x7c, + 0x0, 0x0, 0x0, 0x1c, + + /* U+E8B8 "" */ + 0x0, 0x6, 0x90, 0x0, 0x0, 0x7, 0xfd, 0x0, + 0x0, 0x2, 0xc3, 0x80, 0x0, 0x79, 0xf0, 0xf6, + 0xd0, 0x3f, 0xf4, 0x1f, 0xfc, 0x2c, 0x10, 0x0, + 0x43, 0x8f, 0x40, 0xbe, 0x1, 0xf0, 0xf4, 0xbf, + 0xe1, 0xf0, 0x1d, 0x3f, 0xfc, 0x74, 0xb, 0x8b, + 0xff, 0x2d, 0xb, 0xc1, 0xff, 0x43, 0xe3, 0xc0, + 0xa, 0x40, 0x3c, 0x7a, 0xd0, 0x7, 0xad, 0xf, + 0xff, 0xf, 0xff, 0x0, 0x92, 0xc3, 0x86, 0x0, + 0x0, 0x7a, 0xd0, 0x0, 0x0, 0xf, 0xf0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, + + /* U+E8FD "" */ + 0x0, 0x1, 0x54, 0x0, 0x0, 0x2, 0xff, 0xfc, + 0x0, 0x1, 0xf9, 0x6, 0xf4, 0x0, 0x7c, 0x0, + 0x3, 0xd0, 0xf, 0x2, 0xfc, 0xf, 0x2, 0xd0, + 0x7a, 0xf0, 0x38, 0x3c, 0x1, 0xb, 0x2, 0xc3, + 0x80, 0x0, 0xe0, 0x1d, 0x34, 0x0, 0x3c, 0x1, + 0xd3, 0x40, 0xb, 0x0, 0x1d, 0x38, 0x0, 0x60, + 0x1, 0xc3, 0xc0, 0x0, 0x0, 0x3c, 0x1e, 0x0, + 0xf0, 0x7, 0x80, 0xf4, 0xa, 0x0, 0xf0, 0x3, + 0xe0, 0x0, 0x7c, 0x0, 0xb, 0xea, 0xbf, 0x0, + 0x0, 0x1b, 0xff, 0x40, 0x0, 0x0, 0x0, 0x0, + 0x0, + + /* U+E90F "" */ + 0x0, 0x15, 0x40, 0x0, 0x1f, 0xff, 0x40, 0xb, + 0xd0, 0x7e, 0x1, 0xe0, 0x0, 0xb4, 0x3c, 0x0, + 0x3, 0xc3, 0x80, 0x0, 0x2c, 0x34, 0x0, 0x1, + 0xc3, 0x80, 0x0, 0x2c, 0x3c, 0x0, 0x3, 0xc2, + 0xd0, 0x0, 0x78, 0xf, 0xaa, 0xaf, 0x0, 0x2f, + 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, + 0x40, 0x0, 0xaa, 0xa0, 0x0, 0x1, 0xa4, 0x0, + 0x0, 0xf, 0x40, 0x0, 0x0, 0x0, 0x0, + + /* U+E92E "" */ + 0x0, 0x1a, 0x40, 0x6, 0xaf, 0xff, 0xa8, 0xbf, + 0xff, 0xff, 0xd3, 0xc0, 0x0, 0x3c, 0x3c, 0x0, + 0x3, 0xc3, 0xc7, 0xd, 0x3c, 0x3c, 0x70, 0xd3, + 0xc3, 0xc7, 0xd, 0x3c, 0x3c, 0x70, 0xd3, 0xc3, + 0xc7, 0xd, 0x3c, 0x3c, 0x70, 0xd3, 0xc3, 0xc7, + 0xd, 0x3c, 0x3c, 0x0, 0x3, 0xc3, 0xc0, 0x0, + 0x3c, 0x2f, 0xff, 0xff, 0x80, 0xaa, 0xaa, 0xa0, + + /* U+E9B9 "" */ + 0x4, 0x1, 0x55, 0x55, 0x43, 0xf0, 0xff, 0xff, + 0xfc, 0x7f, 0xf, 0xff, 0xff, 0xd2, 0xd0, 0xbf, + 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, + 0x15, 0x55, 0x54, 0x3f, 0xf, 0xff, 0xff, 0xc7, + 0xf0, 0xff, 0xff, 0xfd, 0x2d, 0xb, 0xff, 0xff, + 0x80, 0x0, 0x0, 0x0, 0x0, 0x4, 0x1, 0x55, + 0x55, 0x43, 0xf0, 0xff, 0xff, 0xfc, 0x7f, 0xf, + 0xff, 0xff, 0xd2, 0xd0, 0xbf, 0xff, 0xf8, + + /* U+E9F4 "" */ + 0x0, 0x0, 0x7d, 0x0, 0x0, 0x0, 0x0, 0xff, + 0x0, 0x0, 0x0, 0x1, 0xd7, 0x40, 0x0, 0x0, + 0x1, 0xff, 0x40, 0x0, 0x0, 0x0, 0x7d, 0x0, + 0x0, 0x15, 0x0, 0x28, 0x0, 0x54, 0x7f, 0x40, + 0x28, 0x1, 0xfd, 0xf7, 0xc1, 0xff, 0x3, 0xdf, + 0xf3, 0xe7, 0xeb, 0xdb, 0xcf, 0x7f, 0xaf, 0x0, + 0xfa, 0xfd, 0x15, 0xb, 0x0, 0xe0, 0x54, 0x0, + 0xb, 0x0, 0xe0, 0x0, 0x0, 0x3, 0xeb, 0xc0, + 0x0, 0x0, 0x3, 0xff, 0xc0, 0x0, 0x1, 0xae, + 0x0, 0xba, 0x40, 0x3, 0xfc, 0x0, 0x3f, 0xc0, + 0x7, 0x5d, 0x0, 0x75, 0xd0, 0x7, 0xfd, 0x0, + 0x7f, 0xd0, 0x2, 0xf8, 0x0, 0x2f, 0x80, 0x0, + 0x0, 0x0, 0x0, 0x0, + + /* U+E9F7 "" */ + 0x1a, 0xaa, 0xaa, 0xa4, 0x7f, 0xff, 0xff, 0xfd, + 0x70, 0x0, 0x0, 0xe, 0xb0, 0x0, 0x0, 0xe, + 0xba, 0xaa, 0xaa, 0xae, 0xbf, 0xff, 0xff, 0xfe, + 0xb4, 0x0, 0x0, 0xe, 0xb0, 0x0, 0x0, 0xe, + 0xb0, 0x0, 0x0, 0xe, 0xb0, 0x0, 0x0, 0xe, + 0xb0, 0x0, 0x0, 0xe, 0xb0, 0x0, 0x0, 0xe, + 0xb0, 0x0, 0x0, 0xe, 0x70, 0x0, 0x0, 0xe, + 0x7f, 0xff, 0xff, 0xfd, 0x1a, 0xaa, 0xaa, 0xa4, + + /* U+EB97 "" */ + 0xa, 0xaa, 0xaa, 0xaa, 0x43, 0xff, 0xff, 0xff, + 0xfd, 0x38, 0x0, 0x0, 0x0, 0xe3, 0x80, 0x0, + 0x0, 0xe, 0x38, 0x0, 0x1, 0xc0, 0xe3, 0x8b, + 0xff, 0xdf, 0xe, 0x38, 0x0, 0x0, 0xc0, 0xe3, + 0x81, 0x40, 0x0, 0xe, 0x38, 0xb8, 0xff, 0xf0, + 0xe3, 0x87, 0x8a, 0xaa, 0xe, 0x38, 0x4, 0x0, + 0x0, 0xe3, 0x80, 0x0, 0x0, 0xe, 0x3e, 0xaa, + 0xaa, 0xaa, 0xe1, 0xff, 0xff, 0xff, 0xfc, 0x0, + 0xf, 0xff, 0x80, 0x0, 0x0, 0xaa, 0xa0, 0x0, + + /* U+EBCC "" */ + 0x0, 0x0, 0x0, 0x0, 0x3, 0x80, 0x2, 0xc0, + 0x2b, 0xea, 0xab, 0xe8, 0x7f, 0xff, 0xff, 0xfd, + 0xb0, 0x0, 0x0, 0xe, 0xba, 0xaa, 0xaa, 0xae, + 0xbf, 0xff, 0xff, 0xfe, 0xb0, 0x0, 0x0, 0xe, + 0xb0, 0x0, 0x0, 0xe, 0xb0, 0xd2, 0x87, 0xe, + 0xb0, 0x81, 0x42, 0xe, 0xb0, 0x0, 0x0, 0xe, + 0xb0, 0x81, 0x42, 0xe, 0xb0, 0xd2, 0x87, 0xe, + 0xb0, 0x0, 0x0, 0xe, 0xba, 0xaa, 0xaa, 0xae, + 0x3f, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, + + /* U+EC1C "" */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x80, 0x0, + 0x1, 0xf0, 0x0, 0x0, 0x7e, 0x0, 0x0, 0x1f, + 0xc0, 0x0, 0xb, 0xf8, 0x0, 0x2, 0xff, 0x0, + 0x0, 0xb9, 0xff, 0xa4, 0x2e, 0x6, 0xbf, 0xd7, + 0xfe, 0x90, 0xb8, 0x1a, 0xff, 0x6e, 0x0, 0x0, + 0xff, 0x80, 0x0, 0x2f, 0xe0, 0x0, 0x3, 0xf4, + 0x0, 0x0, 0xbd, 0x0, 0x0, 0xf, 0x40, 0x0, + 0x2, 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, + + /* U+EF40 "" */ + 0x14, 0x5, 0x1, 0x40, 0xbd, 0x2f, 0x4b, 0xd0, + 0xbe, 0x2f, 0x8b, 0xe0, 0x38, 0xe, 0x3, 0x80, + 0x0, 0x0, 0x0, 0x0, 0x14, 0x5, 0x0, 0x0, + 0xbd, 0x2f, 0x40, 0x60, 0xbe, 0x2f, 0x81, 0xfc, + 0x38, 0xe, 0x7, 0xfc, 0x0, 0x0, 0x1e, 0xf8, + 0x14, 0x0, 0x74, 0xe0, 0xbd, 0x0, 0xd3, 0x80, + 0xbe, 0x1, 0xde, 0x0, 0x38, 0x0, 0xf8, 0x0, + + /* U+EF4A "" */ + 0x0, 0x1, 0x54, 0x0, 0x0, 0x2, 0xff, 0xfc, + 0x0, 0x1, 0xf9, 0x6, 0xf4, 0x0, 0x7c, 0x0, + 0x3, 0xd0, 0xf, 0x0, 0x0, 0xf, 0x2, 0xd0, + 0x0, 0x0, 0x38, 0x3c, 0x0, 0x0, 0x2, 0xc3, + 0x80, 0x0, 0x0, 0x1d, 0x34, 0x0, 0x0, 0x1, + 0xd3, 0x40, 0x0, 0x0, 0x1d, 0x38, 0x0, 0x0, + 0x1, 0xc3, 0xc0, 0x0, 0x0, 0x3c, 0x1e, 0x0, + 0x0, 0x7, 0x80, 0xf4, 0x0, 0x0, 0xf0, 0x3, + 0xe0, 0x0, 0x7c, 0x0, 0xb, 0xea, 0xbf, 0x0, + 0x0, 0x1b, 0xff, 0x40, 0x0, 0x0, 0x0, 0x0, + 0x0, + + /* U+EFE6 "" */ + 0x0, 0x54, 0x1, 0x90, 0x3, 0xfe, 0x3, 0xf0, + 0xb, 0x8b, 0x4b, 0xf8, 0xf, 0x3, 0x8f, 0xfc, + 0xf, 0x3, 0x8f, 0xfc, 0xf, 0x3, 0x8f, 0xfc, + 0xf, 0x3, 0x81, 0xe0, 0xf, 0x3, 0x81, 0xd0, + 0xf, 0x3, 0x81, 0xd0, 0x1f, 0x43, 0x81, 0xd0, + 0xbf, 0xc3, 0x81, 0xd0, 0xbf, 0xd3, 0x81, 0xd0, + 0xbf, 0xd3, 0x81, 0xd0, 0x7f, 0xc2, 0xd3, 0xc0, + 0x2f, 0x80, 0xff, 0x40, 0xa, 0x0, 0x14, 0x0, + + /* U+F028 "" */ + 0xa, 0xaa, 0xaa, 0xaa, 0xa0, 0x3f, 0xff, 0xff, + 0xff, 0xfc, 0x38, 0x0, 0x0, 0x0, 0x2c, 0x38, + 0x0, 0x0, 0x0, 0x2c, 0x38, 0xb1, 0xc3, 0x4a, + 0x2c, 0x38, 0x0, 0x0, 0x0, 0x2c, 0x38, 0x50, + 0x81, 0x5, 0x2c, 0x38, 0xb1, 0xc3, 0x4a, 0x2c, + 0x38, 0x0, 0x0, 0x0, 0x2c, 0x38, 0x2, 0xaa, + 0x80, 0x2c, 0x38, 0x3, 0xff, 0xc0, 0x2c, 0x38, + 0x0, 0x0, 0x0, 0x2c, 0x3f, 0xff, 0xff, 0xff, + 0xfc, 0xa, 0xaa, 0xaa, 0xaa, 0xa0, + + /* U+F090 "" */ + 0x0, 0x5, 0x0, 0x0, 0x0, 0xe0, 0x0, 0x0, + 0xe, 0x0, 0x0, 0x0, 0xe0, 0x0, 0x0, 0xe, + 0x0, 0x0, 0x14, 0xe2, 0x40, 0x3, 0xde, 0xb8, + 0x0, 0xf, 0xfe, 0x0, 0x0, 0x3f, 0x80, 0x1, + 0x0, 0xe0, 0x4, 0xb0, 0x0, 0x0, 0xeb, 0x0, + 0x0, 0xe, 0xbf, 0xff, 0xff, 0xe2, 0xaa, 0xaa, + 0xa8, + + /* U+F15C "" */ + 0x0, 0x0, 0x69, 0x0, 0x0, 0x0, 0xb, 0xff, + 0xd0, 0x0, 0x0, 0x2f, 0x41, 0xf4, 0x0, 0x0, + 0x3c, 0x0, 0x3c, 0x0, 0x0, 0xb0, 0x0, 0x1d, + 0x0, 0x7, 0xf0, 0x0, 0xe, 0x0, 0x1f, 0x40, + 0x0, 0xf, 0x80, 0x3c, 0x0, 0x0, 0xf, 0xf0, + 0x38, 0x0, 0x0, 0x0, 0x3c, 0x38, 0x0, 0x0, + 0x0, 0x2c, 0x3c, 0x0, 0x0, 0x0, 0x2c, 0x1e, + 0x0, 0x0, 0x0, 0x7c, 0xb, 0xff, 0xff, 0xff, + 0xf0, 0x0, 0xaa, 0xaa, 0xaa, 0x80, + + /* U+F720 "" */ + 0x0, 0x1, 0x40, 0x0, 0x0, 0x1f, 0xf4, 0x0, + 0x0, 0xfd, 0xbe, 0x0, 0xb, 0xe0, 0xb, 0xe0, + 0x3e, 0x0, 0x0, 0xfc, 0xbe, 0x0, 0x0, 0xfd, + 0xbb, 0xe0, 0xb, 0xed, 0xb0, 0xfd, 0x7e, 0x1d, + 0xb0, 0x1f, 0xf4, 0x1d, 0xb0, 0x3, 0xc0, 0x1d, + 0xb0, 0x3, 0x80, 0x1d, 0xb0, 0x3, 0x80, 0x1d, + 0x78, 0x3, 0x80, 0x3d, 0x2f, 0x43, 0x82, 0xf8, + 0x7, 0xf7, 0xdf, 0xc0, 0x0, 0x7f, 0xfd, 0x0, + 0x0, 0xb, 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, + + /* U+F8C7 "" */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb, 0x0, + 0x0, 0x0, 0x0, 0xb0, 0x0, 0x0, 0x10, 0xb, + 0x0, 0x50, 0xf, 0x0, 0xb0, 0xf, 0x1, 0xd0, + 0xb, 0x0, 0x78, 0x3c, 0x0, 0xb0, 0x2, 0xc3, + 0x80, 0xb, 0x0, 0x1d, 0x34, 0x0, 0xb0, 0x1, + 0xd3, 0x40, 0x6, 0x0, 0x1d, 0x38, 0x0, 0x0, + 0x1, 0xc3, 0xc0, 0x0, 0x0, 0x3c, 0x1d, 0x0, + 0x0, 0x7, 0x80, 0xf4, 0x0, 0x0, 0xf0, 0x3, + 0xe0, 0x0, 0x7c, 0x0, 0xb, 0xea, 0xbf, 0x0, + 0x0, 0x1b, 0xff, 0x40, 0x0, 0x0, 0x0, 0x0, + 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 320, .box_w = 12, .box_h = 12, .ofs_x = 4, .ofs_y = 4}, + {.bitmap_index = 36, .adv_w = 320, .box_w = 18, .box_h = 14, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 99, .adv_w = 320, .box_w = 12, .box_h = 18, .ofs_x = 4, .ofs_y = 1}, + {.bitmap_index = 153, .adv_w = 320, .box_w = 19, .box_h = 20, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 248, .adv_w = 320, .box_w = 18, .box_h = 14, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 311, .adv_w = 320, .box_w = 18, .box_h = 18, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 392, .adv_w = 320, .box_w = 10, .box_h = 6, .ofs_x = 5, .ofs_y = 7}, + {.bitmap_index = 407, .adv_w = 320, .box_w = 18, .box_h = 14, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 470, .adv_w = 320, .box_w = 16, .box_h = 16, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 534, .adv_w = 320, .box_w = 10, .box_h = 16, .ofs_x = 5, .ofs_y = 2}, + {.bitmap_index = 574, .adv_w = 320, .box_w = 14, .box_h = 16, .ofs_x = 3, .ofs_y = 2}, + {.bitmap_index = 630, .adv_w = 320, .box_w = 14, .box_h = 14, .ofs_x = 3, .ofs_y = 3}, + {.bitmap_index = 679, .adv_w = 320, .box_w = 14, .box_h = 10, .ofs_x = 3, .ofs_y = 5}, + {.bitmap_index = 714, .adv_w = 320, .box_w = 12, .box_h = 12, .ofs_x = 4, .ofs_y = 4}, + {.bitmap_index = 750, .adv_w = 320, .box_w = 16, .box_h = 10, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 790, .adv_w = 320, .box_w = 4, .box_h = 14, .ofs_x = 8, .ofs_y = 3}, + {.bitmap_index = 804, .adv_w = 320, .box_w = 14, .box_h = 14, .ofs_x = 3, .ofs_y = 3}, + {.bitmap_index = 853, .adv_w = 320, .box_w = 20, .box_h = 15, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 928, .adv_w = 320, .box_w = 16, .box_h = 14, .ofs_x = 3, .ofs_y = 3}, + {.bitmap_index = 984, .adv_w = 320, .box_w = 16, .box_h = 14, .ofs_x = 2, .ofs_y = 3}, + {.bitmap_index = 1040, .adv_w = 320, .box_w = 18, .box_h = 18, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 1121, .adv_w = 320, .box_w = 14, .box_h = 18, .ofs_x = 3, .ofs_y = 1}, + {.bitmap_index = 1184, .adv_w = 320, .box_w = 18, .box_h = 17, .ofs_x = 1, .ofs_y = 2}, + {.bitmap_index = 1261, .adv_w = 320, .box_w = 16, .box_h = 15, .ofs_x = 2, .ofs_y = 3}, + {.bitmap_index = 1321, .adv_w = 320, .box_w = 17, .box_h = 18, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 1398, .adv_w = 320, .box_w = 18, .box_h = 18, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 1479, .adv_w = 320, .box_w = 14, .box_h = 18, .ofs_x = 3, .ofs_y = 1}, + {.bitmap_index = 1542, .adv_w = 320, .box_w = 14, .box_h = 16, .ofs_x = 3, .ofs_y = 2}, + {.bitmap_index = 1598, .adv_w = 320, .box_w = 18, .box_h = 14, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 1661, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1761, .adv_w = 320, .box_w = 16, .box_h = 16, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 1825, .adv_w = 320, .box_w = 18, .box_h = 16, .ofs_x = 1, .ofs_y = 2}, + {.bitmap_index = 1897, .adv_w = 320, .box_w = 16, .box_h = 18, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 1969, .adv_w = 320, .box_w = 14, .box_h = 18, .ofs_x = 3, .ofs_y = 1}, + {.bitmap_index = 2032, .adv_w = 320, .box_w = 16, .box_h = 14, .ofs_x = 3, .ofs_y = 3}, + {.bitmap_index = 2088, .adv_w = 320, .box_w = 18, .box_h = 18, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 2169, .adv_w = 320, .box_w = 16, .box_h = 16, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 2233, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 2303, .adv_w = 320, .box_w = 14, .box_h = 14, .ofs_x = 3, .ofs_y = 3}, + {.bitmap_index = 2352, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 2422, .adv_w = 320, .box_w = 16, .box_h = 18, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 2494, .adv_w = 320, .box_w = 18, .box_h = 18, .ofs_x = 1, .ofs_y = 1} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x14, 0x9b, 0x148, 0x182, 0x1ca, 0x1d1, 0x1e1, + 0x2af, 0x2c0, 0x418, 0x47e, 0x485, 0x488, 0x48d, 0x48f, + 0x490, 0x4f9, 0x600, 0x62b, 0x74f, 0x757, 0x76a, 0x771, + 0x773, 0x7b8, 0x7ca, 0x7e9, 0x874, 0x8af, 0x8b2, 0xa52, + 0xa87, 0xad7, 0xdfb, 0xe05, 0xea1, 0xee3, 0xf4b, 0x1017, + 0x15db, 0x1782 +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 57669, .range_length = 6019, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 42, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LVGL_VERSION_MAJOR == 8 +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +#endif + +#if LVGL_VERSION_MAJOR >= 8 +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 1, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 0, +#if LVGL_VERSION_MAJOR == 8 + .cache = &cache +#endif +}; + + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LVGL_VERSION_MAJOR >= 8 +const lv_font_t material_symbols_shared_20 = { +#else +lv_font_t material_symbols_shared_20 = { +#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 = 20, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8 + .underline_position = 0, + .underline_thickness = 0, +#endif + .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9 + .fallback = NULL, +#endif + .user_data = NULL, +}; + + + +#endif /*#if MATERIAL_SYMBOLS_SHARED_20*/ + diff --git a/Modules/lvgl-module/source-fonts/material_symbols_shared_24.c b/Modules/lvgl-module/source-fonts/material_symbols_shared_24.c new file mode 100644 index 00000000..fb9c2ff9 --- /dev/null +++ b/Modules/lvgl-module/source-fonts/material_symbols_shared_24.c @@ -0,0 +1,673 @@ +/******************************************************************************* + * Size: 24 px + * Bpp: 2 + * Opts: --no-compress --no-prefilter --bpp 2 --size 24 --font MaterialSymbolsRounded.ttf -r 0xE145,0xE5C3,0xE770,0xEF40,0xEBCC,0xEFE6,0xEF4A,0xE5CD,0xF15C,0xE5CA,0xE92E,0xE326,0xEB97,0xE745,0xEC1C,0xE2C7,0xF720,0xF090,0xE8AF,0xE30F,0xE8FD,0xE9F4,0xE3F4,0xE316,0xE90F,0xE894,0xE9B9,0xE159,0xE5D2,0xE28D,0xE5D4,0xE405,0xE89C,0xF8C7,0xE5D5,0xE8B6,0xE8B8,0xE9F7,0xE55D,0xF028,0xE1E0,0xE63E --format lvgl -o ../source-fonts/material_symbols_shared_24.c --force-fast-kern-format + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef MATERIAL_SYMBOLS_SHARED_24 +#define MATERIAL_SYMBOLS_SHARED_24 1 +#endif + +#if MATERIAL_SYMBOLS_SHARED_24 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+E145 "" */ + 0x0, 0xf, 0x0, 0x0, 0x0, 0xf0, 0x0, 0x0, + 0xf, 0x0, 0x0, 0x0, 0xf0, 0x0, 0x0, 0xf, + 0x0, 0x0, 0x0, 0xf0, 0x0, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x0, 0xf, 0x0, 0x0, + 0x0, 0xf0, 0x0, 0x0, 0xf, 0x0, 0x0, 0x0, + 0xf0, 0x0, 0x0, 0xf, 0x0, 0x0, 0x0, 0xf0, + 0x0, + + /* U+E159 "" */ + 0x7f, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x2f, 0xff, + 0x40, 0x0, 0x1, 0xff, 0xf7, 0xf0, 0x0, 0xf, + 0xdf, 0xf0, 0xbe, 0x0, 0xbe, 0xf, 0xf0, 0xf, + 0xd7, 0xf0, 0xf, 0xf0, 0x1, 0xff, 0x40, 0xf, + 0xf0, 0x0, 0x28, 0x0, 0xf, 0xf0, 0x0, 0x0, + 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0xf, 0xf0, + 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, + 0xf, 0xf0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xfd, + + /* U+E1E0 "" */ + 0x0, 0x5, 0x0, 0x0, 0x0, 0xf0, 0x0, 0x0, + 0x3f, 0xc0, 0x0, 0x7, 0xfd, 0x0, 0x0, 0xf, + 0x0, 0x0, 0x0, 0xf0, 0x0, 0x7d, 0xf, 0xf, + 0xff, 0xf0, 0xf0, 0xff, 0xff, 0xf, 0xf, 0xf7, + 0xd0, 0xf0, 0xff, 0x3c, 0xf, 0x3, 0xc3, 0xc0, + 0xf0, 0x3c, 0x3f, 0xff, 0xff, 0xc1, 0xff, 0xff, + 0xf4, 0x0, 0xf, 0x0, 0x0, 0x0, 0xf0, 0x0, + 0x0, 0xf, 0x40, 0x0, 0x3, 0xfc, 0x0, 0x0, + 0x3f, 0xc0, 0x0, 0x1, 0xf4, 0x0, + + /* U+E28D "" */ + 0x0, 0x0, 0x2f, 0x80, 0x0, 0x0, 0x0, 0xb, + 0xfe, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xf0, 0x0, + 0x0, 0x0, 0xf, 0xf, 0x0, 0x0, 0x0, 0x0, + 0xf0, 0xf0, 0x0, 0x0, 0x0, 0xf, 0xf, 0x0, + 0x0, 0x0, 0x0, 0xf0, 0xf0, 0x0, 0x0, 0x0, + 0xf, 0xf, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xf0, + 0x0, 0x0, 0x0, 0xf, 0xf, 0x0, 0x0, 0x7, + 0xff, 0xff, 0xff, 0xfd, 0x0, 0xff, 0xff, 0xff, + 0xff, 0xf0, 0xf, 0x0, 0x0, 0x0, 0xf, 0x0, + 0xf0, 0x0, 0x0, 0x0, 0xf0, 0xf, 0xff, 0xff, + 0xff, 0xff, 0x1, 0xff, 0xff, 0xff, 0xff, 0xf4, + 0x2d, 0x0, 0x0, 0x0, 0x7, 0x83, 0xc3, 0xc0, + 0xf0, 0x3c, 0x3c, 0x3c, 0x3c, 0xf, 0x3, 0xc3, + 0xc7, 0x83, 0xc0, 0xf0, 0x3c, 0x2d, 0x7f, 0xff, + 0xff, 0xff, 0xff, 0xd2, 0xff, 0xff, 0xff, 0xff, + 0xf8, + + /* U+E2C7 "" */ + 0x7f, 0xff, 0x40, 0x0, 0x0, 0xff, 0xff, 0xe0, + 0x0, 0x0, 0xf0, 0x1, 0xff, 0xff, 0xfd, 0xf0, + 0x0, 0x7f, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, + 0xf, 0xf0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, + 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0xf, + 0xf0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, + 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0xf, 0xf0, + 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, + 0xf, 0xf0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xfd, + + /* U+E30F "" */ + 0x0, 0x3, 0xff, 0xc0, 0x0, 0x0, 0x3, 0xff, + 0xc0, 0x0, 0x0, 0x3, 0xc3, 0xc0, 0x0, 0x0, + 0x3, 0xc3, 0xc0, 0x0, 0x0, 0x3, 0xc3, 0xc0, + 0x0, 0x0, 0x3, 0xff, 0xc0, 0x0, 0x0, 0x0, + 0xff, 0x0, 0x0, 0xff, 0xf0, 0x3c, 0xf, 0xff, + 0xff, 0xfc, 0x0, 0x3f, 0xff, 0xf0, 0x3f, 0x0, + 0xfc, 0xf, 0xf0, 0x3f, 0x0, 0xfc, 0xf, 0xff, + 0xfc, 0x0, 0x3f, 0xff, 0xff, 0xf0, 0x3c, 0xf, + 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x3, + 0xff, 0xc0, 0x0, 0x0, 0x3, 0xc3, 0xc0, 0x0, + 0x0, 0x3, 0xc3, 0xc0, 0x0, 0x0, 0x3, 0xc3, + 0xc0, 0x0, 0x0, 0x3, 0xff, 0xc0, 0x0, 0x0, + 0x3, 0xff, 0xc0, 0x0, + + /* U+E316 "" */ + 0x0, 0x14, 0x0, 0x0, 0xbd, 0x0, 0x2, 0xff, + 0x40, 0xb, 0xc7, 0xd0, 0x2f, 0x1, 0xf4, 0xbc, + 0x0, 0x7c, 0xb0, 0x0, 0x1c, + + /* U+E326 "" */ + 0x1f, 0xff, 0xff, 0xff, 0xfc, 0x3f, 0xff, 0xff, + 0xff, 0xfc, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x3c, + 0x0, 0x0, 0x0, 0x0, 0x3c, 0x0, 0x0, 0xbf, + 0xfe, 0x3c, 0x0, 0x0, 0xff, 0xff, 0x3c, 0x0, + 0x0, 0xf0, 0xf, 0x3c, 0x0, 0x0, 0xf2, 0x8f, + 0x3c, 0x0, 0x0, 0xf0, 0xf, 0x3c, 0x0, 0x0, + 0xf0, 0xf, 0x3c, 0x0, 0x0, 0xf0, 0xf, 0x3f, + 0xff, 0xf0, 0xf0, 0xf, 0x1f, 0xff, 0xf0, 0xf0, + 0xf, 0x0, 0x0, 0x0, 0xf0, 0xf, 0xff, 0xff, + 0xf0, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xbf, 0xfe, + + /* U+E3F4 "" */ + 0x7f, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, + 0xff, 0xf0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, + 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0xff, 0x0, + 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0xff, + 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, + 0xff, 0x0, 0x0, 0x10, 0xf, 0xf0, 0x14, 0xf, + 0x40, 0xff, 0x3, 0xc2, 0xfc, 0xf, 0xf0, 0xff, + 0x7f, 0xf0, 0xff, 0x1f, 0xff, 0xff, 0x4f, 0xf0, + 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xf, + 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, + 0xfd, + + /* U+E405 "" */ + 0x0, 0xf, 0xff, 0x0, 0xf, 0xff, 0x0, 0xf, + 0xff, 0x0, 0xf, 0xff, 0x0, 0xf, 0x0, 0x0, + 0xf, 0x0, 0x0, 0xf, 0x0, 0x0, 0xf, 0x0, + 0x0, 0xf, 0x0, 0x0, 0xf, 0x0, 0xb, 0xef, + 0x0, 0x3f, 0xff, 0x0, 0xbf, 0xff, 0x0, 0xff, + 0xff, 0x0, 0xff, 0xff, 0x0, 0xbf, 0xfe, 0x0, + 0x3f, 0xfc, 0x0, 0xb, 0xe0, 0x0, + + /* U+E55D "" */ + 0x0, 0x1, 0x40, 0x0, 0x0, 0x3, 0xc0, 0x0, + 0x0, 0xb, 0xe0, 0x0, 0x0, 0xf, 0xf0, 0x0, + 0x0, 0x1e, 0xb4, 0x0, 0x0, 0x3d, 0x7c, 0x0, + 0x0, 0x7c, 0x3d, 0x0, 0x0, 0xf4, 0x1f, 0x0, + 0x0, 0xf0, 0xf, 0x0, 0x2, 0xe0, 0xb, 0x80, + 0x3, 0xc0, 0x3, 0xc0, 0xb, 0x80, 0x2, 0xe0, + 0xf, 0x0, 0x0, 0xf0, 0x1e, 0xb, 0xe0, 0xb4, + 0x3e, 0xbf, 0xfe, 0xbc, 0x7f, 0xf8, 0x2f, 0xfd, + 0xbf, 0x40, 0x1, 0xfe, 0x64, 0x0, 0x0, 0x19, + + /* U+E5C3 "" */ + 0x7d, 0x7, 0xd0, 0x7d, 0xff, 0xf, 0xf0, 0xff, + 0xff, 0xf, 0xf0, 0xff, 0x7d, 0x7, 0xd0, 0x7d, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7d, 0x7, 0xd0, 0x7d, 0xff, 0xf, 0xf0, 0xff, + 0xff, 0xf, 0xf0, 0xff, 0x7d, 0x7, 0xd0, 0x7d, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7d, 0x7, 0xd0, 0x7d, 0xff, 0xf, 0xf0, 0xff, + 0xff, 0xf, 0xf0, 0xff, 0x7d, 0x7, 0xd0, 0x7d, + + /* U+E5CA "" */ + 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x3e, + 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x3, 0xf0, + 0x0, 0x0, 0xf, 0xc0, 0x60, 0x0, 0x3f, 0x0, + 0xbc, 0x0, 0xfc, 0x0, 0x3f, 0x3, 0xf0, 0x0, + 0xf, 0xcf, 0xc0, 0x0, 0x3, 0xff, 0x0, 0x0, + 0x0, 0xfc, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, + + /* U+E5CD "" */ + 0x10, 0x0, 0x0, 0x4b, 0x40, 0x0, 0x3d, 0x7d, + 0x0, 0xf, 0xc1, 0xf4, 0x3, 0xf0, 0x7, 0xd0, + 0xfc, 0x0, 0x1f, 0xbf, 0x0, 0x0, 0x7f, 0xc0, + 0x0, 0x3, 0xf8, 0x0, 0x0, 0xff, 0xd0, 0x0, + 0x3f, 0x1f, 0x40, 0xf, 0xc0, 0x7d, 0x3, 0xf0, + 0x1, 0xf4, 0xbc, 0x0, 0x7, 0xd6, 0x0, 0x0, + 0x18, + + /* U+E5D2 "" */ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + + /* U+E5D4 "" */ + 0x7d, 0xff, 0xff, 0x7d, 0x0, 0x0, 0x7d, 0xff, + 0xff, 0x7d, 0x0, 0x0, 0x7d, 0xff, 0xff, 0x7d, + + /* U+E5D5 "" */ + 0x0, 0x2f, 0xf8, 0xf, 0x2, 0xff, 0xff, 0x8f, + 0xf, 0xe0, 0xb, 0xef, 0x2f, 0x0, 0x0, 0xff, + 0x3c, 0x0, 0x0, 0x3f, 0xb8, 0x0, 0x3f, 0xff, + 0xf0, 0x0, 0x3f, 0xff, 0xf0, 0x0, 0x0, 0x0, + 0xf0, 0x0, 0x0, 0x0, 0xf0, 0x0, 0x0, 0x0, + 0xb8, 0x0, 0x0, 0x18, 0x3c, 0x0, 0x0, 0x3c, + 0x2f, 0x0, 0x0, 0xf8, 0xf, 0xe0, 0xb, 0xe0, + 0x2, 0xff, 0xff, 0x80, 0x0, 0x2f, 0xf8, 0x0, + + /* U+E63E "" */ + 0x0, 0x1, 0xbf, 0xfe, 0x40, 0x0, 0x0, 0x2f, + 0xff, 0xff, 0xf9, 0x0, 0x2, 0xff, 0xff, 0xff, + 0xff, 0xc0, 0xf, 0xff, 0x90, 0x1, 0xbf, 0xf4, + 0x3f, 0xe0, 0x0, 0x0, 0xb, 0xfd, 0x3f, 0x40, + 0x0, 0x0, 0x0, 0xfd, 0x4, 0x0, 0x6f, 0xf9, + 0x0, 0x14, 0x0, 0x7, 0xff, 0xff, 0xe0, 0x0, + 0x0, 0x2f, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x3f, + 0xd0, 0x7, 0xfc, 0x0, 0x0, 0x19, 0x0, 0x0, + 0x64, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x7, 0xe0, 0x0, 0x0, 0x0, 0x0, + 0xf, 0xf4, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xf8, + 0x0, 0x0, 0x0, 0x0, 0xf, 0xf4, 0x0, 0x0, + 0x0, 0x0, 0x7, 0xe0, 0x0, 0x0, + + /* U+E745 "" */ + 0xff, 0xff, 0xfc, 0x0, 0xf, 0xff, 0xff, 0xc0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xff, 0xff, 0xfc, 0x0, 0xf, 0xff, + 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xb8, 0xff, 0xfc, 0x0, 0x2f, + 0xef, 0xff, 0xc0, 0xb, 0xff, 0x0, 0x0, 0x2, + 0xff, 0xe0, 0x0, 0x0, 0xb8, 0xf8, 0x0, 0x0, + 0x2e, 0x2e, 0x0, 0x0, 0x3, 0x8b, 0x80, 0x0, + 0x0, 0x3e, 0xe0, 0x0, 0x0, 0x3, 0xf8, 0x0, + + /* U+E770 "" */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x80, + 0x0, 0x0, 0x3, 0xff, 0x0, 0x0, 0x0, 0x7c, + 0xbd, 0x0, 0x0, 0xf, 0x42, 0xff, 0xdf, 0x3, + 0xe0, 0x7, 0xff, 0xfd, 0xbc, 0x0, 0x0, 0xff, + 0xff, 0x0, 0x0, 0xf, 0xf7, 0xd0, 0x0, 0x0, + 0xff, 0x8, 0xb, 0x40, 0xf, 0xf0, 0x1, 0xfe, + 0x0, 0xff, 0x0, 0x3f, 0xfc, 0xf, 0xfc, 0xf, + 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xff, 0xdf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf0, + + /* U+E894 "" */ + 0x0, 0x6, 0xff, 0x90, 0x0, 0x0, 0x7f, 0xff, + 0xfd, 0x0, 0x2, 0xff, 0xef, 0xff, 0x80, 0xb, + 0xd7, 0xc7, 0xcb, 0xe0, 0x1f, 0xb, 0x43, 0xd1, + 0xf4, 0x3d, 0xf, 0x2, 0xe0, 0xbc, 0x7f, 0xff, + 0xff, 0xff, 0xfd, 0xbf, 0xff, 0xff, 0xff, 0xfe, + 0xf0, 0x2d, 0x0, 0xf0, 0xf, 0xf0, 0x2d, 0x0, + 0xb4, 0xf, 0xf0, 0x2d, 0x0, 0xb4, 0xf, 0xf0, + 0x2d, 0x0, 0xf0, 0xf, 0xbf, 0xff, 0xff, 0xff, + 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xfd, 0x3d, 0xf, + 0x2, 0xe0, 0xbc, 0x1f, 0xb, 0x43, 0xd1, 0xf4, + 0xb, 0xd7, 0xc7, 0xcb, 0xe0, 0x2, 0xff, 0xef, + 0xff, 0x80, 0x0, 0x7f, 0xff, 0xfd, 0x0, 0x0, + 0x6, 0xff, 0x90, 0x0, + + /* U+E89C "" */ + 0x7f, 0xff, 0xf4, 0x0, 0xff, 0xff, 0xfe, 0x0, + 0xf0, 0x0, 0x3f, 0x80, 0xf0, 0x0, 0x3f, 0xe0, + 0xf0, 0x0, 0x3f, 0xf8, 0xf0, 0x0, 0x3f, 0xfd, + 0xf0, 0x0, 0x3f, 0xff, 0xf0, 0x0, 0x0, 0xf, + 0xf0, 0x3, 0xc0, 0xf, 0xf0, 0x3, 0xc0, 0xf, + 0xf0, 0x3, 0xc0, 0xf, 0xf0, 0xff, 0xff, 0xf, + 0xf0, 0xff, 0xff, 0xf, 0xf0, 0x3, 0xc0, 0xf, + 0xf0, 0x3, 0xc0, 0xf, 0xf0, 0x3, 0xc0, 0xf, + 0xf0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0xf, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xfd, + + /* U+E8AF "" */ + 0x7f, 0xff, 0xff, 0xf4, 0x0, 0xff, 0xff, 0xff, + 0xfc, 0x0, 0xf0, 0x0, 0x0, 0x3c, 0x0, 0xf0, + 0x0, 0x0, 0x3c, 0x0, 0xf0, 0x0, 0x0, 0x3c, + 0x3d, 0xf0, 0x0, 0x0, 0x3c, 0x3f, 0xf0, 0x0, + 0x0, 0x3c, 0x3f, 0xf0, 0x0, 0x0, 0x3c, 0x3f, + 0xf0, 0x0, 0x0, 0x3c, 0x3f, 0xf7, 0xff, 0xff, + 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xf4, 0x3f, 0xfd, + 0x0, 0x0, 0x0, 0x3f, 0xf4, 0x0, 0x0, 0x0, + 0xbf, 0x50, 0xff, 0xff, 0xff, 0xff, 0x0, 0xff, + 0xff, 0xff, 0xff, 0x0, 0x7f, 0xff, 0xff, 0xff, + 0x0, 0x0, 0x0, 0x0, 0xbf, 0x0, 0x0, 0x0, + 0x0, 0x2f, 0x0, 0x0, 0x0, 0x0, 0x5, + + /* U+E8B6 "" */ + 0x1, 0xbf, 0x90, 0x0, 0x0, 0xbf, 0xff, 0x80, + 0x0, 0x2f, 0x40, 0x7e, 0x0, 0x7, 0xc0, 0x0, + 0xf4, 0x0, 0xb4, 0x0, 0x7, 0x80, 0xf, 0x0, + 0x0, 0x3c, 0x0, 0xf0, 0x0, 0x3, 0xc0, 0xf, + 0x0, 0x0, 0x3c, 0x0, 0xb4, 0x0, 0x7, 0x80, + 0x7, 0xc0, 0x0, 0xf0, 0x0, 0x2f, 0x40, 0x7f, + 0x0, 0x0, 0xbf, 0xff, 0xfc, 0x0, 0x1, 0xbf, + 0x83, 0xf0, 0x0, 0x0, 0x0, 0xf, 0xc0, 0x0, + 0x0, 0x0, 0x3f, 0x0, 0x0, 0x0, 0x0, 0xfc, + 0x0, 0x0, 0x0, 0x3, 0xe0, 0x0, 0x0, 0x0, + 0x8, + + /* U+E8B8 "" */ + 0x0, 0x2, 0xff, 0x0, 0x0, 0x0, 0x3, 0xff, + 0x80, 0x0, 0x0, 0x7, 0x83, 0xc0, 0x0, 0xb, + 0x9f, 0x83, 0xd6, 0xd0, 0x2f, 0xff, 0x43, 0xff, + 0xf0, 0x3d, 0xb8, 0x0, 0x7d, 0xb8, 0xb8, 0x0, + 0x14, 0x0, 0x3c, 0xbd, 0x2, 0xff, 0x40, 0xbc, + 0x2f, 0x47, 0xff, 0xc3, 0xf4, 0xf, 0x4b, 0xff, + 0xd3, 0xd0, 0xf, 0x4b, 0xff, 0xd3, 0xd0, 0x2f, + 0x47, 0xff, 0xc3, 0xf4, 0xbd, 0x2, 0xff, 0x40, + 0xbc, 0xb8, 0x0, 0x14, 0x0, 0x3c, 0x3d, 0xb8, + 0x0, 0x7d, 0xb8, 0x2f, 0xff, 0x43, 0xff, 0xf0, + 0xb, 0x9f, 0x83, 0xd6, 0xd0, 0x0, 0x7, 0x83, + 0xc0, 0x0, 0x0, 0x3, 0xff, 0x80, 0x0, 0x0, + 0x2, 0xff, 0x0, 0x0, + + /* U+E8FD "" */ + 0x0, 0x6, 0xff, 0x90, 0x0, 0x0, 0x7f, 0xff, + 0xfd, 0x0, 0x2, 0xfd, 0x0, 0x7f, 0x80, 0xb, + 0xd0, 0x0, 0x7, 0xe0, 0x1f, 0x0, 0xbe, 0x0, + 0xf4, 0x3d, 0x3, 0xff, 0xc0, 0x7c, 0x7c, 0x3, + 0x42, 0xd0, 0x3d, 0xb4, 0x0, 0x1, 0xd0, 0x1e, + 0xf0, 0x0, 0x3, 0xc0, 0xf, 0xf0, 0x0, 0xf, + 0x0, 0xf, 0xf0, 0x0, 0x2d, 0x0, 0xf, 0xf0, + 0x0, 0x3c, 0x0, 0xf, 0xb4, 0x0, 0x0, 0x0, + 0x1e, 0x7c, 0x0, 0x14, 0x0, 0x3d, 0x3d, 0x0, + 0x3c, 0x0, 0x7c, 0x1f, 0x0, 0x3c, 0x0, 0xf4, + 0xb, 0xd0, 0x0, 0x7, 0xe0, 0x2, 0xfd, 0x0, + 0x7f, 0x80, 0x0, 0x7f, 0xff, 0xfd, 0x0, 0x0, + 0x6, 0xff, 0x90, 0x0, + + /* U+E90F "" */ + 0x0, 0x6f, 0xf4, 0x0, 0x2, 0xff, 0xff, 0x40, + 0xf, 0xd0, 0x1b, 0xd0, 0x2f, 0x0, 0x2, 0xf0, + 0x3c, 0x0, 0x0, 0xb8, 0x78, 0x0, 0x0, 0x3c, + 0xb4, 0x0, 0x0, 0x3c, 0xb4, 0x0, 0x0, 0x3c, + 0xb4, 0x0, 0x0, 0x3c, 0x78, 0x0, 0x0, 0x3c, + 0x3c, 0x0, 0x0, 0xb8, 0x2f, 0x0, 0x2, 0xf0, + 0xb, 0xff, 0xff, 0xd0, 0x2, 0xff, 0xff, 0x40, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xfe, 0x0, + 0x0, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xf, 0xe0, 0x0, 0x0, 0x7, 0xc0, 0x0, + + /* U+E92E "" */ + 0x0, 0x3f, 0xfc, 0x0, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x3c, 0x0, 0x0, 0x3c, + 0x3c, 0x0, 0x0, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x0, 0x0, 0x3c, 0x3c, 0x0, 0x0, 0x3c, + 0x3f, 0xff, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xf4, + + /* U+E9B9 "" */ + 0x7d, 0x7, 0xff, 0xff, 0xfd, 0xff, 0xf, 0xff, + 0xff, 0xff, 0xff, 0xf, 0xff, 0xff, 0xff, 0x7d, + 0x7, 0xff, 0xff, 0xfd, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7d, 0x7, + 0xff, 0xff, 0xfd, 0xff, 0xf, 0xff, 0xff, 0xff, + 0xff, 0xf, 0xff, 0xff, 0xff, 0x7d, 0x7, 0xff, + 0xff, 0xfd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x7d, 0x7, 0xff, 0xff, + 0xfd, 0xff, 0xf, 0xff, 0xff, 0xff, 0xff, 0xf, + 0xff, 0xff, 0xff, 0x7d, 0x7, 0xff, 0xff, 0xfd, + + /* U+E9F4 "" */ + 0x0, 0x0, 0xb, 0xe0, 0x0, 0x0, 0x0, 0x0, + 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x3c, 0x7c, + 0x0, 0x0, 0x0, 0x0, 0x3c, 0x7c, 0x0, 0x0, + 0x0, 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x0, + 0xb, 0xe0, 0x0, 0x0, 0x5, 0x0, 0x3, 0x80, + 0x0, 0x50, 0x3f, 0xc0, 0x3, 0x80, 0x3, 0xfc, + 0xbf, 0xe0, 0xb, 0xd0, 0xb, 0xfe, 0xf0, 0xf0, + 0x3f, 0xfc, 0xf, 0xf, 0xfa, 0xfe, 0xf9, 0x7f, + 0xbf, 0xaf, 0x7f, 0xeb, 0xf0, 0xf, 0xeb, 0xfd, + 0x1a, 0x41, 0xe0, 0xb, 0x41, 0xa4, 0x0, 0x1, + 0xe0, 0xb, 0x40, 0x0, 0x0, 0x0, 0xf4, 0x1f, + 0x0, 0x0, 0x0, 0x0, 0xbf, 0xfe, 0x0, 0x0, + 0x0, 0x0, 0xfb, 0xef, 0x0, 0x0, 0x0, 0xbf, + 0xc0, 0x3, 0xfe, 0x0, 0x2, 0xff, 0x80, 0x2, + 0xff, 0x80, 0x3, 0xc3, 0xc0, 0x3, 0xc3, 0xc0, + 0x3, 0xc3, 0xc0, 0x3, 0xc3, 0xc0, 0x2, 0xff, + 0x80, 0x2, 0xff, 0x80, 0x0, 0xbe, 0x0, 0x0, + 0xbe, 0x0, + + /* U+E9F7 "" */ + 0x7f, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, + 0xff, 0xf0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, + 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, + 0xff, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, + 0x0, 0xff, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, + 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xf, 0xf0, + 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xf, + 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, + 0xfd, + + /* U+EB97 "" */ + 0x7f, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0xf, 0xf0, + 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x34, + 0xf, 0xf0, 0xaa, 0xaa, 0x3e, 0xf, 0xf0, 0xaa, + 0xaa, 0x3e, 0xf, 0xf0, 0x0, 0x0, 0x34, 0xf, + 0xf0, 0x1c, 0x0, 0x0, 0xf, 0xf0, 0xbc, 0xaa, + 0xaa, 0xf, 0xf0, 0xbc, 0xaa, 0xaa, 0xf, 0xf0, + 0x1c, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, + 0xf, 0xf0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xfd, + 0x0, 0xf, 0xff, 0xf0, 0x0, 0x0, 0xf, 0xff, + 0xf0, 0x0, + + /* U+EBCC "" */ + 0x3, 0xc0, 0x0, 0x3c, 0x0, 0x3c, 0x0, 0x3, + 0xc0, 0x7f, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, + 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0xff, 0x0, + 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, + 0xff, 0x0, 0x0, 0x0, 0xf, 0xf0, 0xf0, 0xf0, + 0xf0, 0xff, 0xf, 0xf, 0xf, 0xf, 0xf0, 0x0, + 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xf, 0xf0, + 0xf0, 0xf0, 0xf0, 0xff, 0xf, 0xf, 0xf, 0xf, + 0xf0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, + 0xf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, + 0xff, 0xfd, + + /* U+EC1C "" */ + 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x2f, 0x0, + 0x0, 0x0, 0xbe, 0x0, 0x0, 0x2, 0xfc, 0x0, + 0x0, 0xb, 0xf8, 0x0, 0x0, 0x2f, 0xf0, 0x0, + 0x0, 0xbf, 0xe0, 0x0, 0x3, 0xf7, 0xe4, 0x0, + 0xf, 0xcf, 0xff, 0xfd, 0x3f, 0x1, 0x6b, 0xfe, + 0xbf, 0xe9, 0x40, 0xfc, 0x7f, 0xff, 0xf3, 0xf0, + 0x0, 0x1b, 0xdf, 0xc0, 0x0, 0xb, 0xfe, 0x0, + 0x0, 0xf, 0xf8, 0x0, 0x0, 0x2f, 0xe0, 0x0, + 0x0, 0x3f, 0x80, 0x0, 0x0, 0xbe, 0x0, 0x0, + 0x0, 0xf8, 0x0, 0x0, 0x1, 0xe0, 0x0, 0x0, + + /* U+EF40 "" */ + 0x7d, 0x7, 0xd0, 0x7d, 0xf, 0xf0, 0xff, 0xf, + 0xf0, 0xff, 0xf, 0xf0, 0xff, 0x7, 0xd0, 0x7d, + 0x7, 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x7d, 0x7, 0xd0, 0x0, 0xf, + 0xf0, 0xff, 0x0, 0xb8, 0xff, 0xf, 0xf0, 0x2f, + 0xe7, 0xd0, 0x7d, 0xb, 0xff, 0x0, 0x0, 0x2, + 0xff, 0xe0, 0x0, 0x0, 0xb8, 0xf8, 0x7d, 0x0, + 0x2e, 0x2e, 0xf, 0xf0, 0x3, 0x8b, 0x80, 0xff, + 0x0, 0x3e, 0xe0, 0x7, 0xd0, 0x3, 0xf8, 0x0, + + /* U+EF4A "" */ + 0x0, 0x6, 0xff, 0x90, 0x0, 0x0, 0x7f, 0xff, + 0xfd, 0x0, 0x2, 0xfd, 0x0, 0x7f, 0x80, 0xb, + 0xd0, 0x0, 0x7, 0xe0, 0x1f, 0x0, 0x0, 0x0, + 0xf4, 0x3d, 0x0, 0x0, 0x0, 0x7c, 0x7c, 0x0, + 0x0, 0x0, 0x3d, 0xb4, 0x0, 0x0, 0x0, 0x1e, + 0xf0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, + 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0xf, 0xf0, + 0x0, 0x0, 0x0, 0xf, 0xb4, 0x0, 0x0, 0x0, + 0x1e, 0x7c, 0x0, 0x0, 0x0, 0x3d, 0x3d, 0x0, + 0x0, 0x0, 0x7c, 0x1f, 0x0, 0x0, 0x0, 0xf4, + 0xb, 0xd0, 0x0, 0x7, 0xe0, 0x2, 0xfd, 0x0, + 0x7f, 0x80, 0x0, 0x7f, 0xff, 0xfd, 0x0, 0x0, + 0x6, 0xff, 0x90, 0x0, + + /* U+EFE6 "" */ + 0x0, 0xbe, 0x0, 0x3f, 0xc0, 0x3f, 0xfc, 0x3, + 0xfc, 0xb, 0x82, 0xe0, 0xbf, 0xe0, 0xf0, 0xf, + 0xf, 0xff, 0xf, 0x0, 0xf0, 0xff, 0xf0, 0xf0, + 0xf, 0xf, 0xff, 0xf, 0x0, 0xf0, 0xff, 0xf0, + 0xf0, 0xf, 0x0, 0xf0, 0xf, 0x0, 0xf0, 0xf, + 0x0, 0xf0, 0xf, 0x0, 0xf0, 0xf, 0x0, 0xf0, + 0xf, 0xf, 0xff, 0xf, 0x0, 0xf0, 0xff, 0xf0, + 0xf0, 0xf, 0xf, 0xff, 0xf, 0x0, 0xf0, 0xff, + 0xf0, 0xf0, 0xf, 0xb, 0xfe, 0xb, 0x82, 0xe0, + 0x3f, 0xc0, 0x3f, 0xfc, 0x3, 0xfc, 0x0, 0xbe, + 0x0, + + /* U+F028 "" */ + 0x7f, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, + 0xff, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xff, 0xf, 0xf, 0xf, 0xf, + 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x5, + 0x5, 0x5, 0x5, 0xf, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xff, 0x5, 0x5, 0x5, 0x5, 0xf, 0xf0, + 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x3f, 0xff, + 0xc0, 0xf, 0xf0, 0x3, 0xff, 0xfc, 0x0, 0xff, + 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfd, + + /* U+F090 "" */ + 0x0, 0x3, 0xc0, 0x0, 0x0, 0x3, 0xc0, 0x0, + 0x0, 0x3, 0xc0, 0x0, 0x0, 0x3, 0xc0, 0x0, + 0x0, 0x3, 0xc0, 0x0, 0x0, 0x3, 0xc0, 0x0, + 0x1, 0xd3, 0xc7, 0x40, 0x1, 0xf7, 0xdf, 0x40, + 0x0, 0xbf, 0xfd, 0x0, 0x0, 0x2f, 0xf4, 0x0, + 0x0, 0xb, 0xd0, 0x0, 0xf0, 0x1, 0x40, 0xf, + 0xf0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0xf, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xfd, + + /* U+F15C "" */ + 0x0, 0x0, 0xbf, 0xe0, 0x0, 0x0, 0x0, 0x7f, + 0xff, 0xd0, 0x0, 0x0, 0x1f, 0x80, 0x2f, 0x40, + 0x0, 0x3, 0xd0, 0x0, 0x7c, 0x0, 0x0, 0xb8, + 0x0, 0x2, 0xe0, 0x0, 0x2f, 0x0, 0x0, 0xf, + 0x0, 0x1f, 0xf0, 0x0, 0x0, 0xf0, 0x3, 0xe0, + 0x0, 0x0, 0xf, 0xe0, 0xb8, 0x0, 0x0, 0x0, + 0xff, 0xcf, 0x0, 0x0, 0x0, 0x0, 0x7e, 0xf0, + 0x0, 0x0, 0x0, 0x1, 0xff, 0x0, 0x0, 0x0, + 0x0, 0xf, 0xb8, 0x0, 0x0, 0x0, 0x1, 0xf3, + 0xe0, 0x0, 0x0, 0x0, 0x7e, 0x1f, 0xff, 0xff, + 0xff, 0xff, 0xc0, 0x2f, 0xff, 0xff, 0xff, 0xe0, + + /* U+F720 "" */ + 0x0, 0x1, 0xf4, 0x0, 0x0, 0x1, 0xff, 0xf4, + 0x0, 0x0, 0xbf, 0x5f, 0xe0, 0x0, 0xbf, 0x40, + 0x1f, 0xe0, 0x3f, 0x80, 0x0, 0x2f, 0xcf, 0xe0, + 0x0, 0x0, 0xbf, 0xff, 0xc0, 0x0, 0x3f, 0xff, + 0x7f, 0x80, 0x2f, 0xdf, 0xf0, 0xbf, 0x5f, 0xe0, + 0xff, 0x0, 0xbf, 0xe0, 0xf, 0xf0, 0x1, 0xf4, + 0x0, 0xff, 0x0, 0xf, 0x0, 0xf, 0xf0, 0x0, + 0xf0, 0x0, 0xff, 0x0, 0xf, 0x0, 0xf, 0xfc, + 0x0, 0xf0, 0x3, 0xf7, 0xf8, 0xf, 0x2, 0xfd, + 0xb, 0xf4, 0xf1, 0xfe, 0x0, 0xb, 0xff, 0xfe, + 0x0, 0x0, 0x1f, 0xff, 0x40, 0x0, 0x0, 0x1f, + 0x40, 0x0, + + /* U+F8C7 "" */ + 0x0, 0x0, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x3c, + 0x0, 0x0, 0x0, 0x0, 0x3c, 0x0, 0x0, 0x5, + 0x0, 0x3c, 0x0, 0x50, 0x1f, 0x0, 0x3c, 0x0, + 0xf4, 0x3d, 0x0, 0x3c, 0x0, 0x7c, 0x7c, 0x0, + 0x3c, 0x0, 0x3d, 0xb4, 0x0, 0x3c, 0x0, 0x1e, + 0xf0, 0x0, 0x3c, 0x0, 0xf, 0xf0, 0x0, 0x3c, + 0x0, 0xf, 0xf0, 0x0, 0x3c, 0x0, 0xf, 0xf0, + 0x0, 0x0, 0x0, 0xf, 0xb4, 0x0, 0x0, 0x0, + 0x1e, 0x7c, 0x0, 0x0, 0x0, 0x3d, 0x3d, 0x0, + 0x0, 0x0, 0x7c, 0x1f, 0x0, 0x0, 0x0, 0xf4, + 0xb, 0xd0, 0x0, 0x7, 0xe0, 0x2, 0xfd, 0x0, + 0x7f, 0x80, 0x0, 0x7f, 0xff, 0xfd, 0x0, 0x0, + 0x6, 0xff, 0x90, 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 384, .box_w = 14, .box_h = 14, .ofs_x = 5, .ofs_y = 5}, + {.bitmap_index = 49, .adv_w = 384, .box_w = 20, .box_h = 16, .ofs_x = 2, .ofs_y = 4}, + {.bitmap_index = 129, .adv_w = 384, .box_w = 14, .box_h = 20, .ofs_x = 5, .ofs_y = 2}, + {.bitmap_index = 199, .adv_w = 384, .box_w = 22, .box_h = 22, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 320, .adv_w = 384, .box_w = 20, .box_h = 16, .ofs_x = 2, .ofs_y = 4}, + {.bitmap_index = 400, .adv_w = 384, .box_w = 20, .box_h = 20, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 500, .adv_w = 384, .box_w = 12, .box_h = 7, .ofs_x = 6, .ofs_y = 9}, + {.bitmap_index = 521, .adv_w = 384, .box_w = 20, .box_h = 16, .ofs_x = 2, .ofs_y = 4}, + {.bitmap_index = 601, .adv_w = 384, .box_w = 18, .box_h = 18, .ofs_x = 3, .ofs_y = 3}, + {.bitmap_index = 682, .adv_w = 384, .box_w = 12, .box_h = 18, .ofs_x = 6, .ofs_y = 3}, + {.bitmap_index = 736, .adv_w = 384, .box_w = 16, .box_h = 18, .ofs_x = 4, .ofs_y = 3}, + {.bitmap_index = 808, .adv_w = 384, .box_w = 16, .box_h = 16, .ofs_x = 4, .ofs_y = 4}, + {.bitmap_index = 872, .adv_w = 384, .box_w = 16, .box_h = 12, .ofs_x = 4, .ofs_y = 6}, + {.bitmap_index = 920, .adv_w = 384, .box_w = 14, .box_h = 14, .ofs_x = 5, .ofs_y = 5}, + {.bitmap_index = 969, .adv_w = 384, .box_w = 18, .box_h = 12, .ofs_x = 3, .ofs_y = 6}, + {.bitmap_index = 1023, .adv_w = 384, .box_w = 4, .box_h = 16, .ofs_x = 10, .ofs_y = 4}, + {.bitmap_index = 1039, .adv_w = 384, .box_w = 16, .box_h = 16, .ofs_x = 4, .ofs_y = 4}, + {.bitmap_index = 1103, .adv_w = 384, .box_w = 24, .box_h = 17, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 1205, .adv_w = 384, .box_w = 18, .box_h = 16, .ofs_x = 4, .ofs_y = 4}, + {.bitmap_index = 1277, .adv_w = 384, .box_w = 18, .box_h = 17, .ofs_x = 3, .ofs_y = 4}, + {.bitmap_index = 1354, .adv_w = 384, .box_w = 20, .box_h = 20, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 1454, .adv_w = 384, .box_w = 16, .box_h = 20, .ofs_x = 4, .ofs_y = 2}, + {.bitmap_index = 1534, .adv_w = 384, .box_w = 20, .box_h = 19, .ofs_x = 2, .ofs_y = 3}, + {.bitmap_index = 1629, .adv_w = 384, .box_w = 18, .box_h = 18, .ofs_x = 3, .ofs_y = 3}, + {.bitmap_index = 1710, .adv_w = 384, .box_w = 20, .box_h = 20, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 1810, .adv_w = 384, .box_w = 20, .box_h = 20, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 1910, .adv_w = 384, .box_w = 16, .box_h = 20, .ofs_x = 4, .ofs_y = 2}, + {.bitmap_index = 1990, .adv_w = 384, .box_w = 16, .box_h = 18, .ofs_x = 4, .ofs_y = 3}, + {.bitmap_index = 2062, .adv_w = 384, .box_w = 20, .box_h = 16, .ofs_x = 2, .ofs_y = 4}, + {.bitmap_index = 2142, .adv_w = 384, .box_w = 24, .box_h = 23, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 2280, .adv_w = 384, .box_w = 18, .box_h = 18, .ofs_x = 3, .ofs_y = 3}, + {.bitmap_index = 2361, .adv_w = 384, .box_w = 20, .box_h = 18, .ofs_x = 2, .ofs_y = 3}, + {.bitmap_index = 2451, .adv_w = 384, .box_w = 18, .box_h = 20, .ofs_x = 3, .ofs_y = 2}, + {.bitmap_index = 2541, .adv_w = 384, .box_w = 16, .box_h = 20, .ofs_x = 4, .ofs_y = 2}, + {.bitmap_index = 2621, .adv_w = 384, .box_w = 18, .box_h = 16, .ofs_x = 4, .ofs_y = 4}, + {.bitmap_index = 2693, .adv_w = 384, .box_w = 20, .box_h = 20, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 2793, .adv_w = 384, .box_w = 18, .box_h = 18, .ofs_x = 3, .ofs_y = 3}, + {.bitmap_index = 2874, .adv_w = 384, .box_w = 22, .box_h = 16, .ofs_x = 1, .ofs_y = 4}, + {.bitmap_index = 2962, .adv_w = 384, .box_w = 16, .box_h = 16, .ofs_x = 4, .ofs_y = 4}, + {.bitmap_index = 3026, .adv_w = 384, .box_w = 22, .box_h = 16, .ofs_x = 1, .ofs_y = 4}, + {.bitmap_index = 3114, .adv_w = 384, .box_w = 18, .box_h = 20, .ofs_x = 3, .ofs_y = 2}, + {.bitmap_index = 3204, .adv_w = 384, .box_w = 20, .box_h = 20, .ofs_x = 2, .ofs_y = 2} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x14, 0x9b, 0x148, 0x182, 0x1ca, 0x1d1, 0x1e1, + 0x2af, 0x2c0, 0x418, 0x47e, 0x485, 0x488, 0x48d, 0x48f, + 0x490, 0x4f9, 0x600, 0x62b, 0x74f, 0x757, 0x76a, 0x771, + 0x773, 0x7b8, 0x7ca, 0x7e9, 0x874, 0x8af, 0x8b2, 0xa52, + 0xa87, 0xad7, 0xdfb, 0xe05, 0xea1, 0xee3, 0xf4b, 0x1017, + 0x15db, 0x1782 +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 57669, .range_length = 6019, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 42, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LVGL_VERSION_MAJOR == 8 +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +#endif + +#if LVGL_VERSION_MAJOR >= 8 +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 1, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 0, +#if LVGL_VERSION_MAJOR == 8 + .cache = &cache +#endif +}; + + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LVGL_VERSION_MAJOR >= 8 +const lv_font_t material_symbols_shared_24 = { +#else +lv_font_t material_symbols_shared_24 = { +#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 = 23, /*The maximum line height required by the font*/ + .base_line = -1, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8 + .underline_position = 0, + .underline_thickness = 0, +#endif + .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9 + .fallback = NULL, +#endif + .user_data = NULL, +}; + + + +#endif /*#if MATERIAL_SYMBOLS_SHARED_24*/ + diff --git a/Modules/lvgl-module/source-fonts/material_symbols_shared_32.c b/Modules/lvgl-module/source-fonts/material_symbols_shared_32.c new file mode 100644 index 00000000..25319892 --- /dev/null +++ b/Modules/lvgl-module/source-fonts/material_symbols_shared_32.c @@ -0,0 +1,1037 @@ +/******************************************************************************* + * Size: 32 px + * Bpp: 2 + * Opts: --no-compress --no-prefilter --bpp 2 --size 32 --font MaterialSymbolsRounded.ttf -r 0xE145,0xE5C3,0xE770,0xEF40,0xEBCC,0xEFE6,0xEF4A,0xE5CD,0xF15C,0xE5CA,0xE92E,0xE326,0xEB97,0xE745,0xEC1C,0xE2C7,0xF720,0xF090,0xE8AF,0xE30F,0xE8FD,0xE9F4,0xE3F4,0xE316,0xE90F,0xE894,0xE9B9,0xE159,0xE5D2,0xE28D,0xE5D4,0xE405,0xE89C,0xF8C7,0xE5D5,0xE8B6,0xE8B8,0xE9F7,0xE55D,0xF028,0xE1E0,0xE63E --format lvgl -o ../source-fonts/material_symbols_shared_32.c --force-fast-kern-format + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef MATERIAL_SYMBOLS_SHARED_32 +#define MATERIAL_SYMBOLS_SHARED_32 1 +#endif + +#if MATERIAL_SYMBOLS_SHARED_32 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+E145 "" */ + 0x0, 0x0, 0x14, 0x0, 0x0, 0x0, 0x0, 0x3d, + 0x0, 0x0, 0x0, 0x0, 0x3d, 0x0, 0x0, 0x0, + 0x0, 0x3d, 0x0, 0x0, 0x0, 0x0, 0x3d, 0x0, + 0x0, 0x0, 0x0, 0x3d, 0x0, 0x0, 0x0, 0x0, + 0x3d, 0x0, 0x0, 0x0, 0x0, 0x3d, 0x0, 0x0, + 0x1a, 0xaa, 0xbe, 0xaa, 0xa4, 0x3f, 0xff, 0xff, + 0xff, 0xfd, 0x3f, 0xff, 0xff, 0xff, 0xfc, 0x0, + 0x0, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x3d, 0x0, + 0x0, 0x0, 0x0, 0x3d, 0x0, 0x0, 0x0, 0x0, + 0x3d, 0x0, 0x0, 0x0, 0x0, 0x3d, 0x0, 0x0, + 0x0, 0x0, 0x3d, 0x0, 0x0, 0x0, 0x0, 0x3d, + 0x0, 0x0, 0x0, 0x0, 0x3c, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + + /* U+E159 "" */ + 0x6, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa0, 0x2f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0x3f, 0x40, 0x0, + 0x0, 0x0, 0x0, 0xbe, 0x3f, 0xf0, 0x0, 0x0, + 0x0, 0x7, 0xfe, 0x3f, 0xfe, 0x0, 0x0, 0x0, + 0x3f, 0xfe, 0x3e, 0x7f, 0xd0, 0x0, 0x2, 0xfe, + 0x3e, 0x3e, 0xb, 0xf8, 0x0, 0x1f, 0xf0, 0x3e, + 0x3e, 0x0, 0xff, 0x40, 0xbf, 0x40, 0x3e, 0x3e, + 0x0, 0x1f, 0xfb, 0xf8, 0x0, 0x3e, 0x3e, 0x0, + 0x2, 0xff, 0xd0, 0x0, 0x3e, 0x3e, 0x0, 0x0, + 0x7e, 0x0, 0x0, 0x3e, 0x3e, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x3e, 0x3e, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x3e, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3e, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, + 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x3e, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x3e, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x3e, 0x3f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfd, 0x2f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfc, 0x6, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xa0, + + /* U+E1E0 "" */ + 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x3e, + 0x0, 0x0, 0x0, 0x0, 0xff, 0x40, 0x0, 0x0, + 0x2, 0xff, 0xc0, 0x0, 0x0, 0x3, 0xff, 0xd0, + 0x0, 0x0, 0x0, 0x3e, 0x0, 0x0, 0x0, 0x0, + 0x3e, 0x0, 0x0, 0x1, 0x0, 0x3e, 0x1, 0x54, + 0x2f, 0xc0, 0x3e, 0xf, 0xfd, 0x3f, 0xf0, 0x3e, + 0xf, 0xfd, 0x7f, 0xf0, 0x3e, 0xf, 0xfd, 0x3f, + 0xe0, 0x3e, 0xf, 0xfd, 0xf, 0xc0, 0x3e, 0xf, + 0xfc, 0xf, 0x80, 0x3e, 0x2, 0xf0, 0xf, 0x80, + 0x3e, 0x2, 0xf0, 0xf, 0xd5, 0x7e, 0x57, 0xf0, + 0xf, 0xff, 0xff, 0xff, 0xf0, 0x3, 0xff, 0xff, + 0xff, 0xc0, 0x0, 0x55, 0x7e, 0x55, 0x0, 0x0, + 0x0, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x0, + 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x0, + 0xff, 0x80, 0x0, 0x0, 0x1, 0xff, 0xc0, 0x0, + 0x0, 0x1, 0xff, 0x80, 0x0, 0x0, 0x0, 0xbf, + 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, + + /* U+E28D "" */ + 0x0, 0x0, 0x0, 0x1a, 0x40, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xf, 0xfe, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x2, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x3f, 0xf, 0xc0, 0x0, 0x0, 0x0, 0x0, + 0x3, 0xe0, 0xbc, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3e, 0xb, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x3, + 0xe0, 0xbc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, + 0xb, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xe0, + 0xbc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0xb, + 0xc0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xe0, 0xbc, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0xb, 0xc0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xe0, 0xbc, 0x0, + 0x0, 0x0, 0x1, 0x55, 0x7f, 0x5f, 0xd5, 0x54, + 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, + 0x0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0x3, 0xf5, 0x55, 0x55, 0x55, 0x55, 0xfc, 0x0, + 0x3e, 0x0, 0x0, 0x0, 0x0, 0xb, 0xc0, 0x3, + 0xe0, 0x0, 0x0, 0x0, 0x0, 0xbc, 0x0, 0x3f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0x0, 0xbe, 0xaa, + 0xaa, 0xaa, 0xaa, 0xab, 0xe0, 0xf, 0xc0, 0x0, + 0x0, 0x0, 0x0, 0x3f, 0x0, 0xf8, 0x2d, 0x0, + 0xf0, 0x7, 0x82, 0xf0, 0x1f, 0x43, 0xe0, 0x1f, + 0x40, 0xbc, 0x1f, 0x42, 0xf0, 0x3e, 0x1, 0xf4, + 0xb, 0xc0, 0xf8, 0x3f, 0x3, 0xe0, 0x1f, 0x40, + 0xbc, 0xf, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x80, 0x6a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0x90, + + /* U+E2C7 "" */ + 0x6, 0xaa, 0xa9, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xff, 0xff, 0x80, 0x0, 0x0, 0x0, 0x3f, 0xff, + 0xff, 0xe0, 0x0, 0x0, 0x0, 0x3e, 0x0, 0x3, + 0xff, 0xff, 0xff, 0xf4, 0x3e, 0x0, 0x0, 0xff, + 0xff, 0xff, 0xfd, 0x3e, 0x0, 0x0, 0x2a, 0xaa, + 0xaa, 0xbe, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3e, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, + 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x3e, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x3e, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x3e, 0x3e, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x3e, 0x3e, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x3e, 0x3e, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x3e, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3e, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, + 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x3e, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x3e, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x3e, 0x3f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfd, 0x2f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfc, 0x6, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xa0, + + /* U+E30F "" */ + 0x0, 0x0, 0x2, 0xaa, 0x90, 0x0, 0x0, 0x0, + 0x0, 0xb, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, + 0xf, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0xf, + 0xc2, 0xf0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xc2, + 0xf0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xc2, 0xf0, + 0x0, 0x0, 0x0, 0x0, 0xf, 0xc2, 0xf0, 0x0, + 0x0, 0x0, 0x0, 0xb, 0xe7, 0xf0, 0x0, 0x0, + 0x0, 0x0, 0x3, 0xff, 0xd0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xff, 0x40, 0x0, 0x0, 0x2f, 0xff, + 0x80, 0x3d, 0x1, 0xff, 0xfc, 0x3f, 0xff, 0xe0, + 0x0, 0x7, 0xff, 0xfe, 0x3f, 0xab, 0xf8, 0x0, + 0x1f, 0xea, 0xbe, 0x3e, 0x0, 0xfe, 0x0, 0x3f, + 0x40, 0x3e, 0x3e, 0x0, 0xfe, 0x0, 0x3f, 0x40, + 0x3e, 0x3f, 0xab, 0xf8, 0x0, 0x1f, 0xea, 0xbe, + 0x3f, 0xff, 0xe0, 0x18, 0x7, 0xff, 0xfe, 0x2f, + 0xff, 0x80, 0x7f, 0x1, 0xff, 0xfd, 0x0, 0x0, + 0x1, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x7, + 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, 0xb, 0xd3, + 0xf0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xc2, 0xf0, + 0x0, 0x0, 0x0, 0x0, 0xf, 0xc2, 0xf0, 0x0, + 0x0, 0x0, 0x0, 0xf, 0xc2, 0xf0, 0x0, 0x0, + 0x0, 0x0, 0xf, 0xeb, 0xf0, 0x0, 0x0, 0x0, + 0x0, 0xb, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, + 0x7, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + + /* U+E316 "" */ + 0x0, 0x2, 0x80, 0x0, 0x0, 0xb, 0xf0, 0x0, + 0x0, 0x2f, 0xfc, 0x0, 0x0, 0xbf, 0xbf, 0x0, + 0x2, 0xfc, 0x2f, 0xc0, 0xb, 0xf0, 0xb, 0xf0, + 0x2f, 0xc0, 0x2, 0xfc, 0x3f, 0x0, 0x0, 0xbe, + 0x3c, 0x0, 0x0, 0x2d, + + /* U+E326 "" */ + 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x90, 0x7, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xf, 0x80, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xf, 0x80, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xf, 0x80, 0x0, 0x0, 0x6, + 0xaa, 0xa4, 0xf, 0x80, 0x0, 0x0, 0x3f, 0xff, + 0xfd, 0xf, 0x80, 0x0, 0x0, 0x3f, 0xff, 0xfe, + 0xf, 0x80, 0x0, 0x0, 0x3e, 0x0, 0x3e, 0xf, + 0x80, 0x0, 0x0, 0x3e, 0x4, 0x3e, 0xf, 0x80, + 0x0, 0x0, 0x3e, 0x2c, 0x3e, 0xf, 0x80, 0x0, + 0x0, 0x3e, 0x18, 0x3e, 0xf, 0x80, 0x0, 0x0, + 0x3e, 0x0, 0x3e, 0xf, 0x80, 0x0, 0x0, 0x3e, + 0x0, 0x3e, 0xf, 0x80, 0x0, 0x0, 0x3e, 0x0, + 0x3e, 0xf, 0xff, 0xff, 0xe0, 0x3e, 0x0, 0x3e, + 0x7, 0xff, 0xff, 0xf0, 0x3e, 0x0, 0x3e, 0x1, + 0xaa, 0xaa, 0x90, 0x3e, 0x0, 0x3e, 0x0, 0x0, + 0x0, 0x0, 0x3e, 0x0, 0x3e, 0x3f, 0xff, 0xff, + 0xe0, 0x3f, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xf0, + 0x3f, 0xff, 0xfd, 0x2a, 0xaa, 0xaa, 0x90, 0xa, + 0xaa, 0xa4, + + /* U+E3F4 "" */ + 0x2f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xbf, 0xff, + 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xaa, 0xaa, 0xaa, + 0xaa, 0xbf, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, + 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, + 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xf8, 0x0, 0x0, 0x5, 0x0, 0x2f, 0xf8, 0x0, + 0x0, 0xf, 0x0, 0x2f, 0xf8, 0x3, 0xc0, 0x3f, + 0xc0, 0x2f, 0xf8, 0xb, 0xe0, 0xbf, 0xe0, 0x2f, + 0xf8, 0x1f, 0xf5, 0xff, 0xf4, 0x2f, 0xf8, 0x3f, + 0xff, 0xff, 0xfc, 0x2f, 0xf8, 0x2a, 0xaa, 0xaa, + 0xa8, 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xfe, 0xaa, + 0xaa, 0xaa, 0xaa, 0xbf, 0xbf, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xf8, + + /* U+E405 "" */ + 0x0, 0x0, 0xbf, 0xfe, 0x0, 0x0, 0xff, 0xff, + 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0xff, 0xff, + 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0xfd, 0x54, + 0x0, 0x0, 0xf8, 0x0, 0x0, 0x0, 0xf8, 0x0, + 0x0, 0x0, 0xf8, 0x0, 0x0, 0x0, 0xf8, 0x0, + 0x0, 0x0, 0xf8, 0x0, 0x0, 0x0, 0xf8, 0x0, + 0x0, 0x0, 0xf8, 0x0, 0x1, 0xa8, 0xf8, 0x0, + 0xf, 0xff, 0xf8, 0x0, 0x3f, 0xff, 0xf8, 0x0, + 0xbf, 0xff, 0xf8, 0x0, 0xff, 0xff, 0xf8, 0x0, + 0xff, 0xff, 0xf8, 0x0, 0xff, 0xff, 0xf8, 0x0, + 0xbf, 0xff, 0xf4, 0x0, 0x3f, 0xff, 0xf0, 0x0, + 0x1f, 0xff, 0xc0, 0x0, 0x2, 0xfe, 0x0, 0x0, + + /* U+E55D "" */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0xf0, 0x0, 0x0, 0x0, 0x0, 0x2f, 0x80, 0x0, + 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, 0x0, + 0xbf, 0xe0, 0x0, 0x0, 0x0, 0xf, 0xff, 0x0, + 0x0, 0x0, 0x1, 0xf5, 0xf4, 0x0, 0x0, 0x0, + 0x3f, 0xf, 0xc0, 0x0, 0x0, 0x7, 0xe0, 0xbd, + 0x0, 0x0, 0x0, 0xfc, 0x3, 0xf0, 0x0, 0x0, + 0x1f, 0x80, 0x2f, 0x40, 0x0, 0x2, 0xf0, 0x0, + 0xf8, 0x0, 0x0, 0x3e, 0x0, 0xf, 0xc0, 0x0, + 0xb, 0xd0, 0x0, 0x7e, 0x0, 0x0, 0xfc, 0x0, + 0x3, 0xf0, 0x0, 0x1f, 0x40, 0x0, 0x1f, 0x40, + 0x3, 0xf0, 0x0, 0x0, 0xfc, 0x0, 0x7e, 0x1, + 0xa4, 0xb, 0xd0, 0xf, 0xc1, 0xff, 0xf4, 0x3f, + 0x1, 0xfe, 0xff, 0xff, 0xfb, 0xf4, 0x2f, 0xff, + 0xe0, 0xbf, 0xff, 0x83, 0xff, 0xd0, 0x0, 0x7f, + 0xfc, 0x7f, 0xd0, 0x0, 0x0, 0x7f, 0xd2, 0x80, + 0x0, 0x0, 0x0, 0x28, + + /* U+E5C3 "" */ + 0x5, 0x0, 0x5, 0x0, 0x5, 0x3, 0xfc, 0x3, + 0xfc, 0x3, 0xfc, 0xbf, 0xd0, 0xbf, 0xd0, 0xbf, + 0xdb, 0xfe, 0xb, 0xfe, 0xb, 0xfe, 0x7f, 0xc0, + 0x7f, 0xc0, 0x7f, 0xc1, 0xe4, 0x1, 0xe4, 0x1, + 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x5, 0x0, 0x5, 0x0, + 0x5, 0x3, 0xfc, 0x3, 0xfc, 0x3, 0xfc, 0xbf, + 0xd0, 0xbf, 0xd0, 0xbf, 0xdb, 0xfe, 0xb, 0xfe, + 0xb, 0xfe, 0x7f, 0xc0, 0x7f, 0xc0, 0x7f, 0xc1, + 0xe4, 0x1, 0xe4, 0x1, 0xe4, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x5, 0x0, 0x5, 0x0, 0x5, 0x3, 0xfc, 0x3, + 0xfc, 0x3, 0xfc, 0xbf, 0xd0, 0xbf, 0xd0, 0xbf, + 0xdb, 0xfe, 0xb, 0xfe, 0xb, 0xfe, 0x7f, 0xc0, + 0x7f, 0xc0, 0x7f, 0xc1, 0xe4, 0x1, 0xe4, 0x1, + 0xe4, + + /* U+E5CA "" */ + 0x0, 0x0, 0x0, 0x0, 0x1, 0x40, 0x0, 0x0, + 0x0, 0x0, 0xbc, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xc0, 0x0, 0x0, 0x0, 0xb, 0xf0, 0x0, 0x0, + 0x0, 0x2, 0xfc, 0x0, 0x0, 0x0, 0x0, 0xbf, + 0x40, 0x0, 0x0, 0x0, 0x2f, 0xd0, 0x3, 0xc0, + 0x0, 0xb, 0xf4, 0x0, 0x7f, 0x0, 0x2, 0xfd, + 0x0, 0x2, 0xfc, 0x0, 0xbf, 0x40, 0x0, 0xb, + 0xf0, 0x2f, 0xd0, 0x0, 0x0, 0x2f, 0xcb, 0xf4, + 0x0, 0x0, 0x0, 0xbf, 0xfd, 0x0, 0x0, 0x0, + 0x2, 0xff, 0x40, 0x0, 0x0, 0x0, 0xb, 0xd0, + 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, + + /* U+E5CD "" */ + 0x24, 0x0, 0x0, 0x1, 0x8b, 0xd0, 0x0, 0x0, + 0x7e, 0x7f, 0x40, 0x0, 0x1f, 0xd1, 0xfd, 0x0, + 0x7, 0xf4, 0x7, 0xf4, 0x1, 0xfd, 0x0, 0x1f, + 0xd0, 0x7f, 0x40, 0x0, 0x7f, 0x5f, 0xd0, 0x0, + 0x1, 0xff, 0xf4, 0x0, 0x0, 0x7, 0xfd, 0x0, + 0x0, 0x0, 0x7f, 0xd0, 0x0, 0x0, 0x1f, 0xff, + 0x40, 0x0, 0x7, 0xf5, 0xfd, 0x0, 0x1, 0xfd, + 0x7, 0xf4, 0x0, 0x7f, 0x40, 0x1f, 0xd0, 0x1f, + 0xd0, 0x0, 0x7f, 0x47, 0xf4, 0x0, 0x1, 0xfd, + 0xbd, 0x0, 0x0, 0x7, 0xe7, 0x40, 0x0, 0x0, + 0x1d, + + /* U+E5D2 "" */ + 0xbf, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x6a, 0xaa, 0xaa, 0xaa, + 0xaa, 0xa9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x2a, 0xaa, 0xaa, 0xaa, + 0xaa, 0xa8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbf, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6a, 0xaa, + 0xaa, 0xaa, 0xaa, 0xa9, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xfe, + + /* U+E5D4 "" */ + 0x5, 0x3, 0xfc, 0xbf, 0xdb, 0xfe, 0x7f, 0xc1, + 0xe4, 0x0, 0x0, 0x0, 0x5, 0x3, 0xfc, 0xbf, + 0xdb, 0xfe, 0x7f, 0xc1, 0xe4, 0x0, 0x0, 0x0, + 0x5, 0x3, 0xfc, 0xbf, 0xdb, 0xfe, 0x7f, 0xc1, + 0xe4, + + /* U+E5D5 "" */ + 0x0, 0x0, 0x6a, 0x90, 0x1, 0x80, 0x0, 0xbf, + 0xff, 0xe0, 0x3e, 0x0, 0x7f, 0xff, 0xff, 0xd3, + 0xe0, 0x2f, 0xf4, 0x1, 0xff, 0x7e, 0x7, 0xf4, + 0x0, 0x1, 0xff, 0xe0, 0xfc, 0x0, 0x0, 0x7, + 0xfe, 0x2f, 0x40, 0x0, 0x0, 0x1f, 0xe3, 0xf0, + 0x0, 0x7, 0xff, 0xfe, 0x7d, 0x0, 0x0, 0xbf, + 0xff, 0xeb, 0xc0, 0x0, 0x2, 0xaa, 0xa8, 0xbc, + 0x0, 0x0, 0x0, 0x0, 0xb, 0xc0, 0x0, 0x0, + 0x0, 0x0, 0xbc, 0x0, 0x0, 0x0, 0x0, 0x7, + 0xd0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x0, 0x0, + 0x0, 0xb, 0x42, 0xf4, 0x0, 0x0, 0x1, 0xf8, + 0xf, 0xc0, 0x0, 0x0, 0x7f, 0x0, 0x7f, 0x40, + 0x0, 0x1f, 0xd0, 0x2, 0xff, 0x40, 0x1f, 0xf8, + 0x0, 0x7, 0xff, 0xff, 0xfd, 0x0, 0x0, 0xb, + 0xff, 0xfe, 0x0, 0x0, 0x0, 0x6, 0xa9, 0x0, + 0x0, + + /* U+E63E "" */ + 0x0, 0x0, 0x1, 0xaf, 0xfa, 0x40, 0x0, 0x0, + 0x0, 0x0, 0xbf, 0xff, 0xff, 0xfe, 0x0, 0x0, + 0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x0, + 0x0, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0, + 0x7, 0xff, 0xfe, 0x50, 0x5, 0xbf, 0xff, 0xd0, + 0x2f, 0xff, 0xd0, 0x0, 0x0, 0x7, 0xff, 0xf8, + 0x3f, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xfc, + 0x3f, 0xd0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xfc, + 0x1a, 0x0, 0x0, 0x6b, 0xe9, 0x0, 0x0, 0xa4, + 0x0, 0x0, 0x1b, 0xff, 0xff, 0xe0, 0x0, 0x0, + 0x0, 0x0, 0xbf, 0xff, 0xff, 0xfe, 0x0, 0x0, + 0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0, + 0x0, 0x7, 0xff, 0xd4, 0x17, 0xff, 0xd0, 0x0, + 0x0, 0x3, 0xfc, 0x0, 0x0, 0x3f, 0xc0, 0x0, + 0x0, 0x0, 0x90, 0x0, 0x0, 0x6, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x6, 0x90, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1f, 0xf4, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x3f, 0xfc, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x7f, 0xfd, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x3f, 0xfc, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xb, 0xe0, 0x0, 0x0, 0x0, + + /* U+E745 "" */ + 0x2a, 0xaa, 0xaa, 0xa0, 0x0, 0x0, 0x2f, 0xff, + 0xff, 0xfe, 0x0, 0x0, 0x7, 0xff, 0xff, 0xff, + 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, + 0xaa, 0xaa, 0xa8, 0x0, 0x0, 0xb, 0xff, 0xff, + 0xff, 0x80, 0x0, 0x1, 0xff, 0xff, 0xff, 0xd0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x3f, 0x81, 0xff, 0xff, 0x0, + 0x0, 0x3f, 0xf8, 0xbf, 0xff, 0xe0, 0x0, 0x3f, + 0xff, 0xa, 0xaa, 0xa0, 0x0, 0x2f, 0xff, 0xc0, + 0x0, 0x0, 0x0, 0x2f, 0xbf, 0xd0, 0x0, 0x0, + 0x0, 0x2f, 0xf, 0xe0, 0x0, 0x0, 0x0, 0x2f, + 0x7, 0xe0, 0x0, 0x0, 0x0, 0x2f, 0x7, 0xe0, + 0x0, 0x0, 0x0, 0xf, 0x7, 0xe0, 0x0, 0x0, + 0x0, 0x3, 0xc7, 0xe0, 0x0, 0x0, 0x0, 0x0, + 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xe0, + 0x0, 0x0, + + /* U+E770 "" */ + 0x0, 0x0, 0x2, 0xe0, 0x0, 0x0, 0x0, 0x0, + 0xf, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xff, + 0x40, 0x0, 0x0, 0x0, 0x3f, 0x2f, 0xe0, 0x0, + 0x0, 0x0, 0xfd, 0x7, 0xfe, 0xa4, 0x10, 0x2, + 0xf8, 0x0, 0xff, 0xfd, 0xfc, 0x7, 0xf0, 0x0, + 0x3f, 0xff, 0xff, 0x4f, 0xc0, 0x0, 0x0, 0x2f, + 0xff, 0xff, 0x80, 0x0, 0x0, 0x2f, 0xff, 0xff, + 0x0, 0x0, 0x0, 0x2f, 0xf9, 0xfc, 0x0, 0x40, + 0x0, 0x2f, 0xf8, 0x34, 0x3, 0xe0, 0x0, 0x2f, + 0xf8, 0x0, 0xb, 0xf8, 0x0, 0x2f, 0xf8, 0x0, + 0x1f, 0xff, 0x0, 0x2f, 0xfc, 0x0, 0x3f, 0xff, + 0xd0, 0x2f, 0xff, 0x0, 0xbf, 0xff, 0xf8, 0x2f, + 0xff, 0xd1, 0xff, 0xff, 0xff, 0x2f, 0xff, 0xfb, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, + + /* U+E894 "" */ + 0x0, 0x0, 0x1, 0x69, 0x40, 0x0, 0x0, 0x0, + 0x0, 0x6f, 0xff, 0xfd, 0x0, 0x0, 0x0, 0x2, + 0xff, 0xff, 0xff, 0xd0, 0x0, 0x0, 0x1f, 0xff, + 0xfb, 0xff, 0xf4, 0x0, 0x0, 0x7f, 0x8b, 0xd3, + 0xf2, 0xfe, 0x0, 0x1, 0xfd, 0xf, 0x82, 0xf4, + 0x7f, 0x40, 0x3, 0xf4, 0x2f, 0x40, 0xfc, 0xf, + 0xc0, 0xb, 0xe0, 0x3f, 0x0, 0xbc, 0x7, 0xf0, + 0xf, 0xea, 0xbf, 0xaa, 0xfe, 0xab, 0xf4, 0x2f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3e, 0x0, 0xfc, + 0x0, 0x3f, 0x0, 0xbc, 0x3e, 0x0, 0xfc, 0x0, + 0x2f, 0x0, 0x7d, 0x3d, 0x0, 0xfc, 0x0, 0x2f, + 0x0, 0x7d, 0x3d, 0x0, 0xfc, 0x0, 0x2f, 0x0, + 0x7d, 0x3e, 0x0, 0xfc, 0x0, 0x2f, 0x0, 0x7d, + 0x3f, 0xaa, 0xfe, 0xaa, 0xbf, 0xaa, 0xfc, 0x2f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf, 0xd0, 0x3f, + 0x0, 0xbd, 0x3, 0xf0, 0x7, 0xf0, 0x3f, 0x0, + 0xfc, 0xb, 0xe0, 0x2, 0xfc, 0x1f, 0x41, 0xf8, + 0x2f, 0xc0, 0x0, 0xff, 0xf, 0xc3, 0xf0, 0xbf, + 0x0, 0x0, 0x3f, 0xeb, 0xe7, 0xfb, 0xfc, 0x0, + 0x0, 0xb, 0xff, 0xff, 0xff, 0xf0, 0x0, 0x0, + 0x1, 0xff, 0xff, 0xff, 0x40, 0x0, 0x0, 0x0, + 0x1b, 0xff, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + + /* U+E89C "" */ + 0x6, 0xaa, 0xaa, 0x90, 0x0, 0x3, 0xff, 0xff, + 0xff, 0x80, 0x0, 0xbf, 0xff, 0xff, 0xfe, 0x0, + 0xb, 0xc0, 0x0, 0xb, 0xf8, 0x0, 0xbc, 0x0, + 0x0, 0xbf, 0xe0, 0xb, 0xc0, 0x0, 0xb, 0xff, + 0x80, 0xbc, 0x0, 0x0, 0xbf, 0xfe, 0xb, 0xc0, + 0x0, 0xb, 0xff, 0xf8, 0xbc, 0x0, 0x0, 0xbf, + 0xff, 0xdb, 0xc0, 0x0, 0x2, 0xff, 0xfe, 0xbc, + 0x0, 0x0, 0x0, 0x3, 0xeb, 0xc0, 0x0, 0xa0, + 0x0, 0x3e, 0xbc, 0x0, 0x1f, 0x40, 0x3, 0xeb, + 0xc0, 0x1, 0xf4, 0x0, 0x3e, 0xbc, 0x0, 0x1f, + 0x40, 0x3, 0xeb, 0xc0, 0xbf, 0xff, 0xe0, 0x3e, + 0xbc, 0x1f, 0xff, 0xff, 0x43, 0xeb, 0xc0, 0xbf, + 0xff, 0xe0, 0x3e, 0xbc, 0x0, 0x1f, 0x40, 0x3, + 0xeb, 0xc0, 0x1, 0xf4, 0x0, 0x3e, 0xbc, 0x0, + 0x1f, 0x40, 0x3, 0xeb, 0xc0, 0x0, 0xa0, 0x0, + 0x3e, 0xbc, 0x0, 0x0, 0x0, 0x3, 0xeb, 0xc0, + 0x0, 0x0, 0x0, 0x3e, 0xbe, 0xaa, 0xaa, 0xaa, + 0xab, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x2f, + 0xff, 0xff, 0xff, 0xff, 0x80, 0x0, 0x0, 0x0, + 0x0, 0x0, + + /* U+E8AF "" */ + 0x6, 0xaa, 0xaa, 0xaa, 0xa4, 0x0, 0x0, 0x1f, + 0xff, 0xff, 0xff, 0xff, 0x40, 0x0, 0x3f, 0xff, + 0xff, 0xff, 0xff, 0xc0, 0x0, 0x3e, 0x0, 0x0, + 0x0, 0xf, 0xc0, 0x0, 0x3e, 0x0, 0x0, 0x0, + 0xf, 0xc0, 0x0, 0x3e, 0x0, 0x0, 0x0, 0xf, + 0xc0, 0x0, 0x3e, 0x0, 0x0, 0x0, 0xf, 0xc0, + 0xfc, 0x3e, 0x0, 0x0, 0x0, 0xf, 0xc0, 0xfe, + 0x3e, 0x0, 0x0, 0x0, 0xf, 0xc0, 0xfe, 0x3e, + 0x0, 0x0, 0x0, 0xf, 0xc0, 0xff, 0x3e, 0x0, + 0x0, 0x0, 0xf, 0xc0, 0xff, 0x3e, 0x0, 0x0, + 0x0, 0xf, 0xc0, 0xff, 0x3e, 0x2a, 0xaa, 0xaa, + 0xaf, 0xc0, 0xff, 0x3e, 0xff, 0xff, 0xff, 0xff, + 0x80, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xfe, 0x0, + 0xff, 0x3f, 0xf0, 0x0, 0x0, 0x0, 0x1, 0xff, + 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x2, 0xff, 0x3f, + 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0x28, 0xf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0xb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x0, 0x7, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x0, 0x2, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, + 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, + + /* U+E8B6 "" */ + 0x0, 0x1b, 0xfe, 0x0, 0x0, 0x0, 0x1, 0xff, + 0xff, 0xe0, 0x0, 0x0, 0x7, 0xff, 0xaf, 0xfc, + 0x0, 0x0, 0x1f, 0xe0, 0x1, 0xfe, 0x0, 0x0, + 0x3f, 0x40, 0x0, 0x3f, 0x40, 0x0, 0x7e, 0x0, + 0x0, 0xf, 0xc0, 0x0, 0xbc, 0x0, 0x0, 0xb, + 0xc0, 0x0, 0xfc, 0x0, 0x0, 0x7, 0xd0, 0x0, + 0xf8, 0x0, 0x0, 0x7, 0xd0, 0x0, 0xfc, 0x0, + 0x0, 0x7, 0xd0, 0x0, 0xfc, 0x0, 0x0, 0xb, + 0xc0, 0x0, 0x7d, 0x0, 0x0, 0xf, 0xc0, 0x0, + 0x3f, 0x0, 0x0, 0x3f, 0x40, 0x0, 0x1f, 0xd0, + 0x0, 0xff, 0x0, 0x0, 0xb, 0xfe, 0xaf, 0xff, + 0x80, 0x0, 0x1, 0xff, 0xff, 0xef, 0xe0, 0x0, + 0x0, 0x2f, 0xfe, 0x3, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3f, 0x80, 0x0, 0x0, 0x0, 0x0, 0xf, 0xe0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xfd, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x3d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + + /* U+E8B8 "" */ + 0x0, 0x0, 0x6, 0xa9, 0x0, 0x0, 0x0, 0x0, + 0x1, 0xff, 0xf4, 0x0, 0x0, 0x0, 0x0, 0x3f, + 0xff, 0xc0, 0x0, 0x0, 0x0, 0x3, 0xe0, 0xbc, + 0x0, 0x0, 0x1, 0x40, 0x7e, 0x7, 0xc0, 0x14, + 0x0, 0xbf, 0xaf, 0xd0, 0x7f, 0xaf, 0xe0, 0xf, + 0xff, 0xfc, 0x3, 0xff, 0xff, 0x3, 0xfb, 0xfd, + 0x0, 0x7, 0xfe, 0xfc, 0x7e, 0x2, 0x0, 0x0, + 0x8, 0xb, 0xdb, 0xd0, 0x0, 0x2f, 0x80, 0x0, + 0x7e, 0x7f, 0x40, 0x1f, 0xff, 0x40, 0x1f, 0xd2, + 0xfe, 0x3, 0xff, 0xfc, 0xb, 0xf8, 0x7, 0xf0, + 0x7f, 0xff, 0xe0, 0xfd, 0x0, 0x3e, 0xb, 0xff, + 0xfe, 0xb, 0xc0, 0x3, 0xe0, 0xbf, 0xff, 0xe0, + 0xbc, 0x0, 0xff, 0x7, 0xff, 0xfd, 0xf, 0xf0, + 0x3f, 0xc0, 0x2f, 0xff, 0xc0, 0x3f, 0xcb, 0xe0, + 0x0, 0xbf, 0xe0, 0x0, 0xbe, 0xbd, 0x0, 0x0, + 0x50, 0x0, 0x7, 0xe3, 0xf0, 0xb8, 0x0, 0x1, + 0xe0, 0xfc, 0x2f, 0xff, 0xf4, 0x1, 0xff, 0xff, + 0x40, 0xff, 0xff, 0xd0, 0x7f, 0xff, 0xf0, 0x3, + 0xe4, 0xbd, 0x7, 0xe1, 0xbc, 0x0, 0x0, 0x3, + 0xe0, 0xbc, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xaf, + 0xc0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xf8, 0x0, + 0x0, 0x0, 0x0, 0xf, 0xff, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + + /* U+E8FD "" */ + 0x0, 0x0, 0x1, 0x55, 0x40, 0x0, 0x0, 0x0, + 0x0, 0x6f, 0xff, 0xfd, 0x0, 0x0, 0x0, 0x2, + 0xff, 0xff, 0xff, 0xd0, 0x0, 0x0, 0x1f, 0xfd, + 0x41, 0x6f, 0xf4, 0x0, 0x0, 0x7f, 0x80, 0x0, + 0x2, 0xfe, 0x0, 0x1, 0xfd, 0x0, 0x0, 0x0, + 0x7f, 0x40, 0x3, 0xf4, 0x1, 0xff, 0x80, 0xf, + 0xc0, 0xb, 0xd0, 0x7, 0xff, 0xf0, 0x7, 0xf0, + 0xf, 0xc0, 0xf, 0xd6, 0xf8, 0x2, 0xf4, 0x2f, + 0x40, 0xb, 0x0, 0xfc, 0x0, 0xf8, 0x3f, 0x0, + 0x0, 0x0, 0xf8, 0x0, 0xfc, 0x3e, 0x0, 0x0, + 0x1, 0xf4, 0x0, 0x7c, 0x3e, 0x0, 0x0, 0x3, + 0xe0, 0x0, 0x7d, 0x3d, 0x0, 0x0, 0xf, 0xc0, + 0x0, 0x7d, 0x3d, 0x0, 0x0, 0x3f, 0x0, 0x0, + 0x7d, 0x3e, 0x0, 0x0, 0x3d, 0x0, 0x0, 0x7d, + 0x3f, 0x0, 0x0, 0x28, 0x0, 0x0, 0xbc, 0x2f, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc, 0x1f, 0x40, + 0x0, 0x0, 0x0, 0x1, 0xf8, 0xf, 0xc0, 0x0, + 0x7d, 0x0, 0x3, 0xf0, 0x7, 0xf0, 0x0, 0xbe, + 0x0, 0xb, 0xe0, 0x3, 0xf8, 0x0, 0x28, 0x0, + 0x2f, 0xc0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xbf, + 0x0, 0x0, 0x3f, 0xe0, 0x0, 0x7, 0xfd, 0x0, + 0x0, 0xb, 0xff, 0xaa, 0xff, 0xf0, 0x0, 0x0, + 0x1, 0xff, 0xff, 0xff, 0x40, 0x0, 0x0, 0x0, + 0x1b, 0xff, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + + /* U+E90F "" */ + 0x0, 0x0, 0x55, 0x0, 0x0, 0x0, 0x1f, 0xff, + 0xf4, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x3, + 0xfe, 0x41, 0xbf, 0xc0, 0xf, 0xe0, 0x0, 0xb, + 0xf0, 0x2f, 0x80, 0x0, 0x2, 0xf8, 0x3f, 0x0, + 0x0, 0x0, 0xfc, 0xbd, 0x0, 0x0, 0x0, 0x7e, + 0xfc, 0x0, 0x0, 0x0, 0x3f, 0xfc, 0x0, 0x0, + 0x0, 0x3f, 0xf8, 0x0, 0x0, 0x0, 0x2f, 0xfc, + 0x0, 0x0, 0x0, 0x3f, 0xfc, 0x0, 0x0, 0x0, + 0x3f, 0xbd, 0x0, 0x0, 0x0, 0x7e, 0x3f, 0x0, + 0x0, 0x0, 0xfc, 0x2f, 0xc0, 0x0, 0x2, 0xf8, + 0xf, 0xfa, 0xaa, 0xaf, 0xf0, 0x3, 0xff, 0xff, + 0xff, 0xc0, 0x0, 0xbf, 0xff, 0xff, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0xaa, 0xa4, + 0x0, 0x0, 0x3f, 0xff, 0xfd, 0x0, 0x0, 0x3f, + 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0xaa, 0x40, 0x0, 0x0, 0x1, 0xff, + 0x40, 0x0, 0x0, 0x0, 0xbe, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + + /* U+E92E "" */ + 0x0, 0x2, 0xff, 0xf8, 0x0, 0x2, 0xaa, 0xbf, + 0xff, 0xea, 0xa8, 0xbf, 0xff, 0xff, 0xff, 0xff, + 0xe7, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x1f, 0x40, + 0x0, 0x0, 0x1f, 0x41, 0xf4, 0x0, 0x0, 0x1, + 0xf4, 0x1f, 0x40, 0x40, 0x10, 0x1f, 0x41, 0xf4, + 0x3e, 0xb, 0xc1, 0xf4, 0x1f, 0x43, 0xe0, 0xbc, + 0x1f, 0x41, 0xf4, 0x3e, 0xb, 0xc1, 0xf4, 0x1f, + 0x43, 0xe0, 0xbc, 0x1f, 0x41, 0xf4, 0x3e, 0xb, + 0xc1, 0xf4, 0x1f, 0x43, 0xe0, 0xbc, 0x1f, 0x41, + 0xf4, 0x3e, 0xb, 0xc1, 0xf4, 0x1f, 0x43, 0xe0, + 0xbc, 0x1f, 0x41, 0xf4, 0x3e, 0xb, 0xc1, 0xf4, + 0x1f, 0x43, 0xe0, 0xbc, 0x1f, 0x41, 0xf4, 0x3e, + 0xb, 0xc1, 0xf4, 0x1f, 0x41, 0x80, 0x24, 0x1f, + 0x41, 0xf4, 0x0, 0x0, 0x1, 0xf4, 0x1f, 0x40, + 0x0, 0x0, 0x1f, 0x41, 0xfe, 0xaa, 0xaa, 0xab, + 0xf0, 0xf, 0xff, 0xff, 0xff, 0xff, 0x0, 0x3f, + 0xff, 0xff, 0xff, 0xc0, + + /* U+E9B9 "" */ + 0x5, 0x0, 0x5, 0x55, 0x55, 0x55, 0x50, 0x2f, + 0xd0, 0x2f, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xf0, + 0x3f, 0xff, 0xff, 0xff, 0xfd, 0x7f, 0xf0, 0x3f, + 0xff, 0xff, 0xff, 0xfd, 0x3f, 0xe0, 0x3f, 0xff, + 0xff, 0xff, 0xfc, 0xb, 0x80, 0xb, 0xff, 0xff, + 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x5, 0x0, 0x5, 0x55, 0x55, 0x55, 0x50, 0x2f, + 0xd0, 0x2f, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xf0, + 0x3f, 0xff, 0xff, 0xff, 0xfd, 0x7f, 0xf0, 0x3f, + 0xff, 0xff, 0xff, 0xfd, 0x3f, 0xe0, 0x3f, 0xff, + 0xff, 0xff, 0xfc, 0xb, 0x80, 0xb, 0xff, 0xff, + 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x5, 0x0, 0x5, 0x55, 0x55, 0x55, 0x50, 0x2f, + 0xd0, 0x2f, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xf0, + 0x3f, 0xff, 0xff, 0xff, 0xfd, 0x7f, 0xf0, 0x3f, + 0xff, 0xff, 0xff, 0xfd, 0x3f, 0xe0, 0x3f, 0xff, + 0xff, 0xff, 0xfc, 0xb, 0x80, 0xb, 0xff, 0xff, + 0xff, 0xe0, + + /* U+E9F4 "" */ + 0x0, 0x0, 0x0, 0xb, 0xe0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x3f, 0xfc, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xbf, 0xfe, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xfc, 0x3f, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xfc, 0x3f, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xbf, 0xfe, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x3f, 0xfc, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0xb, 0xe0, 0x0, 0x0, 0x0, + 0x1, 0x40, 0x0, 0x3, 0xc0, 0x0, 0x1, 0x40, + 0x1f, 0xf4, 0x0, 0x3, 0xc0, 0x0, 0x1f, 0xf4, + 0x7f, 0xfd, 0x0, 0x3, 0xc0, 0x0, 0x7f, 0xfd, + 0xfd, 0x7f, 0x0, 0x2f, 0xf8, 0x0, 0xfd, 0x7f, + 0xf8, 0x2f, 0x1, 0xff, 0xff, 0x40, 0xf8, 0x2f, + 0xfc, 0x3f, 0xe7, 0xf9, 0x6f, 0xdb, 0xfc, 0x3f, + 0xbf, 0xff, 0xff, 0xe0, 0xb, 0xff, 0xff, 0xfe, + 0x3f, 0xf8, 0x2f, 0xc0, 0x3, 0xf8, 0x2f, 0xf8, + 0x6, 0x90, 0xf, 0x80, 0x2, 0xf0, 0x6, 0x90, + 0x0, 0x0, 0xf, 0xc0, 0x3, 0xf0, 0x0, 0x0, + 0x0, 0x0, 0xb, 0xd0, 0x7, 0xe0, 0x0, 0x0, + 0x0, 0x0, 0x3, 0xf4, 0x1f, 0xc0, 0x0, 0x0, + 0x0, 0x0, 0x2, 0xff, 0xff, 0x80, 0x0, 0x0, + 0x0, 0x0, 0x7, 0xff, 0xff, 0xd0, 0x0, 0x0, + 0x0, 0x1, 0x5f, 0x45, 0x51, 0xf5, 0x40, 0x0, + 0x0, 0x2f, 0xfe, 0x0, 0x0, 0xbf, 0xf8, 0x0, + 0x0, 0x7f, 0xfd, 0x0, 0x0, 0x7f, 0xfd, 0x0, + 0x0, 0xfd, 0x7f, 0x0, 0x0, 0xfd, 0x7f, 0x0, + 0x0, 0xf8, 0x2f, 0x0, 0x0, 0xf8, 0x2f, 0x0, + 0x0, 0xfc, 0x3f, 0x0, 0x0, 0xfc, 0x3f, 0x0, + 0x0, 0xbf, 0xfe, 0x0, 0x0, 0xbf, 0xfe, 0x0, + 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x2f, 0xf8, 0x0, + 0x0, 0x6, 0x90, 0x0, 0x0, 0x6, 0x90, 0x0, + + /* U+E9F7 "" */ + 0x2f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xbf, 0xff, + 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xaa, 0xaa, 0xaa, + 0xaa, 0xbf, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, + 0x0, 0x0, 0x0, 0x2f, 0xfe, 0xaa, 0xaa, 0xaa, + 0xaa, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0, + 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, + 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, + 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xfe, 0xaa, + 0xaa, 0xaa, 0xaa, 0xbf, 0xbf, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xf8, + + /* U+EB97 "" */ + 0xb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x3f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x3f, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xbe, 0x3e, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x3e, 0x3e, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x3e, 0x3e, 0x0, 0x0, 0x0, 0x6, + 0x0, 0x3e, 0x3e, 0x0, 0x0, 0x0, 0xf, 0x0, + 0x3e, 0x3e, 0xb, 0xff, 0xff, 0x8f, 0xf0, 0x3e, + 0x3e, 0xb, 0xff, 0xff, 0x8f, 0xf0, 0x3e, 0x3e, + 0x0, 0x0, 0x0, 0xf, 0x0, 0x3e, 0x3e, 0x0, + 0x10, 0x0, 0x1, 0x0, 0x3e, 0x3e, 0x0, 0xf0, + 0x0, 0x0, 0x0, 0x3e, 0x3e, 0x7, 0xf0, 0xff, + 0xff, 0xf0, 0x3e, 0x3e, 0xb, 0xf1, 0xff, 0xff, + 0xf0, 0x3e, 0x3e, 0x0, 0xf0, 0x0, 0x0, 0x0, + 0x3e, 0x3e, 0x0, 0x60, 0x0, 0x0, 0x0, 0x3e, + 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x3e, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x3f, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xbe, 0x3f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfd, 0xf, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xf8, 0x0, 0x0, 0x3f, 0xff, 0xfe, + 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xfe, 0x0, + 0x0, 0x0, 0x0, 0x2f, 0xff, 0xf8, 0x0, 0x0, + + /* U+EBCC "" */ + 0x0, 0x10, 0x0, 0x0, 0x4, 0x0, 0x0, 0xf8, + 0x0, 0x0, 0x2f, 0x0, 0x0, 0xf8, 0x0, 0x0, + 0x2f, 0x0, 0x1a, 0xfe, 0xaa, 0xaa, 0xbf, 0xa4, + 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xfe, 0xaa, 0xaa, 0xaa, 0xaa, 0xbf, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, + 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x1e, 0x3, 0xc0, + 0xb4, 0x2f, 0xf8, 0x2f, 0x3, 0xd0, 0xf8, 0x2f, + 0xf8, 0x9, 0x1, 0x80, 0x60, 0x2f, 0xf8, 0x0, + 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0x2f, 0xf8, 0x9, 0x1, 0x80, 0x60, 0x2f, + 0xf8, 0x2f, 0x3, 0xd0, 0xf8, 0x2f, 0xf8, 0x1e, + 0x3, 0xc0, 0xb4, 0x2f, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xfe, 0xaa, 0xaa, 0xaa, 0xaa, 0xbf, 0xbf, 0xff, + 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, + 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + + /* U+EC1C "" */ + 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x80, + 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, + 0x3, 0xfe, 0x0, 0x0, 0x0, 0x0, 0xff, 0xc0, + 0x0, 0x0, 0x0, 0x3f, 0xf8, 0x0, 0x0, 0x0, + 0xf, 0xff, 0x0, 0x0, 0x0, 0x3, 0xff, 0xd0, + 0x0, 0x0, 0x1, 0xfe, 0xfc, 0x0, 0x0, 0x0, + 0x7f, 0xaf, 0x80, 0x0, 0x0, 0x1f, 0xe3, 0xff, + 0xfe, 0x90, 0x7, 0xf8, 0xbf, 0xff, 0xff, 0xc1, + 0xfd, 0x0, 0x16, 0xbf, 0xfc, 0x3f, 0xfa, 0x50, + 0x0, 0x7f, 0x43, 0xff, 0xff, 0xfe, 0x2f, 0xd0, + 0x6, 0xbf, 0xff, 0xcb, 0xf4, 0x0, 0x0, 0x2, + 0xfa, 0xfd, 0x0, 0x0, 0x0, 0x3f, 0xbf, 0x40, + 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0, 0x0, 0x0, + 0xff, 0xf0, 0x0, 0x0, 0x0, 0x2f, 0xfc, 0x0, + 0x0, 0x0, 0x3, 0xff, 0x0, 0x0, 0x0, 0x0, + 0xbf, 0xc0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, + 0x0, 0x0, 0x2, 0xfc, 0x0, 0x0, 0x0, 0x0, + 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, + 0x0, 0x0, + + /* U+EF40 "" */ + 0x5, 0x0, 0x5, 0x0, 0x5, 0x0, 0xf, 0xf0, + 0xf, 0xf0, 0xf, 0xf0, 0xb, 0xfd, 0xb, 0xfd, + 0xb, 0xfd, 0x2, 0xff, 0x82, 0xff, 0x82, 0xff, + 0x80, 0x7f, 0xc0, 0x7f, 0xc0, 0x7f, 0xc0, 0x7, + 0x90, 0x7, 0x90, 0x7, 0x90, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x5, 0x0, 0x5, 0x0, 0x0, 0x0, + 0xf, 0xf0, 0xf, 0xf0, 0x0, 0x0, 0xb, 0xfd, + 0xb, 0xfd, 0x0, 0x1f, 0x42, 0xff, 0x82, 0xff, + 0x80, 0x1f, 0xf4, 0x7f, 0xc0, 0x7f, 0xc0, 0x1f, + 0xff, 0x7, 0x90, 0x7, 0x90, 0x1f, 0xff, 0xc0, + 0x0, 0x0, 0x0, 0x1f, 0xff, 0xe0, 0x0, 0x0, + 0x0, 0x1f, 0x4f, 0xe0, 0x5, 0x0, 0x0, 0x1f, + 0x43, 0xe0, 0xf, 0xf0, 0x0, 0x1f, 0x43, 0xe0, + 0xb, 0xfd, 0x0, 0xb, 0x43, 0xe0, 0x2, 0xff, + 0x80, 0x3, 0xd7, 0xe0, 0x0, 0x7f, 0xc0, 0x0, + 0xbf, 0xe0, 0x0, 0x7, 0x90, 0x0, 0x1f, 0xe0, + 0x0, 0x0, + + /* U+EF4A "" */ + 0x0, 0x0, 0x1, 0x55, 0x40, 0x0, 0x0, 0x0, + 0x0, 0x6f, 0xff, 0xfd, 0x0, 0x0, 0x0, 0x2, + 0xff, 0xff, 0xff, 0xd0, 0x0, 0x0, 0x1f, 0xfd, + 0x41, 0x6f, 0xf4, 0x0, 0x0, 0x7f, 0x80, 0x0, + 0x2, 0xfe, 0x0, 0x1, 0xfd, 0x0, 0x0, 0x0, + 0x7f, 0x40, 0x3, 0xf4, 0x0, 0x0, 0x0, 0xf, + 0xc0, 0xb, 0xd0, 0x0, 0x0, 0x0, 0x7, 0xf0, + 0xf, 0xc0, 0x0, 0x0, 0x0, 0x2, 0xf4, 0x2f, + 0x40, 0x0, 0x0, 0x0, 0x0, 0xf8, 0x3f, 0x0, + 0x0, 0x0, 0x0, 0x0, 0xfc, 0x3e, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x7c, 0x3e, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x7d, 0x3d, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x7d, 0x3d, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7d, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7d, + 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbc, 0x2f, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc, 0x1f, 0x40, + 0x0, 0x0, 0x0, 0x1, 0xf8, 0xf, 0xc0, 0x0, + 0x0, 0x0, 0x3, 0xf0, 0x7, 0xf0, 0x0, 0x0, + 0x0, 0xb, 0xe0, 0x3, 0xf8, 0x0, 0x0, 0x0, + 0x2f, 0xc0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xbf, + 0x0, 0x0, 0x3f, 0xe0, 0x0, 0x7, 0xfd, 0x0, + 0x0, 0xb, 0xff, 0xaa, 0xff, 0xf0, 0x0, 0x0, + 0x1, 0xff, 0xff, 0xff, 0x40, 0x0, 0x0, 0x0, + 0x1b, 0xff, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, + + /* U+EFE6 "" */ + 0x0, 0x1b, 0xf4, 0x0, 0x1f, 0xf4, 0x0, 0xbf, + 0xff, 0x0, 0x2f, 0xf8, 0x1, 0xff, 0xbf, 0x80, + 0x2f, 0xf8, 0x3, 0xf0, 0xf, 0xc0, 0xbf, 0xfe, + 0x3, 0xe0, 0x7, 0xd0, 0xff, 0xff, 0x7, 0xd0, + 0x3, 0xe0, 0xff, 0xff, 0x7, 0xd0, 0x3, 0xe0, + 0xff, 0xff, 0x7, 0xd0, 0x3, 0xe0, 0xff, 0xff, + 0x7, 0xd0, 0x3, 0xe0, 0xff, 0xff, 0x7, 0xd0, + 0x3, 0xe0, 0x1b, 0xe4, 0x7, 0xd0, 0x3, 0xe0, + 0x7, 0xd0, 0x7, 0xd0, 0x3, 0xe0, 0x7, 0xd0, + 0x7, 0xd0, 0x3, 0xe0, 0x7, 0xd0, 0x7, 0xd0, + 0x3, 0xe0, 0x7, 0xd0, 0x1b, 0xe4, 0x3, 0xe0, + 0x7, 0xd0, 0xff, 0xff, 0x3, 0xe0, 0x7, 0xd0, + 0xff, 0xff, 0x3, 0xe0, 0x7, 0xd0, 0xff, 0xff, + 0x3, 0xe0, 0x7, 0xd0, 0xff, 0xff, 0x3, 0xe0, + 0x7, 0xd0, 0xff, 0xff, 0x3, 0xe0, 0xb, 0xc0, + 0xbf, 0xfe, 0x3, 0xf4, 0xf, 0xc0, 0x2f, 0xf8, + 0x1, 0xff, 0xff, 0x80, 0x2f, 0xf8, 0x0, 0x7f, + 0xfe, 0x0, 0x1f, 0xf4, 0x0, 0x1b, 0xf4, 0x0, + + /* U+F028 "" */ + 0xa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xbf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xeb, 0xc0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0xbc, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x3, 0xeb, 0xc0, 0x0, + 0x4, 0x1, 0x0, 0x0, 0x3e, 0xbc, 0xf, 0x3, + 0xe0, 0x7c, 0xf, 0x3, 0xeb, 0xc0, 0xf0, 0x3e, + 0x7, 0xc0, 0xf0, 0x3e, 0xbc, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x3, 0xeb, 0xc0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x3e, 0xbc, 0xa, 0x1, 0xd0, 0x34, + 0xa, 0x3, 0xeb, 0xc1, 0xf4, 0x3e, 0xb, 0xc1, + 0xf4, 0x3e, 0xbc, 0xf, 0x2, 0xd0, 0x38, 0xf, + 0x3, 0xeb, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3e, 0xbc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, + 0xeb, 0xc0, 0x0, 0xff, 0xff, 0xf0, 0x0, 0x3e, + 0xbc, 0x0, 0x1f, 0xff, 0xff, 0x40, 0x3, 0xeb, + 0xc0, 0x0, 0xaa, 0xaa, 0xa0, 0x0, 0x3e, 0xbc, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xeb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xa0, + + /* U+F090 "" */ + 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xf4, 0x0, 0x0, 0x0, 0x0, 0xf, 0x80, 0x0, + 0x0, 0x0, 0x0, 0xf8, 0x0, 0x0, 0x0, 0x0, + 0xf, 0x80, 0x0, 0x0, 0x0, 0x0, 0xf8, 0x0, + 0x0, 0x0, 0x0, 0xf, 0x80, 0x0, 0x0, 0x0, + 0x0, 0xf8, 0x0, 0x0, 0x0, 0x18, 0xf, 0x82, + 0x80, 0x0, 0x3, 0xf0, 0xf8, 0xbd, 0x0, 0x0, + 0x2f, 0xdf, 0xaf, 0xc0, 0x0, 0x0, 0xbf, 0xff, + 0xf0, 0x0, 0x0, 0x2, 0xff, 0xfc, 0x0, 0x0, + 0x0, 0xb, 0xff, 0x0, 0x0, 0x0, 0x0, 0x2f, + 0xc0, 0x0, 0x7, 0x80, 0x0, 0xb0, 0x0, 0x2d, + 0xbc, 0x0, 0x0, 0x0, 0x3, 0xeb, 0xc0, 0x0, + 0x0, 0x0, 0x3e, 0xbc, 0x0, 0x0, 0x0, 0x3, + 0xeb, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, + 0xff, 0xff, 0xff, 0xc0, 0xaa, 0xaa, 0xaa, 0xaa, + 0xa0, + + /* U+F15C "" */ + 0x0, 0x0, 0x0, 0x6a, 0x90, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x7f, 0xff, 0xe0, 0x0, 0x0, 0x0, + 0x0, 0x3f, 0xff, 0xff, 0xc0, 0x0, 0x0, 0x0, + 0xf, 0xf8, 0x1, 0xff, 0x0, 0x0, 0x0, 0x2, + 0xfc, 0x0, 0x2, 0xfc, 0x0, 0x0, 0x0, 0x7f, + 0x0, 0x0, 0xb, 0xe0, 0x0, 0x0, 0xb, 0xc0, + 0x0, 0x0, 0x3f, 0x0, 0x0, 0x6, 0xfc, 0x0, + 0x0, 0x1, 0xf4, 0x0, 0x2, 0xff, 0x80, 0x0, + 0x0, 0xf, 0x40, 0x0, 0xff, 0xe4, 0x0, 0x0, + 0x0, 0xf8, 0x0, 0x2f, 0xc0, 0x0, 0x0, 0x0, + 0xf, 0xf8, 0x3, 0xf0, 0x0, 0x0, 0x0, 0x0, + 0xff, 0xf0, 0x7d, 0x0, 0x0, 0x0, 0x0, 0x5, + 0x7f, 0xcb, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xfd, 0xbc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, + 0xeb, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, + 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xe3, + 0xf4, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbd, 0x1f, + 0xe0, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xc0, 0xbf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0x0, 0x1, 0xaa, + 0xaa, 0xaa, 0xaa, 0xa9, 0x0, + + /* U+F720 "" */ + 0x0, 0x0, 0x1, 0x40, 0x0, 0x0, 0x0, 0x0, + 0x7, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, + 0xf8, 0x0, 0x0, 0x0, 0x2f, 0xf9, 0xff, 0xd0, + 0x0, 0x0, 0xbf, 0xe0, 0x7, 0xff, 0x0, 0x1, + 0xff, 0xd0, 0x0, 0x2f, 0xf8, 0x3, 0xff, 0x40, + 0x0, 0x0, 0xbf, 0xd3, 0xfe, 0x0, 0x0, 0x0, + 0x7, 0xfc, 0xff, 0xe0, 0x0, 0x0, 0x7, 0xff, + 0x7f, 0xff, 0x40, 0x0, 0xb, 0xff, 0xdf, 0x9f, + 0xfd, 0x0, 0x2f, 0xf9, 0xf7, 0xe0, 0xbf, 0xe0, + 0x7f, 0xf0, 0x3d, 0xf8, 0x2, 0xff, 0xff, 0xd0, + 0xf, 0x7e, 0x0, 0xf, 0xff, 0x40, 0x3, 0xdf, + 0x80, 0x0, 0x7f, 0x0, 0x0, 0xf7, 0xe0, 0x0, + 0xf, 0x80, 0x0, 0x3d, 0xf8, 0x0, 0x3, 0xe0, + 0x0, 0xf, 0x7e, 0x0, 0x0, 0xf8, 0x0, 0x3, + 0xdf, 0x80, 0x0, 0x3e, 0x0, 0x0, 0xf7, 0xf4, + 0x0, 0xf, 0x80, 0x0, 0xfd, 0xbf, 0xd0, 0x3, + 0xe0, 0x2, 0xff, 0x7, 0xff, 0x0, 0xf8, 0xb, + 0xfe, 0x0, 0x2f, 0xf8, 0x3e, 0x1f, 0xfd, 0x0, + 0x0, 0xbf, 0xef, 0xbf, 0xf4, 0x0, 0x0, 0x7, + 0xff, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x1f, 0xff, + 0x80, 0x0, 0x0, 0x0, 0x0, 0xbf, 0x40, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + + /* U+F8C7 "" */ + 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x3d, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, + 0x0, 0x0, 0x0, 0x1, 0xe0, 0x0, 0x3e, 0x0, + 0x3, 0xc0, 0x3, 0xf0, 0x0, 0x3e, 0x0, 0xb, + 0xe0, 0xb, 0xe0, 0x0, 0x3e, 0x0, 0x3, 0xf0, + 0xf, 0xc0, 0x0, 0x3e, 0x0, 0x1, 0xf8, 0x1f, + 0x40, 0x0, 0x3e, 0x0, 0x0, 0xfc, 0x3f, 0x0, + 0x0, 0x3e, 0x0, 0x0, 0x7d, 0x3e, 0x0, 0x0, + 0x3e, 0x0, 0x0, 0x3e, 0x3e, 0x0, 0x0, 0x3e, + 0x0, 0x0, 0x3e, 0x3d, 0x0, 0x0, 0x3e, 0x0, + 0x0, 0x3e, 0x3d, 0x0, 0x0, 0x3d, 0x0, 0x0, + 0x3e, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, + 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7d, 0x2f, + 0x0, 0x0, 0x0, 0x0, 0x0, 0xbc, 0x1f, 0x80, + 0x0, 0x0, 0x0, 0x0, 0xfc, 0xf, 0xc0, 0x0, + 0x0, 0x0, 0x2, 0xf4, 0x7, 0xf0, 0x0, 0x0, + 0x0, 0x7, 0xf0, 0x2, 0xf8, 0x0, 0x0, 0x0, + 0x1f, 0xd0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x7f, + 0x40, 0x0, 0x3f, 0xe0, 0x0, 0x7, 0xfd, 0x0, + 0x0, 0xb, 0xff, 0xaa, 0xbf, 0xf4, 0x0, 0x0, + 0x1, 0xff, 0xff, 0xff, 0x80, 0x0, 0x0, 0x0, + 0x1b, 0xff, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 512, .box_w = 20, .box_h = 20, .ofs_x = 6, .ofs_y = 6}, + {.bitmap_index = 100, .adv_w = 512, .box_w = 28, .box_h = 22, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 254, .adv_w = 512, .box_w = 20, .box_h = 27, .ofs_x = 6, .ofs_y = 2}, + {.bitmap_index = 389, .adv_w = 512, .box_w = 30, .box_h = 30, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 614, .adv_w = 512, .box_w = 28, .box_h = 22, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 768, .adv_w = 512, .box_w = 28, .box_h = 28, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 964, .adv_w = 512, .box_w = 16, .box_h = 9, .ofs_x = 8, .ofs_y = 12}, + {.bitmap_index = 1000, .adv_w = 512, .box_w = 28, .box_h = 22, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 1154, .adv_w = 512, .box_w = 24, .box_h = 24, .ofs_x = 4, .ofs_y = 4}, + {.bitmap_index = 1298, .adv_w = 512, .box_w = 16, .box_h = 24, .ofs_x = 8, .ofs_y = 4}, + {.bitmap_index = 1394, .adv_w = 512, .box_w = 22, .box_h = 24, .ofs_x = 5, .ofs_y = 4}, + {.bitmap_index = 1526, .adv_w = 512, .box_w = 22, .box_h = 22, .ofs_x = 5, .ofs_y = 5}, + {.bitmap_index = 1647, .adv_w = 512, .box_w = 22, .box_h = 16, .ofs_x = 5, .ofs_y = 8}, + {.bitmap_index = 1735, .adv_w = 512, .box_w = 18, .box_h = 18, .ofs_x = 7, .ofs_y = 7}, + {.bitmap_index = 1816, .adv_w = 512, .box_w = 24, .box_h = 16, .ofs_x = 4, .ofs_y = 8}, + {.bitmap_index = 1912, .adv_w = 512, .box_w = 6, .box_h = 22, .ofs_x = 13, .ofs_y = 5}, + {.bitmap_index = 1945, .adv_w = 512, .box_w = 22, .box_h = 22, .ofs_x = 5, .ofs_y = 5}, + {.bitmap_index = 2066, .adv_w = 512, .box_w = 32, .box_h = 23, .ofs_x = 0, .ofs_y = 4}, + {.bitmap_index = 2250, .adv_w = 512, .box_w = 25, .box_h = 22, .ofs_x = 5, .ofs_y = 5}, + {.bitmap_index = 2388, .adv_w = 512, .box_w = 24, .box_h = 22, .ofs_x = 4, .ofs_y = 5}, + {.bitmap_index = 2520, .adv_w = 512, .box_w = 28, .box_h = 28, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 2716, .adv_w = 512, .box_w = 22, .box_h = 28, .ofs_x = 5, .ofs_y = 2}, + {.bitmap_index = 2870, .adv_w = 512, .box_w = 28, .box_h = 26, .ofs_x = 2, .ofs_y = 4}, + {.bitmap_index = 3052, .adv_w = 512, .box_w = 24, .box_h = 24, .ofs_x = 4, .ofs_y = 4}, + {.bitmap_index = 3196, .adv_w = 512, .box_w = 26, .box_h = 28, .ofs_x = 3, .ofs_y = 2}, + {.bitmap_index = 3378, .adv_w = 512, .box_w = 28, .box_h = 28, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 3574, .adv_w = 512, .box_w = 20, .box_h = 28, .ofs_x = 6, .ofs_y = 2}, + {.bitmap_index = 3714, .adv_w = 512, .box_w = 22, .box_h = 24, .ofs_x = 5, .ofs_y = 4}, + {.bitmap_index = 3846, .adv_w = 512, .box_w = 28, .box_h = 22, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 4000, .adv_w = 512, .box_w = 32, .box_h = 31, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 4248, .adv_w = 512, .box_w = 24, .box_h = 24, .ofs_x = 4, .ofs_y = 4}, + {.bitmap_index = 4392, .adv_w = 512, .box_w = 28, .box_h = 24, .ofs_x = 2, .ofs_y = 4}, + {.bitmap_index = 4560, .adv_w = 512, .box_w = 24, .box_h = 28, .ofs_x = 4, .ofs_y = 2}, + {.bitmap_index = 4728, .adv_w = 512, .box_w = 22, .box_h = 28, .ofs_x = 5, .ofs_y = 2}, + {.bitmap_index = 4882, .adv_w = 512, .box_w = 25, .box_h = 22, .ofs_x = 5, .ofs_y = 5}, + {.bitmap_index = 5020, .adv_w = 512, .box_w = 28, .box_h = 28, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 5216, .adv_w = 512, .box_w = 24, .box_h = 24, .ofs_x = 4, .ofs_y = 4}, + {.bitmap_index = 5360, .adv_w = 512, .box_w = 30, .box_h = 22, .ofs_x = 1, .ofs_y = 5}, + {.bitmap_index = 5525, .adv_w = 512, .box_w = 22, .box_h = 22, .ofs_x = 5, .ofs_y = 5}, + {.bitmap_index = 5646, .adv_w = 512, .box_w = 30, .box_h = 22, .ofs_x = 1, .ofs_y = 5}, + {.bitmap_index = 5811, .adv_w = 512, .box_w = 25, .box_h = 28, .ofs_x = 4, .ofs_y = 2}, + {.bitmap_index = 5986, .adv_w = 512, .box_w = 28, .box_h = 28, .ofs_x = 2, .ofs_y = 2} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x14, 0x9b, 0x148, 0x182, 0x1ca, 0x1d1, 0x1e1, + 0x2af, 0x2c0, 0x418, 0x47e, 0x485, 0x488, 0x48d, 0x48f, + 0x490, 0x4f9, 0x600, 0x62b, 0x74f, 0x757, 0x76a, 0x771, + 0x773, 0x7b8, 0x7ca, 0x7e9, 0x874, 0x8af, 0x8b2, 0xa52, + 0xa87, 0xad7, 0xdfb, 0xe05, 0xea1, 0xee3, 0xf4b, 0x1017, + 0x15db, 0x1782 +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 57669, .range_length = 6019, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 42, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LVGL_VERSION_MAJOR == 8 +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +#endif + +#if LVGL_VERSION_MAJOR >= 8 +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 1, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 0, +#if LVGL_VERSION_MAJOR == 8 + .cache = &cache +#endif +}; + + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LVGL_VERSION_MAJOR >= 8 +const lv_font_t material_symbols_shared_32 = { +#else +lv_font_t material_symbols_shared_32 = { +#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 = 31, /*The maximum line height required by the font*/ + .base_line = -1, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8 + .underline_position = 0, + .underline_thickness = 0, +#endif + .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9 + .fallback = NULL, +#endif + .user_data = NULL, +}; + + + +#endif /*#if MATERIAL_SYMBOLS_SHARED_32*/ + diff --git a/Modules/lvgl-module/source-fonts/material_symbols_statusbar_12.c b/Modules/lvgl-module/source-fonts/material_symbols_statusbar_12.c new file mode 100644 index 00000000..b6955832 --- /dev/null +++ b/Modules/lvgl-module/source-fonts/material_symbols_statusbar_12.c @@ -0,0 +1,246 @@ +/******************************************************************************* + * Size: 12 px + * Bpp: 2 + * Opts: --no-compress --no-prefilter --bpp 2 --size 12 --font MaterialSymbolsRounded.ttf -r 0xF1DB,0xF15C,0xE322,0xE623,0xF057,0xF0B0,0xEBE4,0xEBD6,0xEBE1,0xF065,0xE1DA,0xF064,0xF257,0xF256,0xF255,0xF254,0xF253,0xF252,0xF24F,0xF250 --format lvgl -o ../source-fonts/material_symbols_statusbar_12.c --force-fast-kern-format + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef MATERIAL_SYMBOLS_STATUSBAR_12 +#define MATERIAL_SYMBOLS_STATUSBAR_12 1 +#endif + +#if MATERIAL_SYMBOLS_STATUSBAR_12 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+E1DA "" */ + 0x50, 0x0, 0x0, 0x38, 0xff, 0x80, 0x2e, 0x0, + 0x78, 0xa3, 0x80, 0xe, 0x34, 0xe0, 0x1c, 0xd, + 0x38, 0x70, 0x3, 0x4e, 0x0, 0x0, 0xd7, 0x80, + 0x0, 0x3c, 0xe0, 0x0, 0x0, 0x34, 0x0, 0x0, + 0x0, + + /* U+E322 "" */ + 0x0, 0x0, 0x0, 0x77, 0x40, 0x2e, 0xab, 0x3, + 0x45, 0x34, 0x77, 0xf3, 0x83, 0x77, 0x34, 0x75, + 0xa3, 0x82, 0x55, 0x70, 0x1b, 0xfe, 0x0, 0x11, + 0x0, + + /* U+E623 "" */ + 0x7, 0xff, 0x1c, 0x3, 0x70, 0x43, 0xc5, 0xd7, + 0xc0, 0x43, 0xc0, 0x3, 0xc0, 0x3, 0xc0, 0x3, + 0xc0, 0x3, 0xff, 0xff, + + /* U+EBD6 "" */ + 0x6, 0xff, 0x80, 0x3d, 0x0, 0xb8, 0xa0, 0x0, + 0xc, 0x30, 0x0, 0x28, 0x1d, 0xbd, 0xa0, 0x7, + 0xff, 0x80, 0x1, 0xfe, 0x0, 0x0, 0x78, 0x0, + 0x0, 0x0, 0x0, + + /* U+EBE1 "" */ + 0x6, 0xff, 0x80, 0x3d, 0x0, 0xb8, 0xa0, 0x0, + 0xc, 0x35, 0xfe, 0x28, 0x1f, 0xff, 0xe0, 0x7, + 0xff, 0x80, 0x1, 0xfe, 0x0, 0x0, 0x78, 0x0, + 0x0, 0x0, 0x0, + + /* U+EBE4 "" */ + 0x6, 0xff, 0x80, 0x3d, 0x0, 0xb8, 0xa0, 0x0, + 0xc, 0x30, 0x0, 0x28, 0x1c, 0x0, 0xa0, 0x7, + 0xba, 0x80, 0x1, 0xfe, 0x0, 0x0, 0x78, 0x0, + 0x0, 0x0, 0x0, + + /* U+F057 "" */ + 0x7, 0xff, 0x1c, 0x3, 0x70, 0x3, 0xc1, 0x43, + 0xc1, 0x43, 0xc1, 0x43, 0xc0, 0x3, 0xc0, 0x3, + 0xc0, 0x3, 0xff, 0xff, + + /* U+F064 "" */ + 0x6, 0xff, 0x80, 0x3d, 0x0, 0xb8, 0xa0, 0x0, + 0xd, 0x30, 0x0, 0x18, 0x1c, 0x0, 0x0, 0x7, + 0x0, 0xe8, 0x1, 0xd0, 0xb0, 0x0, 0x78, 0xe8, + 0x0, 0x0, 0x0, + + /* U+F065 "" */ + 0x6, 0xff, 0x80, 0x3f, 0xff, 0xf8, 0xbf, 0xff, + 0xfc, 0x3f, 0xff, 0xf8, 0x1f, 0xff, 0xe0, 0x7, + 0xff, 0x80, 0x1, 0xfe, 0x0, 0x0, 0x78, 0x0, + 0x0, 0x0, 0x0, + + /* U+F0B0 "" */ + 0x6, 0xff, 0x80, 0x3d, 0x0, 0xb8, 0xa0, 0x0, + 0xc, 0x30, 0x0, 0x28, 0x1c, 0x0, 0xa0, 0x7, + 0x2, 0x80, 0x1, 0xda, 0x0, 0x0, 0x78, 0x0, + 0x0, 0x0, 0x0, + + /* U+F15C "" */ + 0x0, 0xbd, 0x0, 0x3, 0x43, 0x40, 0x9, 0x0, + 0xc0, 0x38, 0x0, 0xd0, 0xa0, 0x0, 0x68, 0x90, + 0x0, 0xc, 0x70, 0x0, 0xc, 0x1f, 0xff, 0xf4, + + /* U+F1DB "" */ + 0xb, 0xe0, 0x34, 0x1c, 0x90, 0x6, 0xc3, 0xc3, + 0xc3, 0xc3, 0x90, 0x6, 0x30, 0xc, 0x1c, 0x34, + 0xb, 0xe0, 0x1, 0x40, + + /* U+F24F "" */ + 0x7f, 0xff, 0xe0, 0x96, 0xaa, 0x70, 0xaf, 0xff, + 0xb9, 0xaf, 0xff, 0xb9, 0x96, 0xaa, 0x70, 0x7f, + 0xff, 0xe0, + + /* U+F250 "" */ + 0x7f, 0xff, 0x0, 0x96, 0xa4, 0x20, 0xaf, 0xfc, + 0xf4, 0xaf, 0xf0, 0xb4, 0x96, 0x40, 0x20, 0x7f, + 0xfd, 0x0, + + /* U+F252 "" */ + 0x7f, 0xff, 0xe0, 0x96, 0xa9, 0x30, 0xaf, 0xff, + 0x39, 0xaf, 0xff, 0x39, 0x96, 0xa9, 0x30, 0x7f, + 0xff, 0xe0, + + /* U+F253 "" */ + 0x7f, 0xff, 0xe0, 0x96, 0xa4, 0x30, 0xaf, 0xfc, + 0x39, 0xaf, 0xfc, 0x39, 0x96, 0xa4, 0x30, 0x7f, + 0xff, 0xe0, + + /* U+F254 "" */ + 0x7f, 0xff, 0xe0, 0x96, 0x90, 0x30, 0xaf, 0xf0, + 0x39, 0xaf, 0xf0, 0x39, 0x96, 0x90, 0x30, 0x7f, + 0xff, 0xe0, + + /* U+F255 "" */ + 0x7f, 0xff, 0xe0, 0x96, 0x40, 0x30, 0xaf, 0xc0, + 0x39, 0xaf, 0xc0, 0x39, 0x96, 0x40, 0x30, 0x7f, + 0xff, 0xe0, + + /* U+F256 "" */ + 0x7f, 0xff, 0xe0, 0x95, 0x0, 0x30, 0xaf, 0x0, + 0x39, 0xaf, 0x0, 0x39, 0x95, 0x0, 0x30, 0x7f, + 0xff, 0xe0, + + /* U+F257 "" */ + 0x7f, 0xff, 0xe0, 0x94, 0x0, 0x30, 0xac, 0x0, + 0x39, 0xac, 0x0, 0x39, 0x94, 0x0, 0x30, 0x7f, + 0xff, 0xe0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 192, .box_w = 12, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 33, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 58, .adv_w = 192, .box_w = 8, .box_h = 10, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 78, .adv_w = 192, .box_w = 12, .box_h = 9, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 105, .adv_w = 192, .box_w = 12, .box_h = 9, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 132, .adv_w = 192, .box_w = 12, .box_h = 9, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 159, .adv_w = 192, .box_w = 8, .box_h = 10, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 179, .adv_w = 192, .box_w = 12, .box_h = 9, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 206, .adv_w = 192, .box_w = 12, .box_h = 9, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 233, .adv_w = 192, .box_w = 12, .box_h = 9, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 260, .adv_w = 192, .box_w = 12, .box_h = 8, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 284, .adv_w = 192, .box_w = 8, .box_h = 10, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 304, .adv_w = 192, .box_w = 12, .box_h = 6, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 322, .adv_w = 192, .box_w = 12, .box_h = 6, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 340, .adv_w = 192, .box_w = 12, .box_h = 6, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 358, .adv_w = 192, .box_w = 12, .box_h = 6, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 376, .adv_w = 192, .box_w = 12, .box_h = 6, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 394, .adv_w = 192, .box_w = 12, .box_h = 6, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 412, .adv_w = 192, .box_w = 12, .box_h = 6, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 430, .adv_w = 192, .box_w = 12, .box_h = 6, .ofs_x = 0, .ofs_y = 3} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x148, 0x449, 0x9fc, 0xa07, 0xa0a, 0xe7d, 0xe8a, + 0xe8b, 0xed6, 0xf82, 0x1001, 0x1075, 0x1076, 0x1078, 0x1079, + 0x107a, 0x107b, 0x107c, 0x107d +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 57818, .range_length = 4222, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 20, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LVGL_VERSION_MAJOR == 8 +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +#endif + +#if LVGL_VERSION_MAJOR >= 8 +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 1, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 0, +#if LVGL_VERSION_MAJOR == 8 + .cache = &cache +#endif +}; + + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LVGL_VERSION_MAJOR >= 8 +const lv_font_t material_symbols_statusbar_12 = { +#else +lv_font_t material_symbols_statusbar_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 = 11, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8 + .underline_position = 0, + .underline_thickness = 0, +#endif + .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9 + .fallback = NULL, +#endif + .user_data = NULL, +}; + + + +#endif /*#if MATERIAL_SYMBOLS_STATUSBAR_12*/ + diff --git a/Modules/lvgl-module/source-fonts/material_symbols_statusbar_16.c b/Modules/lvgl-module/source-fonts/material_symbols_statusbar_16.c new file mode 100644 index 00000000..a0daf909 --- /dev/null +++ b/Modules/lvgl-module/source-fonts/material_symbols_statusbar_16.c @@ -0,0 +1,283 @@ +/******************************************************************************* + * Size: 16 px + * Bpp: 2 + * Opts: --no-compress --no-prefilter --bpp 2 --size 16 --font MaterialSymbolsRounded.ttf -r 0xF1DB,0xF15C,0xE322,0xE623,0xF057,0xF0B0,0xEBE4,0xEBD6,0xEBE1,0xF065,0xE1DA,0xF064,0xF257,0xF256,0xF255,0xF254,0xF253,0xF252,0xF24F,0xF250 --format lvgl -o ../source-fonts/material_symbols_statusbar_16.c --force-fast-kern-format + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef MATERIAL_SYMBOLS_STATUSBAR_16 +#define MATERIAL_SYMBOLS_STATUSBAR_16 1 +#endif + +#if MATERIAL_SYMBOLS_STATUSBAR_16 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+E1DA "" */ + 0x0, 0x0, 0x0, 0x0, 0x34, 0x1, 0x40, 0x0, + 0x1d, 0x2f, 0xfe, 0x40, 0x1f, 0x40, 0x6, 0xf0, + 0x79, 0xd0, 0x0, 0x2d, 0xb4, 0x74, 0x0, 0x1d, + 0x2d, 0x1d, 0x0, 0x74, 0xb, 0x47, 0x41, 0xd0, + 0x2, 0xd1, 0xd1, 0x40, 0x0, 0xb4, 0x74, 0x0, + 0x0, 0x2d, 0x7d, 0x0, 0x0, 0xb, 0xd7, 0x40, + 0x0, 0x1, 0x41, 0xd0, 0x0, 0x0, 0x0, 0x70, + 0x0, 0x0, 0x0, 0x0, + + /* U+E322 "" */ + 0x0, 0x21, 0x40, 0x0, 0x6e, 0xf5, 0x0, 0xff, + 0xff, 0xd0, 0x34, 0x0, 0x34, 0x3d, 0x3f, 0x8f, + 0x87, 0x4d, 0xb3, 0x81, 0xd3, 0x6c, 0xe0, 0xf4, + 0xfe, 0x3e, 0xd, 0x0, 0xd, 0x3, 0x95, 0x57, + 0x40, 0x7f, 0xff, 0xc0, 0x0, 0xca, 0x0, 0x0, + 0x0, 0x0, 0x0, + + /* U+E623 "" */ + 0x0, 0x15, 0x54, 0x1, 0xff, 0xfc, 0x7, 0x80, + 0xd, 0x1e, 0x0, 0xd, 0x38, 0xdd, 0xdd, 0x70, + 0xdd, 0xdd, 0x70, 0x0, 0xd, 0x70, 0x0, 0xd, + 0x70, 0x0, 0xd, 0x70, 0x0, 0xd, 0x70, 0x0, + 0xd, 0x70, 0x0, 0xd, 0x7a, 0xaa, 0xad, 0x2a, + 0xaa, 0xa8, + + /* U+EBD6 "" */ + 0x0, 0x1, 0x40, 0x0, 0x1, 0xbf, 0xff, 0x40, + 0xf, 0x90, 0x6, 0xf4, 0x3c, 0x0, 0x0, 0x2d, + 0x38, 0x0, 0x0, 0x1d, 0x1e, 0x0, 0x0, 0x78, + 0x7, 0x8b, 0xe5, 0xe0, 0x1, 0xff, 0xff, 0x80, + 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x1f, 0xf8, 0x0, + 0x0, 0x7, 0xe0, 0x0, 0x0, 0x0, 0x40, 0x0, + + /* U+EBE1 "" */ + 0x0, 0x1, 0x40, 0x0, 0x1, 0xbf, 0xff, 0x40, + 0xf, 0xd0, 0x6, 0xf4, 0x3d, 0x0, 0x0, 0x2d, + 0x34, 0x0, 0x0, 0xd, 0x1d, 0x2f, 0xf9, 0x38, + 0x7, 0xff, 0xff, 0xe0, 0x1, 0xff, 0xff, 0xc0, + 0x0, 0xbf, 0xff, 0x0, 0x0, 0x2f, 0xfc, 0x0, + 0x0, 0xb, 0xf0, 0x0, 0x0, 0x1, 0x80, 0x0, + + /* U+EBE4 "" */ + 0x0, 0x1, 0x40, 0x0, 0x1, 0xbf, 0xff, 0x40, + 0xf, 0x90, 0x6, 0xf4, 0x38, 0x0, 0x0, 0x2d, + 0x38, 0x0, 0x0, 0x1d, 0x1e, 0x0, 0x0, 0x78, + 0x7, 0x80, 0x1, 0xe0, 0x0, 0xe6, 0x97, 0x80, + 0x0, 0x3f, 0xfd, 0x0, 0x0, 0xf, 0xf4, 0x0, + 0x0, 0x3, 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, + + /* U+F057 "" */ + 0x0, 0x15, 0x54, 0x1, 0xff, 0xfc, 0x7, 0x80, + 0xd, 0x1e, 0x0, 0xd, 0x38, 0x0, 0xd, 0x70, + 0x28, 0xd, 0x70, 0x28, 0xd, 0x70, 0x14, 0xd, + 0x70, 0x0, 0xd, 0x70, 0x28, 0xd, 0x70, 0x0, + 0xd, 0x70, 0x0, 0xd, 0x7a, 0xaa, 0xad, 0x2a, + 0xaa, 0xa8, + + /* U+F064 "" */ + 0x0, 0x1, 0x40, 0x0, 0x1, 0xbf, 0xff, 0x40, + 0xf, 0x90, 0x6, 0xf4, 0x38, 0x0, 0x0, 0x2d, + 0x38, 0x0, 0x0, 0x1d, 0x1e, 0x0, 0x0, 0x28, + 0x7, 0x80, 0x0, 0x0, 0x1, 0xe0, 0x2, 0x18, + 0x0, 0x78, 0x3, 0xf4, 0x0, 0x1e, 0x41, 0xf0, + 0x0, 0x7, 0xd3, 0x78, 0x0, 0x0, 0x0, 0x0, + + /* U+F065 "" */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0xbf, 0xfe, 0x0, + 0xb, 0xff, 0xff, 0xf0, 0x3f, 0xff, 0xff, 0xfc, + 0x3f, 0xff, 0xff, 0xfd, 0x2f, 0xff, 0xff, 0xfc, + 0xb, 0xff, 0xff, 0xf0, 0x2, 0xff, 0xff, 0xc0, + 0x0, 0xbf, 0xff, 0x0, 0x0, 0x2f, 0xfc, 0x0, + 0x0, 0xb, 0xf0, 0x0, 0x0, 0x1, 0x80, 0x0, + + /* U+F0B0 "" */ + 0x0, 0x1, 0x40, 0x0, 0x1, 0xbf, 0xff, 0x40, + 0xf, 0x90, 0x6, 0xf4, 0x3c, 0x0, 0x0, 0x2d, + 0x38, 0x0, 0x0, 0x1d, 0x1e, 0x0, 0x0, 0x78, + 0x7, 0x80, 0x1, 0xe0, 0x1, 0xe0, 0x7, 0x80, + 0x0, 0x78, 0x1e, 0x0, 0x0, 0x1e, 0x78, 0x0, + 0x0, 0x7, 0xe0, 0x0, 0x0, 0x0, 0x40, 0x0, + + /* U+F15C "" */ + 0x0, 0x1, 0x40, 0x0, 0x0, 0x2f, 0xf4, 0x0, + 0x0, 0xb4, 0x2d, 0x0, 0x1, 0xc0, 0xb, 0x0, + 0x7, 0xc0, 0x3, 0x40, 0x2e, 0x0, 0x3, 0xd0, + 0x34, 0x0, 0x2, 0xb8, 0x70, 0x0, 0x0, 0x1c, + 0x30, 0x0, 0x0, 0xd, 0x3c, 0x0, 0x0, 0x2c, + 0xf, 0xff, 0xff, 0xf4, 0x0, 0x55, 0x55, 0x40, + + /* U+F1DB "" */ + 0x0, 0x55, 0x0, 0x3, 0xff, 0xc0, 0xe, 0x0, + 0xb0, 0x3c, 0x0, 0x3c, 0x34, 0x14, 0x1c, 0x70, + 0x3c, 0xd, 0x70, 0x3c, 0xd, 0x34, 0x0, 0x1c, + 0x2c, 0x0, 0x38, 0xe, 0x0, 0xb0, 0x3, 0x41, + 0xc0, 0x1, 0xd7, 0x40, 0x0, 0x7d, 0x0, 0x0, + 0x0, 0x0, + + /* U+F24F "" */ + 0x2f, 0xff, 0xff, 0x80, 0x35, 0x55, 0x55, 0xd0, + 0x73, 0xff, 0xfd, 0xd4, 0x77, 0xff, 0xfd, 0xdc, + 0x77, 0xff, 0xfd, 0xdc, 0x77, 0xff, 0xfd, 0xd8, + 0x35, 0x55, 0x55, 0xd0, 0x2f, 0xff, 0xff, 0x80, + + /* U+F250 "" */ + 0x2f, 0xff, 0xfc, 0x0, 0x35, 0x55, 0x50, 0x50, + 0x73, 0xff, 0xe1, 0xc0, 0x77, 0xff, 0xc3, 0xe8, + 0x77, 0xff, 0x46, 0xf4, 0x73, 0xfe, 0x0, 0xe0, + 0x35, 0x55, 0x50, 0xc0, 0x2f, 0xff, 0xf0, 0x0, + + /* U+F252 "" */ + 0x2f, 0xff, 0xff, 0x80, 0x35, 0x55, 0x55, 0xd0, + 0x73, 0xff, 0xf4, 0xd4, 0x77, 0xff, 0xf4, 0xdc, + 0x77, 0xff, 0xf4, 0xdc, 0x77, 0xff, 0xf4, 0xd8, + 0x35, 0x55, 0x55, 0xd0, 0x2f, 0xff, 0xff, 0x80, + + /* U+F253 "" */ + 0x2f, 0xff, 0xff, 0x80, 0x35, 0x55, 0x55, 0xd0, + 0x73, 0xff, 0xc0, 0xd4, 0x77, 0xff, 0xc0, 0xdc, + 0x77, 0xff, 0xc0, 0xdc, 0x77, 0xff, 0xc0, 0xd8, + 0x35, 0x55, 0x55, 0xd0, 0x2f, 0xff, 0xff, 0x80, + + /* U+F254 "" */ + 0x2f, 0xff, 0xff, 0x80, 0x35, 0x55, 0x55, 0xd0, + 0x73, 0xfe, 0x0, 0xd4, 0x77, 0xff, 0x0, 0xdc, + 0x77, 0xff, 0x0, 0xdc, 0x77, 0xff, 0x0, 0xd8, + 0x35, 0x55, 0x55, 0xd0, 0x2f, 0xff, 0xff, 0x80, + + /* U+F255 "" */ + 0x2f, 0xff, 0xff, 0x80, 0x35, 0x55, 0x55, 0xd0, + 0x73, 0xf4, 0x0, 0xd4, 0x77, 0xf8, 0x0, 0xdc, + 0x77, 0xf8, 0x0, 0xdc, 0x77, 0xf8, 0x0, 0xd8, + 0x35, 0x55, 0x55, 0xd0, 0x2f, 0xff, 0xff, 0x80, + + /* U+F256 "" */ + 0x2f, 0xff, 0xff, 0x80, 0x35, 0x55, 0x55, 0xd0, + 0x73, 0xc0, 0x0, 0xd4, 0x77, 0xd0, 0x0, 0xdc, + 0x77, 0xd0, 0x0, 0xdc, 0x77, 0xc0, 0x0, 0xd8, + 0x35, 0x55, 0x55, 0xd0, 0x2f, 0xff, 0xff, 0x80, + + /* U+F257 "" */ + 0x2f, 0xff, 0xff, 0x80, 0x35, 0x55, 0x55, 0xd0, + 0x72, 0x0, 0x0, 0xd4, 0x77, 0x0, 0x0, 0xdc, + 0x77, 0x0, 0x0, 0xdc, 0x77, 0x0, 0x0, 0xd8, + 0x35, 0x55, 0x55, 0xd0, 0x2f, 0xff, 0xff, 0x80 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 256, .box_w = 16, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 60, .adv_w = 256, .box_w = 13, .box_h = 13, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 103, .adv_w = 256, .box_w = 12, .box_h = 14, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 145, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 193, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 241, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 289, .adv_w = 256, .box_w = 12, .box_h = 14, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 331, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 379, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 427, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 475, .adv_w = 256, .box_w = 16, .box_h = 12, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 523, .adv_w = 256, .box_w = 12, .box_h = 14, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 565, .adv_w = 256, .box_w = 16, .box_h = 8, .ofs_x = 0, .ofs_y = 4}, + {.bitmap_index = 597, .adv_w = 256, .box_w = 16, .box_h = 8, .ofs_x = 0, .ofs_y = 4}, + {.bitmap_index = 629, .adv_w = 256, .box_w = 16, .box_h = 8, .ofs_x = 0, .ofs_y = 4}, + {.bitmap_index = 661, .adv_w = 256, .box_w = 16, .box_h = 8, .ofs_x = 0, .ofs_y = 4}, + {.bitmap_index = 693, .adv_w = 256, .box_w = 16, .box_h = 8, .ofs_x = 0, .ofs_y = 4}, + {.bitmap_index = 725, .adv_w = 256, .box_w = 16, .box_h = 8, .ofs_x = 0, .ofs_y = 4}, + {.bitmap_index = 757, .adv_w = 256, .box_w = 16, .box_h = 8, .ofs_x = 0, .ofs_y = 4}, + {.bitmap_index = 789, .adv_w = 256, .box_w = 16, .box_h = 8, .ofs_x = 0, .ofs_y = 4} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x148, 0x449, 0x9fc, 0xa07, 0xa0a, 0xe7d, 0xe8a, + 0xe8b, 0xed6, 0xf82, 0x1001, 0x1075, 0x1076, 0x1078, 0x1079, + 0x107a, 0x107b, 0x107c, 0x107d +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 57818, .range_length = 4222, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 20, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LVGL_VERSION_MAJOR == 8 +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +#endif + +#if LVGL_VERSION_MAJOR >= 8 +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 1, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 0, +#if LVGL_VERSION_MAJOR == 8 + .cache = &cache +#endif +}; + + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LVGL_VERSION_MAJOR >= 8 +const lv_font_t material_symbols_statusbar_16 = { +#else +lv_font_t material_symbols_statusbar_16 = { +#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 = 15, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8 + .underline_position = 0, + .underline_thickness = 0, +#endif + .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9 + .fallback = NULL, +#endif + .user_data = NULL, +}; + + + +#endif /*#if MATERIAL_SYMBOLS_STATUSBAR_16*/ + diff --git a/Modules/lvgl-module/Source/fonts/material_symbols_statusbar_20.c b/Modules/lvgl-module/source-fonts/material_symbols_statusbar_20.c similarity index 76% rename from Modules/lvgl-module/Source/fonts/material_symbols_statusbar_20.c rename to Modules/lvgl-module/source-fonts/material_symbols_statusbar_20.c index 0e1360b0..83b9e0f0 100644 --- a/Modules/lvgl-module/Source/fonts/material_symbols_statusbar_20.c +++ b/Modules/lvgl-module/source-fonts/material_symbols_statusbar_20.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 20 px * Bpp: 2 - * Opts: --no-compress --no-prefilter --bpp 2 --size 20 --font MaterialSymbolsRounded.ttf -r 0xF1DB,0xF15C,0xE623,0xF057,0xF0B0,0xEBE4,0xEBD6,0xEBE1,0xF065,0xE1DA,0xF257,0xF256,0xF255,0xF254,0xF253,0xF252,0xF250 --format lvgl -o ../Source/fonts/material_symbols_statusbar_20.c --force-fast-kern-format + * Opts: --no-compress --no-prefilter --bpp 2 --size 20 --font MaterialSymbolsRounded.ttf -r 0xF1DB,0xF15C,0xE322,0xE623,0xF057,0xF0B0,0xEBE4,0xEBD6,0xEBE1,0xF065,0xE1DA,0xF064,0xF257,0xF256,0xF255,0xF254,0xF253,0xF252,0xF24F,0xF250 --format lvgl -o ../source-fonts/material_symbols_statusbar_20.c --force-fast-kern-format ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE @@ -36,6 +36,16 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0x0, 0x0, 0x0, 0x0, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, + /* U+E322 "" */ + 0x0, 0x0, 0x10, 0x0, 0x0, 0x2c, 0x34, 0x0, + 0x2, 0xbe, 0xfe, 0x80, 0xf, 0xff, 0xff, 0xe0, + 0xe, 0x0, 0x0, 0xe0, 0x2e, 0xa, 0x90, 0xf4, + 0x7e, 0x2f, 0xf4, 0xfd, 0xe, 0x2c, 0x74, 0xf0, + 0xe, 0x2c, 0x74, 0xf0, 0x7e, 0x2f, 0xf4, 0xfd, + 0x2e, 0xa, 0xa0, 0xf4, 0xe, 0x0, 0x0, 0xe0, + 0xf, 0xaa, 0xaa, 0xe0, 0x7, 0xff, 0xff, 0xc0, + 0x0, 0x2c, 0x34, 0x0, 0x0, 0x4, 0x20, 0x0, + /* U+E623 "" */ 0x0, 0x1a, 0xaa, 0x40, 0xb, 0xff, 0xfd, 0x2, 0xe0, 0x0, 0xe0, 0xb8, 0x0, 0xe, 0x2e, 0x10, @@ -89,6 +99,17 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xe, 0xb0, 0x0, 0x0, 0xeb, 0x55, 0x55, 0x5e, 0x7f, 0xff, 0xff, 0xd0, 0x55, 0x55, 0x50, + /* U+F064 "" */ + 0x0, 0x1, 0xaa, 0x40, 0x0, 0x0, 0xbf, 0xff, + 0xfe, 0x0, 0x7, 0xf9, 0x0, 0x6f, 0xd0, 0x2f, + 0x40, 0x0, 0x1, 0xf8, 0x38, 0x0, 0x0, 0x0, + 0x2c, 0x3d, 0x0, 0x0, 0x0, 0x7c, 0xf, 0x40, + 0x0, 0x0, 0xb0, 0x3, 0xd0, 0x0, 0x0, 0x0, + 0x0, 0xf4, 0x0, 0x0, 0x0, 0x0, 0x3d, 0x0, + 0x2d, 0xb4, 0x0, 0xf, 0x40, 0xf, 0xe0, 0x0, + 0x3, 0xd0, 0xb, 0xd0, 0x0, 0x0, 0xfe, 0x1f, + 0xf0, 0x0, 0x0, 0x3c, 0x18, 0x20, + /* U+F065 "" */ 0x0, 0x1, 0x69, 0x40, 0x0, 0x0, 0x7f, 0xff, 0xfd, 0x0, 0x7, 0xff, 0xff, 0xff, 0xd0, 0x2f, @@ -132,6 +153,15 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { 0xc0, 0x0, 0xfa, 0xf0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0xa, 0x0, 0x0, + /* U+F24F "" */ + 0xf, 0xff, 0xff, 0xff, 0x0, 0x3e, 0xaa, 0xaa, + 0xab, 0xc0, 0x38, 0x6a, 0xaa, 0x92, 0xc0, 0x3a, + 0xff, 0xff, 0xfa, 0xcc, 0x3a, 0xff, 0xff, 0xfa, + 0xcc, 0x3a, 0xff, 0xff, 0xfa, 0xcc, 0x3a, 0xff, + 0xff, 0xfa, 0xcc, 0x38, 0x6a, 0xaa, 0x92, 0xc0, + 0x3e, 0xaa, 0xaa, 0xab, 0xc0, 0xf, 0xff, 0xff, + 0xff, 0x0, + /* U+F250 "" */ 0xf, 0xff, 0xff, 0xe0, 0x0, 0xfa, 0xaa, 0xaa, 0x43, 0x3, 0x86, 0xaa, 0x90, 0x28, 0xe, 0xbf, @@ -203,22 +233,25 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, {.bitmap_index = 0, .adv_w = 320, .box_w = 20, .box_h = 18, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 90, .adv_w = 320, .box_w = 14, .box_h = 18, .ofs_x = 3, .ofs_y = 1}, - {.bitmap_index = 153, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, - {.bitmap_index = 223, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, - {.bitmap_index = 293, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, - {.bitmap_index = 363, .adv_w = 320, .box_w = 14, .box_h = 18, .ofs_x = 3, .ofs_y = 1}, - {.bitmap_index = 426, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, - {.bitmap_index = 496, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, - {.bitmap_index = 566, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, - {.bitmap_index = 636, .adv_w = 320, .box_w = 14, .box_h = 17, .ofs_x = 3, .ofs_y = 2}, - {.bitmap_index = 696, .adv_w = 320, .box_w = 19, .box_h = 10, .ofs_x = 0, .ofs_y = 5}, - {.bitmap_index = 744, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 5}, - {.bitmap_index = 794, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 5}, - {.bitmap_index = 844, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 5}, - {.bitmap_index = 894, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 5}, - {.bitmap_index = 944, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 5}, - {.bitmap_index = 994, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 5} + {.bitmap_index = 90, .adv_w = 320, .box_w = 16, .box_h = 16, .ofs_x = 2, .ofs_y = 2}, + {.bitmap_index = 154, .adv_w = 320, .box_w = 14, .box_h = 18, .ofs_x = 3, .ofs_y = 1}, + {.bitmap_index = 217, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 287, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 357, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 427, .adv_w = 320, .box_w = 14, .box_h = 18, .ofs_x = 3, .ofs_y = 1}, + {.bitmap_index = 490, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 560, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 630, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 700, .adv_w = 320, .box_w = 20, .box_h = 14, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 770, .adv_w = 320, .box_w = 14, .box_h = 17, .ofs_x = 3, .ofs_y = 2}, + {.bitmap_index = 830, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 5}, + {.bitmap_index = 880, .adv_w = 320, .box_w = 19, .box_h = 10, .ofs_x = 0, .ofs_y = 5}, + {.bitmap_index = 928, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 5}, + {.bitmap_index = 978, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 5}, + {.bitmap_index = 1028, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 5}, + {.bitmap_index = 1078, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 5}, + {.bitmap_index = 1128, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 5}, + {.bitmap_index = 1178, .adv_w = 320, .box_w = 20, .box_h = 10, .ofs_x = 0, .ofs_y = 5} }; /*--------------------- @@ -226,9 +259,9 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { *--------------------*/ static const uint16_t unicode_list_0[] = { - 0x0, 0x449, 0x9fc, 0xa07, 0xa0a, 0xe7d, 0xe8b, 0xed6, - 0xf82, 0x1001, 0x1076, 0x1078, 0x1079, 0x107a, 0x107b, 0x107c, - 0x107d + 0x0, 0x148, 0x449, 0x9fc, 0xa07, 0xa0a, 0xe7d, 0xe8a, + 0xe8b, 0xed6, 0xf82, 0x1001, 0x1075, 0x1076, 0x1078, 0x1079, + 0x107a, 0x107b, 0x107c, 0x107d }; /*Collect the unicode lists and glyph_id offsets*/ @@ -236,7 +269,7 @@ static const lv_font_fmt_txt_cmap_t cmaps[] = { { .range_start = 57818, .range_length = 4222, .glyph_id_start = 1, - .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 17, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 20, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY } }; diff --git a/Modules/lvgl-module/source-fonts/material_symbols_statusbar_30.c b/Modules/lvgl-module/source-fonts/material_symbols_statusbar_30.c new file mode 100644 index 00000000..bd24080f --- /dev/null +++ b/Modules/lvgl-module/source-fonts/material_symbols_statusbar_30.c @@ -0,0 +1,514 @@ +/******************************************************************************* + * Size: 30 px + * Bpp: 2 + * Opts: --no-compress --no-prefilter --bpp 2 --size 30 --font MaterialSymbolsRounded.ttf -r 0xF1DB,0xF15C,0xE322,0xE623,0xF057,0xF0B0,0xEBE4,0xEBD6,0xEBE1,0xF065,0xE1DA,0xF064,0xF257,0xF256,0xF255,0xF254,0xF253,0xF252,0xF24F,0xF250 --format lvgl -o ../source-fonts/material_symbols_statusbar_30.c --force-fast-kern-format + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef MATERIAL_SYMBOLS_STATUSBAR_30 +#define MATERIAL_SYMBOLS_STATUSBAR_30 1 +#endif + +#if MATERIAL_SYMBOLS_STATUSBAR_30 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+E1DA "" */ + 0x1d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, + 0xf4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, + 0xd0, 0x6, 0xff, 0xf9, 0x0, 0x0, 0x0, 0x3f, + 0x40, 0xff, 0xff, 0xff, 0x80, 0x0, 0x1, 0xfd, + 0xb, 0xaa, 0xaf, 0xff, 0x80, 0x0, 0x2f, 0xf4, + 0x0, 0x0, 0x7, 0xff, 0x40, 0xf, 0xff, 0xd0, + 0x0, 0x0, 0x2, 0xfe, 0x7, 0xf8, 0x3f, 0x40, + 0x0, 0x0, 0x3, 0xfc, 0xbe, 0x0, 0xfd, 0x0, + 0x0, 0x0, 0xf, 0xc3, 0xf8, 0x3, 0xf4, 0x0, + 0x0, 0x3, 0xf8, 0xf, 0xe0, 0xf, 0xd0, 0x0, + 0x0, 0xfe, 0x0, 0x3f, 0x80, 0x3f, 0x40, 0x0, + 0x3f, 0x80, 0x0, 0xfe, 0x0, 0xfd, 0x0, 0xf, + 0xe0, 0x0, 0x3, 0xf8, 0x3, 0xf4, 0x3, 0xf8, + 0x0, 0x0, 0xf, 0xe0, 0xf, 0xd0, 0x3e, 0x0, + 0x0, 0x0, 0x3f, 0x80, 0x3f, 0x40, 0x0, 0x0, + 0x0, 0x0, 0xfe, 0x0, 0xfd, 0x0, 0x0, 0x0, + 0x0, 0x3, 0xf8, 0x7, 0xf4, 0x0, 0x0, 0x0, + 0x0, 0xf, 0xe0, 0xff, 0xd0, 0x0, 0x0, 0x0, + 0x0, 0x3f, 0xbf, 0xbf, 0x40, 0x0, 0x0, 0x0, + 0x0, 0xff, 0xe0, 0xfd, 0x0, 0x0, 0x0, 0x0, + 0x3, 0xf8, 0x3, 0xf4, 0x0, 0x0, 0x0, 0x0, + 0x9, 0x0, 0xf, 0xd0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x3f, 0x40, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x2, 0x0, + + /* U+E322 "" */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xb4, 0x2d, 0x0, 0x0, 0x0, 0x0, 0xf8, 0x3e, + 0x0, 0x0, 0x0, 0x6a, 0xfe, 0xbf, 0xa4, 0x0, + 0x1, 0xff, 0xff, 0xff, 0xff, 0x0, 0x3, 0xff, + 0xff, 0xff, 0xff, 0x40, 0x3, 0xe0, 0x0, 0x0, + 0xf, 0x80, 0x3, 0xe0, 0x0, 0x0, 0xf, 0x80, + 0x2b, 0xe0, 0x6a, 0xa8, 0xf, 0xe4, 0x7f, 0xe0, + 0xff, 0xfe, 0xf, 0xfc, 0x3f, 0xe0, 0xff, 0xfe, + 0xf, 0xf8, 0x3, 0xe0, 0xf8, 0x3e, 0xf, 0x80, + 0x3, 0xe0, 0xf8, 0x3e, 0xf, 0x80, 0x2b, 0xe0, + 0xfe, 0xbe, 0xf, 0xe4, 0x7f, 0xe0, 0xff, 0xfe, + 0xf, 0xfc, 0x3f, 0xe0, 0x7f, 0xfc, 0xf, 0xf8, + 0x3, 0xe0, 0x0, 0x0, 0xf, 0x80, 0x3, 0xe0, + 0x0, 0x0, 0xf, 0x80, 0x3, 0xfa, 0xaa, 0xaa, + 0xaf, 0x80, 0x2, 0xff, 0xff, 0xff, 0xff, 0x40, + 0x0, 0xbf, 0xff, 0xff, 0xfd, 0x0, 0x0, 0x0, + 0xf8, 0x3e, 0x0, 0x0, 0x0, 0x0, 0xf4, 0x3d, + 0x0, 0x0, 0x0, 0x0, 0x10, 0x4, 0x0, 0x0, + + /* U+E623 "" */ + 0x0, 0x0, 0x6a, 0xaa, 0x90, 0x0, 0x7, 0xff, + 0xff, 0xfd, 0x0, 0x1f, 0xff, 0xff, 0xff, 0x0, + 0x7f, 0x0, 0x0, 0x2f, 0x1, 0xfc, 0x0, 0x0, + 0x2f, 0x7, 0xf0, 0x0, 0x0, 0x2f, 0x1f, 0xc0, + 0x0, 0x0, 0x2f, 0x7f, 0xb, 0x8f, 0x4f, 0x2f, + 0xfc, 0xb, 0x8f, 0x8f, 0x2f, 0xf8, 0xb, 0x8f, + 0x8f, 0x2f, 0xf8, 0xb, 0x8f, 0x8f, 0x2f, 0xf8, + 0x6, 0x46, 0xa, 0x2f, 0xf8, 0x0, 0x0, 0x0, + 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, + 0x0, 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x2f, + 0xf8, 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, 0x0, + 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x2f, 0xf8, + 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, + 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, + 0x0, 0x0, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7f, 0xff, 0xff, 0xff, 0xfd, 0x6, 0xaa, 0xaa, + 0xaa, 0x90, + + /* U+EBD6 "" */ + 0x0, 0x0, 0x1b, 0xff, 0xe4, 0x0, 0x0, 0x0, + 0xb, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0, 0xff, + 0xfe, 0xaa, 0xbf, 0xff, 0x0, 0xb, 0xfe, 0x40, + 0x0, 0x1, 0xbf, 0xe0, 0x3f, 0xe0, 0x0, 0x0, + 0x0, 0xb, 0xfc, 0xbe, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xbe, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3f, 0xbf, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfd, + 0x2f, 0xc0, 0x0, 0x0, 0x0, 0x3, 0xf8, 0xb, + 0xf0, 0x0, 0x0, 0x0, 0xf, 0xe0, 0x2, 0xfc, + 0x2, 0xbe, 0x80, 0x3f, 0x80, 0x0, 0xbf, 0x2f, + 0xff, 0xf8, 0xfe, 0x0, 0x0, 0x2f, 0xff, 0xff, + 0xff, 0xf8, 0x0, 0x0, 0xb, 0xff, 0xff, 0xff, + 0xe0, 0x0, 0x0, 0x2, 0xff, 0xff, 0xff, 0x80, + 0x0, 0x0, 0x0, 0xbf, 0xff, 0xfe, 0x0, 0x0, + 0x0, 0x0, 0x2f, 0xff, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0xb, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, + 0x2, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xbe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, + + /* U+EBE1 "" */ + 0x0, 0x0, 0x1b, 0xff, 0xe4, 0x0, 0x0, 0x0, + 0xb, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x1, 0xff, + 0xfe, 0xaa, 0xbf, 0xff, 0x40, 0xb, 0xfe, 0x40, + 0x0, 0x1, 0xbf, 0xe0, 0x3f, 0xe0, 0x0, 0x0, + 0x0, 0xb, 0xfc, 0xbe, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xbe, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3f, 0x7f, 0x0, 0x1, 0xaa, 0x40, 0x0, 0xfd, + 0x2f, 0xc0, 0x7f, 0xff, 0xfd, 0x3, 0xf8, 0xb, + 0xf7, 0xff, 0xff, 0xff, 0xdf, 0xe0, 0x2, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x80, 0x0, 0xbf, 0xff, + 0xff, 0xff, 0xfe, 0x0, 0x0, 0x2f, 0xff, 0xff, + 0xff, 0xf8, 0x0, 0x0, 0xb, 0xff, 0xff, 0xff, + 0xe0, 0x0, 0x0, 0x2, 0xff, 0xff, 0xff, 0x80, + 0x0, 0x0, 0x0, 0xbf, 0xff, 0xfe, 0x0, 0x0, + 0x0, 0x0, 0x2f, 0xff, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0xb, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, + 0x2, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xbe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, + + /* U+EBE4 "" */ + 0x0, 0x0, 0x1b, 0xff, 0xe4, 0x0, 0x0, 0x0, + 0xb, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0, 0xff, + 0xfe, 0xaa, 0xbf, 0xff, 0x0, 0xb, 0xfe, 0x40, + 0x0, 0x1, 0xbf, 0xe0, 0x3f, 0xe0, 0x0, 0x0, + 0x0, 0xb, 0xfc, 0xbf, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xfe, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3f, 0xbf, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, + 0x2f, 0xc0, 0x0, 0x0, 0x0, 0x3, 0xf8, 0xb, + 0xf0, 0x0, 0x0, 0x0, 0xf, 0xe0, 0x2, 0xfc, + 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, 0xbf, 0x0, + 0x0, 0x0, 0xfe, 0x0, 0x0, 0x2f, 0xc0, 0x0, + 0x3, 0xf8, 0x0, 0x0, 0xb, 0xf2, 0xff, 0x8f, + 0xe0, 0x0, 0x0, 0x2, 0xff, 0xff, 0xff, 0x80, + 0x0, 0x0, 0x0, 0xbf, 0xff, 0xfe, 0x0, 0x0, + 0x0, 0x0, 0x2f, 0xff, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0xb, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, + 0x2, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xbe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, + + /* U+F057 "" */ + 0x0, 0x0, 0x6a, 0xaa, 0x90, 0x0, 0x7, 0xff, + 0xff, 0xfd, 0x0, 0x1f, 0xff, 0xff, 0xff, 0x0, + 0x7f, 0x0, 0x0, 0x2f, 0x1, 0xfc, 0x0, 0x0, + 0x2f, 0x7, 0xf0, 0x0, 0x0, 0x2f, 0x1f, 0xc0, + 0x0, 0x0, 0x2f, 0x7f, 0x0, 0x0, 0x0, 0x2f, + 0xfc, 0x0, 0x3c, 0x0, 0x2f, 0xf8, 0x0, 0x3c, + 0x0, 0x2f, 0xf8, 0x0, 0x3c, 0x0, 0x2f, 0xf8, + 0x0, 0x3c, 0x0, 0x2f, 0xf8, 0x0, 0x3c, 0x0, + 0x2f, 0xf8, 0x0, 0x3c, 0x0, 0x2f, 0xf8, 0x0, + 0x0, 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x2f, + 0xf8, 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, 0x3c, + 0x0, 0x2f, 0xf8, 0x0, 0x3c, 0x0, 0x2f, 0xf8, + 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, 0x0, 0x0, + 0x2f, 0xf8, 0x0, 0x0, 0x0, 0x2f, 0xf8, 0x0, + 0x0, 0x0, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7f, 0xff, 0xff, 0xff, 0xfd, 0x6, 0xaa, 0xaa, + 0xaa, 0x90, + + /* U+F064 "" */ + 0x0, 0x0, 0x6b, 0xff, 0xe9, 0x0, 0x0, 0x0, + 0xb, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0, 0xff, + 0xfe, 0xaa, 0xbf, 0xff, 0x0, 0xb, 0xfe, 0x40, + 0x0, 0x1, 0xbf, 0xe0, 0x3f, 0xe0, 0x0, 0x0, + 0x0, 0xb, 0xfc, 0xbe, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xbe, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3f, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfd, + 0x2f, 0xc0, 0x0, 0x0, 0x0, 0x1, 0xf8, 0xb, + 0xf0, 0x0, 0x0, 0x0, 0x1, 0xe0, 0x2, 0xfc, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbf, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xc0, 0x0, + 0x1, 0x40, 0x20, 0x0, 0xb, 0xf0, 0x0, 0x3, + 0xe1, 0xf8, 0x0, 0x2, 0xfc, 0x0, 0x2, 0xff, + 0xf4, 0x0, 0x0, 0xbf, 0x0, 0x0, 0xbf, 0xd0, + 0x0, 0x0, 0x2f, 0xc0, 0x0, 0x7f, 0xc0, 0x0, + 0x0, 0xb, 0xfb, 0x1, 0xff, 0xe0, 0x0, 0x0, + 0x2, 0xff, 0x43, 0xf6, 0xf4, 0x0, 0x0, 0x0, + 0xbe, 0x3, 0xd0, 0xb4, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, + + /* U+F065 "" */ + 0x0, 0x0, 0x1b, 0xff, 0xe4, 0x0, 0x0, 0x0, + 0xb, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x0, 0xb, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xe0, 0x3f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfc, 0xbf, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, + 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xb, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x2, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x80, 0x0, 0xbf, 0xff, + 0xff, 0xff, 0xfe, 0x0, 0x0, 0x2f, 0xff, 0xff, + 0xff, 0xf8, 0x0, 0x0, 0xb, 0xff, 0xff, 0xff, + 0xe0, 0x0, 0x0, 0x2, 0xff, 0xff, 0xff, 0x80, + 0x0, 0x0, 0x0, 0xbf, 0xff, 0xfe, 0x0, 0x0, + 0x0, 0x0, 0x2f, 0xff, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0xb, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, + 0x2, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xbe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, + + /* U+F0B0 "" */ + 0x0, 0x0, 0x1b, 0xff, 0xe4, 0x0, 0x0, 0x0, + 0xb, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0, 0xff, + 0xfe, 0xaa, 0xbf, 0xff, 0x0, 0xb, 0xfe, 0x40, + 0x0, 0x1, 0xbf, 0xe0, 0x3f, 0xe0, 0x0, 0x0, + 0x0, 0xb, 0xfc, 0xbe, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xbe, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3f, 0xbf, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, + 0x2f, 0xc0, 0x0, 0x0, 0x0, 0x3, 0xf8, 0xb, + 0xf0, 0x0, 0x0, 0x0, 0xf, 0xe0, 0x2, 0xfc, + 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, 0xbf, 0x0, + 0x0, 0x0, 0xfe, 0x0, 0x0, 0x2f, 0xc0, 0x0, + 0x3, 0xf8, 0x0, 0x0, 0xb, 0xf0, 0x0, 0xf, + 0xe0, 0x0, 0x0, 0x2, 0xfc, 0x0, 0x3f, 0x80, + 0x0, 0x0, 0x0, 0xbf, 0x0, 0xfe, 0x0, 0x0, + 0x0, 0x0, 0x2f, 0xc3, 0xf8, 0x0, 0x0, 0x0, + 0x0, 0xb, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, + 0x2, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xbe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, + + /* U+F15C "" */ + 0x0, 0x0, 0x6, 0xff, 0x80, 0x0, 0x0, 0x0, + 0x0, 0x3f, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, + 0xff, 0xaa, 0xff, 0x0, 0x0, 0x0, 0x3, 0xf8, + 0x0, 0x2f, 0xc0, 0x0, 0x0, 0xb, 0xd0, 0x0, + 0xb, 0xd0, 0x0, 0x0, 0xf, 0x80, 0x0, 0x3, + 0xf0, 0x0, 0x0, 0x2f, 0x0, 0x0, 0x1, 0xf4, + 0x0, 0x2, 0xff, 0x0, 0x0, 0x0, 0xf4, 0x0, + 0xf, 0xfe, 0x0, 0x0, 0x0, 0xf8, 0x0, 0x2f, + 0x80, 0x0, 0x0, 0x0, 0xff, 0x80, 0x3e, 0x0, + 0x0, 0x0, 0x0, 0xff, 0xf0, 0xbc, 0x0, 0x0, + 0x0, 0x0, 0x16, 0xfc, 0xbc, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x7d, 0xbc, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x3e, 0xbc, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x3e, 0x7d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, + 0x3f, 0x40, 0x0, 0x0, 0x0, 0x0, 0xbd, 0xf, + 0xfa, 0xaa, 0xaa, 0xaa, 0xab, 0xfc, 0x7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf0, 0x0, 0x7f, 0xff, + 0xff, 0xff, 0xff, 0x40, + + /* U+F1DB "" */ + 0x0, 0x0, 0x55, 0x0, 0x0, 0x0, 0x1f, 0xff, + 0xf4, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x3, + 0xfd, 0x0, 0x7f, 0xc0, 0xf, 0xd0, 0x0, 0x7, + 0xf0, 0x2f, 0x40, 0x0, 0x1, 0xf8, 0x3e, 0x0, + 0x0, 0x0, 0xbc, 0xbc, 0x0, 0x0, 0x0, 0x3e, + 0xfc, 0x0, 0x7d, 0x0, 0x3f, 0xf8, 0x0, 0xff, + 0x0, 0x2f, 0xf8, 0x1, 0xff, 0x40, 0x2f, 0xf8, + 0x0, 0xff, 0x0, 0x2f, 0xfc, 0x0, 0x7d, 0x0, + 0x3f, 0xbc, 0x0, 0x0, 0x0, 0x3d, 0x3e, 0x0, + 0x0, 0x0, 0xbc, 0x2f, 0x0, 0x0, 0x0, 0xf8, + 0xf, 0xc0, 0x0, 0x3, 0xf0, 0x7, 0xe0, 0x0, + 0xb, 0xd0, 0x2, 0xf4, 0x0, 0x1f, 0x80, 0x0, + 0xfd, 0x0, 0x7f, 0x0, 0x0, 0x3f, 0x41, 0xfc, + 0x0, 0x0, 0xf, 0xd7, 0xf0, 0x0, 0x0, 0x7, + 0xff, 0xd0, 0x0, 0x0, 0x1, 0xff, 0x40, 0x0, + 0x0, 0x0, 0x28, 0x0, 0x0, + + /* U+F24F "" */ + 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0x50, 0x0, 0x2f, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0x0, 0x7f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x0, 0xfc, 0x0, 0x0, + 0x0, 0x0, 0x1f, 0x40, 0xf8, 0x6a, 0xaa, 0xaa, + 0xaa, 0xf, 0x40, 0xf8, 0xff, 0xff, 0xff, 0xff, + 0x8f, 0x4d, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xcf, + 0x4f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x4f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x4f, 0xf8, + 0xff, 0xff, 0xff, 0xff, 0xcf, 0x4f, 0xf8, 0xff, + 0xff, 0xff, 0xff, 0xcf, 0x4e, 0xf8, 0xbf, 0xff, + 0xff, 0xff, 0x4f, 0x44, 0xfc, 0x0, 0x0, 0x0, + 0x0, 0x1f, 0x40, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x0, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xfd, + 0x0, 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0x50, 0x0, + + /* U+F250 "" */ + 0x1, 0xaa, 0xaa, 0xaa, 0xa4, 0x0, 0x0, 0x2f, + 0xff, 0xff, 0xff, 0xfd, 0x0, 0x0, 0x7f, 0xff, + 0xff, 0xff, 0xfc, 0x3, 0x0, 0xfc, 0x0, 0x0, + 0x0, 0x0, 0xb, 0x0, 0xf8, 0x6a, 0xaa, 0xaa, + 0x40, 0x2f, 0x0, 0xf8, 0xff, 0xff, 0xff, 0xc0, + 0x7e, 0x0, 0xf8, 0xff, 0xff, 0xff, 0x80, 0xfe, + 0x0, 0xf8, 0xff, 0xff, 0xff, 0x3, 0xff, 0xfc, + 0xf8, 0xff, 0xff, 0xfc, 0xb, 0xff, 0xf0, 0xf8, + 0xff, 0xff, 0xf4, 0x1, 0x5f, 0xd0, 0xf8, 0xff, + 0xff, 0xe0, 0x0, 0x1f, 0x80, 0xf8, 0xbf, 0xff, + 0x80, 0x0, 0x2f, 0x0, 0xfc, 0x0, 0x0, 0x0, + 0x0, 0x3c, 0x0, 0x7f, 0xff, 0xff, 0xff, 0xf0, + 0x30, 0x0, 0x2f, 0xff, 0xff, 0xff, 0xf0, 0x10, + 0x0, 0x1, 0xaa, 0xaa, 0xaa, 0x50, 0x0, 0x0, + + /* U+F252 "" */ + 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0x50, 0x0, 0x2f, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0x0, 0x7f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x0, 0xfc, 0x0, 0x0, + 0x0, 0x0, 0x1f, 0x40, 0xf8, 0x6a, 0xaa, 0xaa, + 0xa0, 0xf, 0x40, 0xf8, 0xff, 0xff, 0xff, 0xfc, + 0xf, 0x4d, 0xf8, 0xff, 0xff, 0xff, 0xfc, 0xf, + 0x4f, 0xf8, 0xff, 0xff, 0xff, 0xfc, 0xf, 0x4f, + 0xf8, 0xff, 0xff, 0xff, 0xfc, 0xf, 0x4f, 0xf8, + 0xff, 0xff, 0xff, 0xfc, 0xf, 0x4f, 0xf8, 0xff, + 0xff, 0xff, 0xfc, 0xf, 0x4e, 0xf8, 0xbf, 0xff, + 0xff, 0xf8, 0xf, 0x44, 0xfc, 0x0, 0x0, 0x0, + 0x0, 0x1f, 0x40, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x0, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xfd, + 0x0, 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0x50, 0x0, + + /* U+F253 "" */ + 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0x50, 0x0, 0x2f, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0x0, 0x7f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x0, 0xfc, 0x0, 0x0, + 0x0, 0x0, 0x1f, 0x40, 0xf8, 0x6a, 0xaa, 0xa9, + 0x0, 0xf, 0x40, 0xf8, 0xff, 0xff, 0xff, 0x40, + 0xf, 0x4d, 0xf8, 0xff, 0xff, 0xff, 0x40, 0xf, + 0x4f, 0xf8, 0xff, 0xff, 0xff, 0x40, 0xf, 0x4f, + 0xf8, 0xff, 0xff, 0xff, 0x40, 0xf, 0x4f, 0xf8, + 0xff, 0xff, 0xff, 0x40, 0xf, 0x4f, 0xf8, 0xff, + 0xff, 0xff, 0x40, 0xf, 0x4e, 0xf8, 0xbf, 0xff, + 0xff, 0x0, 0xf, 0x44, 0xfc, 0x0, 0x0, 0x0, + 0x0, 0x1f, 0x40, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x0, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xfd, + 0x0, 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0x50, 0x0, + + /* U+F254 "" */ + 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0x50, 0x0, 0x2f, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0x0, 0x7f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x0, 0xfc, 0x0, 0x0, + 0x0, 0x0, 0x1f, 0x40, 0xf8, 0x6a, 0xaa, 0x80, + 0x0, 0xf, 0x40, 0xf8, 0xff, 0xff, 0xf0, 0x0, + 0xf, 0x4d, 0xf8, 0xff, 0xff, 0xf0, 0x0, 0xf, + 0x4f, 0xf8, 0xff, 0xff, 0xf0, 0x0, 0xf, 0x4f, + 0xf8, 0xff, 0xff, 0xf0, 0x0, 0xf, 0x4f, 0xf8, + 0xff, 0xff, 0xf0, 0x0, 0xf, 0x4f, 0xf8, 0xff, + 0xff, 0xf0, 0x0, 0xf, 0x4e, 0xf8, 0xbf, 0xff, + 0xe0, 0x0, 0xf, 0x44, 0xfc, 0x0, 0x0, 0x0, + 0x0, 0x1f, 0x40, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x0, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xfd, + 0x0, 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0x50, 0x0, + + /* U+F255 "" */ + 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0x50, 0x0, 0x2f, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0x0, 0x7f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x0, 0xfc, 0x0, 0x0, + 0x0, 0x0, 0x1f, 0x40, 0xf8, 0x6a, 0xa4, 0x0, + 0x0, 0xf, 0x40, 0xf8, 0xff, 0xfd, 0x0, 0x0, + 0xf, 0x4d, 0xf8, 0xff, 0xfd, 0x0, 0x0, 0xf, + 0x4f, 0xf8, 0xff, 0xfd, 0x0, 0x0, 0xf, 0x4f, + 0xf8, 0xff, 0xfd, 0x0, 0x0, 0xf, 0x4f, 0xf8, + 0xff, 0xfd, 0x0, 0x0, 0xf, 0x4f, 0xf8, 0xff, + 0xfd, 0x0, 0x0, 0xf, 0x4e, 0xf8, 0xbf, 0xfc, + 0x0, 0x0, 0xf, 0x44, 0xfc, 0x0, 0x0, 0x0, + 0x0, 0x1f, 0x40, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x0, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xfd, + 0x0, 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0x50, 0x0, + + /* U+F256 "" */ + 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0x50, 0x0, 0x2f, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0x0, 0x7f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x0, 0xfc, 0x0, 0x0, + 0x0, 0x0, 0x1f, 0x40, 0xf8, 0x6a, 0x0, 0x0, + 0x0, 0xf, 0x40, 0xf8, 0xff, 0xc0, 0x0, 0x0, + 0xf, 0x4d, 0xf8, 0xff, 0xc0, 0x0, 0x0, 0xf, + 0x4f, 0xf8, 0xff, 0xc0, 0x0, 0x0, 0xf, 0x4f, + 0xf8, 0xff, 0xc0, 0x0, 0x0, 0xf, 0x4f, 0xf8, + 0xff, 0xc0, 0x0, 0x0, 0xf, 0x4f, 0xf8, 0xff, + 0xc0, 0x0, 0x0, 0xf, 0x4e, 0xf8, 0xbf, 0x80, + 0x0, 0x0, 0xf, 0x44, 0xfc, 0x0, 0x0, 0x0, + 0x0, 0x1f, 0x40, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x0, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xfd, + 0x0, 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0x50, 0x0, + + /* U+F257 "" */ + 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0x50, 0x0, 0x2f, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0x0, 0x7f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x0, 0xfc, 0x0, 0x0, + 0x0, 0x0, 0x1f, 0x40, 0xf8, 0x60, 0x0, 0x0, + 0x0, 0xf, 0x40, 0xf8, 0xf4, 0x0, 0x0, 0x0, + 0xf, 0x4d, 0xf8, 0xf4, 0x0, 0x0, 0x0, 0xf, + 0x4f, 0xf8, 0xf4, 0x0, 0x0, 0x0, 0xf, 0x4f, + 0xf8, 0xf4, 0x0, 0x0, 0x0, 0xf, 0x4f, 0xf8, + 0xf4, 0x0, 0x0, 0x0, 0xf, 0x4f, 0xf8, 0xf4, + 0x0, 0x0, 0x0, 0xf, 0x4e, 0xf8, 0xb0, 0x0, + 0x0, 0x0, 0xf, 0x40, 0xfc, 0x0, 0x0, 0x0, + 0x0, 0x1f, 0x40, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x0, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xfd, + 0x0, 0x1, 0xaa, 0xaa, 0xaa, 0xaa, 0x50, 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 480, .box_w = 30, .box_h = 26, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 195, .adv_w = 480, .box_w = 24, .box_h = 24, .ofs_x = 3, .ofs_y = 3}, + {.bitmap_index = 339, .adv_w = 480, .box_w = 20, .box_h = 26, .ofs_x = 5, .ofs_y = 2}, + {.bitmap_index = 469, .adv_w = 480, .box_w = 28, .box_h = 21, .ofs_x = 1, .ofs_y = 4}, + {.bitmap_index = 616, .adv_w = 480, .box_w = 28, .box_h = 21, .ofs_x = 1, .ofs_y = 4}, + {.bitmap_index = 763, .adv_w = 480, .box_w = 28, .box_h = 21, .ofs_x = 1, .ofs_y = 4}, + {.bitmap_index = 910, .adv_w = 480, .box_w = 20, .box_h = 26, .ofs_x = 5, .ofs_y = 2}, + {.bitmap_index = 1040, .adv_w = 480, .box_w = 28, .box_h = 21, .ofs_x = 1, .ofs_y = 4}, + {.bitmap_index = 1187, .adv_w = 480, .box_w = 28, .box_h = 21, .ofs_x = 1, .ofs_y = 4}, + {.bitmap_index = 1334, .adv_w = 480, .box_w = 28, .box_h = 21, .ofs_x = 1, .ofs_y = 4}, + {.bitmap_index = 1481, .adv_w = 480, .box_w = 28, .box_h = 20, .ofs_x = 1, .ofs_y = 5}, + {.bitmap_index = 1621, .adv_w = 480, .box_w = 20, .box_h = 25, .ofs_x = 5, .ofs_y = 3}, + {.bitmap_index = 1746, .adv_w = 480, .box_w = 28, .box_h = 16, .ofs_x = 1, .ofs_y = 7}, + {.bitmap_index = 1858, .adv_w = 480, .box_w = 28, .box_h = 16, .ofs_x = 1, .ofs_y = 7}, + {.bitmap_index = 1970, .adv_w = 480, .box_w = 28, .box_h = 16, .ofs_x = 1, .ofs_y = 7}, + {.bitmap_index = 2082, .adv_w = 480, .box_w = 28, .box_h = 16, .ofs_x = 1, .ofs_y = 7}, + {.bitmap_index = 2194, .adv_w = 480, .box_w = 28, .box_h = 16, .ofs_x = 1, .ofs_y = 7}, + {.bitmap_index = 2306, .adv_w = 480, .box_w = 28, .box_h = 16, .ofs_x = 1, .ofs_y = 7}, + {.bitmap_index = 2418, .adv_w = 480, .box_w = 28, .box_h = 16, .ofs_x = 1, .ofs_y = 7}, + {.bitmap_index = 2530, .adv_w = 480, .box_w = 28, .box_h = 16, .ofs_x = 1, .ofs_y = 7} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x148, 0x449, 0x9fc, 0xa07, 0xa0a, 0xe7d, 0xe8a, + 0xe8b, 0xed6, 0xf82, 0x1001, 0x1075, 0x1076, 0x1078, 0x1079, + 0x107a, 0x107b, 0x107c, 0x107d +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 57818, .range_length = 4222, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 20, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LVGL_VERSION_MAJOR == 8 +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +#endif + +#if LVGL_VERSION_MAJOR >= 8 +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 1, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 0, +#if LVGL_VERSION_MAJOR == 8 + .cache = &cache +#endif +}; + + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LVGL_VERSION_MAJOR >= 8 +const lv_font_t material_symbols_statusbar_30 = { +#else +lv_font_t material_symbols_statusbar_30 = { +#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 = 27, /*The maximum line height required by the font*/ + .base_line = -1, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8 + .underline_position = 0, + .underline_thickness = 0, +#endif + .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9 + .fallback = NULL, +#endif + .user_data = NULL, +}; + + + +#endif /*#if MATERIAL_SYMBOLS_STATUSBAR_30*/ + diff --git a/Modules/lvgl-module/Source/arch/lvgl_esp32.c b/Modules/lvgl-module/source/arch/lvgl_esp32.c similarity index 100% rename from Modules/lvgl-module/Source/arch/lvgl_esp32.c rename to Modules/lvgl-module/source/arch/lvgl_esp32.c diff --git a/Modules/lvgl-module/Source/arch/lvgl_posix.c b/Modules/lvgl-module/source/arch/lvgl_posix.c similarity index 100% rename from Modules/lvgl-module/Source/arch/lvgl_posix.c rename to Modules/lvgl-module/source/arch/lvgl_posix.c diff --git a/Modules/lvgl-module/source/lvgl_fonts.c b/Modules/lvgl-module/source/lvgl_fonts.c new file mode 100644 index 00000000..184c6fda --- /dev/null +++ b/Modules/lvgl-module/source/lvgl_fonts.c @@ -0,0 +1,42 @@ +#include +#include +#include + +// The preprocessor definitions that are used below are defined in the CMakeLists.txt from this module. + +extern const lv_font_t TT_LVGL_TEXT_FONT_SMALL_SYMBOL; +extern const lv_font_t TT_LVGL_TEXT_FONT_DEFAULT_SYMBOL; +extern const lv_font_t TT_LVGL_TEXT_FONT_LARGE_SYMBOL; + +extern const lv_font_t TT_LVGL_LAUNCHER_FONT_ICON_SYMBOL; +extern const lv_font_t TT_LVGL_STATUSBAR_FONT_ICON_SYMBOL; +extern const lv_font_t TT_LVGL_SHARED_FONT_ICON_SYMBOL; + +uint32_t lvgl_get_text_font_height(enum LvglFontSize font_size) { + switch (font_size) { + case FONT_SIZE_SMALL: return TT_LVGL_TEXT_FONT_SMALL_SIZE; + case FONT_SIZE_DEFAULT: return TT_LVGL_TEXT_FONT_DEFAULT_SIZE; + case FONT_SIZE_LARGE: return TT_LVGL_TEXT_FONT_LARGE_SIZE; + default: check(false); + } +} +const lv_font_t* lvgl_get_text_font(enum LvglFontSize font_size) { + switch (font_size) { + case FONT_SIZE_SMALL: return &TT_LVGL_TEXT_FONT_SMALL_SYMBOL; + case FONT_SIZE_DEFAULT: return &TT_LVGL_TEXT_FONT_DEFAULT_SYMBOL; + case FONT_SIZE_LARGE: return &TT_LVGL_TEXT_FONT_LARGE_SYMBOL; + default: check(false); + } +} + +uint32_t lvgl_get_shared_icon_font_height() { return TT_LVGL_SHARED_FONT_ICON_SIZE; } + +const lv_font_t* lvgl_get_shared_icon_font() { return &TT_LVGL_SHARED_FONT_ICON_SYMBOL; } + +uint32_t lvgl_get_launcher_icon_font_height() { return TT_LVGL_LAUNCHER_FONT_ICON_SIZE; } + +const lv_font_t* lvgl_get_launcher_icon_font() { return &TT_LVGL_LAUNCHER_FONT_ICON_SYMBOL; } + +uint32_t lvgl_get_statusbar_icon_font_height() { return TT_LVGL_STATUSBAR_FONT_ICON_SIZE; } + +const lv_font_t* lvgl_get_statusbar_icon_font() { return &TT_LVGL_STATUSBAR_FONT_ICON_SYMBOL; } diff --git a/Modules/lvgl-module/Source/module.c b/Modules/lvgl-module/source/module.c similarity index 100% rename from Modules/lvgl-module/Source/module.c rename to Modules/lvgl-module/source/module.c diff --git a/Modules/lvgl-module/Source/symbols.c b/Modules/lvgl-module/source/symbols.c similarity index 100% rename from Modules/lvgl-module/Source/symbols.c rename to Modules/lvgl-module/source/symbols.c diff --git a/Platforms/PlatformPosix/CMakeLists.txt b/Platforms/PlatformPosix/CMakeLists.txt deleted file mode 100644 index 48b7127b..00000000 --- a/Platforms/PlatformPosix/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -cmake_minimum_required(VERSION 3.20) - -file(GLOB_RECURSE SOURCES "Source/*.c**") - -add_library(PlatformPosix OBJECT) -target_sources(PlatformPosix PRIVATE ${SOURCES}) -#target_include_directories(PlatformPosix PUBLIC Include/) -target_link_libraries(PlatformPosix PUBLIC TactilityKernel) diff --git a/Platforms/PlatformEsp32/CMakeLists.txt b/Platforms/platform-esp32/CMakeLists.txt similarity index 53% rename from Platforms/PlatformEsp32/CMakeLists.txt rename to Platforms/platform-esp32/CMakeLists.txt index d4535a89..e0445b4d 100644 --- a/Platforms/PlatformEsp32/CMakeLists.txt +++ b/Platforms/platform-esp32/CMakeLists.txt @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.20) -file(GLOB_RECURSE SOURCES "Source/*.c**") +file(GLOB_RECURSE SOURCES "source/*.c**") idf_component_register( SRCS ${SOURCES} - INCLUDE_DIRS "Include/" - PRIV_INCLUDE_DIRS "Private/" + INCLUDE_DIRS "include/" + PRIV_INCLUDE_DIRS "private/" REQUIRES TactilityKernel driver -) \ No newline at end of file +) diff --git a/Platforms/PlatformEsp32/Bindings/espressif,esp32-gpio.yaml b/Platforms/platform-esp32/bindings/espressif,esp32-gpio.yaml similarity index 100% rename from Platforms/PlatformEsp32/Bindings/espressif,esp32-gpio.yaml rename to Platforms/platform-esp32/bindings/espressif,esp32-gpio.yaml diff --git a/Platforms/PlatformEsp32/Bindings/espressif,esp32-i2c.yaml b/Platforms/platform-esp32/bindings/espressif,esp32-i2c.yaml similarity index 100% rename from Platforms/PlatformEsp32/Bindings/espressif,esp32-i2c.yaml rename to Platforms/platform-esp32/bindings/espressif,esp32-i2c.yaml diff --git a/Platforms/PlatformEsp32/Bindings/espressif,esp32-i2s.yaml b/Platforms/platform-esp32/bindings/espressif,esp32-i2s.yaml similarity index 100% rename from Platforms/PlatformEsp32/Bindings/espressif,esp32-i2s.yaml rename to Platforms/platform-esp32/bindings/espressif,esp32-i2s.yaml diff --git a/Platforms/PlatformEsp32/Bindings/espressif,esp32-spi.yaml b/Platforms/platform-esp32/bindings/espressif,esp32-spi.yaml similarity index 100% rename from Platforms/PlatformEsp32/Bindings/espressif,esp32-spi.yaml rename to Platforms/platform-esp32/bindings/espressif,esp32-spi.yaml diff --git a/Platforms/PlatformEsp32/Bindings/espressif,esp32-uart.yaml b/Platforms/platform-esp32/bindings/espressif,esp32-uart.yaml similarity index 100% rename from Platforms/PlatformEsp32/Bindings/espressif,esp32-uart.yaml rename to Platforms/platform-esp32/bindings/espressif,esp32-uart.yaml diff --git a/Platforms/PlatformEsp32/devicetree.yaml b/Platforms/platform-esp32/devicetree.yaml similarity index 64% rename from Platforms/PlatformEsp32/devicetree.yaml rename to Platforms/platform-esp32/devicetree.yaml index df5465c0..a07d6f33 100644 --- a/Platforms/PlatformEsp32/devicetree.yaml +++ b/Platforms/platform-esp32/devicetree.yaml @@ -1,3 +1,3 @@ dependencies: - TactilityKernel -bindings: Bindings +bindings: bindings diff --git a/Platforms/PlatformEsp32/Include/tactility/bindings/esp32_gpio.h b/Platforms/platform-esp32/include/tactility/bindings/esp32_gpio.h similarity index 100% rename from Platforms/PlatformEsp32/Include/tactility/bindings/esp32_gpio.h rename to Platforms/platform-esp32/include/tactility/bindings/esp32_gpio.h diff --git a/Platforms/PlatformEsp32/Include/tactility/bindings/esp32_i2c.h b/Platforms/platform-esp32/include/tactility/bindings/esp32_i2c.h similarity index 100% rename from Platforms/PlatformEsp32/Include/tactility/bindings/esp32_i2c.h rename to Platforms/platform-esp32/include/tactility/bindings/esp32_i2c.h diff --git a/Platforms/PlatformEsp32/Include/tactility/bindings/esp32_i2s.h b/Platforms/platform-esp32/include/tactility/bindings/esp32_i2s.h similarity index 100% rename from Platforms/PlatformEsp32/Include/tactility/bindings/esp32_i2s.h rename to Platforms/platform-esp32/include/tactility/bindings/esp32_i2s.h diff --git a/Platforms/PlatformEsp32/Include/tactility/bindings/esp32_spi.h b/Platforms/platform-esp32/include/tactility/bindings/esp32_spi.h similarity index 100% rename from Platforms/PlatformEsp32/Include/tactility/bindings/esp32_spi.h rename to Platforms/platform-esp32/include/tactility/bindings/esp32_spi.h diff --git a/Platforms/PlatformEsp32/Include/tactility/bindings/esp32_uart.h b/Platforms/platform-esp32/include/tactility/bindings/esp32_uart.h similarity index 100% rename from Platforms/PlatformEsp32/Include/tactility/bindings/esp32_uart.h rename to Platforms/platform-esp32/include/tactility/bindings/esp32_uart.h diff --git a/Platforms/PlatformEsp32/Include/tactility/drivers/esp32_gpio.h b/Platforms/platform-esp32/include/tactility/drivers/esp32_gpio.h similarity index 100% rename from Platforms/PlatformEsp32/Include/tactility/drivers/esp32_gpio.h rename to Platforms/platform-esp32/include/tactility/drivers/esp32_gpio.h diff --git a/Platforms/PlatformEsp32/Include/tactility/drivers/esp32_i2c.h b/Platforms/platform-esp32/include/tactility/drivers/esp32_i2c.h similarity index 100% rename from Platforms/PlatformEsp32/Include/tactility/drivers/esp32_i2c.h rename to Platforms/platform-esp32/include/tactility/drivers/esp32_i2c.h diff --git a/Platforms/PlatformEsp32/Include/tactility/drivers/esp32_i2s.h b/Platforms/platform-esp32/include/tactility/drivers/esp32_i2s.h similarity index 100% rename from Platforms/PlatformEsp32/Include/tactility/drivers/esp32_i2s.h rename to Platforms/platform-esp32/include/tactility/drivers/esp32_i2s.h diff --git a/Platforms/PlatformEsp32/Include/tactility/drivers/esp32_spi.h b/Platforms/platform-esp32/include/tactility/drivers/esp32_spi.h similarity index 100% rename from Platforms/PlatformEsp32/Include/tactility/drivers/esp32_spi.h rename to Platforms/platform-esp32/include/tactility/drivers/esp32_spi.h diff --git a/Platforms/PlatformEsp32/Include/tactility/drivers/esp32_uart.h b/Platforms/platform-esp32/include/tactility/drivers/esp32_uart.h similarity index 100% rename from Platforms/PlatformEsp32/Include/tactility/drivers/esp32_uart.h rename to Platforms/platform-esp32/include/tactility/drivers/esp32_uart.h diff --git a/Platforms/PlatformEsp32/Include/tactility/error_esp32.h b/Platforms/platform-esp32/include/tactility/error_esp32.h similarity index 100% rename from Platforms/PlatformEsp32/Include/tactility/error_esp32.h rename to Platforms/platform-esp32/include/tactility/error_esp32.h diff --git a/Platforms/PlatformEsp32/Private/tactility/drivers/esp32_gpio_helpers.h b/Platforms/platform-esp32/private/tactility/drivers/esp32_gpio_helpers.h similarity index 100% rename from Platforms/PlatformEsp32/Private/tactility/drivers/esp32_gpio_helpers.h rename to Platforms/platform-esp32/private/tactility/drivers/esp32_gpio_helpers.h diff --git a/Platforms/PlatformEsp32/Source/drivers/esp32_gpio.cpp b/Platforms/platform-esp32/source/drivers/esp32_gpio.cpp similarity index 100% rename from Platforms/PlatformEsp32/Source/drivers/esp32_gpio.cpp rename to Platforms/platform-esp32/source/drivers/esp32_gpio.cpp diff --git a/Platforms/PlatformEsp32/Source/drivers/esp32_gpio_helpers.cpp b/Platforms/platform-esp32/source/drivers/esp32_gpio_helpers.cpp similarity index 100% rename from Platforms/PlatformEsp32/Source/drivers/esp32_gpio_helpers.cpp rename to Platforms/platform-esp32/source/drivers/esp32_gpio_helpers.cpp diff --git a/Platforms/PlatformEsp32/Source/drivers/esp32_i2c.cpp b/Platforms/platform-esp32/source/drivers/esp32_i2c.cpp similarity index 100% rename from Platforms/PlatformEsp32/Source/drivers/esp32_i2c.cpp rename to Platforms/platform-esp32/source/drivers/esp32_i2c.cpp diff --git a/Platforms/PlatformEsp32/Source/drivers/esp32_i2s.cpp b/Platforms/platform-esp32/source/drivers/esp32_i2s.cpp similarity index 100% rename from Platforms/PlatformEsp32/Source/drivers/esp32_i2s.cpp rename to Platforms/platform-esp32/source/drivers/esp32_i2s.cpp diff --git a/Platforms/PlatformEsp32/Source/drivers/esp32_spi.cpp b/Platforms/platform-esp32/source/drivers/esp32_spi.cpp similarity index 100% rename from Platforms/PlatformEsp32/Source/drivers/esp32_spi.cpp rename to Platforms/platform-esp32/source/drivers/esp32_spi.cpp diff --git a/Platforms/PlatformEsp32/Source/drivers/esp32_uart.cpp b/Platforms/platform-esp32/source/drivers/esp32_uart.cpp similarity index 100% rename from Platforms/PlatformEsp32/Source/drivers/esp32_uart.cpp rename to Platforms/platform-esp32/source/drivers/esp32_uart.cpp diff --git a/Platforms/PlatformEsp32/Source/error_esp32.cpp b/Platforms/platform-esp32/source/error_esp32.cpp similarity index 100% rename from Platforms/PlatformEsp32/Source/error_esp32.cpp rename to Platforms/platform-esp32/source/error_esp32.cpp diff --git a/Platforms/PlatformEsp32/Source/module.cpp b/Platforms/platform-esp32/source/module.cpp similarity index 100% rename from Platforms/PlatformEsp32/Source/module.cpp rename to Platforms/platform-esp32/source/module.cpp diff --git a/Platforms/platform-posix/CMakeLists.txt b/Platforms/platform-posix/CMakeLists.txt new file mode 100644 index 00000000..35f3136e --- /dev/null +++ b/Platforms/platform-posix/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.20) + +file(GLOB_RECURSE SOURCES "source/*.c**") + +add_library(platform-posix OBJECT) +target_sources(platform-posix PRIVATE ${SOURCES}) +#target_include_directories(platform-posix PUBLIC include/) +target_link_libraries(platform-posix PUBLIC TactilityKernel) diff --git a/Platforms/PlatformPosix/devicetree.yaml b/Platforms/platform-posix/devicetree.yaml similarity index 100% rename from Platforms/PlatformPosix/devicetree.yaml rename to Platforms/platform-posix/devicetree.yaml diff --git a/Platforms/PlatformPosix/Source/freertos.c b/Platforms/platform-posix/source/freertos.c similarity index 100% rename from Platforms/PlatformPosix/Source/freertos.c rename to Platforms/platform-posix/source/freertos.c diff --git a/Platforms/PlatformPosix/Source/module.cpp b/Platforms/platform-posix/source/module.cpp similarity index 100% rename from Platforms/PlatformPosix/Source/module.cpp rename to Platforms/platform-posix/source/module.cpp diff --git a/Tactility/CMakeLists.txt b/Tactility/CMakeLists.txt index 1c66150c..8230b11d 100644 --- a/Tactility/CMakeLists.txt +++ b/Tactility/CMakeLists.txt @@ -18,7 +18,7 @@ list(APPEND REQUIRES_LIST if (DEFINED ENV{ESP_IDF_VERSION}) list(APPEND REQUIRES_LIST - PlatformEsp32 + platform-esp32 driver elf_loader QRCode @@ -42,7 +42,7 @@ if (DEFINED ENV{ESP_IDF_VERSION}) else () list(APPEND REQUIRES_LIST - PlatformPosix + platform-posix freertos_kernel cJSON lvgl diff --git a/Tactility/Include/Tactility/hal/Configuration.h b/Tactility/Include/Tactility/hal/Configuration.h index 5117c131..00dd76a5 100644 --- a/Tactility/Include/Tactility/hal/Configuration.h +++ b/Tactility/Include/Tactility/hal/Configuration.h @@ -1,6 +1,8 @@ #pragma once -#include +#include +#include +#include namespace tt::hal { @@ -11,9 +13,9 @@ typedef std::vector> DeviceVector; typedef std::shared_ptr (*CreateDevice)(); /** Affects LVGL widget style */ -enum class UiScale { +enum class UiDensity { /** Ideal for very small non-touch screen devices (e.g. Waveshare S3 LCD 1.3") */ - Smallest, + Compact, /** Nothing was changed in the LVGL UI/UX */ Default }; @@ -25,7 +27,7 @@ struct Configuration { const InitBoot initBoot = nullptr; /** Modify LVGL widget size */ - const UiScale uiScale = UiScale::Default; + const UiDensity uiDensity = UiDensity::Default; const std::function createDevices = [] { return DeviceVector(); }; }; diff --git a/Tactility/Include/Tactility/lvgl/Statusbar.h b/Tactility/Include/Tactility/lvgl/Statusbar.h index 644ef4c0..3a056a9b 100644 --- a/Tactility/Include/Tactility/lvgl/Statusbar.h +++ b/Tactility/Include/Tactility/lvgl/Statusbar.h @@ -7,8 +7,6 @@ namespace tt::lvgl { constexpr auto STATUSBAR_ICON_LIMIT = 8; -constexpr auto STATUSBAR_ICON_SIZE = 20; -constexpr auto STATUSBAR_HEIGHT = STATUSBAR_ICON_SIZE + 2; /** Create a statusbar widget. Needs to be called with LVGL lock. */ lv_obj_t* statusbar_create(lv_obj_t* parent); @@ -28,4 +26,6 @@ void statusbar_icon_set_image(int8_t id, const std::string& image); /** Update the visibility for an icon on the statusbar. Does not need to be called with LVGL lock. */ void statusbar_icon_set_visibility(int8_t id, bool visible); +int statusbar_get_height(); + } // namespace diff --git a/Tactility/Include/Tactility/lvgl/Toolbar.h b/Tactility/Include/Tactility/lvgl/Toolbar.h index 503fea19..3e27a3f7 100644 --- a/Tactility/Include/Tactility/lvgl/Toolbar.h +++ b/Tactility/Include/Tactility/lvgl/Toolbar.h @@ -1,11 +1,11 @@ #pragma once #include "../app/AppContext.h" -#include "Tactility/Tactility.h" #include namespace tt::lvgl { + #define TOOLBAR_ACTION_LIMIT 4 /** Create a toolbar widget that shows the app name as title */ diff --git a/Tactility/Source/Tactility.cpp b/Tactility/Source/Tactility.cpp index 45c8afac..845bde2b 100644 --- a/Tactility/Source/Tactility.cpp +++ b/Tactility/Source/Tactility.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include diff --git a/Tactility/Source/app/applist/AppList.cpp b/Tactility/Source/app/applist/AppList.cpp index 8d36d9a3..dda699ca 100644 --- a/Tactility/Source/app/applist/AppList.cpp +++ b/Tactility/Source/app/applist/AppList.cpp @@ -21,7 +21,7 @@ class AppListApp final : public App { const void* icon = !manifest->appIcon.empty() ? manifest->appIcon.c_str() : LVGL_SYMBOL_TOOLBAR; lv_obj_t* btn = lv_list_add_button(list, icon, manifest->appName.c_str()); lv_obj_t* image = lv_obj_get_child(btn, 0); - lv_obj_set_style_text_font(image, LVGL_SYMBOL_FONT_DEFAULT, LV_PART_MAIN); + lv_obj_set_style_text_font(image, lvgl_get_shared_icon_font(), LV_PART_MAIN); lv_obj_add_event_cb(btn, &onAppPressed, LV_EVENT_SHORT_CLICKED, manifest.get()); } diff --git a/Tactility/Source/app/appsettings/AppSettings.cpp b/Tactility/Source/app/appsettings/AppSettings.cpp index 1fc2a440..c34441b4 100644 --- a/Tactility/Source/app/appsettings/AppSettings.cpp +++ b/Tactility/Source/app/appsettings/AppSettings.cpp @@ -22,7 +22,7 @@ class AppSettingsApp final : public App { const void* icon = !manifest->appIcon.empty() ? manifest->appIcon.c_str() : LVGL_SYMBOL_TOOLBAR; lv_obj_t* btn = lv_list_add_button(list, icon, manifest->appName.c_str()); lv_obj_t* image = lv_obj_get_child(btn, 0); - lv_obj_set_style_text_font(image, LVGL_SYMBOL_FONT_DEFAULT, LV_PART_MAIN); + lv_obj_set_style_text_font(image, lvgl_get_shared_icon_font(), LV_PART_MAIN); lv_obj_add_event_cb(btn, &onAppPressed, LV_EVENT_SHORT_CLICKED, manifest.get()); } diff --git a/Tactility/Source/app/crashdiagnostics/CrashDiagnostics.cpp b/Tactility/Source/app/crashdiagnostics/CrashDiagnostics.cpp index f5637ed5..182009d0 100644 --- a/Tactility/Source/app/crashdiagnostics/CrashDiagnostics.cpp +++ b/Tactility/Source/app/crashdiagnostics/CrashDiagnostics.cpp @@ -28,7 +28,7 @@ public: void onShow(AppContext& app, lv_obj_t* parent) override { auto* display = lv_obj_get_display(parent); - int32_t parent_height = lv_display_get_vertical_resolution(display) - lvgl::STATUSBAR_HEIGHT; + int32_t parent_height = lv_display_get_vertical_resolution(display) - lvgl::statusbar_get_height(); lv_obj_add_event_cb(parent, onContinuePressed, LV_EVENT_SHORT_CLICKED, nullptr); auto* top_label = lv_label_create(parent); diff --git a/Tactility/Source/app/display/Display.cpp b/Tactility/Source/app/display/Display.cpp index f5938c68..9476913f 100644 --- a/Tactility/Source/app/display/Display.cpp +++ b/Tactility/Source/app/display/Display.cpp @@ -122,7 +122,7 @@ public: void onShow(AppContext& app, lv_obj_t* parent) override { displaySettings = settings::display::loadOrGetDefault(); - auto ui_scale = hal::getConfiguration()->uiScale; + auto ui_density = hal::getConfiguration()->uiDensity; lv_obj_set_flex_flow(parent, LV_FLEX_FLOW_COLUMN); lv_obj_set_style_pad_row(parent, 0, LV_STATE_DEFAULT); @@ -144,7 +144,7 @@ public: lv_obj_set_size(brightness_wrapper, LV_PCT(100), LV_SIZE_CONTENT); lv_obj_set_style_pad_hor(brightness_wrapper, 0, LV_STATE_DEFAULT); lv_obj_set_style_border_width(brightness_wrapper, 0, LV_STATE_DEFAULT); - if (ui_scale != hal::UiScale::Smallest) { + if (ui_density != hal::UiDensity::Compact) { lv_obj_set_style_pad_ver(brightness_wrapper, 4, LV_STATE_DEFAULT); } @@ -168,7 +168,7 @@ public: lv_obj_set_size(gamma_wrapper, LV_PCT(100), LV_SIZE_CONTENT); lv_obj_set_style_pad_hor(gamma_wrapper, 0, LV_STATE_DEFAULT); lv_obj_set_style_border_width(gamma_wrapper, 0, LV_STATE_DEFAULT); - if (ui_scale != hal::UiScale::Smallest) { + if (ui_density != hal::UiDensity::Compact) { lv_obj_set_style_pad_ver(gamma_wrapper, 4, LV_STATE_DEFAULT); } diff --git a/Tactility/Source/app/launcher/Launcher.cpp b/Tactility/Source/app/launcher/Launcher.cpp index 640c5e91..81ef95e9 100644 --- a/Tactility/Source/app/launcher/Launcher.cpp +++ b/Tactility/Source/app/launcher/Launcher.cpp @@ -17,21 +17,22 @@ namespace tt::app::launcher { static const auto LOGGER = Logger("Launcher"); -static int getButtonSize(hal::UiScale scale) { - if (scale == hal::UiScale::Smallest) { - return 36; // icon size +static uint32_t getButtonPadding(hal::UiDensity density, uint32_t buttonSize) { + if (density == hal::UiDensity::Compact) { + return 0; } else { - return 56; + return buttonSize / 8; } } class LauncherApp final : public App { - static lv_obj_t* createAppButton(lv_obj_t* parent, hal::UiScale uiScale, const char* imageFile, const char* appId, int32_t itemMargin, bool isLandscape) { - auto button_size = getButtonSize(uiScale); - + static lv_obj_t* createAppButton(lv_obj_t* parent, hal::UiDensity uiDensity, const char* imageFile, const char* appId, int32_t itemMargin, bool isLandscape) { + const auto button_size = lvgl_get_launcher_icon_font_height(); + const auto button_padding = getButtonPadding(uiDensity, button_size); auto* apps_button = lv_button_create(parent); - lv_obj_set_style_pad_all(apps_button, 0, LV_STATE_DEFAULT); + + lv_obj_set_style_pad_all(apps_button, static_cast(button_padding), LV_STATE_DEFAULT); if (isLandscape) { lv_obj_set_style_margin_hor(apps_button, itemMargin, LV_STATE_DEFAULT); } else { @@ -43,7 +44,7 @@ class LauncherApp final : public App { // create the image first auto* button_image = lv_image_create(apps_button); - lv_obj_set_style_text_font(button_image, LVGL_SYMBOL_FONT_LAUNCHER, LV_STATE_DEFAULT); + lv_obj_set_style_text_font(button_image, lvgl_get_launcher_icon_font(), LV_STATE_DEFAULT); lv_image_set_src(button_image, imageFile); lv_obj_set_style_text_color(button_image, lv_theme_get_color_primary(button_image), LV_STATE_DEFAULT); @@ -59,8 +60,7 @@ class LauncherApp final : public App { lv_obj_set_style_image_recolor_opa(button_image, LV_OPA_COVER, LV_STATE_DEFAULT); #endif - // Ensure buttons are still tappable when the asset fails to load - // Icon images are 40x40, so we get some extra padding too + // Ensure it's square (Material Symbols are slightly wider than tall) lv_obj_set_size(button_image, button_size, button_size); lv_obj_add_event_cb(apps_button, onAppPressed, LV_EVENT_SHORT_CLICKED, (void*)appId); @@ -119,20 +119,18 @@ public: void onShow(AppContext& app, lv_obj_t* parent) override { auto* buttons_wrapper = lv_obj_create(parent); - auto ui_scale = hal::getConfiguration()->uiScale; - auto button_size = getButtonSize(ui_scale); + auto ui_density = hal::getConfiguration()->uiDensity; + const auto button_size = lvgl_get_launcher_icon_font_height(); + const auto button_padding = getButtonPadding(ui_density, button_size); + const auto total_button_size = button_size + (button_padding * 2); lv_obj_align(buttons_wrapper, LV_ALIGN_CENTER, 0, 0); lv_obj_set_size(buttons_wrapper, LV_SIZE_CONTENT, LV_SIZE_CONTENT); lv_obj_set_style_border_width(buttons_wrapper, 0, LV_STATE_DEFAULT); lv_obj_set_flex_grow(buttons_wrapper, 1); - // Fix for button selection (problem with UiScale::Small on Cardputer) - if (!hal::hasDevice(hal::Device::Type::Touch)) { - lv_obj_set_style_pad_all(buttons_wrapper, 6, LV_STATE_DEFAULT); - } else { - lv_obj_set_style_pad_all(buttons_wrapper, 0, LV_STATE_DEFAULT); - } + // Fix for button selection + lv_obj_set_style_pad_all(buttons_wrapper, 6, LV_STATE_DEFAULT); const auto* display = lv_obj_get_display(parent); const auto horizontal_px = lv_display_get_horizontal_resolution(display); @@ -146,16 +144,16 @@ public: int32_t margin; if (is_landscape_display) { - const int32_t available_width = std::max(0, lv_display_get_horizontal_resolution(display) - (3 * button_size)); - margin = std::min(available_width / 16, button_size); + const int32_t available_width = std::max(0, lv_display_get_horizontal_resolution(display) - (3 * total_button_size)); + margin = std::min(available_width / 16, total_button_size / 2); } else { - const int32_t available_height = std::max(0, lv_display_get_vertical_resolution(display) - (3 * button_size)); - margin = std::min(available_height / 16, button_size); + const int32_t available_height = std::max(0, lv_display_get_vertical_resolution(display) - (3 * total_button_size)); + margin = std::min(available_height / 16, total_button_size / 2); } - createAppButton(buttons_wrapper, ui_scale, LVGL_SYMBOL_APPS, "AppList", margin, is_landscape_display); - createAppButton(buttons_wrapper, ui_scale, LVGL_SYMBOL_FOLDER, "Files", margin, is_landscape_display); - createAppButton(buttons_wrapper, ui_scale, LVGL_SYMBOL_SETTINGS, "Settings", margin, is_landscape_display); + createAppButton(buttons_wrapper, ui_density, LVGL_SYMBOL_APPS, "AppList", margin, is_landscape_display); + createAppButton(buttons_wrapper, ui_density, LVGL_SYMBOL_FOLDER, "Files", margin, is_landscape_display); + createAppButton(buttons_wrapper, ui_density, LVGL_SYMBOL_SETTINGS, "Settings", margin, is_landscape_display); if (shouldShowPowerButton()) { auto* power_button = lv_btn_create(parent); diff --git a/Tactility/Source/app/localesettings/LocaleSettings.cpp b/Tactility/Source/app/localesettings/LocaleSettings.cpp index 334f95e0..6edd0de9 100644 --- a/Tactility/Source/app/localesettings/LocaleSettings.cpp +++ b/Tactility/Source/app/localesettings/LocaleSettings.cpp @@ -1,9 +1,10 @@ +#include + #include +#include #include #include #include -#include -#include #include #include @@ -85,8 +86,6 @@ class LocaleSettingsApp final : public App { public: void onShow(AppContext& app, lv_obj_t* parent) override { - auto ui_scale = hal::getConfiguration()->uiScale; - textResources.load(); lv_obj_set_flex_flow(parent, LV_FLEX_FLOW_COLUMN); diff --git a/Tactility/Source/app/screenshot/Screenshot.cpp b/Tactility/Source/app/screenshot/Screenshot.cpp index c91b2c5d..8593d898 100644 --- a/Tactility/Source/app/screenshot/Screenshot.cpp +++ b/Tactility/Source/app/screenshot/Screenshot.cpp @@ -1,19 +1,19 @@ #include #include -#include -#include #if TT_FEATURE_SCREENSHOT_ENABLED #include #include +#include #include #include #include #include #include #include +#include #include diff --git a/Tactility/Source/app/settings/Settings.cpp b/Tactility/Source/app/settings/Settings.cpp index f1c5662e..d174fb2e 100644 --- a/Tactility/Source/app/settings/Settings.cpp +++ b/Tactility/Source/app/settings/Settings.cpp @@ -23,7 +23,7 @@ static void createWidget(const std::shared_ptr& manifest, void* par const void* icon = !manifest->appIcon.empty() ? manifest->appIcon.c_str() : LVGL_SYMBOL_TOOLBAR; auto* btn = lv_list_add_button(list, icon, manifest->appName.c_str()); lv_obj_t* image = lv_obj_get_child(btn, 0); - lv_obj_set_style_text_font(image, LVGL_SYMBOL_FONT_DEFAULT, LV_PART_MAIN); + lv_obj_set_style_text_font(image, lvgl_get_shared_icon_font(), LV_PART_MAIN); lv_obj_add_event_cb(btn, &onAppPressed, LV_EVENT_SHORT_CLICKED, (void*)manifest.get()); } diff --git a/Tactility/Source/app/systeminfo/SystemInfo.cpp b/Tactility/Source/app/systeminfo/SystemInfo.cpp index 53c50e74..76bf93d6 100644 --- a/Tactility/Source/app/systeminfo/SystemInfo.cpp +++ b/Tactility/Source/app/systeminfo/SystemInfo.cpp @@ -1,15 +1,16 @@ #include -#include #include +#include -#include -#include +#include #include #include #include #include #include +#include +#include #include #include #include @@ -139,7 +140,8 @@ static MemoryBarWidgets createMemoryBar(lv_obj_t* parent, const char* label) { auto* left_label = lv_label_create(container); lv_label_set_text(left_label, label); - lv_obj_set_width(left_label, 60); + auto label_width = 6 * lvgl_get_text_font_height(FONT_SIZE_DEFAULT); + lv_obj_set_width(left_label, label_width); auto* bar = lv_bar_create(container); lv_obj_set_flex_grow(bar, 1); @@ -148,7 +150,7 @@ static MemoryBarWidgets createMemoryBar(lv_obj_t* parent, const char* label) { lv_obj_set_width(bottom_label, LV_PCT(100)); lv_obj_set_style_text_align(bottom_label, LV_TEXT_ALIGN_RIGHT, 0); - if (hal::getConfiguration()->uiScale == hal::UiScale::Smallest) { + if (hal::getConfiguration()->uiDensity == hal::UiDensity::Compact) { lv_obj_set_style_pad_bottom(bottom_label, 2, LV_STATE_DEFAULT); } else { lv_obj_set_style_pad_bottom(bottom_label, 12, LV_STATE_DEFAULT); @@ -436,7 +438,6 @@ class SystemInfoApp final : public App { // Summary auto* summary_label = lv_label_create(psramContainer); lv_label_set_text(summary_label, "PSRAM Usage Summary"); - lv_obj_set_style_text_font(summary_label, &lv_font_montserrat_14, 0); lv_obj_set_style_pad_bottom(summary_label, 8, 0); // Current usage @@ -477,7 +478,6 @@ class SystemInfoApp final : public App { // PSRAM Configuration section auto* config_header = lv_label_create(psramContainer); lv_label_set_text(config_header, "PSRAM Configuration"); - lv_obj_set_style_text_font(config_header, &lv_font_montserrat_14, 0); lv_obj_set_style_pad_bottom(config_header, 8, 0); // Get threshold from sdkconfig @@ -514,7 +514,6 @@ class SystemInfoApp final : public App { // Known PSRAM consumers header auto* consumers_label = lv_label_create(psramContainer); lv_label_set_text(consumers_label, "PSRAM Allocation Strategy"); - lv_obj_set_style_text_font(consumers_label, &lv_font_montserrat_14, 0); lv_obj_set_style_pad_bottom(consumers_label, 8, 0); // Explain what's in PSRAM @@ -554,7 +553,6 @@ class SystemInfoApp final : public App { // App behavior explanation auto* app_behavior_label = lv_label_create(psramContainer); lv_label_set_text(app_behavior_label, "App Memory Behavior"); - lv_obj_set_style_text_font(app_behavior_label, &lv_font_montserrat_14, 0); lv_obj_set_style_pad_bottom(app_behavior_label, 8, 0); auto* app_note1 = lv_label_create(psramContainer); @@ -585,7 +583,8 @@ class SystemInfoApp final : public App { auto* tabview = lv_tabview_create(wrapper); lv_tabview_set_tab_bar_position(tabview, LV_DIR_LEFT); - lv_tabview_set_tab_bar_size(tabview, 80); + auto tab_bar_width = 6 * lvgl_get_text_font_height(FONT_SIZE_DEFAULT); + lv_tabview_set_tab_bar_size(tabview, tab_bar_width); // Create tabs auto* memory_tab = createTab(tabview, "Memory"); @@ -645,7 +644,6 @@ class SystemInfoApp final : public App { // CPU tab - summary at top cpuSummaryLabel = lv_label_create(cpu_tab); lv_label_set_text(cpuSummaryLabel, "Overall CPU Usage: --.-%"); - lv_obj_set_style_text_font(cpuSummaryLabel, &lv_font_montserrat_14, 0); lv_obj_set_style_pad_bottom(cpuSummaryLabel, 4, 0); taskCountLabel = lv_label_create(cpu_tab); diff --git a/Tactility/Source/app/timezone/TimeZone.cpp b/Tactility/Source/app/timezone/TimeZone.cpp index 2d8a9ebd..c015eb20 100644 --- a/Tactility/Source/app/timezone/TimeZone.cpp +++ b/Tactility/Source/app/timezone/TimeZone.cpp @@ -1,16 +1,18 @@ +#include +#include + #include #include -#include #include -#include + #include -#include -#include -#include +#include #include -#include #include #include +#include +#include +#include #include #include @@ -202,10 +204,8 @@ public: lv_obj_set_style_margin_left(icon, 8, 0); lv_obj_set_style_image_recolor_opa(icon, 255, 0); lv_obj_set_style_image_recolor(icon, lv_theme_get_color_primary(parent), 0); - - std::string icon_path = lvgl::PATH_PREFIX + app.getPaths()->getAssetsPath("search.png"); - lv_image_set_src(icon, icon_path.c_str()); - lv_obj_set_style_image_recolor(icon, lv_theme_get_color_primary(parent), 0); + lv_obj_set_style_text_font(icon, lvgl_get_shared_icon_font(), LV_STATE_DEFAULT); + lv_image_set_src(icon, LVGL_SYMBOL_SEARCH); auto* textarea = lv_textarea_create(search_wrapper); lv_textarea_set_placeholder_text(textarea, "e.g. Europe/Amsterdam"); diff --git a/Tactility/Source/app/trackball/TrackballSettings.cpp b/Tactility/Source/app/trackball/TrackballSettings.cpp index 4c46ecad..f2a93a6c 100644 --- a/Tactility/Source/app/trackball/TrackballSettings.cpp +++ b/Tactility/Source/app/trackball/TrackballSettings.cpp @@ -109,7 +109,7 @@ class TrackballSettingsApp final : public App { public: void onShow(AppContext& app, lv_obj_t* parent) override { tbSettings = settings::trackball::loadOrGetDefault(); - auto ui_scale = hal::getConfiguration()->uiScale; + auto ui_density = hal::getConfiguration()->uiDensity; updated = false; lv_obj_set_flex_flow(parent, LV_FLEX_FLOW_COLUMN); @@ -154,7 +154,7 @@ public: lv_obj_set_size(enc_sens_wrapper, LV_PCT(100), LV_SIZE_CONTENT); lv_obj_set_style_pad_hor(enc_sens_wrapper, 0, LV_STATE_DEFAULT); lv_obj_set_style_border_width(enc_sens_wrapper, 0, LV_STATE_DEFAULT); - if (ui_scale != hal::UiScale::Smallest) { + if (ui_density != hal::UiDensity::Compact) { lv_obj_set_style_pad_ver(enc_sens_wrapper, 4, LV_STATE_DEFAULT); } @@ -178,7 +178,7 @@ public: lv_obj_set_size(ptr_sens_wrapper, LV_PCT(100), LV_SIZE_CONTENT); lv_obj_set_style_pad_hor(ptr_sens_wrapper, 0, LV_STATE_DEFAULT); lv_obj_set_style_border_width(ptr_sens_wrapper, 0, LV_STATE_DEFAULT); - if (ui_scale != hal::UiScale::Smallest) { + if (ui_density != hal::UiDensity::Compact) { lv_obj_set_style_pad_ver(ptr_sens_wrapper, 4, LV_STATE_DEFAULT); } diff --git a/Tactility/Source/app/wifimanage/View.cpp b/Tactility/Source/app/wifimanage/View.cpp index 5d2d1d71..a7d9aafc 100644 --- a/Tactility/Source/app/wifimanage/View.cpp +++ b/Tactility/Source/app/wifimanage/View.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -161,7 +162,7 @@ void View::updateNetworkList() { lv_obj_add_event_cb(enable_on_boot_switch, onEnableOnBootSwitchChanged, LV_EVENT_VALUE_CHANGED, bindings); lv_obj_add_event_cb(enable_on_boot_wrapper, onEnableOnBootParentClicked, LV_EVENT_SHORT_CLICKED, enable_on_boot_switch); - if (hal::getConfiguration()->uiScale == hal::UiScale::Smallest) { + if (hal::getConfiguration()->uiDensity == hal::UiDensity::Compact) { lv_obj_set_style_pad_ver(enable_on_boot_wrapper, 2, LV_STATE_DEFAULT); } else { lv_obj_set_style_pad_ver(enable_on_boot_wrapper, 8, LV_STATE_DEFAULT); diff --git a/Tactility/Source/lvgl/Statusbar.cpp b/Tactility/Source/lvgl/Statusbar.cpp index 1bfe3d55..2e794788 100644 --- a/Tactility/Source/lvgl/Statusbar.cpp +++ b/Tactility/Source/lvgl/Statusbar.cpp @@ -6,13 +6,15 @@ #include #include #include -#include #include #include #include #include #include +#include +#include + #include namespace tt::lvgl { @@ -88,7 +90,7 @@ static void onUpdateTime() { } } -static const lv_obj_class_t statusbar_class = { +static lv_obj_class_t statusbar_class = { .base_class = &lv_obj_class, .constructor_cb = &statusbar_constructor, .destructor_cb = &statusbar_destructor, @@ -96,7 +98,7 @@ static const lv_obj_class_t statusbar_class = { .user_data = nullptr, .name = nullptr, .width_def = LV_PCT(100), - .height_def = STATUSBAR_HEIGHT, + .height_def = 20, .editable = false, .group_def = LV_OBJ_CLASS_GROUP_DEF_TRUE, .instance_size = sizeof(Statusbar), @@ -157,10 +159,11 @@ static void update_icon(lv_obj_t* image, const StatusbarIcon* icon) { } lv_obj_t* statusbar_create(lv_obj_t* parent) { + statusbar_class.height_def = statusbar_get_height(); lv_obj_t* obj = lv_obj_class_create_obj(&statusbar_class, parent); lv_obj_class_init_obj(obj); - auto* statusbar = (Statusbar*)obj; + auto* statusbar = reinterpret_cast(obj); lv_obj_set_width(obj, LV_PCT(100)); lv_obj_set_style_pad_ver(obj, 0, LV_STATE_DEFAULT); @@ -168,6 +171,10 @@ lv_obj_t* statusbar_create(lv_obj_t* parent) { lv_obj_center(obj); lv_obj_set_flex_flow(obj, LV_FLEX_FLOW_ROW); lv_obj_set_flex_align(obj, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); + auto icon_size = lvgl_get_statusbar_icon_font_height(); + auto ui_density = hal::getConfiguration()->uiDensity; + auto icon_padding = (ui_density != hal::UiDensity::Compact) ? static_cast(icon_size * 0.2f) : 2; + lv_obj_set_style_pad_column(obj, icon_padding, LV_STATE_DEFAULT); statusbar->time = lv_label_create(obj); lv_obj_set_style_text_color(statusbar->time, lv_color_white(), LV_STATE_DEFAULT); @@ -182,7 +189,8 @@ lv_obj_t* statusbar_create(lv_obj_t* parent) { statusbar_data.mutex.lock(kernel::MAX_TICKS); for (int i = 0; i < STATUSBAR_ICON_LIMIT; ++i) { auto* image = lv_image_create(obj); - lv_obj_set_size(image, STATUSBAR_ICON_SIZE, STATUSBAR_ICON_SIZE); + lv_obj_set_size(image, icon_size, icon_size); // regular padding doesn't work + lv_obj_set_style_text_font(image, lvgl_get_statusbar_icon_font(), LV_STATE_DEFAULT); lv_obj_set_style_pad_all(image, 0, LV_STATE_DEFAULT); obj_set_style_bg_blacken(image); statusbar->icons[i] = image; @@ -190,7 +198,6 @@ lv_obj_t* statusbar_create(lv_obj_t* parent) { update_icon(image, &(statusbar_data.icons[i])); } statusbar_data.mutex.unlock(); - return obj; } @@ -298,4 +305,10 @@ void statusbar_icon_set_visibility(int8_t id, bool visible) { statusbar_data.pubsub->publish(nullptr); } +int statusbar_get_height() { + const auto icon_size = lvgl_get_statusbar_icon_font_height(); + const auto vertical_padding = static_cast((static_cast(icon_size) * 0.1f)); + return icon_size + (2 * vertical_padding); +} + } // namespace diff --git a/Tactility/Source/lvgl/Toolbar.cpp b/Tactility/Source/lvgl/Toolbar.cpp index a370683b..f8b62707 100644 --- a/Tactility/Source/lvgl/Toolbar.cpp +++ b/Tactility/Source/lvgl/Toolbar.cpp @@ -1,40 +1,54 @@ #define LV_USE_PRIVATE_API 1 // For actual lv_obj_t declaration +#include #include - -#include #include #include +#include +#include + namespace tt::lvgl { -static int getToolbarHeight(hal::UiScale uiScale) { - if (uiScale == hal::UiScale::Smallest) { - return 22; +static uint32_t getToolbarHeight(hal::UiDensity uiDensity) { + if (uiDensity == hal::UiDensity::Compact) { + return lvgl_get_text_font_height(FONT_SIZE_DEFAULT) * 1.4f; } else { - return 40; + return lvgl_get_text_font_height(FONT_SIZE_LARGE) * 2.2f; } } -static const _lv_font_t* getToolbarFont(hal::UiScale uiScale) { - if (uiScale == hal::UiScale::Smallest) { - return &lv_font_montserrat_14; +static const _lv_font_t* getToolbarFont(hal::UiDensity uiDensity) { + if (uiDensity == hal::UiDensity::Compact) { + return lvgl_get_text_font(FONT_SIZE_DEFAULT); } else { - return &lv_font_montserrat_18; + return lvgl_get_text_font(FONT_SIZE_LARGE); } } +static uint32_t getActionIconPadding(hal::UiDensity ui_density) { + auto toolbar_height = getToolbarHeight(ui_density); + // Minimal 8 pixels total padding for selection/animation (4+4 pixels) + return (ui_density != hal::UiDensity::Compact) ? (uint32_t)(toolbar_height * 0.2f) : 8; +} + /** * Helps with button expansion and also with vertical alignment of content, * as the parent flex doesn't allow for vertical alignment */ -static lv_obj_t* create_action_wrapper(lv_obj_t* parent) { +static lv_obj_t* create_action_wrapper(lv_obj_t* parent, hal::UiDensity ui_density) { auto* wrapper = lv_obj_create(parent); - lv_obj_set_size(wrapper, LV_SIZE_CONTENT, getToolbarHeight(hal::getConfiguration()->uiScale)); - lv_obj_set_style_pad_all(wrapper, 2, LV_STATE_DEFAULT); // For selection / click expansion + auto toolbar_height = getToolbarHeight(ui_density); + lv_obj_set_size(wrapper, LV_SIZE_CONTENT, toolbar_height); + + auto icon_padding = getActionIconPadding(ui_density); + auto icon_padding_half = icon_padding / 2; + + lv_obj_set_style_pad_all(wrapper, icon_padding_half, LV_STATE_DEFAULT); // For selection and touch animation lv_obj_set_style_bg_opa(wrapper, 0, LV_STATE_DEFAULT); lv_obj_set_style_border_width(wrapper, 0, LV_STATE_DEFAULT); lv_obj_set_style_border_opa(wrapper, 0, LV_STATE_DEFAULT); + return wrapper; } @@ -49,7 +63,7 @@ typedef struct { static void toolbar_constructor(const lv_obj_class_t* class_p, lv_obj_t* obj); -static const lv_obj_class_t toolbar_class = { +static lv_obj_class_t toolbar_class = { .base_class = &lv_obj_class, .constructor_cb = &toolbar_constructor, .destructor_cb = nullptr, @@ -57,7 +71,7 @@ static const lv_obj_class_t toolbar_class = { .user_data = nullptr, .name = nullptr, .width_def = LV_PCT(100), - .height_def = LV_SIZE_CONTENT, + .height_def = 0, .editable = false, .group_def = LV_OBJ_CLASS_GROUP_DEF_TRUE, .instance_size = sizeof(Toolbar), @@ -70,16 +84,14 @@ static void stop_app(lv_event_t* event) { static void toolbar_constructor(const lv_obj_class_t* class_p, lv_obj_t* obj) { LV_UNUSED(class_p); - LV_TRACE_OBJ_CREATE("begin"); lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLLABLE); lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); - LV_TRACE_OBJ_CREATE("finished"); } lv_obj_t* toolbar_create(lv_obj_t* parent, const std::string& title) { - LV_LOG_INFO("begin"); - auto ui_scale = hal::getConfiguration()->uiScale; - auto toolbar_height = getToolbarHeight(ui_scale); + auto ui_density = hal::getConfiguration()->uiDensity; + auto toolbar_height = getToolbarHeight(ui_density); + toolbar_class.height_def = toolbar_height; lv_obj_t* obj = lv_obj_class_create_obj(&toolbar_class, parent); lv_obj_class_init_obj(obj); lv_obj_set_height(obj, toolbar_height); @@ -87,44 +99,40 @@ lv_obj_t* toolbar_create(lv_obj_t* parent, const std::string& title) { auto* toolbar = reinterpret_cast(obj); lv_obj_set_width(obj, LV_PCT(100)); lv_obj_set_style_pad_all(obj, 0, LV_STATE_DEFAULT); + lv_obj_set_style_pad_column(obj, 0, LV_STATE_DEFAULT); lv_obj_center(obj); lv_obj_set_flex_flow(obj, LV_FLEX_FLOW_ROW); - auto* close_button_wrapper = lv_obj_create(obj); - lv_obj_set_size(close_button_wrapper, LV_SIZE_CONTENT, toolbar_height); - lv_obj_set_style_pad_all(close_button_wrapper, 2, LV_STATE_DEFAULT); - lv_obj_set_style_border_width(close_button_wrapper, 0, LV_STATE_DEFAULT); - lv_obj_set_style_bg_opa(close_button_wrapper, 0, LV_STATE_DEFAULT); + auto icon_padding = getActionIconPadding(ui_density); + + auto* close_button_wrapper = create_action_wrapper(obj, ui_density); toolbar->close_button = lv_button_create(close_button_wrapper); - - if (ui_scale == hal::UiScale::Smallest) { - lv_obj_set_size(toolbar->close_button, toolbar_height - 8, toolbar_height - 8); - } else { - lv_obj_set_size(toolbar->close_button, toolbar_height - 6, toolbar_height - 6); + if (ui_density == hal::UiDensity::Compact) { + lv_obj_set_style_bg_opa(toolbar->close_button, LV_OPA_TRANSP, LV_STATE_DEFAULT); } + lv_obj_set_size(toolbar->close_button, toolbar_height - icon_padding, toolbar_height - icon_padding); + lv_obj_set_style_pad_all(toolbar->close_button, 0, LV_STATE_DEFAULT); lv_obj_align(toolbar->close_button, LV_ALIGN_CENTER, 0, 0); toolbar->close_button_image = lv_image_create(toolbar->close_button); lv_obj_align(toolbar->close_button_image, LV_ALIGN_CENTER, 0, 0); auto* title_wrapper = lv_obj_create(obj); + uint32_t title_left_padding = (ui_density != hal::UiDensity::Compact) ? icon_padding : 2; + uint32_t title_right_padding = (ui_density != hal::UiDensity::Compact) ? (icon_padding / 2) : 2; lv_obj_set_size(title_wrapper, LV_SIZE_CONTENT, LV_PCT(100)); lv_obj_set_style_bg_opa(title_wrapper, 0, LV_STATE_DEFAULT); - lv_obj_set_style_pad_all(title_wrapper, 0, LV_STATE_DEFAULT); + lv_obj_set_style_pad_left(title_wrapper, title_left_padding, LV_STATE_DEFAULT); + lv_obj_set_style_pad_right(title_wrapper, title_right_padding, LV_STATE_DEFAULT); + lv_obj_set_style_pad_ver(title_wrapper, 0, LV_STATE_DEFAULT); lv_obj_set_style_border_width(title_wrapper, 0, LV_STATE_DEFAULT); lv_obj_set_flex_grow(title_wrapper, 1); - if (ui_scale == hal::UiScale::Smallest) { - lv_obj_set_style_pad_left(title_wrapper, 4, LV_STATE_DEFAULT); - } else { - lv_obj_set_style_pad_left(title_wrapper, 8, LV_STATE_DEFAULT); - } - toolbar->title_label = lv_label_create(title_wrapper); - lv_obj_set_style_text_font(toolbar->title_label, getToolbarFont(ui_scale), LV_STATE_DEFAULT); + lv_obj_set_style_text_font(toolbar->title_label, getToolbarFont(ui_density), LV_STATE_DEFAULT); lv_label_set_text(toolbar->title_label, title.c_str()); lv_label_set_long_mode(toolbar->title_label, LV_LABEL_LONG_MODE_SCROLL); lv_obj_set_style_text_align(toolbar->title_label, LV_TEXT_ALIGN_LEFT, LV_STATE_DEFAULT); @@ -135,6 +143,7 @@ lv_obj_t* toolbar_create(lv_obj_t* parent, const std::string& title) { lv_obj_set_width(toolbar->action_container, LV_SIZE_CONTENT); lv_obj_set_flex_flow(toolbar->action_container, LV_FLEX_FLOW_ROW); lv_obj_set_style_pad_all(toolbar->action_container, 0, LV_STATE_DEFAULT); + lv_obj_set_style_pad_column(toolbar->action_container, 0, LV_STATE_DEFAULT); lv_obj_set_style_border_width(toolbar->action_container, 0, LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(toolbar->action_container, 0, LV_STATE_DEFAULT); @@ -170,19 +179,20 @@ lv_obj_t* toolbar_add_button_action(lv_obj_t* obj, const char* imageOrButton, bo check(toolbar->action_count < TOOLBAR_ACTION_LIMIT, "max actions reached"); toolbar->action_count++; - auto ui_scale = hal::getConfiguration()->uiScale; - auto toolbar_height = getToolbarHeight(ui_scale); + auto ui_density = hal::getConfiguration()->uiDensity; + auto toolbar_height = getToolbarHeight(ui_density); - auto* wrapper = create_action_wrapper(toolbar->action_container); + auto* wrapper = create_action_wrapper(toolbar->action_container, ui_density); - auto* action_button = lv_button_create(wrapper); - if (ui_scale == hal::UiScale::Smallest) { - lv_obj_set_size(action_button, toolbar_height - 8, toolbar_height - 8); - } else { - lv_obj_set_size(action_button, toolbar_height - 6, toolbar_height - 6); - } + auto padding = getActionIconPadding(ui_density); + + lv_obj_t* action_button = lv_button_create(wrapper); + lv_obj_set_size(action_button, toolbar_height - padding, toolbar_height - padding); lv_obj_set_style_pad_all(action_button, 0, LV_STATE_DEFAULT); lv_obj_align(action_button, LV_ALIGN_CENTER, 0, 0); + if (ui_density == hal::UiDensity::Compact) { + lv_obj_set_style_bg_opa(action_button, LV_OPA_TRANSP, LV_STATE_DEFAULT); + } lv_obj_add_event_cb(action_button, callback, LV_EVENT_SHORT_CLICKED, user_data); lv_obj_t* button_content; @@ -209,7 +219,8 @@ lv_obj_t* toolbar_add_text_button_action(lv_obj_t* obj, const char* text, lv_eve lv_obj_t* toolbar_add_switch_action(lv_obj_t* obj) { auto* toolbar = reinterpret_cast(obj); - auto* wrapper = create_action_wrapper(toolbar->action_container); + auto ui_density = hal::getConfiguration()->uiDensity; + auto* wrapper = create_action_wrapper(toolbar->action_container, ui_density); lv_obj_set_style_pad_hor(wrapper, 4, LV_STATE_DEFAULT); lv_obj_t* widget = lv_switch_create(wrapper); @@ -220,7 +231,8 @@ lv_obj_t* toolbar_add_switch_action(lv_obj_t* obj) { lv_obj_t* toolbar_add_spinner_action(lv_obj_t* obj) { auto* toolbar = reinterpret_cast(obj); - auto* wrapper = create_action_wrapper(toolbar->action_container); + auto ui_density = hal::getConfiguration()->uiDensity; + auto* wrapper = create_action_wrapper(toolbar->action_container, ui_density); auto* spinner = spinner_create(wrapper); lv_obj_set_align(spinner, LV_ALIGN_CENTER); diff --git a/Tactility/Source/lvgl/wrappers/button.cpp b/Tactility/Source/lvgl/wrappers/button.cpp index f30b41e5..d32e95ab 100644 --- a/Tactility/Source/lvgl/wrappers/button.cpp +++ b/Tactility/Source/lvgl/wrappers/button.cpp @@ -11,7 +11,7 @@ extern lv_obj_t* __real_lv_button_create(lv_obj_t* parent); lv_obj_t* __wrap_lv_button_create(lv_obj_t* parent) { auto button = __real_lv_button_create(parent); - if (tt::hal::getConfiguration()->uiScale == tt::hal::UiScale::Smallest) { + if (tt::hal::getConfiguration()->uiDensity == tt::hal::UiDensity::Compact) { lv_obj_set_style_pad_all(button, 2, LV_STATE_DEFAULT); lv_obj_set_style_radius(button, 3, LV_STATE_DEFAULT); } diff --git a/Tactility/Source/lvgl/wrappers/dropdown.cpp b/Tactility/Source/lvgl/wrappers/dropdown.cpp index 24e0930d..3019239d 100644 --- a/Tactility/Source/lvgl/wrappers/dropdown.cpp +++ b/Tactility/Source/lvgl/wrappers/dropdown.cpp @@ -11,7 +11,7 @@ extern lv_obj_t* __real_lv_dropdown_create(lv_obj_t* parent); lv_obj_t* __wrap_lv_dropdown_create(lv_obj_t* parent) { auto dropdown = __real_lv_dropdown_create(parent); - if (tt::hal::getConfiguration()->uiScale == tt::hal::UiScale::Smallest) { + if (tt::hal::getConfiguration()->uiDensity == tt::hal::UiDensity::Compact) { lv_obj_set_style_pad_all(dropdown, 2, LV_STATE_DEFAULT); } diff --git a/Tactility/Source/lvgl/wrappers/list.cpp b/Tactility/Source/lvgl/wrappers/list.cpp index 8b32f5d4..c01123ca 100644 --- a/Tactility/Source/lvgl/wrappers/list.cpp +++ b/Tactility/Source/lvgl/wrappers/list.cpp @@ -12,7 +12,7 @@ extern lv_obj_t* __real_lv_list_add_button(lv_obj_t* list, const void* icon, con lv_obj_t* __wrap_lv_list_create(lv_obj_t* parent) { auto* list = __real_lv_list_create(parent); - if (tt::hal::getConfiguration()->uiScale == tt::hal::UiScale::Smallest) { + if (tt::hal::getConfiguration()->uiDensity == tt::hal::UiDensity::Compact) { lv_obj_set_style_pad_row(list, 2, LV_STATE_DEFAULT); lv_obj_set_style_pad_column(list, 2, LV_STATE_DEFAULT); lv_obj_set_style_pad_all(list, 2, LV_STATE_DEFAULT); @@ -24,7 +24,7 @@ lv_obj_t* __wrap_lv_list_create(lv_obj_t* parent) { lv_obj_t* __wrap_lv_list_add_button(lv_obj_t* list, const void* icon, const char* txt) { auto* button = __real_lv_list_add_button(list, icon, txt); - if (tt::hal::getConfiguration()->uiScale == tt::hal::UiScale::Smallest) { + if (tt::hal::getConfiguration()->uiDensity == tt::hal::UiDensity::Compact) { lv_obj_set_style_pad_ver(button, 2, LV_STATE_DEFAULT); } diff --git a/Tactility/Source/lvgl/wrappers/obj.cpp b/Tactility/Source/lvgl/wrappers/obj.cpp index 402a73f2..aec7da58 100644 --- a/Tactility/Source/lvgl/wrappers/obj.cpp +++ b/Tactility/Source/lvgl/wrappers/obj.cpp @@ -12,14 +12,14 @@ extern lv_obj_t* __real_lv_obj_create(lv_obj_t* parent); void __wrap_lv_obj_set_flex_flow(lv_obj_t* obj, lv_flex_flow_t flow) { __real_lv_obj_set_flex_flow(obj, flow); - if (tt::hal::getConfiguration()->uiScale == tt::hal::UiScale::Smallest) { + if (tt::hal::getConfiguration()->uiDensity == tt::hal::UiDensity::Compact) { lv_obj_set_style_pad_gap(obj, 4, LV_STATE_DEFAULT); } } lv_obj_t* __wrap_lv_obj_create(lv_obj_t* parent) { auto obj = __real_lv_obj_create(parent); - if (tt::hal::getConfiguration()->uiScale == tt::hal::UiScale::Smallest) { + if (tt::hal::getConfiguration()->uiDensity == tt::hal::UiDensity::Compact) { lv_obj_set_style_pad_all(obj, 2, LV_STATE_DEFAULT); lv_obj_set_style_pad_gap(obj, 2, LV_STATE_DEFAULT); lv_obj_set_style_radius(obj, 3, LV_STATE_DEFAULT); diff --git a/Tactility/Source/lvgl/wrappers/switch.cpp b/Tactility/Source/lvgl/wrappers/switch.cpp index 45ef57dc..ca676741 100644 --- a/Tactility/Source/lvgl/wrappers/switch.cpp +++ b/Tactility/Source/lvgl/wrappers/switch.cpp @@ -11,7 +11,7 @@ extern lv_obj_t* __real_lv_switch_create(lv_obj_t* parent); lv_obj_t* __wrap_lv_switch_create(lv_obj_t* parent) { auto widget = __real_lv_switch_create(parent); - if (tt::hal::getConfiguration()->uiScale == tt::hal::UiScale::Smallest) { + if (tt::hal::getConfiguration()->uiDensity == tt::hal::UiDensity::Compact) { lv_obj_set_style_size(widget, 25, 15, LV_STATE_DEFAULT); } diff --git a/Tactility/Source/lvgl/wrappers/textarea.cpp b/Tactility/Source/lvgl/wrappers/textarea.cpp index 38028eb0..0feffcbb 100644 --- a/Tactility/Source/lvgl/wrappers/textarea.cpp +++ b/Tactility/Source/lvgl/wrappers/textarea.cpp @@ -11,7 +11,7 @@ extern lv_obj_t* __real_lv_textarea_create(lv_obj_t* parent); lv_obj_t* __wrap_lv_textarea_create(lv_obj_t* parent) { auto textarea = __real_lv_textarea_create(parent); - if (tt::hal::getConfiguration()->uiScale == tt::hal::UiScale::Smallest) { + if (tt::hal::getConfiguration()->uiDensity == tt::hal::UiDensity::Compact) { lv_obj_set_style_pad_all(textarea, 2, LV_STATE_DEFAULT); } diff --git a/Tactility/Source/network/Http.cpp b/Tactility/Source/network/Http.cpp index 84b65dae..5da4d97f 100644 --- a/Tactility/Source/network/Http.cpp +++ b/Tactility/Source/network/Http.cpp @@ -35,16 +35,16 @@ void download( auto certificate_length = strlen(reinterpret_cast(certificate.get())) + 1; // TODO: Fix for missing initializer warnings - auto config = std::make_unique(esp_http_client_config_t { - .url = url.c_str(), - .auth_type = HTTP_AUTH_TYPE_NONE, - .cert_pem = reinterpret_cast(certificate.get()), - .cert_len = certificate_length, - .tls_version = ESP_HTTP_CLIENT_TLS_VER_TLS_1_3, - .method = HTTP_METHOD_GET, - .timeout_ms = 5000, - .transport_type = HTTP_TRANSPORT_OVER_SSL - }); + auto config = std::make_unique(); + memset(config.get(), 0, sizeof(esp_http_client_config_t)); + config->url = url.c_str(); + config->auth_type = HTTP_AUTH_TYPE_NONE; + config->cert_pem = reinterpret_cast(certificate.get()); + config->cert_len = certificate_length; + config->tls_version = ESP_HTTP_CLIENT_TLS_VER_TLS_1_3; + config->method = HTTP_METHOD_GET; + config->timeout_ms = 5000; + config->transport_type = HTTP_TRANSPORT_OVER_SSL; auto client = std::make_unique(); if (!client->init(std::move(config))) { diff --git a/Tactility/Source/service/memorychecker/MemoryCheckerService.cpp b/Tactility/Source/service/memorychecker/MemoryCheckerService.cpp index ff051095..7c3708a2 100644 --- a/Tactility/Source/service/memorychecker/MemoryCheckerService.cpp +++ b/Tactility/Source/service/memorychecker/MemoryCheckerService.cpp @@ -1,12 +1,11 @@ -#include - #include #include #include #include -#include #include +#include + namespace tt::service::memorychecker { static const auto LOGGER = Logger("MemoryChecker"); @@ -55,8 +54,7 @@ bool MemoryCheckerService::onStart(ServiceContext& service) { auto lock = mutex.asScopedLock(); lock.lock(); - auto icon_path = std::string("A:") + service.getPaths()->getAssetsPath("memory_alert.png"); - statusbarIconId = lvgl::statusbar_icon_add(icon_path, false); + statusbarIconId = lvgl::statusbar_icon_add(LVGL_SYMBOL_MEMORY, false); lvgl::statusbar_icon_set_visibility(statusbarIconId, false); timer.setCallbackPriority(Thread::Priority::Lower); diff --git a/Tactility/Source/service/statusbar/Statusbar.cpp b/Tactility/Source/service/statusbar/Statusbar.cpp index 25fa22f7..705a967e 100644 --- a/Tactility/Source/service/statusbar/Statusbar.cpp +++ b/Tactility/Source/service/statusbar/Statusbar.cpp @@ -14,60 +14,40 @@ #include #include +#include + namespace tt::service::statusbar { static const auto LOGGER = Logger("StatusbarService"); -// SD card status -constexpr auto* STATUSBAR_ICON_SDCARD = "sdcard.png"; -constexpr auto* STATUSBAR_ICON_SDCARD_ALERT = "sdcard_alert.png"; - -// Wifi status -constexpr auto* STATUSBAR_ICON_WIFI_OFF_WHITE = "wifi_off_white.png"; -constexpr auto* STATUSBAR_ICON_WIFI_SCAN_WHITE = "wifi_scan_white.png"; -constexpr auto* STATUSBAR_ICON_WIFI_SIGNAL_WEAK_WHITE = "wifi_signal_weak_white.png"; -constexpr auto* STATUSBAR_ICON_WIFI_SIGNAL_MEDIUM_WHITE = "wifi_signal_medium_white.png"; -constexpr auto* STATUSBAR_ICON_WIFI_SIGNAL_STRONG_WHITE = "wifi_signal_strong_white.png"; - -// Power status -constexpr auto* STATUSBAR_ICON_POWER_0 = "power_0.png"; -constexpr auto* STATUSBAR_ICON_POWER_10 = "power_10.png"; -constexpr auto* STATUSBAR_ICON_POWER_20 = "power_20.png"; -constexpr auto* STATUSBAR_ICON_POWER_30 = "power_30.png"; -constexpr auto* STATUSBAR_ICON_POWER_40 = "power_40.png"; -constexpr auto* STATUSBAR_ICON_POWER_50 = "power_50.png"; -constexpr auto* STATUSBAR_ICON_POWER_60 = "power_60.png"; -constexpr auto* STATUSBAR_ICON_POWER_70 = "power_70.png"; -constexpr auto* STATUSBAR_ICON_POWER_80 = "power_80.png"; -constexpr auto* STATUSBAR_ICON_POWER_90 = "power_90.png"; -constexpr auto* STATUSBAR_ICON_POWER_100 = "power_100.png"; - // GPS -constexpr auto* STATUSBAR_ICON_GPS = "location.png"; - extern const ServiceManifest manifest; const char* getWifiStatusIconForRssi(int rssi) { if (rssi >= -60) { - return STATUSBAR_ICON_WIFI_SIGNAL_STRONG_WHITE; + return LVGL_SYMBOL_SIGNAL_WIFI_4_BAR; } else if (rssi >= -70) { - return STATUSBAR_ICON_WIFI_SIGNAL_MEDIUM_WHITE; + return LVGL_SYMBOL_NETWORK_WIFI_3_BAR; + } else if (rssi >= -80) { + return LVGL_SYMBOL_NETWORK_WIFI_2_BAR; + } else if (rssi >= -90) { + return LVGL_SYMBOL_NETWORK_WIFI_1_BAR; } else { - return STATUSBAR_ICON_WIFI_SIGNAL_WEAK_WHITE; + return LVGL_SYMBOL_SIGNAL_WIFI_BAD; } } -static const char* getWifiStatusIcon(wifi::RadioState state, bool secure) { +static const char* getWifiStatusIcon(wifi::RadioState state) { int rssi; switch (state) { using enum wifi::RadioState; case On: case OnPending: case ConnectionPending: - return STATUSBAR_ICON_WIFI_SCAN_WHITE; + return LVGL_SYMBOL_SIGNAL_WIFI_0_BAR; case OffPending: case Off: - return STATUSBAR_ICON_WIFI_OFF_WHITE; + return LVGL_SYMBOL_SIGNAL_WIFI_OFF; case ConnectionActive: rssi = wifi::getRssi(); return getWifiStatusIconForRssi(rssi); @@ -80,11 +60,11 @@ static const char* getSdCardStatusIcon(hal::sdcard::SdCardDevice::State state) { switch (state) { using enum hal::sdcard::SdCardDevice::State; case Mounted: - return STATUSBAR_ICON_SDCARD; + return LVGL_SYMBOL_SD_CARD; case Error: case Unmounted: case Timeout: - return STATUSBAR_ICON_SDCARD_ALERT; + return LVGL_SYMBOL_SD_CARD_ALERT; default: check(false, "Unhandled SdCard state"); } @@ -113,27 +93,19 @@ static const char* getPowerStatusIcon() { uint8_t charge = charge_level.valueAsUint8; if (charge >= 95) { - return STATUSBAR_ICON_POWER_100; - } else if (charge >= 85) { - return STATUSBAR_ICON_POWER_90; - } else if (charge >= 75) { - return STATUSBAR_ICON_POWER_80; - } else if (charge >= 65) { - return STATUSBAR_ICON_POWER_70; - } else if (charge >= 55) { - return STATUSBAR_ICON_POWER_60; - } else if (charge >= 45) { - return STATUSBAR_ICON_POWER_50; - } else if (charge >= 35) { - return STATUSBAR_ICON_POWER_40; - } else if (charge >= 25) { - return STATUSBAR_ICON_POWER_30; - } else if (charge >= 15) { - return STATUSBAR_ICON_POWER_20; - } else if (charge >= 5) { - return STATUSBAR_ICON_POWER_10; + return LVGL_SYMBOL_BATTERY_ANDROID_FRAME_FULL; + } else if (charge >= 80) { + return LVGL_SYMBOL_BATTERY_ANDROID_FRAME_6; + } else if (charge >= 64) { + return LVGL_SYMBOL_BATTERY_ANDROID_FRAME_5; + } else if (charge >= 48) { + return LVGL_SYMBOL_BATTERY_ANDROID_FRAME_4; + } else if (charge >= 32) { + return LVGL_SYMBOL_BATTERY_ANDROID_FRAME_3; + } else if (charge >= 16) { + return LVGL_SYMBOL_BATTERY_ANDROID_FRAME_2; } else { - return STATUSBAR_ICON_POWER_0; + return LVGL_SYMBOL_BATTERY_ANDROID_FRAME_1; } } @@ -150,8 +122,6 @@ class StatusbarService final : public Service { int8_t power_icon_id; const char* power_last_icon = nullptr; - std::unique_ptr paths; - void lock() const { mutex.lock(); } @@ -165,8 +135,7 @@ class StatusbarService final : public Service { bool show_icon = (gps_state == gps::State::OnPending) || (gps_state == gps::State::On); if (gps_last_state != show_icon) { if (show_icon) { - auto icon_path = "A:" + paths->getAssetsPath(STATUSBAR_ICON_GPS); - lvgl::statusbar_icon_set_image(gps_icon_id, icon_path); + lvgl::statusbar_icon_set_image(gps_icon_id, LVGL_SYMBOL_LOCATION_ON); lvgl::statusbar_icon_set_visibility(gps_icon_id, true); } else { lvgl::statusbar_icon_set_visibility(gps_icon_id, false); @@ -177,12 +146,10 @@ class StatusbarService final : public Service { void updateWifiIcon() { wifi::RadioState radio_state = wifi::getRadioState(); - bool is_secure = wifi::isConnectionSecure(); - const char* desired_icon = getWifiStatusIcon(radio_state, is_secure); + const char* desired_icon = getWifiStatusIcon(radio_state); if (wifi_last_icon != desired_icon) { if (desired_icon != nullptr) { - auto icon_path = "A:" + paths->getAssetsPath(desired_icon); - lvgl::statusbar_icon_set_image(wifi_icon_id, icon_path); + lvgl::statusbar_icon_set_image(wifi_icon_id, desired_icon); lvgl::statusbar_icon_set_visibility(wifi_icon_id, true); } else { lvgl::statusbar_icon_set_visibility(wifi_icon_id, false); @@ -195,8 +162,7 @@ class StatusbarService final : public Service { const char* desired_icon = getPowerStatusIcon(); if (power_last_icon != desired_icon) { if (desired_icon != nullptr) { - auto icon_path = "A:" + paths->getAssetsPath(desired_icon); - lvgl::statusbar_icon_set_image(power_icon_id, icon_path); + lvgl::statusbar_icon_set_image(power_icon_id, desired_icon); lvgl::statusbar_icon_set_visibility(power_icon_id, true); } else { lvgl::statusbar_icon_set_visibility(power_icon_id, false); @@ -214,8 +180,7 @@ class StatusbarService final : public Service { if (state != hal::sdcard::SdCardDevice::State::Timeout) { auto* desired_icon = getSdCardStatusIcon(state); if (sdcard_last_icon != desired_icon) { - auto icon_path = "A:" + paths->getAssetsPath(desired_icon); - lvgl::statusbar_icon_set_image(sdcard_icon_id, icon_path); + lvgl::statusbar_icon_set_image(sdcard_icon_id, desired_icon); lvgl::statusbar_icon_set_visibility(sdcard_icon_id, true); sdcard_last_icon = desired_icon; } @@ -258,8 +223,6 @@ public: return false; } - paths = serviceContext.getPaths(); - // TODO: Make thread-safe for LVGL lvgl::statusbar_icon_set_visibility(wifi_icon_id, true); diff --git a/Tactility/Source/service/webserver/WebServerService.cpp b/Tactility/Source/service/webserver/WebServerService.cpp index f7039682..bc78335e 100644 --- a/Tactility/Source/service/webserver/WebServerService.cpp +++ b/Tactility/Source/service/webserver/WebServerService.cpp @@ -8,16 +8,15 @@ #include #include #include -#include #include #include -#include #include #include #include #include #include +#include #include #include #include @@ -32,23 +31,25 @@ #include #endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include + #include +#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include -#include +#include #include +#include namespace tt::service::webserver { @@ -519,13 +520,9 @@ bool WebServerService::startServer() { LOGGER.info("HTTP server started successfully on port {}", settings.webServerPort); publish_event(this, WebServerEvent::WebServerStarted); - // Show statusbar icon (different icon for AP vs Station mode) + // Show statusbar icon if (statusbarIconId >= 0) { - const char* icon_name = (settings.wifiMode == settings::webserver::WiFiMode::AccessPoint) - ? "webserver_ap_white.png" - : "webserver_station_white.png"; - auto icon_path = std::string("A:/system/service/Statusbar/assets/") + icon_name; - lvgl::statusbar_icon_set_image(statusbarIconId, icon_path); + lvgl::statusbar_icon_set_image(statusbarIconId, LVGL_SYMBOL_CLOUD); lvgl::statusbar_icon_set_visibility(statusbarIconId, true); LOGGER.info("WebServer statusbar icon shown ({} mode)", settings.wifiMode == settings::webserver::WiFiMode::AccessPoint ? "AP" : "Station"); diff --git a/TactilityC/Include/tt_hal.h b/TactilityC/Include/tt_hal.h index d833a163..65c4f5bc 100644 --- a/TactilityC/Include/tt_hal.h +++ b/TactilityC/Include/tt_hal.h @@ -7,14 +7,26 @@ extern "C" { /** Affects LVGL widget style */ typedef enum { /** Ideal for very small non-touch screen devices (e.g. Waveshare S3 LCD 1.3") */ - UiScaleSmallest, + UiDensityCompact, /** Nothing was changed in the LVGL UI/UX */ - UiScaleDefault + UiDensityDefault +} UiDensity; + +/** @deprecated use UiDensity */ +typedef enum { + UiScaleSmallest, // UiDensityCompact + UiScaleDefault // UiDensityDefault } UiScale; -/** @return the UI scaling setting for this device. */ +/** + * @deprecated Use UiDensity + * @return the UI scaling setting for this device. + */ UiScale tt_hal_configuration_get_ui_scale(); +/** @return the UI scaling setting for this device. */ +UiDensity tt_hal_configuration_get_ui_density(); + #ifdef __cplusplus } #endif diff --git a/TactilityC/Source/symbols/gcc_soft_float_p4.cpp b/TactilityC/Source/symbols/gcc_soft_float_p4.cpp index 134aaf93..144203cd 100644 --- a/TactilityC/Source/symbols/gcc_soft_float_p4.cpp +++ b/TactilityC/Source/symbols/gcc_soft_float_p4.cpp @@ -32,6 +32,8 @@ extern double __negdf2(double a); // extern long double __negtf2(long double a); // extern long double __negxf2(long double a); +extern double __extendsfdf2(float a); + // extern long double __extendsftf2(float a); // extern long double __extendsfxf2(float a); // extern long double __extenddftf2(double a); @@ -152,6 +154,8 @@ const esp_elfsym gcc_soft_float_symbols[] = { // ESP_ELFSYM_EXPORT(__negtf2), // ESP_ELFSYM_EXPORT(__negxf2), + ESP_ELFSYM_EXPORT(__extendsfdf2), + // ESP_ELFSYM_EXPORT(__extendsftf2), // ESP_ELFSYM_EXPORT(__extendsfxf2), // ESP_ELFSYM_EXPORT(__extenddftf2), diff --git a/TactilityC/Source/tt_hal.cpp b/TactilityC/Source/tt_hal.cpp index 96dc4c1a..875716e4 100644 --- a/TactilityC/Source/tt_hal.cpp +++ b/TactilityC/Source/tt_hal.cpp @@ -5,9 +5,14 @@ extern "C" { +UiDensity tt_hal_configuration_get_ui_density() { + auto density = tt::hal::getConfiguration()->uiDensity; + return static_cast(density); +} + UiScale tt_hal_configuration_get_ui_scale() { - auto scale = tt::hal::getConfiguration()->uiScale; - return static_cast(scale); + auto density = tt::hal::getConfiguration()->uiDensity; + return static_cast(density); } } diff --git a/TactilityC/Source/tt_init.cpp b/TactilityC/Source/tt_init.cpp index 71727e45..977e4d8c 100644 --- a/TactilityC/Source/tt_init.cpp +++ b/TactilityC/Source/tt_init.cpp @@ -273,6 +273,7 @@ const esp_elfsym main_symbols[] { ESP_ELFSYM_EXPORT(tt_gps_has_coordinates), ESP_ELFSYM_EXPORT(tt_gps_get_coordinates), ESP_ELFSYM_EXPORT(tt_hal_configuration_get_ui_scale), + ESP_ELFSYM_EXPORT(tt_hal_configuration_get_ui_density), ESP_ELFSYM_EXPORT(tt_hal_device_find), ESP_ELFSYM_EXPORT(tt_hal_display_driver_alloc), ESP_ELFSYM_EXPORT(tt_hal_display_driver_draw_bitmap), diff --git a/TactilityKernel/CMakeLists.txt b/TactilityKernel/CMakeLists.txt index d451fdb0..101671a0 100644 --- a/TactilityKernel/CMakeLists.txt +++ b/TactilityKernel/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.20) include("${CMAKE_CURRENT_LIST_DIR}/../Buildscripts/module.cmake") -file(GLOB_RECURSE SOURCE_FILES "Source/*.c**") +file(GLOB_RECURSE SOURCE_FILES "source/*.c**") list(APPEND REQUIRES_LIST) @@ -15,6 +15,6 @@ endif () tactility_add_module(TactilityKernel SRCS ${SOURCE_FILES} - INCLUDE_DIRS Include/ + INCLUDE_DIRS include/ REQUIRES ${REQUIRES_LIST} ) diff --git a/TactilityKernel/Bindings/gpio-controller.yaml b/TactilityKernel/bindings/gpio-controller.yaml similarity index 100% rename from TactilityKernel/Bindings/gpio-controller.yaml rename to TactilityKernel/bindings/gpio-controller.yaml diff --git a/TactilityKernel/Bindings/i2c-controller.yaml b/TactilityKernel/bindings/i2c-controller.yaml similarity index 100% rename from TactilityKernel/Bindings/i2c-controller.yaml rename to TactilityKernel/bindings/i2c-controller.yaml diff --git a/TactilityKernel/Bindings/i2c-device.yaml b/TactilityKernel/bindings/i2c-device.yaml similarity index 100% rename from TactilityKernel/Bindings/i2c-device.yaml rename to TactilityKernel/bindings/i2c-device.yaml diff --git a/TactilityKernel/Bindings/i2s-controller.yaml b/TactilityKernel/bindings/i2s-controller.yaml similarity index 100% rename from TactilityKernel/Bindings/i2s-controller.yaml rename to TactilityKernel/bindings/i2s-controller.yaml diff --git a/TactilityKernel/Bindings/root.yaml b/TactilityKernel/bindings/root.yaml similarity index 100% rename from TactilityKernel/Bindings/root.yaml rename to TactilityKernel/bindings/root.yaml diff --git a/TactilityKernel/Bindings/spi-controller.yaml b/TactilityKernel/bindings/spi-controller.yaml similarity index 100% rename from TactilityKernel/Bindings/spi-controller.yaml rename to TactilityKernel/bindings/spi-controller.yaml diff --git a/TactilityKernel/Bindings/uart-controller.yaml b/TactilityKernel/bindings/uart-controller.yaml similarity index 100% rename from TactilityKernel/Bindings/uart-controller.yaml rename to TactilityKernel/bindings/uart-controller.yaml diff --git a/TactilityKernel/devicetree.yaml b/TactilityKernel/devicetree.yaml index 6723f7af..3f9c0837 100644 --- a/TactilityKernel/devicetree.yaml +++ b/TactilityKernel/devicetree.yaml @@ -1 +1 @@ -bindings: Bindings +bindings: bindings diff --git a/TactilityKernel/Include/tactility/bindings/bindings.h b/TactilityKernel/include/tactility/bindings/bindings.h similarity index 100% rename from TactilityKernel/Include/tactility/bindings/bindings.h rename to TactilityKernel/include/tactility/bindings/bindings.h diff --git a/TactilityKernel/Include/tactility/bindings/gpio.h b/TactilityKernel/include/tactility/bindings/gpio.h similarity index 100% rename from TactilityKernel/Include/tactility/bindings/gpio.h rename to TactilityKernel/include/tactility/bindings/gpio.h diff --git a/TactilityKernel/Include/tactility/bindings/root.h b/TactilityKernel/include/tactility/bindings/root.h similarity index 100% rename from TactilityKernel/Include/tactility/bindings/root.h rename to TactilityKernel/include/tactility/bindings/root.h diff --git a/TactilityKernel/Include/tactility/check.h b/TactilityKernel/include/tactility/check.h similarity index 100% rename from TactilityKernel/Include/tactility/check.h rename to TactilityKernel/include/tactility/check.h diff --git a/TactilityKernel/Include/tactility/concurrent/dispatcher.h b/TactilityKernel/include/tactility/concurrent/dispatcher.h similarity index 100% rename from TactilityKernel/Include/tactility/concurrent/dispatcher.h rename to TactilityKernel/include/tactility/concurrent/dispatcher.h diff --git a/TactilityKernel/Include/tactility/concurrent/event_group.h b/TactilityKernel/include/tactility/concurrent/event_group.h similarity index 100% rename from TactilityKernel/Include/tactility/concurrent/event_group.h rename to TactilityKernel/include/tactility/concurrent/event_group.h diff --git a/TactilityKernel/Include/tactility/concurrent/mutex.h b/TactilityKernel/include/tactility/concurrent/mutex.h similarity index 100% rename from TactilityKernel/Include/tactility/concurrent/mutex.h rename to TactilityKernel/include/tactility/concurrent/mutex.h diff --git a/TactilityKernel/Include/tactility/concurrent/recursive_mutex.h b/TactilityKernel/include/tactility/concurrent/recursive_mutex.h similarity index 100% rename from TactilityKernel/Include/tactility/concurrent/recursive_mutex.h rename to TactilityKernel/include/tactility/concurrent/recursive_mutex.h diff --git a/TactilityKernel/Include/tactility/concurrent/thread.h b/TactilityKernel/include/tactility/concurrent/thread.h similarity index 100% rename from TactilityKernel/Include/tactility/concurrent/thread.h rename to TactilityKernel/include/tactility/concurrent/thread.h diff --git a/TactilityKernel/Include/tactility/concurrent/timer.h b/TactilityKernel/include/tactility/concurrent/timer.h similarity index 100% rename from TactilityKernel/Include/tactility/concurrent/timer.h rename to TactilityKernel/include/tactility/concurrent/timer.h diff --git a/TactilityKernel/Include/tactility/defines.h b/TactilityKernel/include/tactility/defines.h similarity index 100% rename from TactilityKernel/Include/tactility/defines.h rename to TactilityKernel/include/tactility/defines.h diff --git a/TactilityKernel/Include/tactility/delay.h b/TactilityKernel/include/tactility/delay.h similarity index 100% rename from TactilityKernel/Include/tactility/delay.h rename to TactilityKernel/include/tactility/delay.h diff --git a/TactilityKernel/Include/tactility/device.h b/TactilityKernel/include/tactility/device.h similarity index 100% rename from TactilityKernel/Include/tactility/device.h rename to TactilityKernel/include/tactility/device.h diff --git a/TactilityKernel/Include/tactility/driver.h b/TactilityKernel/include/tactility/driver.h similarity index 100% rename from TactilityKernel/Include/tactility/driver.h rename to TactilityKernel/include/tactility/driver.h diff --git a/TactilityKernel/Include/tactility/drivers/gpio.h b/TactilityKernel/include/tactility/drivers/gpio.h similarity index 100% rename from TactilityKernel/Include/tactility/drivers/gpio.h rename to TactilityKernel/include/tactility/drivers/gpio.h diff --git a/TactilityKernel/Include/tactility/drivers/gpio_controller.h b/TactilityKernel/include/tactility/drivers/gpio_controller.h similarity index 100% rename from TactilityKernel/Include/tactility/drivers/gpio_controller.h rename to TactilityKernel/include/tactility/drivers/gpio_controller.h diff --git a/TactilityKernel/Include/tactility/drivers/gpio_descriptor.h b/TactilityKernel/include/tactility/drivers/gpio_descriptor.h similarity index 100% rename from TactilityKernel/Include/tactility/drivers/gpio_descriptor.h rename to TactilityKernel/include/tactility/drivers/gpio_descriptor.h diff --git a/TactilityKernel/Include/tactility/drivers/i2c_controller.h b/TactilityKernel/include/tactility/drivers/i2c_controller.h similarity index 100% rename from TactilityKernel/Include/tactility/drivers/i2c_controller.h rename to TactilityKernel/include/tactility/drivers/i2c_controller.h diff --git a/TactilityKernel/Include/tactility/drivers/i2s_controller.h b/TactilityKernel/include/tactility/drivers/i2s_controller.h similarity index 100% rename from TactilityKernel/Include/tactility/drivers/i2s_controller.h rename to TactilityKernel/include/tactility/drivers/i2s_controller.h diff --git a/TactilityKernel/Include/tactility/drivers/root.h b/TactilityKernel/include/tactility/drivers/root.h similarity index 100% rename from TactilityKernel/Include/tactility/drivers/root.h rename to TactilityKernel/include/tactility/drivers/root.h diff --git a/TactilityKernel/Include/tactility/drivers/spi_controller.h b/TactilityKernel/include/tactility/drivers/spi_controller.h similarity index 100% rename from TactilityKernel/Include/tactility/drivers/spi_controller.h rename to TactilityKernel/include/tactility/drivers/spi_controller.h diff --git a/TactilityKernel/Include/tactility/drivers/uart_controller.h b/TactilityKernel/include/tactility/drivers/uart_controller.h similarity index 100% rename from TactilityKernel/Include/tactility/drivers/uart_controller.h rename to TactilityKernel/include/tactility/drivers/uart_controller.h diff --git a/TactilityKernel/Include/tactility/dts.h b/TactilityKernel/include/tactility/dts.h similarity index 100% rename from TactilityKernel/Include/tactility/dts.h rename to TactilityKernel/include/tactility/dts.h diff --git a/TactilityKernel/Include/tactility/error.h b/TactilityKernel/include/tactility/error.h similarity index 100% rename from TactilityKernel/Include/tactility/error.h rename to TactilityKernel/include/tactility/error.h diff --git a/TactilityKernel/Include/tactility/freertos/README.md b/TactilityKernel/include/tactility/freertos/README.md similarity index 100% rename from TactilityKernel/Include/tactility/freertos/README.md rename to TactilityKernel/include/tactility/freertos/README.md diff --git a/TactilityKernel/Include/tactility/freertos/event_groups.h b/TactilityKernel/include/tactility/freertos/event_groups.h similarity index 100% rename from TactilityKernel/Include/tactility/freertos/event_groups.h rename to TactilityKernel/include/tactility/freertos/event_groups.h diff --git a/TactilityKernel/Include/tactility/freertos/freertos.h b/TactilityKernel/include/tactility/freertos/freertos.h similarity index 100% rename from TactilityKernel/Include/tactility/freertos/freertos.h rename to TactilityKernel/include/tactility/freertos/freertos.h diff --git a/TactilityKernel/Include/tactility/freertos/port.h b/TactilityKernel/include/tactility/freertos/port.h similarity index 100% rename from TactilityKernel/Include/tactility/freertos/port.h rename to TactilityKernel/include/tactility/freertos/port.h diff --git a/TactilityKernel/Include/tactility/freertos/queue.h b/TactilityKernel/include/tactility/freertos/queue.h similarity index 100% rename from TactilityKernel/Include/tactility/freertos/queue.h rename to TactilityKernel/include/tactility/freertos/queue.h diff --git a/TactilityKernel/Include/tactility/freertos/semphr.h b/TactilityKernel/include/tactility/freertos/semphr.h similarity index 100% rename from TactilityKernel/Include/tactility/freertos/semphr.h rename to TactilityKernel/include/tactility/freertos/semphr.h diff --git a/TactilityKernel/Include/tactility/freertos/task.h b/TactilityKernel/include/tactility/freertos/task.h similarity index 100% rename from TactilityKernel/Include/tactility/freertos/task.h rename to TactilityKernel/include/tactility/freertos/task.h diff --git a/TactilityKernel/Include/tactility/freertos/timers.h b/TactilityKernel/include/tactility/freertos/timers.h similarity index 100% rename from TactilityKernel/Include/tactility/freertos/timers.h rename to TactilityKernel/include/tactility/freertos/timers.h diff --git a/TactilityKernel/Include/tactility/kernel_init.h b/TactilityKernel/include/tactility/kernel_init.h similarity index 100% rename from TactilityKernel/Include/tactility/kernel_init.h rename to TactilityKernel/include/tactility/kernel_init.h diff --git a/TactilityKernel/Include/tactility/log.h b/TactilityKernel/include/tactility/log.h similarity index 100% rename from TactilityKernel/Include/tactility/log.h rename to TactilityKernel/include/tactility/log.h diff --git a/TactilityKernel/Include/tactility/module.h b/TactilityKernel/include/tactility/module.h similarity index 100% rename from TactilityKernel/Include/tactility/module.h rename to TactilityKernel/include/tactility/module.h diff --git a/TactilityKernel/Include/tactility/time.h b/TactilityKernel/include/tactility/time.h similarity index 100% rename from TactilityKernel/Include/tactility/time.h rename to TactilityKernel/include/tactility/time.h diff --git a/TactilityKernel/Source/concurrent/dispatcher.cpp b/TactilityKernel/source/concurrent/dispatcher.cpp similarity index 100% rename from TactilityKernel/Source/concurrent/dispatcher.cpp rename to TactilityKernel/source/concurrent/dispatcher.cpp diff --git a/TactilityKernel/Source/concurrent/event_group.cpp b/TactilityKernel/source/concurrent/event_group.cpp similarity index 100% rename from TactilityKernel/Source/concurrent/event_group.cpp rename to TactilityKernel/source/concurrent/event_group.cpp diff --git a/TactilityKernel/Source/concurrent/thread.cpp b/TactilityKernel/source/concurrent/thread.cpp similarity index 100% rename from TactilityKernel/Source/concurrent/thread.cpp rename to TactilityKernel/source/concurrent/thread.cpp diff --git a/TactilityKernel/Source/concurrent/timer.c b/TactilityKernel/source/concurrent/timer.c similarity index 100% rename from TactilityKernel/Source/concurrent/timer.c rename to TactilityKernel/source/concurrent/timer.c diff --git a/TactilityKernel/Source/crash.cpp b/TactilityKernel/source/crash.cpp similarity index 100% rename from TactilityKernel/Source/crash.cpp rename to TactilityKernel/source/crash.cpp diff --git a/TactilityKernel/Source/device.cpp b/TactilityKernel/source/device.cpp similarity index 100% rename from TactilityKernel/Source/device.cpp rename to TactilityKernel/source/device.cpp diff --git a/TactilityKernel/Source/driver.cpp b/TactilityKernel/source/driver.cpp similarity index 100% rename from TactilityKernel/Source/driver.cpp rename to TactilityKernel/source/driver.cpp diff --git a/TactilityKernel/Source/drivers/gpio_controller.cpp b/TactilityKernel/source/drivers/gpio_controller.cpp similarity index 100% rename from TactilityKernel/Source/drivers/gpio_controller.cpp rename to TactilityKernel/source/drivers/gpio_controller.cpp diff --git a/TactilityKernel/Source/drivers/i2c_controller.cpp b/TactilityKernel/source/drivers/i2c_controller.cpp similarity index 100% rename from TactilityKernel/Source/drivers/i2c_controller.cpp rename to TactilityKernel/source/drivers/i2c_controller.cpp diff --git a/TactilityKernel/Source/drivers/i2s_controller.cpp b/TactilityKernel/source/drivers/i2s_controller.cpp similarity index 100% rename from TactilityKernel/Source/drivers/i2s_controller.cpp rename to TactilityKernel/source/drivers/i2s_controller.cpp diff --git a/TactilityKernel/Source/drivers/root.cpp b/TactilityKernel/source/drivers/root.cpp similarity index 100% rename from TactilityKernel/Source/drivers/root.cpp rename to TactilityKernel/source/drivers/root.cpp diff --git a/TactilityKernel/Source/drivers/spi_controller.cpp b/TactilityKernel/source/drivers/spi_controller.cpp similarity index 100% rename from TactilityKernel/Source/drivers/spi_controller.cpp rename to TactilityKernel/source/drivers/spi_controller.cpp diff --git a/TactilityKernel/Source/drivers/uart_controller.cpp b/TactilityKernel/source/drivers/uart_controller.cpp similarity index 100% rename from TactilityKernel/Source/drivers/uart_controller.cpp rename to TactilityKernel/source/drivers/uart_controller.cpp diff --git a/TactilityKernel/Source/error.cpp b/TactilityKernel/source/error.cpp similarity index 100% rename from TactilityKernel/Source/error.cpp rename to TactilityKernel/source/error.cpp diff --git a/TactilityKernel/Source/kernel_init.cpp b/TactilityKernel/source/kernel_init.cpp similarity index 100% rename from TactilityKernel/Source/kernel_init.cpp rename to TactilityKernel/source/kernel_init.cpp diff --git a/TactilityKernel/Source/kernel_symbols.c b/TactilityKernel/source/kernel_symbols.c similarity index 100% rename from TactilityKernel/Source/kernel_symbols.c rename to TactilityKernel/source/kernel_symbols.c diff --git a/TactilityKernel/Source/log.cpp b/TactilityKernel/source/log.cpp similarity index 100% rename from TactilityKernel/Source/log.cpp rename to TactilityKernel/source/log.cpp diff --git a/TactilityKernel/Source/module.cpp b/TactilityKernel/source/module.cpp similarity index 100% rename from TactilityKernel/Source/module.cpp rename to TactilityKernel/source/module.cpp diff --git a/Tests/Tactility/CMakeLists.txt b/Tests/Tactility/CMakeLists.txt index c31c724d..0c9280e1 100644 --- a/Tests/Tactility/CMakeLists.txt +++ b/Tests/Tactility/CMakeLists.txt @@ -15,7 +15,7 @@ target_link_libraries(TactilityTests PRIVATE Tactility TactilityCore TactilityKernel - PlatformPosix + platform-posix hal-device-module lvgl-module lvgl diff --git a/Tests/TactilityKernel/CMakeLists.txt b/Tests/TactilityKernel/CMakeLists.txt index 082d5dcb..1c27a603 100644 --- a/Tests/TactilityKernel/CMakeLists.txt +++ b/Tests/TactilityKernel/CMakeLists.txt @@ -13,5 +13,5 @@ add_test(NAME TactilityKernelTests COMMAND TactilityKernelTests) target_link_libraries(TactilityKernelTests PUBLIC TactilityKernel - PlatformPosix + platform-posix ) diff --git a/device.py b/device.py index 1f978cc8..486ce9a4 100644 --- a/device.py +++ b/device.py @@ -62,13 +62,16 @@ def get_property_or_exit(properties: ConfigParser, group: str, key: str): exit_with_error(f"Device properties does not contain key: {key}") return properties[group][key] -def get_property_or_none(properties: ConfigParser, group: str, key: str): +def get_property_or_default(properties: ConfigParser, group: str, key: str, default): if group not in properties.sections(): - return None + return default if key not in properties[group].keys(): - return None + return default return properties[group][key] +def get_property_or_none(properties: ConfigParser, group: str, key: str): + return get_property_or_default(properties, group, key, None) + def get_boolean_property_or_false(properties: ConfigParser, group: str, key: str): if group not in properties.sections(): return False @@ -76,6 +79,18 @@ def get_boolean_property_or_false(properties: ConfigParser, group: str, key: str return False return properties[group][key] == "true" +def safe_int(value: str, error_message: str): + try: + return int(value) + except ValueError: + exit_with_error(error_message) + +def safe_float(value: str, error_message: str): + try: + return float(value) + except ValueError: + exit_with_error(error_message) + def write_defaults(output_file): default_properties_path = os.path.join("Buildscripts", "sdkconfig", "default.properties") default_properties = read_file(default_properties_path) @@ -135,11 +150,8 @@ def write_flash_variables(output_file, device_properties: ConfigParser): output_file.write("# Flash\n") flash_size_number = flash_size[:-2] output_file.write(f"CONFIG_ESPTOOLPY_FLASHSIZE_{flash_size_number}MB=y\n") - flash_mode = get_property_or_none(device_properties, "hardware", "flashMode") - if flash_mode is not None: - output_file.write(f"CONFIG_FLASHMODE_{flash_mode}=y\n") - else: - output_file.write("CONFIG_FLASHMODE_QIO=y\n") + flash_mode = get_property_or_default(device_properties, "hardware", "flashMode", 'QIO') + output_file.write(f"CONFIG_FLASHMODE_{flash_mode}=y\n") esptool_flash_freq = get_property_or_none(device_properties, "hardware", "esptoolFlashFreq") if esptool_flash_freq is not None: output_file.write(f"CONFIG_ESPTOOLPY_FLASHFREQ_{esptool_flash_freq}=y\n") @@ -182,18 +194,35 @@ def write_performance_improvements(output_file, device_properties: ConfigParser) output_file.write("# Performance improvement: Fixes glitches in the RGB display driver when rendering new screens/apps\n") output_file.write("CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y\n") +def write_lvgl_variable_placeholders(output_file): + output_file.write("# LVGL Placeholder\n") + output_file.write("CONFIG_LV_DPI_DEF=100\n") + output_file.write("CONFIG_LV_FONT_MONTSERRAT_8=y\n") + output_file.write("CONFIG_LV_FONT_DEFAULT_MONTSERRAT_8=y\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_SMALL=8\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_DEFAULT=8\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_LARGE=8\n") + output_file.write("CONFIG_TT_LVGL_STATUSBAR_ICON_SIZE=12\n") + output_file.write("CONFIG_TT_LVGL_LAUNCHER_ICON_SIZE=30\n") + output_file.write("CONFIG_TT_LVGL_SHARED_ICON_SIZE=12\n") + def write_lvgl_variables(output_file, device_properties: ConfigParser): output_file.write("# LVGL\n") - if has_group(device_properties, "display"): - dpi = get_property_or_exit(device_properties, "display", "dpi") - output_file.write(f"CONFIG_LV_DPI_DEF={dpi}\n") - if has_group(device_properties, "lvgl"): - color_depth = get_property_or_exit(device_properties, "lvgl", "colorDepth") - output_file.write(f"CONFIG_LV_COLOR_DEPTH={color_depth}\n") - output_file.write(f"CONFIG_LV_COLOR_DEPTH_{color_depth}=y\n") + if not has_group(device_properties, "lvgl") or not has_group(device_properties, "display"): + write_lvgl_variable_placeholders(output_file) + return + # LVGL DPI overrides the real DPI settings + dpi_text = get_property_or_none(device_properties, "lvgl", "dpi") + if dpi_text is None: + dpi_text = get_property_or_exit(device_properties, "display", "dpi") + dpi = safe_int(dpi_text, f"DPI must be an integer, but was: '{dpi_text}'") + output_file.write(f"CONFIG_LV_DPI_DEF={dpi}\n") + color_depth = get_property_or_exit(device_properties, "lvgl", "colorDepth") + output_file.write(f"CONFIG_LV_COLOR_DEPTH={color_depth}\n") + output_file.write(f"CONFIG_LV_COLOR_DEPTH_{color_depth}=y\n") output_file.write("CONFIG_LV_DISP_DEF_REFR_PERIOD=10\n") - theme = get_property_or_none(device_properties, "lvgl", "theme") - if theme is None or theme == "DefaultDark": + theme = get_property_or_default(device_properties, "lvgl", "theme", "DefaultDark") + if theme == "DefaultDark": output_file.write("CONFIG_LV_THEME_DEFAULT_DARK=y\n") elif theme == "DefaultLight": output_file.write("CONFIG_LV_THEME_DEFAULT_LIGHT=y\n") @@ -202,6 +231,75 @@ def write_lvgl_variables(output_file, device_properties: ConfigParser): output_file.write("CONFIG_LV_THEME_MONO=y\n") else: exit_with_error(f"Unknown theme: {theme}") + font_height_text = get_property_or_default(device_properties, "lvgl", "fontSize", "14") + font_height = safe_int(font_height_text, f"Font height must be an integer, but was: '{font_height_text}'") + if font_height <= 12: + output_file.write("CONFIG_LV_FONT_MONTSERRAT_8=y\n") + output_file.write("CONFIG_LV_FONT_MONTSERRAT_12=y\n") + output_file.write("CONFIG_LV_FONT_MONTSERRAT_16=y\n") + output_file.write("CONFIG_LV_FONT_DEFAULT_MONTSERRAT_12=y\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_SMALL=8\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_DEFAULT=12\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_LARGE=16\n") + output_file.write("CONFIG_TT_LVGL_STATUSBAR_ICON_SIZE=12\n") + output_file.write("CONFIG_TT_LVGL_LAUNCHER_ICON_SIZE=30\n") + output_file.write("CONFIG_TT_LVGL_SHARED_ICON_SIZE=12\n") + elif font_height <= 14: + output_file.write("CONFIG_LV_FONT_MONTSERRAT_10=y\n") + output_file.write("CONFIG_LV_FONT_MONTSERRAT_14=y\n") + output_file.write("CONFIG_LV_FONT_MONTSERRAT_18=y\n") + output_file.write("CONFIG_LV_FONT_DEFAULT_MONTSERRAT_14=y\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_SMALL=10\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_DEFAULT=14\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_LARGE=18\n") + output_file.write("CONFIG_TT_LVGL_STATUSBAR_ICON_SIZE=16\n") + output_file.write("CONFIG_TT_LVGL_LAUNCHER_ICON_SIZE=36\n") + output_file.write("CONFIG_TT_LVGL_SHARED_ICON_SIZE=16\n") + elif font_height <= 16: + output_file.write("CONFIG_LV_FONT_MONTSERRAT_12=y\n") + output_file.write("CONFIG_LV_FONT_MONTSERRAT_16=y\n") + output_file.write("CONFIG_LV_FONT_MONTSERRAT_22=y\n") + output_file.write("CONFIG_LV_FONT_DEFAULT_MONTSERRAT_16=y\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_SMALL=12\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_DEFAULT=16\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_LARGE=22\n") + output_file.write("CONFIG_TT_LVGL_STATUSBAR_ICON_SIZE=16\n") + output_file.write("CONFIG_TT_LVGL_LAUNCHER_ICON_SIZE=42\n") + output_file.write("CONFIG_TT_LVGL_SHARED_ICON_SIZE=16\n") + elif font_height <= 18: + output_file.write("CONFIG_LV_FONT_MONTSERRAT_14=y\n") + output_file.write("CONFIG_LV_FONT_MONTSERRAT_18=y\n") + output_file.write("CONFIG_LV_FONT_MONTSERRAT_24=y\n") + output_file.write("CONFIG_LV_FONT_DEFAULT_MONTSERRAT_18=y\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_SMALL=14\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_DEFAULT=18\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_LARGE=24\n") + output_file.write("CONFIG_TT_LVGL_STATUSBAR_ICON_SIZE=20\n") + output_file.write("CONFIG_TT_LVGL_LAUNCHER_ICON_SIZE=48\n") + output_file.write("CONFIG_TT_LVGL_SHARED_ICON_SIZE=20\n") + elif font_height <= 24: + output_file.write("CONFIG_LV_FONT_MONTSERRAT_18=y\n") + output_file.write("CONFIG_LV_FONT_MONTSERRAT_24=y\n") + output_file.write("CONFIG_LV_FONT_MONTSERRAT_30=y\n") + output_file.write("CONFIG_LV_FONT_DEFAULT_MONTSERRAT_24=y\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_SMALL=18\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_DEFAULT=24\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_LARGE=30\n") + output_file.write("CONFIG_TT_LVGL_STATUSBAR_ICON_SIZE=20\n") + output_file.write("CONFIG_TT_LVGL_LAUNCHER_ICON_SIZE=64\n") + output_file.write("CONFIG_TT_LVGL_SHARED_ICON_SIZE=24\n") + else: + output_file.write("CONFIG_LV_FONT_MONTSERRAT_20=y\n") + output_file.write("CONFIG_LV_FONT_MONTSERRAT_28=y\n") + output_file.write("CONFIG_LV_FONT_MONTSERRAT_36=y\n") + output_file.write("CONFIG_LV_FONT_DEFAULT_MONTSERRAT_28=y\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_SMALL=20\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_DEFAULT=28\n") + output_file.write("CONFIG_TT_LVGL_FONT_SIZE_LARGE=36\n") + output_file.write("CONFIG_TT_LVGL_STATUSBAR_ICON_SIZE=30\n") + output_file.write("CONFIG_TT_LVGL_LAUNCHER_ICON_SIZE=72\n") + output_file.write("CONFIG_TT_LVGL_SHARED_ICON_SIZE=32\n") + def write_usb_variables(output_file, device_properties: ConfigParser): has_tiny_usb = get_boolean_property_or_false(device_properties, "hardware", "tinyUsb") diff --git a/lv_conf.h b/lv_conf.h index 1547866f..b7f3421f 100644 --- a/lv_conf.h +++ b/lv_conf.h @@ -367,7 +367,7 @@ /*Montserrat fonts with ASCII range and some symbols using bpp = 4 *https://fonts.google.com/specimen/Montserrat*/ #define LV_FONT_MONTSERRAT_8 0 -#define LV_FONT_MONTSERRAT_10 0 +#define LV_FONT_MONTSERRAT_10 1 #define LV_FONT_MONTSERRAT_12 0 #define LV_FONT_MONTSERRAT_14 1 #define LV_FONT_MONTSERRAT_16 0