diff options
| author | Michele Bini <michele.bini@gmail.com> | 2022-06-06 18:27:54 (GMT) |
|---|---|---|
| committer | Michele Bini <michele.bini@gmail.com> | 2022-06-06 23:09:58 (GMT) |
| commit | 7c45f185a32c7bcff47c8fda1acdec82d3213717 (patch) | |
| tree | 53b0419fe2a19e6ec5c89d0be0a11dcd8d4ceb00 /src | |
| parent | 94b1b330fc1f6e941a797fedabade4e790e28bc2 (diff) | |
| parent | 35dcf8c8607483c104711c9398d47d57147f4389 (diff) | |
Merge remote-tracking branch 'origin/develop' into analog24
Diffstat (limited to 'src')
197 files changed, 1204 insertions, 9591 deletions
diff --git a/src/BootloaderVersion.cpp b/src/BootloaderVersion.cpp index 07a1da4..7f7f5c8 100644 --- a/src/BootloaderVersion.cpp +++ b/src/BootloaderVersion.cpp @@ -31,6 +31,10 @@ const bool BootloaderVersion::IsValid() { void BootloaderVersion::SetVersion(uint32_t v) { BootloaderVersion::version = v; - snprintf(BootloaderVersion::versionString, BootloaderVersion::VERSION_STR_LEN, "%ld.%ld.%ld", - BootloaderVersion::Major(), BootloaderVersion::Minor(), BootloaderVersion::Patch()); + snprintf(BootloaderVersion::versionString, + BootloaderVersion::VERSION_STR_LEN, + "%ld.%ld.%ld", + BootloaderVersion::Major(), + BootloaderVersion::Minor(), + BootloaderVersion::Patch()); } diff --git a/src/BootloaderVersion.h b/src/BootloaderVersion.h index 309c23c..7ed90fa 100644 --- a/src/BootloaderVersion.h +++ b/src/BootloaderVersion.h @@ -12,6 +12,7 @@ namespace Pinetime { static const char* VersionString(); static const bool IsValid(); static void SetVersion(uint32_t v); + private: static uint32_t version; static constexpr size_t VERSION_STR_LEN = 12; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 82c6c51..5599243 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -42,7 +42,6 @@ set(SDK_SOURCE_FILES "${NRF5_SDK_PATH}/modules/nrfx/drivers/src/nrfx_gpiote.c" "${NRF5_SDK_PATH}/modules/nrfx/soc/nrfx_atomic.c" "${NRF5_SDK_PATH}/modules/nrfx/drivers/src/nrfx_saadc.c" - "${NRF5_SDK_PATH}/components/libraries/timer/app_timer.h" # FreeRTOS ${NRF5_SDK_PATH}/external/freertos/source/croutine.c @@ -366,36 +365,8 @@ set(QCBOR_SRC ) list(APPEND IMAGE_FILES - displayapp/icons/battery/os_battery_error.c - displayapp/icons/battery/os_battery_100.c - displayapp/icons/battery/os_battery_090.c - displayapp/icons/battery/os_battery_080.c - displayapp/icons/battery/os_battery_070.c - displayapp/icons/battery/os_battery_060.c - displayapp/icons/battery/os_battery_050.c - displayapp/icons/battery/os_battery_040.c - displayapp/icons/battery/os_battery_030.c - displayapp/icons/battery/os_battery_020.c - displayapp/icons/battery/os_battery_010.c - displayapp/icons/battery/os_battery_005.c - - displayapp/icons/battery/os_batterycharging_100.c - displayapp/icons/battery/os_batterycharging_090.c - displayapp/icons/battery/os_batterycharging_080.c - displayapp/icons/battery/os_batterycharging_070.c - displayapp/icons/battery/os_batterycharging_060.c - displayapp/icons/battery/os_batterycharging_050.c - displayapp/icons/battery/os_batterycharging_040.c - displayapp/icons/battery/os_batterycharging_030.c - displayapp/icons/battery/os_batterycharging_020.c - displayapp/icons/battery/os_batterycharging_010.c - displayapp/icons/battery/os_batterycharging_005.c - - displayapp/icons/bluetooth/os_bt_connected.c - displayapp/icons/bluetooth/os_bt_disconnected.c - + displayapp/icons/battery/batteryicon.c ) - list(APPEND SOURCE_FILES BootloaderVersion.cpp logging/NrfLogger.cpp @@ -403,14 +374,12 @@ list(APPEND SOURCE_FILES displayapp/screens/Screen.cpp displayapp/screens/Clock.cpp displayapp/screens/Tile.cpp - displayapp/screens/Meter.cpp displayapp/screens/InfiniPaint.cpp displayapp/screens/Paddle.cpp displayapp/screens/StopWatch.cpp displayapp/screens/BatteryIcon.cpp displayapp/screens/BleIcon.cpp displayapp/screens/NotificationIcon.cpp - displayapp/screens/Brightness.cpp displayapp/screens/SystemInfo.cpp displayapp/screens/Label.cpp displayapp/screens/FirmwareUpdate.cpp @@ -458,7 +427,7 @@ list(APPEND SOURCE_FILES displayapp/screens/WatchFaceAnalog24.cpp displayapp/screens/WatchFaceDigital.cpp displayapp/screens/WatchFaceTerminal.cpp - displayapp/screens/PineTimeStyle.cpp + displayapp/screens/WatchFacePineTimeStyle.cpp ## @@ -490,7 +459,6 @@ list(APPEND SOURCE_FILES components/ble/MusicService.cpp components/ble/weather/WeatherService.cpp components/ble/NavigationService.cpp - displayapp/fonts/lv_font_navi_80.c components/ble/BatteryInformationService.cpp components/ble/FSService.cpp components/ble/ImmediateAlertService.cpp @@ -509,12 +477,6 @@ list(APPEND SOURCE_FILES FreeRTOS/port_cmsis.c displayapp/LittleVgl.cpp - displayapp/fonts/jetbrains_mono_extrabold_compressed.c - displayapp/fonts/jetbrains_mono_bold_20.c - displayapp/fonts/jetbrains_mono_76.c - displayapp/fonts/jetbrains_mono_42.c - displayapp/fonts/lv_font_sys_48.c - displayapp/fonts/open_sans_light.c displayapp/lv_pinetime_theme.c systemtask/SystemTask.cpp @@ -628,14 +590,12 @@ set(INCLUDE_FILES displayapp/screens/Screen.h displayapp/screens/Clock.h displayapp/screens/Tile.h - displayapp/screens/Meter.h displayapp/screens/InfiniPaint.h displayapp/screens/StopWatch.h displayapp/screens/Paddle.h displayapp/screens/BatteryIcon.h displayapp/screens/BleIcon.h displayapp/screens/NotificationIcon.h - displayapp/screens/Brightness.h displayapp/screens/SystemInfo.h displayapp/screens/ScreenList.h displayapp/screens/Label.h @@ -829,6 +789,15 @@ if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release") endif () +add_subdirectory(displayapp/fonts) +target_compile_options(infinitime_fonts PUBLIC + $<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:DEBUG>>: ${COMMON_FLAGS} -Og -g3> + $<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:RELEASE>>: ${COMMON_FLAGS} -Os> + $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:DEBUG>>: ${COMMON_FLAGS} -Og -g3 -fno-rtti> + $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:RELEASE>>: ${COMMON_FLAGS} -Os -fno-rtti> + $<$<COMPILE_LANGUAGE:ASM>: -MP -MD -x assembler-with-cpp> + ) + # NRF SDK add_library(nrf-sdk STATIC ${SDK_SOURCE_FILES}) target_include_directories(nrf-sdk SYSTEM PUBLIC . ../) @@ -902,7 +871,7 @@ set(EXECUTABLE_FILE_NAME ${EXECUTABLE_NAME}-${pinetime_VERSION_MAJOR}.${pinetime set(NRF5_LINKER_SCRIPT "${CMAKE_SOURCE_DIR}/gcc_nrf52.ld") add_executable(${EXECUTABLE_NAME} ${SOURCE_FILES}) set_target_properties(${EXECUTABLE_NAME} PROPERTIES OUTPUT_NAME ${EXECUTABLE_FILE_NAME}) -target_link_libraries(${EXECUTABLE_NAME} nimble nrf-sdk lvgl littlefs QCBOR) +target_link_libraries(${EXECUTABLE_NAME} nimble nrf-sdk lvgl littlefs QCBOR infinitime_fonts) target_compile_options(${EXECUTABLE_NAME} PUBLIC $<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:DEBUG>>: ${COMMON_FLAGS} -Wextra -Wformat -Wno-missing-field-initializers -Wno-unused-parameter -Og -g3> $<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:RELEASE>>: ${COMMON_FLAGS} -Wextra -Wformat -Wno-missing-field-initializers -Wno-unused-parameter -Os> @@ -923,7 +892,6 @@ add_custom_command(TARGET ${EXECUTABLE_NAME} COMMAND ${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE_FILE_NAME}.out "${EXECUTABLE_FILE_NAME}.hex" COMMENT "post build steps for ${EXECUTABLE_FILE_NAME}") - # Build binary intended to be used by bootloader set(EXECUTABLE_MCUBOOT_NAME "pinetime-mcuboot-app") set(EXECUTABLE_MCUBOOT_FILE_NAME ${EXECUTABLE_MCUBOOT_NAME}-${pinetime_VERSION_MAJOR}.${pinetime_VERSION_MINOR}.${pinetime_VERSION_PATCH}) @@ -931,7 +899,7 @@ set(IMAGE_MCUBOOT_FILE_NAME ${EXECUTABLE_MCUBOOT_NAME}-image-${pinetime_VERSION_ set(DFU_MCUBOOT_FILE_NAME ${EXECUTABLE_MCUBOOT_NAME}-dfu-${pinetime_VERSION_MAJOR}.${pinetime_VERSION_MINOR}.${pinetime_VERSION_PATCH}.zip) set(NRF5_LINKER_SCRIPT_MCUBOOT "${CMAKE_SOURCE_DIR}/gcc_nrf52-mcuboot.ld") add_executable(${EXECUTABLE_MCUBOOT_NAME} ${SOURCE_FILES}) -target_link_libraries(${EXECUTABLE_MCUBOOT_NAME} nimble nrf-sdk lvgl littlefs QCBOR) +target_link_libraries(${EXECUTABLE_MCUBOOT_NAME} nimble nrf-sdk lvgl littlefs QCBOR infinitime_fonts) set_target_properties(${EXECUTABLE_MCUBOOT_NAME} PROPERTIES OUTPUT_NAME ${EXECUTABLE_MCUBOOT_FILE_NAME}) target_compile_options(${EXECUTABLE_MCUBOOT_NAME} PUBLIC $<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:DEBUG>>: ${COMMON_FLAGS} -Og -g3> @@ -967,7 +935,7 @@ endif() set(EXECUTABLE_RECOVERY_NAME "pinetime-recovery") set(EXECUTABLE_RECOVERY_FILE_NAME ${EXECUTABLE_RECOVERY_NAME}-${pinetime_VERSION_MAJOR}.${pinetime_VERSION_MINOR}.${pinetime_VERSION_PATCH}) add_executable(${EXECUTABLE_RECOVERY_NAME} ${RECOVERY_SOURCE_FILES}) -target_link_libraries(${EXECUTABLE_RECOVERY_NAME} nimble nrf-sdk littlefs QCBOR) +target_link_libraries(${EXECUTABLE_RECOVERY_NAME} nimble nrf-sdk littlefs QCBOR infinitime_fonts) set_target_properties(${EXECUTABLE_RECOVERY_NAME} PROPERTIES OUTPUT_NAME ${EXECUTABLE_RECOVERY_FILE_NAME}) target_compile_definitions(${EXECUTABLE_RECOVERY_NAME} PUBLIC "PINETIME_IS_RECOVERY") target_compile_options(${EXECUTABLE_RECOVERY_NAME} PUBLIC @@ -997,7 +965,7 @@ set(EXECUTABLE_RECOVERY_MCUBOOT_FILE_NAME ${EXECUTABLE_RECOVERY_MCUBOOT_NAME}-${ set(IMAGE_RECOVERY_MCUBOOT_FILE_NAME ${EXECUTABLE_RECOVERY_MCUBOOT_NAME}-image-${pinetime_VERSION_MAJOR}.${pinetime_VERSION_MINOR}.${pinetime_VERSION_PATCH}.bin) set(DFU_RECOVERY_MCUBOOT_FILE_NAME ${EXECUTABLE_RECOVERY_MCUBOOT_NAME}-dfu-${pinetime_VERSION_MAJOR}.${pinetime_VERSION_MINOR}.${pinetime_VERSION_PATCH}.zip) add_executable(${EXECUTABLE_RECOVERY_MCUBOOT_NAME} ${RECOVERY_SOURCE_FILES}) -target_link_libraries(${EXECUTABLE_RECOVERY_MCUBOOT_NAME} nimble nrf-sdk littlefs QCBOR) +target_link_libraries(${EXECUTABLE_RECOVERY_MCUBOOT_NAME} nimble nrf-sdk littlefs QCBOR infinitime_fonts) set_target_properties(${EXECUTABLE_RECOVERY_MCUBOOT_NAME} PROPERTIES OUTPUT_NAME ${EXECUTABLE_RECOVERY_MCUBOOT_FILE_NAME}) target_compile_definitions(${EXECUTABLE_RECOVERY_MCUBOOT_NAME} PUBLIC "PINETIME_IS_RECOVERY") target_compile_options(${EXECUTABLE_RECOVERY_MCUBOOT_NAME} PUBLIC @@ -1035,7 +1003,7 @@ endif() set(EXECUTABLE_RECOVERYLOADER_NAME "pinetime-recovery-loader") set(EXECUTABLE_RECOVERYLOADER_FILE_NAME ${EXECUTABLE_RECOVERYLOADER_NAME}-${pinetime_VERSION_MAJOR}.${pinetime_VERSION_MINOR}.${pinetime_VERSION_PATCH}) add_executable(${EXECUTABLE_RECOVERYLOADER_NAME} ${RECOVERYLOADER_SOURCE_FILES}) -target_link_libraries(${EXECUTABLE_RECOVERYLOADER_NAME} nrf-sdk QCBOR) +target_link_libraries(${EXECUTABLE_RECOVERYLOADER_NAME} nrf-sdk QCBOR infinitime_fonts) set_target_properties(${EXECUTABLE_RECOVERYLOADER_NAME} PROPERTIES OUTPUT_NAME ${EXECUTABLE_RECOVERYLOADER_FILE_NAME}) target_compile_options(${EXECUTABLE_RECOVERYLOADER_NAME} PUBLIC $<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:DEBUG>>: ${COMMON_FLAGS} -Og -g3> @@ -1068,7 +1036,7 @@ set(EXECUTABLE_MCUBOOT_RECOVERYLOADER_FILE_NAME ${EXECUTABLE_MCUBOOT_RECOVERYLOA set(IMAGE_MCUBOOT_RECOVERYLOADER_FILE_NAME ${EXECUTABLE_MCUBOOT_RECOVERYLOADER_NAME}-image-${pinetime_VERSION_MAJOR}.${pinetime_VERSION_MINOR}.${pinetime_VERSION_PATCH}.bin) set(DFU_MCUBOOT_RECOVERYLOADER_FILE_NAME ${EXECUTABLE_MCUBOOT_RECOVERYLOADER_NAME}-dfu-${pinetime_VERSION_MAJOR}.${pinetime_VERSION_MINOR}.${pinetime_VERSION_PATCH}.zip) add_executable(${EXECUTABLE_MCUBOOT_RECOVERYLOADER_NAME} ${RECOVERYLOADER_SOURCE_FILES}) -target_link_libraries(${EXECUTABLE_MCUBOOT_RECOVERYLOADER_NAME} nrf-sdk QCBOR) +target_link_libraries(${EXECUTABLE_MCUBOOT_RECOVERYLOADER_NAME} nrf-sdk QCBOR infinitime_fonts) set_target_properties(${EXECUTABLE_MCUBOOT_RECOVERYLOADER_NAME} PROPERTIES OUTPUT_NAME ${EXECUTABLE_MCUBOOT_RECOVERYLOADER_FILE_NAME}) target_compile_options(${EXECUTABLE_MCUBOOT_RECOVERYLOADER_NAME} PUBLIC $<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:DEBUG>>: ${COMMON_FLAGS} -Og -g3> diff --git a/src/components/alarm/AlarmController.cpp b/src/components/alarm/AlarmController.cpp index 5432e75..596bcaf 100644 --- a/src/components/alarm/AlarmController.cpp +++ b/src/components/alarm/AlarmController.cpp @@ -17,7 +17,6 @@ */ #include "components/alarm/AlarmController.h" #include "systemtask/SystemTask.h" -#include "app_timer.h" #include "task.h" #include <chrono> @@ -36,7 +35,7 @@ namespace { void AlarmController::Init(System::SystemTask* systemTask) { this->systemTask = systemTask; - alarmAppTimer = xTimerCreate("alarmAppTm", 1, pdFALSE, this, SetOffAlarm); + alarmTimer = xTimerCreate("Alarm", 1, pdFALSE, this, SetOffAlarm); } void AlarmController::SetAlarmTime(uint8_t alarmHr, uint8_t alarmMin) { @@ -65,11 +64,11 @@ void AlarmController::OnAdjustTime() { void AlarmController::ScheduleAlarm() { // Determine the next time the alarm needs to go off and set the timer - xTimerStop(alarmAppTimer, 0); + xTimerStop(alarmTimer, 0); auto now = dateTimeController.CurrentDateTime(); alarmTime = now; - time_t ttAlarmTime = std::chrono::system_clock::to_time_t(alarmTime); + time_t ttAlarmTime = std::chrono::system_clock::to_time_t(std::chrono::time_point_cast<std::chrono::system_clock::duration>(alarmTime)); tm* tmAlarmTime = std::localtime(&ttAlarmTime); // If the time being set has already passed today,the alarm should be set for tomorrow @@ -95,9 +94,9 @@ void AlarmController::ScheduleAlarm() { // now can convert back to a time_point alarmTime = std::chrono::system_clock::from_time_t(std::mktime(tmAlarmTime)); - auto mSecToAlarm = std::chrono::duration_cast<std::chrono::milliseconds>(alarmTime - now).count(); - xTimerChangePeriod(alarmAppTimer, APP_TIMER_TICKS(mSecToAlarm), 0); - xTimerStart(alarmAppTimer, 0); + auto secondsToAlarm = std::chrono::duration_cast<std::chrono::seconds>(alarmTime - now).count(); + xTimerChangePeriod(alarmTimer, secondsToAlarm * configTICK_RATE_HZ, 0); + xTimerStart(alarmTimer, 0); state = AlarmState::Set; } @@ -107,7 +106,7 @@ uint32_t AlarmController::SecondsToAlarm() { } void AlarmController::DisableAlarm() { - xTimerStop(alarmAppTimer, 0); + xTimerStop(alarmTimer, 0); state = AlarmState::Not_Set; } @@ -117,20 +116,12 @@ void AlarmController::SetOffAlarmNow() { } void AlarmController::StopAlerting() { - systemTask->PushMessage(System::Messages::StopRinging); -} - -void AlarmController::OnStopRinging() { - if (state != AlarmState::Alerting) { - return; - } - // Alarm state is off unless this is a recurring alarm if (recurrence == RecurType::None) { state = AlarmState::Not_Set; } else { - state = AlarmState::Set; // set next instance ScheduleAlarm(); } + systemTask->PushMessage(System::Messages::StopRinging); } diff --git a/src/components/alarm/AlarmController.h b/src/components/alarm/AlarmController.h index 6ad220f..c3a9fec 100644 --- a/src/components/alarm/AlarmController.h +++ b/src/components/alarm/AlarmController.h @@ -59,12 +59,11 @@ namespace Pinetime { protected: friend class Pinetime::System::SystemTask; void Init(System::SystemTask* systemTask); - void OnStopRinging(); private: Controllers::DateTime& dateTimeController; System::SystemTask* systemTask = nullptr; - TimerHandle_t alarmAppTimer; + TimerHandle_t alarmTimer; uint8_t hours = 7; uint8_t minutes = 0; std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> alarmTime; diff --git a/src/components/ble/AlertNotificationClient.cpp b/src/components/ble/AlertNotificationClient.cpp index 335845e..095fdef 100644 --- a/src/components/ble/AlertNotificationClient.cpp +++ b/src/components/ble/AlertNotificationClient.cpp @@ -26,8 +26,11 @@ namespace { return client->OnCharacteristicsDiscoveryEvent(conn_handle, error, chr); } - int OnAlertNotificationDescriptorDiscoveryEventCallback( - uint16_t conn_handle, const struct ble_gatt_error* error, uint16_t chr_val_handle, const struct ble_gatt_dsc* dsc, void* arg) { + int OnAlertNotificationDescriptorDiscoveryEventCallback(uint16_t conn_handle, + const struct ble_gatt_error* error, + uint16_t chr_val_handle, + const struct ble_gatt_dsc* dsc, + void* arg) { auto client = static_cast<AlertNotificationClient*>(arg); return client->OnDescriptorDiscoveryEventCallback(conn_handle, error, chr_val_handle, dsc); } diff --git a/src/components/ble/BatteryInformationService.h b/src/components/ble/BatteryInformationService.h index 1303fd6..c6fc52e 100644 --- a/src/components/ble/BatteryInformationService.h +++ b/src/components/ble/BatteryInformationService.h @@ -18,6 +18,7 @@ namespace Pinetime { int OnBatteryServiceRequested(uint16_t connectionHandle, uint16_t attributeHandle, ble_gatt_access_ctxt* context); void NotifyBatteryLevel(uint16_t connectionHandle, uint8_t level); + private: Controllers::Battery& batteryController; static constexpr uint16_t batteryInformationServiceId {0x180F}; diff --git a/src/components/ble/CurrentTimeClient.cpp b/src/components/ble/CurrentTimeClient.cpp index dd8171b..53e98cb 100644 --- a/src/components/ble/CurrentTimeClient.cpp +++ b/src/components/ble/CurrentTimeClient.cpp @@ -85,10 +85,21 @@ int CurrentTimeClient::OnCurrentTimeReadResult(uint16_t conn_handle, const ble_g // TODO check that attribute->handle equals the handle discovered in OnCharacteristicDiscoveryEvent CtsData result; os_mbuf_copydata(attribute->om, 0, sizeof(CtsData), &result); - NRF_LOG_INFO( - "Received data: %d-%d-%d %d:%d:%d", result.year, result.month, result.dayofmonth, result.hour, result.minute, result.second); - dateTimeController.SetTime( - result.year, result.month, result.dayofmonth, 0, result.hour, result.minute, result.second, nrf_rtc_counter_get(portNRF_RTC_REG)); + NRF_LOG_INFO("Received data: %d-%d-%d %d:%d:%d", + result.year, + result.month, + result.dayofmonth, + result.hour, + result.minute, + result.second); + dateTimeController.SetTime(result.year, + result.month, + result.dayofmonth, + 0, + result.hour, + result.minute, + result.second, + nrf_rtc_counter_get(portNRF_RTC_REG)); } else { NRF_LOG_INFO("Error retrieving current time: %d", error->status); } diff --git a/src/components/ble/CurrentTimeService.cpp b/src/components/ble/CurrentTimeService.cpp index e509aea..8430d1b 100644 --- a/src/components/ble/CurrentTimeService.cpp +++ b/src/components/ble/CurrentTimeService.cpp @@ -29,11 +29,22 @@ int CurrentTimeService::OnTimeAccessed(uint16_t conn_handle, uint16_t attr_handl CtsData result; os_mbuf_copydata(ctxt->om, 0, sizeof(CtsData), &result); - NRF_LOG_INFO( - "Received data: %d-%d-%d %d:%d:%d", result.year, result.month, result.dayofmonth, result.hour, result.minute, result.second); + NRF_LOG_INFO("Received data: %d-%d-%d %d:%d:%d", + result.year, + result.month, + result.dayofmonth, + result.hour, + result.minute, + result.second); - m_dateTimeController.SetTime( - result.year, result.month, result.dayofmonth, 0, result.hour, result.minute, result.second, nrf_rtc_counter_get(portNRF_RTC_REG)); + m_dateTimeController.SetTime(result.year, + result.month, + result.dayofmonth, + 0, + result.hour, + result.minute, + result.second, + nrf_rtc_counter_get(portNRF_RTC_REG)); } else if (ctxt->op == BLE_GATT_ACCESS_OP_READ_CHR) { CtsData currentDateTime; diff --git a/src/components/ble/DfuService.cpp b/src/components/ble/DfuService.cpp index cf99f01..1f06b69 100644 --- a/src/components/ble/DfuService.cpp +++ b/src/components/ble/DfuService.cpp @@ -119,8 +119,10 @@ int DfuService::WritePacketHandler(uint16_t connectionHandle, os_mbuf* om) { bootloaderSize = om->om_data[4] + (om->om_data[5] << 8) + (om->om_data[6] << 16) + (om->om_data[7] << 24); applicationSize = om->om_data[8] + (om->om_data[9] << 8) + (om->om_data[10] << 16) + (om->om_data[11] << 24); bleController.FirmwareUpdateTotalBytes(applicationSize); - NRF_LOG_INFO( - "[DFU] -> Start data received : SD size : %d, BT size : %d, app size : %d", softdeviceSize, bootloaderSize, applicationSize); + NRF_LOG_INFO("[DFU] -> Start data received : SD size : %d, BT size : %d, app size : %d", + softdeviceSize, + bootloaderSize, + applicationSize); // wait until SystemTask has finished waking up all devices while (systemTask.IsSleeping()) { @@ -165,10 +167,10 @@ int DfuService::WritePacketHandler(uint16_t connectionHandle, os_mbuf* om) { if ((nbPacketReceived % nbPacketsToNotify) == 0 && bytesReceived != applicationSize) { uint8_t data[5] {static_cast<uint8_t>(Opcodes::PacketReceiptNotification), - (uint8_t)(bytesReceived & 0x000000FFu), - (uint8_t)(bytesReceived >> 8u), - (uint8_t)(bytesReceived >> 16u), - (uint8_t)(bytesReceived >> 24u)}; + static_cast<uint8_t>(bytesReceived & 0x000000FFu), + static_cast<uint8_t>(bytesReceived >> 8u), + static_cast<uint8_t>(bytesReceived >> 16u), + static_cast<uint8_t>(bytesReceived >> 24u)}; NRF_LOG_INFO("[DFU] -> Send packet notification: %d bytes received", bytesReceived); notificationManager.Send(connectionHandle, controlPointCharacteristicHandle, data, 5); } @@ -244,7 +246,7 @@ int DfuService::ControlPointHandler(uint16_t connectionHandle, os_mbuf* om) { NRF_LOG_INFO("[DFU] -> Receive firmware image requested, but we are not in Start Init"); return 0; } - // TODO the chunk size is dependant of the implementation of the host application... + // TODO the chunk size is dependent of the implementation of the host application... dfuImage.Init(20, applicationSize, expectedCrc); NRF_LOG_INFO("[DFU] -> Starting receive firmware"); state = States::Data; @@ -423,9 +425,9 @@ uint16_t DfuService::DfuImage::ComputeCrc(uint8_t const* p_data, uint32_t size, uint16_t crc = (p_crc == NULL) ? 0xFFFF : *p_crc; for (uint32_t i = 0; i < size; i++) { - crc = (uint8_t)(crc >> 8) | (crc << 8); + crc = static_cast<uint8_t>(crc >> 8) | (crc << 8); crc ^= p_data[i]; - crc ^= (uint8_t)(crc & 0xFF) >> 4; + crc ^= static_cast<uint8_t>(crc & 0xFF) >> 4; crc ^= (crc << 8) << 4; crc ^= ((crc & 0xFF) << 4) << 1; } diff --git a/src/components/ble/FSService.cpp b/src/components/ble/FSService.cpp index 8dc9ed6..fda6b39 100644 --- a/src/components/ble/FSService.cpp +++ b/src/components/ble/FSService.cpp @@ -81,7 +81,7 @@ int FSService::FSCommandHandler(uint16_t connectionHandle, os_mbuf* om) { return -1; } memcpy(filepath, header->pathstr, plen); - filepath[plen] = 0; // Copy and null teminate string + filepath[plen] = 0; // Copy and null terminate string ReadResponse resp; os_mbuf* om; resp.command = commands::READ_DATA; @@ -148,7 +148,7 @@ int FSService::FSCommandHandler(uint16_t connectionHandle, os_mbuf* om) { return -1; // TODO make this actually return a BLE notif } memcpy(filepath, header->pathstr, plen); - filepath[plen] = 0; // Copy and null teminate string + filepath[plen] = 0; // Copy and null terminate string fileSize = header->totalSize; WriteResponse resp; resp.command = commands::WRITE_PACING; @@ -193,7 +193,7 @@ int FSService::FSCommandHandler(uint16_t connectionHandle, os_mbuf* om) { uint16_t plen = header->pathlen; char path[plen + 1] = {0}; memcpy(path, header->pathstr, plen); - path[plen] = 0; // Copy and null teminate string + path[plen] = 0; // Copy and null terminate string DelResponse resp {}; resp.command = commands::DELETE_STATUS; int res = fs.FileDelete(path); @@ -208,7 +208,7 @@ int FSService::FSCommandHandler(uint16_t connectionHandle, os_mbuf* om) { uint16_t plen = header->pathlen; char path[plen + 1] = {0}; memcpy(path, header->pathstr, plen); - path[plen] = 0; // Copy and null teminate string + path[plen] = 0; // Copy and null terminate string MKDirResponse resp {}; resp.command = commands::MKDIR_STATUS; resp.modification_time = 0; @@ -223,7 +223,7 @@ int FSService::FSCommandHandler(uint16_t connectionHandle, os_mbuf* om) { ListDirHeader* header = (ListDirHeader*) om->om_data; uint16_t plen = header->pathlen; char path[plen + 1] = {0}; - path[plen] = 0; // Copy and null teminate string + path[plen] = 0; // Copy and null terminate string memcpy(path, header->pathstr, plen); ListDirResponse resp {}; @@ -290,7 +290,7 @@ int FSService::FSCommandHandler(uint16_t connectionHandle, os_mbuf* om) { header->pathstr[plen] = 0; char path[header->NewPathLength + 1] = {0}; memcpy(path, &header->pathstr[plen + 1], header->NewPathLength); - path[header->NewPathLength] = 0; // Copy and null teminate string + path[header->NewPathLength] = 0; // Copy and null terminate string MoveResponse resp {}; resp.command = commands::MOVE_STATUS; int8_t res = (int8_t) fs.Rename(header->pathstr, path); diff --git a/src/components/ble/HeartRateService.cpp b/src/components/ble/HeartRateService.cpp index 4824a6b..d49a02c 100644 --- a/src/components/ble/HeartRateService.cpp +++ b/src/components/ble/HeartRateService.cpp @@ -57,7 +57,8 @@ int HeartRateService::OnHeartRateRequested(uint16_t connectionHandle, uint16_t a } void HeartRateService::OnNewHeartRateValue(uint8_t heartRateValue) { - if(!heartRateMeasurementNotificationEnable) return; + if (!heartRateMeasurementNotificationEnable) + return; uint8_t buffer[2] = {0, heartRateController.HeartRate()}; // [0] = flags, [1] = hr value auto* om = ble_hs_mbuf_from_flat(buffer, 2); @@ -72,11 +73,11 @@ void HeartRateService::OnNewHeartRateValue(uint8_t heartRateValue) { } void HeartRateService::SubscribeNotification(uint16_t connectionHandle, uint16_t attributeHandle) { - if(attributeHandle == heartRateMeasurementHandle) + if (attributeHandle == heartRateMeasurementHandle) heartRateMeasurementNotificationEnable = true; } void HeartRateService::UnsubscribeNotification(uint16_t connectionHandle, uint16_t attributeHandle) { - if(attributeHandle == heartRateMeasurementHandle) + if (attributeHandle == heartRateMeasurementHandle) heartRateMeasurementNotificationEnable = false; }
\ No newline at end of file diff --git a/src/components/ble/MotionService.cpp b/src/components/ble/MotionService.cpp index 87923c2..121ad3b 100644 --- a/src/components/ble/MotionService.cpp +++ b/src/components/ble/MotionService.cpp @@ -8,10 +8,8 @@ using namespace Pinetime::Controllers; namespace { // 0003yyxx-78fc-48fe-8e23-433b3a1942d0 constexpr ble_uuid128_t CharUuid(uint8_t x, uint8_t y) { - return ble_uuid128_t{ - .u = {.type = BLE_UUID_TYPE_128}, - .value = { 0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, x, y, 0x03, 0x00 } - }; + return ble_uuid128_t {.u = {.type = BLE_UUID_TYPE_128}, + .value = {0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, x, y, 0x03, 0x00}}; } // 00030000-78fc-48fe-8e23-433b3a1942d0 @@ -45,11 +43,7 @@ MotionService::MotionService(Pinetime::System::SystemTask& system, Controllers:: .val_handle = &motionValuesHandle}, {0}}, serviceDefinition { - { - .type = BLE_GATT_SVC_TYPE_PRIMARY, - .uuid = &motionServiceUuid.u, - .characteristics = characteristicDefinition - }, + {.type = BLE_GATT_SVC_TYPE_PRIMARY, .uuid = &motionServiceUuid.u, .characteristics = characteristicDefinition}, {0}, } { // TODO refactor to prevent this loop dependency (service depends on controller and controller depends on service) @@ -72,8 +66,8 @@ int MotionService::OnStepCountRequested(uint16_t connectionHandle, uint16_t attr int res = os_mbuf_append(context->om, &buffer, 4); return (res == 0) ? 0 : BLE_ATT_ERR_INSUFFICIENT_RES; - } else if(attributeHandle == motionValuesHandle) { - int16_t buffer[3] = { motionController.X(), motionController.Y(), motionController.Z() }; + } else if (attributeHandle == motionValuesHandle) { + int16_t buffer[3] = {motionController.X(), motionController.Y(), motionController.Z()}; int res = os_mbuf_append(context->om, buffer, 3 * sizeof(int16_t)); return (res == 0) ? 0 : BLE_ATT_ERR_INSUFFICIENT_RES; @@ -82,7 +76,8 @@ int MotionService::OnStepCountRequested(uint16_t connectionHandle, uint16_t attr } void MotionService::OnNewStepCountValue(uint32_t stepCount) { - if(!stepCountNoficationEnabled) return; + if (!stepCountNoficationEnabled) + return; uint32_t buffer = stepCount; auto* om = ble_hs_mbuf_from_flat(&buffer, 4); @@ -96,9 +91,10 @@ void MotionService::OnNewStepCountValue(uint32_t stepCount) { ble_gattc_notify_custom(connectionHandle, stepCountHandle, om); } void MotionService::OnNewMotionValues(int16_t x, int16_t y, int16_t z) { - if(!motionValuesNoficationEnabled) return; + if (!motionValuesNoficationEnabled) + return; - int16_t buffer[3] = { motionController.X(), motionController.Y(), motionController.Z() }; + int16_t buffer[3] = {motionController.X(), motionController.Y(), motionController.Z()}; auto* om = ble_hs_mbuf_from_flat(buffer, 3 * sizeof(int16_t)); uint16_t connectionHandle = system.nimble().connHandle(); @@ -111,15 +107,15 @@ void MotionService::OnNewMotionValues(int16_t x, int16_t y, int16_t z) { } void MotionService::SubscribeNotification(uint16_t connectionHandle, uint16_t attributeHandle) { - if(attributeHandle == stepCountHandle) + if (attributeHandle == stepCountHandle) stepCountNoficationEnabled = true; - else if(attributeHandle == motionValuesHandle) + else if (attributeHandle == motionValuesHandle) motionValuesNoficationEnabled = true; } void MotionService::UnsubscribeNotification(uint16_t connectionHandle, uint16_t attributeHandle) { - if(attributeHandle == stepCountHandle) + if (attributeHandle == stepCountHandle) stepCountNoficationEnabled = false; - else if(attributeHandle == motionValuesHandle) + else if (attributeHandle == motionValuesHandle) motionValuesNoficationEnabled = false; } diff --git a/src/components/ble/MusicService.cpp b/src/components/ble/MusicService.cpp index c99aa1e..fc7cef0 100644 --- a/src/components/ble/MusicService.cpp +++ b/src/components/ble/MusicService.cpp @@ -22,10 +22,8 @@ namespace { // 0000yyxx-78fc-48fe-8e23-433b3a1942d0 constexpr ble_uuid128_t CharUuid(uint8_t x, uint8_t y) { - return ble_uuid128_t{ - .u = {.type = BLE_UUID_TYPE_128}, - .value = { 0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, x, y, 0x00, 0x00 } - }; + return ble_uuid128_t {.u = {.type = BLE_UUID_TYPE_128}, + .value = {0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, x, y, 0x00, 0x00}}; } // 00000000-78fc-48fe-8e23-433b3a1942d0 @@ -111,8 +109,7 @@ Pinetime::Controllers::MusicService::MusicService(Pinetime::System::SystemTask& .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ}; characteristicDefinition[13] = {0}; - serviceDefinition[0] = { - .type = BLE_GATT_SVC_TYPE_PRIMARY, .uuid = &msUuid.u, .characteristics = characteristicDefinition}; + serviceDefinition[0] = {.type = BLE_GATT_SVC_TYPE_PRIMARY, .uuid = &msUuid.u, .characteristics = characteristicDefinition}; serviceDefinition[1] = {0}; } @@ -137,9 +134,9 @@ int Pinetime::Controllers::MusicService::OnCommand(uint16_t conn_handle, uint16_ os_mbuf_copydata(ctxt->om, 0, bufferSize, data); if (notifSize > bufferSize) { - data[bufferSize-1] = '.'; - data[bufferSize-2] = '.'; - data[bufferSize-3] = '.'; + data[bufferSize - 1] = '.'; + data[bufferSize - 2] = '.'; + data[bufferSize - 3] = '.'; } data[bufferSize] = '\0'; @@ -152,12 +149,21 @@ int Pinetime::Controllers::MusicService::OnCommand(uint16_t conn_handle, uint16_ albumName = s; } else if (ble_uuid_cmp(ctxt->chr->uuid, &msStatusCharUuid.u) == 0) { playing = s[0]; + // These variables need to be updated, because the progress may not be updated immediately, + // leading to getProgress() returning an incorrect position. + if (playing) { + trackProgressUpdateTime = xTaskGetTickCount(); + } else { + trackProgress += + static_cast<int>((static_cast<float>(xTaskGetTickCount() - trackProgressUpdateTime) / 1024.0f) * getPlaybackSpeed()); + } } else if (ble_uuid_cmp(ctxt->chr->uuid, &msRepeatCharUuid.u) == 0) { repeat = s[0]; } else if (ble_uuid_cmp(ctxt->chr->uuid, &msShuffleCharUuid.u) == 0) { shuffle = s[0]; } else if (ble_uuid_cmp(ctxt->chr->uuid, &msPositionCharUuid.u) == 0) { trackProgress = (s[0] << 24) | (s[1] << 16) | (s[2] << 8) | s[3]; + trackProgressUpdateTime = xTaskGetTickCount(); } else if (ble_uuid_cmp(ctxt->chr->uuid, &msTotalLengthCharUuid.u) == 0) { trackLength = (s[0] << 24) | (s[1] << 16) | (s[2] << 8) | s[3]; } else if (ble_uuid_cmp(ctxt->chr->uuid, &msTrackNumberCharUuid.u) == 0) { @@ -192,6 +198,10 @@ float Pinetime::Controllers::MusicService::getPlaybackSpeed() const { } int Pinetime::Controllers::MusicService::getProgress() const { + if (isPlaying()) { + return trackProgress + + static_cast<int>((static_cast<float>(xTaskGetTickCount() - trackProgressUpdateTime) / 1024.0f) * getPlaybackSpeed()); + } return trackProgress; } diff --git a/src/components/ble/MusicService.h b/src/components/ble/MusicService.h index 1ad9a42..047d0d2 100644 --- a/src/components/ble/MusicService.h +++ b/src/components/ble/MusicService.h @@ -81,6 +81,7 @@ namespace Pinetime { int trackLength {0}; int trackNumber {}; int tracksTotal {}; + TickType_t trackProgressUpdateTime {0}; float playbackSpeed {1.0f}; diff --git a/src/components/ble/NavigationService.cpp b/src/components/ble/NavigationService.cpp index 5418b9e..7614368 100644 --- a/src/components/ble/NavigationService.cpp +++ b/src/components/ble/NavigationService.cpp @@ -46,15 +46,23 @@ namespace { } // namespace Pinetime::Controllers::NavigationService::NavigationService(Pinetime::System::SystemTask& system) : m_system(system) { - characteristicDefinition[0] = { - .uuid = &navFlagCharUuid.u, .access_cb = NAVCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ}; - - characteristicDefinition[1] = { - .uuid = &navNarrativeCharUuid.u, .access_cb = NAVCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ}; - characteristicDefinition[2] = { - .uuid = &navManDistCharUuid.u, .access_cb = NAVCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ}; - characteristicDefinition[3] = { - .uuid = &navProgressCharUuid.u, .access_cb = NAVCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ}; + characteristicDefinition[0] = {.uuid = &navFlagCharUuid.u, + .access_cb = NAVCallback, + .arg = this, + .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ}; + + characteristicDefinition[1] = {.uuid = &navNarrativeCharUuid.u, + .access_cb = NAVCallback, + .arg = this, + .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ}; + characteristicDefinition[2] = {.uuid = &navManDistCharUuid.u, + .access_cb = NAVCallback, + .arg = this, + .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ}; + characteristicDefinition[3] = {.uuid = &navProgressCharUuid.u, + .access_cb = NAVCallback, + .arg = this, + .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ}; characteristicDefinition[4] = {0}; diff --git a/src/components/ble/NimbleController.cpp b/src/components/ble/NimbleController.cpp index ce54bb7..b2cccf7 100644 --- a/src/components/ble/NimbleController.cpp +++ b/src/components/ble/NimbleController.cpp @@ -236,7 +236,7 @@ int NimbleController::OnGAPEvent(ble_gap_event* event) { currentTimeClient.Reset(); alertNotificationClient.Reset(); connectionHandle = BLE_HS_CONN_HANDLE_NONE; - if(bleController.IsConnected()) { + if (bleController.IsConnected()) { bleController.Disconnect(); fastAdvCount = 0; StartAdvertising(); diff --git a/src/components/ble/weather/WeatherService.h b/src/components/ble/weather/WeatherService.h index eca70cb..e37417d 100644 --- a/src/components/ble/weather/WeatherService.h +++ b/src/components/ble/weather/WeatherService.h @@ -127,7 +127,8 @@ namespace Pinetime { {.uuid = &weatherControlCharUuid.u, .access_cb = WeatherCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ}, {nullptr}}; const struct ble_gatt_svc_def serviceDefinition[2] = { - {.type = BLE_GATT_SVC_TYPE_PRIMARY, .uuid = &weatherUuid.u, .characteristics = characteristicDefinition}, {0}}; + {.type = BLE_GATT_SVC_TYPE_PRIMARY, .uuid = &weatherUuid.u, .characteristics = characteristicDefinition}, + {0}}; uint16_t eventHandle {}; diff --git a/src/components/datetime/DateTimeController.cpp b/src/components/datetime/DateTimeController.cpp index 7545058..1f7182c 100644 --- a/src/components/datetime/DateTimeController.cpp +++ b/src/components/datetime/DateTimeController.cpp @@ -19,8 +19,14 @@ void DateTime::SetCurrentTime(std::chrono::time_point<std::chrono::system_clock, UpdateTime(previousSystickCounter); // Update internal state without updating the time } -void DateTime::SetTime( - uint16_t year, uint8_t month, uint8_t day, uint8_t dayOfWeek, uint8_t hour, uint8_t minute, uint8_t second, uint32_t systickCounter) { +void DateTime::SetTime(uint16_t year, + uint8_t month, + uint8_t day, + uint8_t dayOfWeek, + uint8_t hour, + uint8_t minute, + uint8_t second, + uint32_t systickCounter) { std::tm tm = { /* .tm_sec = */ second, /* .tm_min = */ minute, diff --git a/src/components/fs/FS.cpp b/src/components/fs/FS.cpp index 8c98ae3..14b0552 100644 --- a/src/components/fs/FS.cpp +++ b/src/components/fs/FS.cpp @@ -95,8 +95,8 @@ int FS::DirRewind(lfs_dir_t* dir) { int FS::DirCreate(const char* path) { return lfs_mkdir(&lfs, path); } -int FS::Rename(const char* oldPath, const char* newPath){ - return lfs_rename(&lfs,oldPath,newPath); +int FS::Rename(const char* oldPath, const char* newPath) { + return lfs_rename(&lfs, oldPath, newPath); } int FS::Stat(const char* path, lfs_info* info) { return lfs_stat(&lfs, path, info); diff --git a/src/components/fs/FS.h b/src/components/fs/FS.h index 2b27ae5..87fcdc2 100644 --- a/src/components/fs/FS.h +++ b/src/components/fs/FS.h @@ -26,7 +26,7 @@ namespace Pinetime { int DirRead(lfs_dir_t* dir, lfs_info* info); int DirRewind(lfs_dir_t* dir); int DirCreate(const char* path); - + lfs_ssize_t GetFSSize(); int Rename(const char* oldPath, const char* newPath); int Stat(const char* path, lfs_info* info); diff --git a/src/components/motor/MotorController.cpp b/src/components/motor/MotorController.cpp index 4c44fc4..90e41d2 100644 --- a/src/components/motor/MotorController.cpp +++ b/src/components/motor/MotorController.cpp @@ -1,41 +1,36 @@ #include "components/motor/MotorController.h" #include <hal/nrf_gpio.h> #include "systemtask/SystemTask.h" -#include "app_timer.h" #include "drivers/PinMap.h" -APP_TIMER_DEF(shortVibTimer); -APP_TIMER_DEF(longVibTimer); - using namespace Pinetime::Controllers; void MotorController::Init() { nrf_gpio_cfg_output(PinMap::Motor); nrf_gpio_pin_set(PinMap::Motor); - shortVibTimer = xTimerCreate("shortVibTm", 1, pdFALSE, nullptr, StopMotor); - longVibTimer = xTimerCreate("longVibTm", 1, pdTRUE, this, Ring); + shortVib = xTimerCreate("shortVib", 1, pdFALSE, nullptr, StopMotor); + longVib = xTimerCreate("longVib", pdMS_TO_TICKS(1000), pdTRUE, this, Ring); } void MotorController::Ring(TimerHandle_t xTimer) { - auto motorController = static_cast<MotorController*>(pvTimerGetTimerID(xTimer)); - xTimerChangePeriod(motorController->longVibTimer, APP_TIMER_TICKS(1000), 0); + auto* motorController = static_cast<MotorController*>(pvTimerGetTimerID(xTimer)); motorController->RunForDuration(50); } void MotorController::RunForDuration(uint8_t motorDuration) { - if (xTimerChangePeriod(shortVibTimer, APP_TIMER_TICKS(motorDuration), 0) == pdPASS && xTimerStart(shortVibTimer, 0) == pdPASS) { + if (xTimerChangePeriod(shortVib, pdMS_TO_TICKS(motorDuration), 0) == pdPASS && xTimerStart(shortVib, 0) == pdPASS) { nrf_gpio_pin_clear(PinMap::Motor); } } void MotorController::StartRinging() { - xTimerChangePeriod(longVibTimer, 1, 0); - xTimerStart(longVibTimer, 0); + RunForDuration(50); + xTimerStart(longVib, 0); } void MotorController::StopRinging() { - xTimerStop(longVibTimer, 0); + xTimerStop(longVib, 0); nrf_gpio_pin_set(PinMap::Motor); } diff --git a/src/components/motor/MotorController.h b/src/components/motor/MotorController.h index 3c6cbd2..6dea6d1 100644 --- a/src/components/motor/MotorController.h +++ b/src/components/motor/MotorController.h @@ -19,8 +19,8 @@ namespace Pinetime { private: static void Ring(TimerHandle_t xTimer); static void StopMotor(TimerHandle_t xTimer); - TimerHandle_t shortVibTimer; - TimerHandle_t longVibTimer; + TimerHandle_t shortVib; + TimerHandle_t longVib; }; } } diff --git a/src/components/settings/Settings.cpp b/src/components/settings/Settings.cpp index fee62da..1ae00a2 100644 --- a/src/components/settings/Settings.cpp +++ b/src/components/settings/Settings.cpp @@ -26,12 +26,12 @@ void Settings::LoadSettingsFromFile() { SettingsData bufferSettings; lfs_file_t settingsFile; - if ( fs.FileOpen(&settingsFile, "/settings.dat", LFS_O_RDONLY) != LFS_ERR_OK) { + if (fs.FileOpen(&settingsFile, "/settings.dat", LFS_O_RDONLY) != LFS_ERR_OK) { return; } fs.FileRead(&settingsFile, reinterpret_cast<uint8_t*>(&bufferSettings), sizeof(settings)); fs.FileClose(&settingsFile); - if ( bufferSettings.version == settingsVersion ) { + if (bufferSettings.version == settingsVersion) { settings = bufferSettings; } } @@ -39,7 +39,7 @@ void Settings::LoadSettingsFromFile() { void Settings::SaveSettingsToFile() { lfs_file_t settingsFile; - if ( fs.FileOpen(&settingsFile, "/settings.dat", LFS_O_WRONLY | LFS_O_CREAT) != LFS_ERR_OK) { + if (fs.FileOpen(&settingsFile, "/settings.dat", LFS_O_WRONLY | LFS_O_CREAT) != LFS_ERR_OK) { return; } fs.FileWrite(&settingsFile, reinterpret_cast<uint8_t*>(&settings), sizeof(settings)); diff --git a/src/components/settings/Settings.h b/src/components/settings/Settings.h index 5914e1a..393a734 100644 --- a/src/components/settings/Settings.h +++ b/src/components/settings/Settings.h @@ -140,15 +140,14 @@ namespace Pinetime { return settings.screenTimeOut; }; - void SetShakeThreshold(uint16_t thresh){ - if(settings.shakeWakeThreshold != thresh){ - settings.shakeWakeThreshold = thresh; - settingsChanged = true; + void SetShakeThreshold(uint16_t thresh) { + if (settings.shakeWakeThreshold != thresh) { + settings.shakeWakeThreshold = thresh; + settingsChanged = true; } - } - int16_t GetShakeThreshold() const{ + int16_t GetShakeThreshold() const { return settings.shakeWakeThreshold; } @@ -195,20 +194,20 @@ namespace Pinetime { if (goal != settings.stepsGoal) { settingsChanged = true; } - settings.stepsGoal = goal; + settings.stepsGoal = goal; }; - + uint32_t GetStepsGoal() const { return settings.stepsGoal; }; - void SetBleRadioEnabled(bool enabled) { - bleRadioEnabled = enabled; - }; + void SetBleRadioEnabled(bool enabled) { + bleRadioEnabled = enabled; + }; - bool GetBleRadioEnabled() const { - return bleRadioEnabled; - }; + bool GetBleRadioEnabled() const { + return bleRadioEnabled; + }; void SetBluetoothPasskeyEnabled(bool enabled) { settings.bluetoothPasskeyEnabled = enabled; diff --git a/src/components/timer/TimerController.cpp b/src/components/timer/TimerController.cpp index 31635a5..eeee61f 100644 --- a/src/components/timer/TimerController.cpp +++ b/src/components/timer/TimerController.cpp @@ -1,62 +1,40 @@ -// -// Created by florian on 16.05.21. -// - #include "components/timer/TimerController.h" #include "systemtask/SystemTask.h" -#include "task.h" using namespace Pinetime::Controllers; -namespace { - void TimerEnd(TimerHandle_t xTimer) { - auto controller = static_cast<Pinetime::Controllers::TimerController*>(pvTimerGetTimerID(xTimer)); - controller->OnTimerEnd(); - } +void TimerCallback(TimerHandle_t xTimer) { + auto* controller = static_cast<TimerController*>(pvTimerGetTimerID(xTimer)); + controller->OnTimerEnd(); } -void TimerController::Init(System::SystemTask* systemTask) { +void TimerController::Init(Pinetime::System::SystemTask* systemTask) { this->systemTask = systemTask; - timerAppTimer = xTimerCreate("timerAppTm", 1, pdFALSE, this, TimerEnd); + timer = xTimerCreate("Timer", 1, pdFALSE, this, TimerCallback); } void TimerController::StartTimer(uint32_t duration) { - xTimerStop(timerAppTimer, 0); - auto currentTicks = xTaskGetTickCount(); - TickType_t durationTicks = APP_TIMER_TICKS(duration); - xTimerChangePeriod(timerAppTimer, durationTicks, 0); - xTimerStart(timerAppTimer, 0); - endTicks = currentTicks + durationTicks; - timerRunning = true; + xTimerChangePeriod(timer, pdMS_TO_TICKS(duration), 0); + xTimerStart(timer, 0); } uint32_t TimerController::GetTimeRemaining() { - if (!timerRunning) { - return 0; - } - auto currentTicks = xTaskGetTickCount(); - - TickType_t deltaTicks = 0; - if (currentTicks > endTicks) { - deltaTicks = 0xffffffff - currentTicks; - deltaTicks += (endTicks + 1); - } else { - deltaTicks = endTicks - currentTicks; + if (IsRunning()) { + TickType_t remainingTime = xTimerGetExpiryTime(timer) - xTaskGetTickCount(); + return (remainingTime * 1000 / configTICK_RATE_HZ); } - - return (static_cast<TickType_t>(deltaTicks) / static_cast<TickType_t>(configTICK_RATE_HZ)) * 1000; + return 0; } void TimerController::StopTimer() { - xTimerStop(timerAppTimer, 0); - timerRunning = false; + xTimerStop(timer, 0); } bool TimerController::IsRunning() { - return timerRunning; + return (xTimerIsTimerActive(timer) == pdTRUE); } + void TimerController::OnTimerEnd() { - timerRunning = false; - if (systemTask != nullptr) - systemTask->PushMessage(System::Messages::OnTimerDone); + systemTask->PushMessage(System::Messages::OnTimerDone); } + diff --git a/src/components/timer/TimerController.h b/src/components/timer/TimerController.h index 24d7150..93d8afc 100644 --- a/src/components/timer/TimerController.h +++ b/src/components/timer/TimerController.h @@ -2,9 +2,6 @@ #include <FreeRTOS.h> #include <timers.h> -#include <cstdint> -#include "app_timer.h" -#include "portmacro_cmsis.h" namespace Pinetime { namespace System { @@ -16,7 +13,10 @@ namespace Pinetime { public: TimerController() = default; + void Init(System::SystemTask* systemTask); + void StartTimer(uint32_t duration); + void StopTimer(); uint32_t GetTimeRemaining(); @@ -25,15 +25,9 @@ namespace Pinetime { void OnTimerEnd(); - protected: - friend class Pinetime::System::SystemTask; - void Init(System::SystemTask* systemTask); - private: System::SystemTask* systemTask = nullptr; - TimerHandle_t timerAppTimer; - TickType_t endTicks; - bool timerRunning = false; + TimerHandle_t timer; }; } -}
\ No newline at end of file +} diff --git a/src/displayapp/Colors.cpp b/src/displayapp/Colors.cpp index 93b1aa0..106c516 100644 --- a/src/displayapp/Colors.cpp +++ b/src/displayapp/Colors.cpp @@ -5,23 +5,41 @@ using namespace Pinetime::Controllers; lv_color_t Pinetime::Applications::Convert(Pinetime::Controllers::Settings::Colors color) { switch (color) { - case Pinetime::Controllers::Settings::Colors::White: return LV_COLOR_WHITE; - case Pinetime::Controllers::Settings::Colors::Silver: return LV_COLOR_SILVER; - case Pinetime::Controllers::Settings::Colors::Gray: return LV_COLOR_GRAY; - case Pinetime::Controllers::Settings::Colors::Black: return LV_COLOR_BLACK; - case Pinetime::Controllers::Settings::Colors::Red: return LV_COLOR_RED; - case Pinetime::Controllers::Settings::Colors::Maroon: return LV_COLOR_MAROON; - case Pinetime::Controllers::Settings::Colors::Yellow: return LV_COLOR_YELLOW; - case Pinetime::Controllers::Settings::Colors::Olive: return LV_COLOR_OLIVE; - case Pinetime::Controllers::Settings::Colors::Lime: return LV_COLOR_LIME; - case Pinetime::Controllers::Settings::Colors::Green: return LV_COLOR_GREEN; - case Pinetime::Controllers::Settings::Colors::Cyan: return LV_COLOR_CYAN; - case Pinetime::Controllers::Settings::Colors::Teal: return LV_COLOR_TEAL; - case Pinetime::Controllers::Settings::Colors::Blue: return LV_COLOR_BLUE; - case Pinetime::Controllers::Settings::Colors::Navy: return LV_COLOR_NAVY; - case Pinetime::Controllers::Settings::Colors::Magenta: return LV_COLOR_MAGENTA; - case Pinetime::Controllers::Settings::Colors::Purple: return LV_COLOR_PURPLE; - case Pinetime::Controllers::Settings::Colors::Orange: return LV_COLOR_ORANGE; - default: return LV_COLOR_WHITE; + case Pinetime::Controllers::Settings::Colors::White: + return LV_COLOR_WHITE; + case Pinetime::Controllers::Settings::Colors::Silver: + return LV_COLOR_SILVER; + case Pinetime::Controllers::Settings::Colors::Gray: + return LV_COLOR_GRAY; + case Pinetime::Controllers::Settings::Colors::Black: + return LV_COLOR_BLACK; + case Pinetime::Controllers::Settings::Colors::Red: + return LV_COLOR_RED; + case Pinetime::Controllers::Settings::Colors::Maroon: + return LV_COLOR_MAKE(0xb0, 0x0, 0x0); + case Pinetime::Controllers::Settings::Colors::Yellow: + return LV_COLOR_YELLOW; + case Pinetime::Controllers::Settings::Colors::Olive: + return LV_COLOR_MAKE(0xb0, 0xb0, 0x0); + case Pinetime::Controllers::Settings::Colors::Lime: + return LV_COLOR_LIME; + case Pinetime::Controllers::Settings::Colors::Green: + return LV_COLOR_MAKE(0x0, 0xb0, 0x0); + case Pinetime::Controllers::Settings::Colors::Cyan: + return LV_COLOR_CYAN; + case Pinetime::Controllers::Settings::Colors::Teal: + return LV_COLOR_MAKE(0x0, 0xb0, 0xb0); + case Pinetime::Controllers::Settings::Colors::Blue: + return LV_COLOR_BLUE; + case Pinetime::Controllers::Settings::Colors::Navy: + return LV_COLOR_MAKE(0x0, 0x0, 0xb0); + case Pinetime::Controllers::Settings::Colors::Magenta: + return LV_COLOR_MAGENTA; + case Pinetime::Controllers::Settings::Colors::Purple: + return LV_COLOR_MAKE(0xb0, 0x0, 0xb0); + case Pinetime::Controllers::Settings::Colors::Orange: + return LV_COLOR_ORANGE; + default: + return LV_COLOR_WHITE; } } diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp index 8f08e04..376f73a 100644 --- a/src/displayapp/DisplayApp.cpp +++ b/src/displayapp/DisplayApp.cpp @@ -12,14 +12,12 @@ #include "components/motion/MotionController.h" #include "components/motor/MotorController.h" #include "displayapp/screens/ApplicationList.h" -#include "displayapp/screens/Brightness.h" #include "displayapp/screens/Clock.h" #include "displayapp/screens/FirmwareUpdate.h" #include "displayapp/screens/FirmwareValidation.h" #include "displayapp/screens/InfiniPaint.h" #include "displayapp/screens/Paddle.h" #include "displayapp/screens/StopWatch.h" -#include "displayapp/screens/Meter.h" #include "displayapp/screens/Metronome.h" #include "displayapp/screens/Music.h" #include "displayapp/screens/Navigation.h" @@ -164,12 +162,10 @@ void DisplayApp::Refresh() { brightnessController.Lower(); vTaskDelay(100); } - lcd.DisplayOff(); PushMessageToSystemTask(Pinetime::System::Messages::OnDisplayTaskSleeping); state = States::Idle; break; case Messages::GoToRunning: - lcd.DisplayOn(); brightnessController.Restore(); state = States::Running; break; @@ -354,13 +350,21 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction) break; case Apps::Notifications: - currentScreen = std::make_unique<Screens::Notifications>( - this, notificationManager, systemTask->nimble().alertService(), motorController, *systemTask, Screens::Notifications::Modes::Normal); + currentScreen = std::make_unique<Screens::Notifications>(this, + notificationManager, + systemTask->nimble().alertService(), + motorController, + *systemTask, + Screens::Notifications::Modes::Normal); ReturnApp(Apps::Clock, FullRefreshDirections::Up, TouchEvents::SwipeUp); break; case Apps::NotificationsPreview: - currentScreen = std::make_unique<Screens::Notifications>( - this, notificationManager, systemTask->nimble().alertService(), motorController, *systemTask, Screens::Notifications::Modes::Preview); + currentScreen = std::make_unique<Screens::Notifications>(this, + notificationManager, + systemTask->nimble().alertService(), + motorController, + *systemTask, + Screens::Notifications::Modes::Preview); ReturnApp(Apps::Clock, FullRefreshDirections::Up, TouchEvents::SwipeUp); break; case Apps::Timer: @@ -372,8 +376,12 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction) // Settings case Apps::QuickSettings: - currentScreen = std::make_unique<Screens::QuickSettings>( - this, batteryController, dateTimeController, brightnessController, motorController, settingsController); + currentScreen = std::make_unique<Screens::QuickSettings>(this, + batteryController, + dateTimeController, + brightnessController, + motorController, + settingsController); ReturnApp(Apps::Clock, FullRefreshDirections::LeftAnim, TouchEvents::SwipeLeft); break; case Apps::Settings: @@ -425,8 +433,14 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction) ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown); break; case Apps::SysInfo: - currentScreen = std::make_unique<Screens::SystemInfo>( - this, dateTimeController, batteryController, brightnessController, bleController, watchdog, motionController, touchPanel); + currentScreen = std::make_unique<Screens::SystemInfo>(this, + dateTimeController, + batteryController, + brightnessController, + bleController, + watchdog, + motionController, + touchPanel); ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown); break; case Apps::FlashLight: diff --git a/src/displayapp/DisplayApp.h b/src/displayapp/DisplayApp.h index 1eaefaa..4397223 100644 --- a/src/displayapp/DisplayApp.h +++ b/src/displayapp/DisplayApp.h @@ -88,7 +88,7 @@ namespace Pinetime { Pinetime::Controllers::MotionController& motionController; Pinetime::Controllers::TimerController& timerController; Pinetime::Controllers::AlarmController& alarmController; - Pinetime::Controllers::BrightnessController &brightnessController; + Pinetime::Controllers::BrightnessController& brightnessController; Pinetime::Controllers::TouchHandler& touchHandler; Pinetime::Controllers::FirmwareValidator validator; diff --git a/src/displayapp/DisplayAppRecovery.cpp b/src/displayapp/DisplayAppRecovery.cpp index 9d6eb22..ca15dba 100644 --- a/src/displayapp/DisplayAppRecovery.cpp +++ b/src/displayapp/DisplayAppRecovery.cpp @@ -26,7 +26,6 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd, Pinetime::Controllers::BrightnessController& brightnessController, Pinetime::Controllers::TouchHandler& touchHandler) : lcd {lcd}, bleController {bleController} { - } void DisplayApp::Start() { @@ -121,5 +120,4 @@ void DisplayApp::PushMessage(Display::Messages msg) { } void DisplayApp::Register(Pinetime::System::SystemTask* systemTask) { - } diff --git a/src/displayapp/DisplayAppRecovery.h b/src/displayapp/DisplayAppRecovery.h index 61f1c9b..0e80122 100644 --- a/src/displayapp/DisplayAppRecovery.h +++ b/src/displayapp/DisplayAppRecovery.h @@ -61,7 +61,9 @@ namespace Pinetime { Pinetime::Controllers::BrightnessController& brightnessController, Pinetime::Controllers::TouchHandler& touchHandler); void Start(); - void Start(Pinetime::System::BootErrors){ Start(); }; + void Start(Pinetime::System::BootErrors) { + Start(); + }; void PushMessage(Pinetime::Applications::Display::Messages msg); void Register(Pinetime::System::SystemTask* systemTask); diff --git a/src/displayapp/DummyLittleVgl.h b/src/displayapp/DummyLittleVgl.h index 47c9e02..05355a9 100644 --- a/src/displayapp/DummyLittleVgl.h +++ b/src/displayapp/DummyLittleVgl.h @@ -20,7 +20,6 @@ namespace Pinetime { LittleVgl& operator=(LittleVgl&&) = delete; void Init() { - } void FlushDisplay(const lv_area_t* area, lv_color_t* color_p) { @@ -33,7 +32,6 @@ namespace Pinetime { void SetNewTapEvent(uint16_t x, uint16_t y) { } void SetNewTouchPoint(uint16_t x, uint16_t y, bool contact) { - } }; } diff --git a/src/displayapp/LittleVgl.cpp b/src/displayapp/LittleVgl.cpp index e7b58c1..64c9926 100644 --- a/src/displayapp/LittleVgl.cpp +++ b/src/displayapp/LittleVgl.cpp @@ -16,14 +16,22 @@ static void disp_flush(lv_disp_drv_t* disp_drv, const lv_area_t* area, lv_color_ lvgl->FlushDisplay(area, color_p); } +static void rounder(lv_disp_drv_t* disp_drv, lv_area_t* area) { + auto* lvgl = static_cast<LittleVgl*>(disp_drv->user_data); + if (lvgl->GetFullRefresh()) { + area->x1 = 0; + area->x2 = LV_HOR_RES - 1; + area->y1 = 0; + area->y2 = LV_VER_RES - 1; + } +} + bool touchpad_read(lv_indev_drv_t* indev_drv, lv_indev_data_t* data) { auto* lvgl = static_cast<LittleVgl*>(indev_drv->user_data); return lvgl->GetTouchPadInfo(data); } -LittleVgl::LittleVgl(Pinetime::Drivers::St7789& lcd, Pinetime::Drivers::Cst816S& touchPanel) - : lcd {lcd}, touchPanel {touchPanel}, previousClick {0, 0} { - +LittleVgl::LittleVgl(Pinetime::Drivers::St7789& lcd, Pinetime::Drivers::Cst816S& touchPanel) : lcd {lcd}, touchPanel {touchPanel} { } void LittleVgl::Init() { @@ -48,6 +56,7 @@ void LittleVgl::InitDisplay() { /*Set a display buffer*/ disp_drv.buffer = &disp_buf_2; disp_drv.user_data = this; + disp_drv.rounder_cb = rounder; /*Finally register the driver*/ lv_disp_drv_register(&disp_drv); @@ -78,14 +87,15 @@ void LittleVgl::SetFullRefresh(FullRefreshDirections direction) { lv_disp_set_direction(lv_disp_get_default(), 4); } } + fullRefresh = true; } void LittleVgl::FlushDisplay(const lv_area_t* area, lv_color_t* color_p) { uint16_t y1, y2, width, height = 0; ulTaskNotifyTake(pdTRUE, 200); - // NOtification is still needed (even if there is a mutex on SPI) because of the DataCommand pin - // which cannot be set/clear during a transfert. + // Notification is still needed (even if there is a mutex on SPI) because of the DataCommand pin + // which cannot be set/clear during a transfer. if ((scrollDirection == LittleVgl::FullRefreshDirections::Down) && (area->y2 == visibleNbLines - 1)) { writeOffset = ((writeOffset + totalNbLines) - visibleNbLines) % totalNbLines; @@ -185,8 +195,13 @@ bool LittleVgl::GetTouchPadInfo(lv_indev_data_t* ptr) { void LittleVgl::InitTheme() { - lv_theme_t* th = lv_pinetime_theme_init( - LV_COLOR_WHITE, LV_COLOR_SILVER, 0, &jetbrains_mono_bold_20, &jetbrains_mono_bold_20, &jetbrains_mono_bold_20, &jetbrains_mono_bold_20); + lv_theme_t* th = lv_pinetime_theme_init(LV_COLOR_WHITE, + LV_COLOR_SILVER, + 0, + &jetbrains_mono_bold_20, + &jetbrains_mono_bold_20, + &jetbrains_mono_bold_20, + &jetbrains_mono_bold_20); lv_theme_set_act(th); } diff --git a/src/displayapp/LittleVgl.h b/src/displayapp/LittleVgl.h index 1f8a3d7..4582616 100644 --- a/src/displayapp/LittleVgl.h +++ b/src/displayapp/LittleVgl.h @@ -26,6 +26,14 @@ namespace Pinetime { void SetFullRefresh(FullRefreshDirections direction); void SetNewTouchPoint(uint16_t x, uint16_t y, bool contact); + bool GetFullRefresh() { + bool returnValue = fullRefresh; + if (fullRefresh) { + fullRefresh = false; + } + return returnValue; + } + private: void InitDisplay(); void InitTouchpad(); @@ -39,9 +47,8 @@ namespace Pinetime { lv_color_t buf2_2[LV_HOR_RES_MAX * 4]; lv_disp_drv_t disp_drv; - lv_point_t previousClick; - bool firstTouch = true; + bool fullRefresh = false; static constexpr uint8_t nbWriteLines = 4; static constexpr uint16_t totalNbLines = 320; static constexpr uint16_t visibleNbLines = 240; diff --git a/src/displayapp/fonts/CMakeLists.txt b/src/displayapp/fonts/CMakeLists.txt new file mode 100644 index 0000000..d00c802 --- /dev/null +++ b/src/displayapp/fonts/CMakeLists.txt @@ -0,0 +1,35 @@ +set(FONTS jetbrains_mono_42 jetbrains_mono_76 jetbrains_mono_bold_20 + jetbrains_mono_extrabold_compressed lv_font_navi_80 lv_font_sys_48 + open_sans_light) +find_program(LV_FONT_CONV "lv_font_conv" NO_CACHE REQUIRED + HINTS "${CMAKE_SOURCE_DIR}/node_modules/.bin") +message(STATUS "Using ${LV_FONT_CONV} to generate font files") +configure_file(${CMAKE_CURRENT_LIST_DIR}/jetbrains_mono_bold_20.c_zero.patch + ${CMAKE_CURRENT_BINARY_DIR}/jetbrains_mono_bold_20.c_zero.patch COPYONLY) +if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12) + # FindPython3 module introduces with CMake 3.12 + # https://cmake.org/cmake/help/latest/module/FindPython3.html + find_package(Python3 REQUIRED) +else() + set(Python3_EXECUTABLE "python") +endif() + +# create static library building fonts +add_library(infinitime_fonts STATIC) +# add include directory to lvgl headers needed to compile the font files on its own +target_include_directories(infinitime_fonts PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../../libs") +foreach(FONT ${FONTS}) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FONT}.c + COMMAND "${Python3_EXECUTABLE}" ${CMAKE_CURRENT_SOURCE_DIR}/generate.py + --lv-font-conv "${LV_FONT_CONV}" + --font ${FONT} ${CMAKE_CURRENT_SOURCE_DIR}/fonts.json + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/fonts.json + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + add_custom_target(infinitime_fonts_${FONT} + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${FONT}.c + ) + target_sources(infinitime_fonts PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/${FONT}.c") + add_dependencies(infinitime_fonts infinitime_fonts_${FONT}) +endforeach() diff --git a/src/displayapp/fonts/FontAwesome5-Solid+Brands+Regular.woff b/src/displayapp/fonts/FontAwesome5-Solid+Brands+Regular.woff Binary files differnew file mode 100644 index 0000000..791b410 --- /dev/null +++ b/src/displayapp/fonts/FontAwesome5-Solid+Brands+Regular.woff diff --git a/src/displayapp/fonts/README.md b/src/displayapp/fonts/README.md index c7a8e2b..cfb6079 100644 --- a/src/displayapp/fonts/README.md +++ b/src/displayapp/fonts/README.md @@ -4,17 +4,10 @@ * [Awesome font from LVGL](https://lvgl.io/assets/others/FontAwesome5-Solid+Brands+Regular.woff) * [Open Sans Light from Google](https://fonts.google.com/specimen/Open+Sans) -## Generate the fonts: - -* Open the [LVGL font converter](https://lvgl.io/tools/fontconverter) -* Enter the settings for the font that you wish to convert -* Click on Convert, download the file and place it in `src/DisplayApp/Fonts` - ### How to add new symbols: * Browse [this cheatsheet](https://fontawesome.com/cheatsheet/free/solid) and pick symbols -* For each symbol, add its hex code (0xf641 for the 'Ad' icon, for example) to the *Range* list (Remember to keep this - readme updated with newest range list) +* For each symbol, add its hex code (0xf641 for the 'Ad' icon, for example) to the *Range* list (or the symbol list when its simple enough) in the `fonts.json` file * Convert this hex value into a UTF-8 code using [this site](http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=f185&mode=hex) * Define the new symbols in `src/displayapp/screens/Symbols.h`: @@ -23,77 +16,17 @@ static constexpr const char* newSymbol = "\xEF\x86\x85"; ``` -### Small font - -* Name: jetbrains_mono_bold_20 -* Size: 20 -* Bpp: 1 bit-per-pixel -* Do not enable font compression or horizontal subpixel rendering -* Load the file `JetBrainsMono-Bold.tff` (use the file in this repo to ensure the version matches) and specify the following range: `0x20-0x7e, 0x410-0x44f` -* Add a 2nd font, load the file `FontAwesome5-Solid+Brands+Regular.woff` and specify the following - range: `0xf293, 0xf294, 0xf244, 0xf240, 0xf242, 0xf243, 0xf241, 0xf54b, 0xf21e, 0xf1e6, 0xf54b, 0xf017, 0xf129, 0xf03a, 0xf185, 0xf560, 0xf001, 0xf3fd, 0xf069, 0xf1fc, 0xf45d, 0xf59f, 0xf5a0, 0xf029, 0xf027, 0xf028, 0xf6a9, 0xf04b, 0xf04c, 0xf048, 0xf051, 0xf095, 0xf3dd, 0xf04d, 0xf2f2, 0xf024, 0xf252, 0xf569, 0xf201, 0xf06e, 0xf015` -* Fix an error in the font conversion. - -Replace the following: - - /* U+0030 "0" */ - 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7f, - 0xdf, 0xf7, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, - 0x8f, 0xc0, - -with - - /* U+0030 "0" */ - 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7e, - 0xdf, 0xb7, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, - 0x8f, 0xc0, - -(there are two changes: 7f -> 7e and f7 -> b7) - -### Medium font +### the config file format: -* Name: jetbrains_mono_42 -* Size: 42 -* Bpp: 1 bit-per-pixel -* Do not enable font compression or horizontal subpixel rendering -* Load the file `JetBrainsMono-Regular.tff` (use the file in this repo to ensure the version matches) and specify the following range: `0x25, 0x30-0x3a` - -### Large font - -* Name: jetbrains_mono_76 -* Size: 76 -* Bpp: 1 bit-per-pixel -* Do not enable font compression or horizontal subpixel rendering -* Load the file `JetBrainsMono-Regular.tff` (use the file in this repo to ensure the version matches) and specify the following range: `0x25, 0x2D, 0x2F, 0x30-0x3a` - -### Digital watchface font - -* Name: jetbrains_mono_extrabold_compressed -* Size: 80 -* Bpp: 1 bit-per-pixel -* Do not enable font compression or horizontal subpixel rendering -* Load the file `JetBrainsMono-ExtraBold.tff` (use the file in this repo to ensure the version matches) and specify the following range: `0x30-0x3a` - -### PineTimeStyle font - -* Name: open_sans_light -* Size: 150 -* Bpp: 1 bit-per-pixel -* Do not enable font compression or horizontal subpixel rendering -* Load the file `open_sans_light.tff` (use the file in this repo to ensure the version matches) and specify the following symbols: `0123456789` - -### Symbols font (Used in QuickSettings for example) - -* Name: lv_font_sys_48 -* Size: 48 -* Bpp: 1 bit-per-pixel -* Do not enable font compression or horizontal subpixel rendering -* Load the file `icons_sys_48.tff` and specify the following range: `0xe902, 0xe904-0xe907, 0xe90b-0xe90c` +inside `fonts`, there is a dictionary of fonts, +and for each font there is: +* sources - list of file,range(,symbols) wanted (as a dictionary of those) +* bpp - bits per pixel. +* size - size. +* patches - list of extra "patches" to run: a path to a .patch file. (may be relative) +* compress - optional. default disabled. add `"compress": true` to enable ### Navigation font `navigtion.ttf` is created with the web app [icomoon](https://icomoon.io/app) by importing the svg files from `src/displayapp/icons/navigation/unique` and generating the font. `lv_font_navi_80.json` is a project file for the site, which you can import to add or remove icons. -This font must be generated with the `lv_font_conv` tool, which has additional options not available in the online converter. - -`lv_font_conv --font navigation.ttf -r '0xe900-0xe929' --size 80 --format lvgl --bpp 2 -o lv_font_navi_80.c` diff --git a/src/displayapp/fonts/fonts.json b/src/displayapp/fonts/fonts.json new file mode 100644 index 0000000..5e91127 --- /dev/null +++ b/src/displayapp/fonts/fonts.json @@ -0,0 +1,78 @@ +{ + "jetbrains_mono_bold_20": { + "sources": [ + { + "file": "JetBrainsMono-Bold.ttf", + "range": "0x20-0x7e, 0x410-0x44f" + }, + { + "file": "FontAwesome5-Solid+Brands+Regular.woff", + "range": "0xf294, 0xf242, 0xf54b, 0xf21e, 0xf1e6, 0xf54b, 0xf017, 0xf129, 0xf03a, 0xf185, 0xf560, 0xf001, 0xf3fd, 0xf1fc, 0xf45d, 0xf59f, 0xf5a0, 0xf027, 0xf028, 0xf6a9, 0xf04b, 0xf04c, 0xf048, 0xf051, 0xf095, 0xf3dd, 0xf04d, 0xf2f2, 0xf024, 0xf252, 0xf569, 0xf201, 0xf06e, 0xf015" + } + ], + "bpp": 1, + "size": 20, + "patches": ["jetbrains_mono_bold_20.c_zero.patch"] + }, + "jetbrains_mono_42": { + "sources": [ + { + "file": "JetBrainsMono-Regular.ttf", + "range": "0x25, 0x30-0x3a" + } + ], + "bpp": 1, + "size": 42 + }, + "jetbrains_mono_76": { + "sources": [ + { + "file": "JetBrainsMono-Regular.ttf", + "range": "0x25, 0x2D, 0x2F, 0x30-0x3a" + } + ], + "bpp": 1, + "size": 76 + }, + "jetbrains_mono_extrabold_compressed": { + "sources": [ + { + "file": "JetBrainsMono-ExtraBold.ttf", + "range": "0x30-0x3a" + } + ], + "bpp": 1, + "size": 80 + }, + "open_sans_light": { + "sources": [ + { + "file": "open_sans_light.ttf", + "symbols": "0123456789" + } + ], + "bpp": 1, + "size": 150 + }, + "lv_font_sys_48": { + "sources": [ + { + "file": "icons_sys_48.ttf", + "range": "0xe902, 0xe904-0xe907, 0xe90b-0xe90c" + } + ], + "bpp": 1, + "size": 48 + }, + "lv_font_navi_80": { + "sources": [ + { + "file": "navigation.ttf", + "range": "0xe900-0xe929" + } + ], + "bpp": 2, + "size": 80, + "compress": true + } +} diff --git a/src/displayapp/fonts/generate.py b/src/displayapp/fonts/generate.py new file mode 100755 index 0000000..c172df0 --- /dev/null +++ b/src/displayapp/fonts/generate.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python + +import io +import sys +import json +import shutil +import typing +import os.path +import argparse +import subprocess + +class Source(object): + def __init__(self, d): + self.file = d['file'] + if not os.path.exists(self.file): + self.file = os.path.join(os.path.dirname(sys.argv[0]), self.file) + self.range = d.get('range') + self.symbols = d.get('symbols') + + +def gen_lvconv_line(lv_font_conv: str, dest: str, size: int, bpp: int, sources: typing.List[Source], compress:bool=False): + args = [lv_font_conv, '--size', str(size), '--output', dest, '--bpp', str(bpp), '--format', 'lvgl'] + if not compress: + args.append('--no-compress') + for source in sources: + args.extend(['--font', source.file]) + if source.range: + args.extend(['--range', source.range]) + if source.symbols: + args.extend(['--symbols', source.symbols]) + + return args + +def main(): + ap = argparse.ArgumentParser(description='auto generate LVGL font files from fonts') + ap.add_argument('config', type=str, help='config file to use') + ap.add_argument('-f', '--font', type=str, action='append', help='Choose specific fonts to generate (default: all)', default=[]) + ap.add_argument('--lv-font-conv', type=str, help='Path to "lv_font_conf" executable', default="lv_font_conv") + args = ap.parse_args() + + if not shutil.which(args.lv_font_conv): + sys.exit(f"Missing lv_font_conv. Make sure it's findable (in PATH) or specify it manually") + if not os.path.exists(args.config): + sys.exit(f'Error: the config file {args.config} does not exist.') + if not os.access(args.config, os.R_OK): + sys.exit(f'Error: the config file {args.config} is not accessible (permissions?).') + with open(args.config, 'r') as fd: + data = json.load(fd) + + fonts_to_run = set(data.keys()) + + if args.font: + enabled_fonts = set() + for font in args.font: + enabled_fonts.add(font[:-2] if font.endswith('.c') else font) + d = enabled_fonts.difference(fonts_to_run) + if d: + print(f'Warning: requested font{"s" if len(d)>1 else ""} missing: {" ".join(d)}') + fonts_to_run = fonts_to_run.intersection(enabled_fonts) + + for name in fonts_to_run: + font = data[name] + sources = font.pop('sources') + patches = font.pop('patches') if 'patches' in font else [] + font['sources'] = [Source(thing) for thing in sources] + line = gen_lvconv_line(args.lv_font_conv, f'{name}.c', **font) + subprocess.check_call(line) + if patches: + for patch in patches: + subprocess.check_call(['/usr/bin/patch', name+'.c', patch]) + + + +if __name__ == '__main__': + main() diff --git a/src/displayapp/fonts/jetbrains_mono_42.c b/src/displayapp/fonts/jetbrains_mono_42.c deleted file mode 100644 index b5218b9..0000000 --- a/src/displayapp/fonts/jetbrains_mono_42.c +++ /dev/null @@ -1,258 +0,0 @@ -/******************************************************************************* - * Size: 42 px - * Bpp: 1 - * Opts: - ******************************************************************************/ - -#ifdef LV_LVGL_H_INCLUDE_SIMPLE -#include "lvgl.h" -#else -#include "lvgl/lvgl.h" -#endif - -#ifndef JETBRAINS_MONO_42 -#define JETBRAINS_MONO_42 1 -#endif - -#if JETBRAINS_MONO_42 - -/*----------------- - * BITMAPS - *----------------*/ - -/*Store the image of the glyphs*/ -static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { - /* U+0025 "%" */ - 0x1f, 0x80, 0x7, 0x3f, 0xc0, 0xe, 0x7f, 0xe0, - 0x1c, 0xf0, 0xf0, 0x1c, 0xe0, 0x70, 0x38, 0xe0, - 0x70, 0x70, 0xe0, 0x70, 0x70, 0xe0, 0x70, 0xe0, - 0xe0, 0x71, 0xc0, 0xe0, 0x71, 0xc0, 0xf0, 0xf3, - 0x80, 0x7f, 0xe7, 0x0, 0x3f, 0xc7, 0x0, 0x1f, - 0x8e, 0x0, 0x0, 0x1c, 0x0, 0x0, 0x3c, 0x0, - 0x0, 0x38, 0x0, 0x0, 0x71, 0xf8, 0x0, 0xe3, - 0xfc, 0x0, 0xe7, 0xfe, 0x1, 0xcf, 0xf, 0x3, - 0x8e, 0x7, 0x3, 0x8e, 0x7, 0x7, 0xe, 0x7, - 0xe, 0xe, 0x7, 0xe, 0xe, 0x7, 0x1c, 0xe, - 0x7, 0x38, 0xf, 0xf, 0x38, 0x7, 0xfe, 0x70, - 0x3, 0xfc, 0xe0, 0x1, 0xf8, - - /* U+0030 "0" */ - 0x3, 0xf8, 0x1, 0xff, 0xc0, 0xff, 0xfe, 0x1f, - 0x7, 0xc7, 0xc0, 0x7c, 0xf0, 0x7, 0xbc, 0x0, - 0x7f, 0x80, 0xf, 0xf0, 0x1, 0xfe, 0x0, 0x3f, - 0xc0, 0x7, 0xf8, 0x0, 0xff, 0xe, 0x1f, 0xe3, - 0xe3, 0xfc, 0x7c, 0x7f, 0x8f, 0x8f, 0xf0, 0xe1, - 0xfe, 0x0, 0x3f, 0xc0, 0x7, 0xf8, 0x0, 0xff, - 0x0, 0x1f, 0xe0, 0x3, 0xfc, 0x0, 0x7f, 0x80, - 0xf, 0xf0, 0x1, 0xef, 0x0, 0x79, 0xf0, 0x1f, - 0x1f, 0x7, 0xc3, 0xff, 0xf8, 0x1f, 0xfc, 0x0, - 0xfe, 0x0, - - /* U+0031 "1" */ - 0x3, 0xf0, 0x0, 0xfe, 0x0, 0x3f, 0xc0, 0x1f, - 0xf8, 0x7, 0xcf, 0x1, 0xf1, 0xe0, 0x3c, 0x3c, - 0x7, 0x7, 0x80, 0x80, 0xf0, 0x0, 0x1e, 0x0, - 0x3, 0xc0, 0x0, 0x78, 0x0, 0xf, 0x0, 0x1, - 0xe0, 0x0, 0x3c, 0x0, 0x7, 0x80, 0x0, 0xf0, - 0x0, 0x1e, 0x0, 0x3, 0xc0, 0x0, 0x78, 0x0, - 0xf, 0x0, 0x1, 0xe0, 0x0, 0x3c, 0x0, 0x7, - 0x80, 0x0, 0xf0, 0x0, 0x1e, 0x0, 0x3, 0xc0, - 0x0, 0x78, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xf8, - - /* U+0032 "2" */ - 0x3, 0xf8, 0x1, 0xff, 0xc0, 0xff, 0xfc, 0x1f, - 0x7, 0xc7, 0xc0, 0x7c, 0xf0, 0x7, 0xbc, 0x0, - 0x7f, 0x80, 0xf, 0xf0, 0x1, 0xe0, 0x0, 0x3c, - 0x0, 0x7, 0x80, 0x1, 0xf0, 0x0, 0x3c, 0x0, - 0xf, 0x80, 0x1, 0xe0, 0x0, 0x7c, 0x0, 0x1f, - 0x0, 0x7, 0xc0, 0x1, 0xf0, 0x0, 0x7c, 0x0, - 0x1f, 0x0, 0x3, 0xc0, 0x0, 0xf0, 0x0, 0x3e, - 0x0, 0xf, 0x80, 0x3, 0xe0, 0x0, 0xf8, 0x0, - 0x3e, 0x0, 0x7, 0xff, 0xfe, 0xff, 0xff, 0xdf, - 0xff, 0xf8, - - /* U+0033 "3" */ - 0x7f, 0xff, 0x8f, 0xff, 0xf1, 0xff, 0xfe, 0x0, - 0x3, 0xc0, 0x0, 0xf0, 0x0, 0x3c, 0x0, 0xf, - 0x0, 0x3, 0xe0, 0x0, 0x78, 0x0, 0x1e, 0x0, - 0x7, 0x80, 0x1, 0xfc, 0x0, 0x3f, 0xe0, 0x7, - 0xfe, 0x0, 0xff, 0xe0, 0x0, 0x3e, 0x0, 0x3, - 0xc0, 0x0, 0x7c, 0x0, 0x7, 0x80, 0x0, 0xf0, - 0x0, 0x1e, 0x0, 0x3, 0xfc, 0x0, 0x7f, 0x80, - 0xf, 0xf0, 0x1, 0xff, 0x0, 0x79, 0xe0, 0x1f, - 0x1f, 0x7, 0xc3, 0xff, 0xf0, 0x1f, 0xfc, 0x0, - 0xfe, 0x0, - - /* U+0034 "4" */ - 0x0, 0x1e, 0x0, 0xf, 0x80, 0x3, 0xc0, 0x1, - 0xe0, 0x0, 0x78, 0x0, 0x3c, 0x0, 0x1f, 0x0, - 0x7, 0x80, 0x3, 0xc0, 0x1, 0xf0, 0x0, 0x78, - 0x0, 0x3e, 0x0, 0xf, 0x0, 0x7, 0x80, 0xf3, - 0xe0, 0x3c, 0xf0, 0xf, 0x7c, 0x3, 0xde, 0x0, - 0xff, 0x0, 0x3f, 0xc0, 0xf, 0xf0, 0x3, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x3, - 0xc0, 0x0, 0xf0, 0x0, 0x3c, 0x0, 0xf, 0x0, - 0x3, 0xc0, 0x0, 0xf0, 0x0, 0x3c, - - /* U+0035 "5" */ - 0x7f, 0xff, 0x9f, 0xff, 0xe7, 0xff, 0xf9, 0xe0, - 0x0, 0x78, 0x0, 0x1e, 0x0, 0x7, 0x80, 0x1, - 0xe0, 0x0, 0x78, 0x0, 0x1e, 0x0, 0x7, 0x8f, - 0x81, 0xef, 0xf8, 0x7f, 0xff, 0x1f, 0x87, 0xe7, - 0xc0, 0x79, 0xe0, 0x1f, 0x0, 0x3, 0xc0, 0x0, - 0xf0, 0x0, 0x3c, 0x0, 0xf, 0x0, 0x3, 0xc0, - 0x0, 0xf0, 0x0, 0x3c, 0x0, 0xf, 0xf0, 0x3, - 0xde, 0x1, 0xe7, 0x80, 0x78, 0xf8, 0x7e, 0x3f, - 0xff, 0x3, 0xff, 0x80, 0x3f, 0x0, - - /* U+0036 "6" */ - 0x0, 0x3c, 0x0, 0x7, 0x80, 0x0, 0x78, 0x0, - 0xf, 0x0, 0x1, 0xe0, 0x0, 0x1e, 0x0, 0x3, - 0xc0, 0x0, 0x3c, 0x0, 0x7, 0x80, 0x0, 0x70, - 0x0, 0xf, 0x0, 0x1, 0xe7, 0xc0, 0x1f, 0xff, - 0x3, 0xff, 0xfc, 0x3f, 0xf, 0xc7, 0xc0, 0x3e, - 0x78, 0x1, 0xe7, 0x80, 0x1f, 0xf0, 0x0, 0xff, - 0x0, 0xf, 0xf0, 0x0, 0xff, 0x0, 0xf, 0xf0, - 0x0, 0xff, 0x0, 0xf, 0xf8, 0x1, 0xe7, 0x80, - 0x1e, 0x7c, 0x3, 0xe3, 0xf0, 0xfc, 0x1f, 0xff, - 0x80, 0xff, 0xf0, 0x1, 0xf8, 0x0, - - /* U+0037 "7" */ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0, 0x1e, 0xf0, 0x1, 0xef, 0x0, 0x1e, 0xf0, - 0x3, 0xcf, 0x0, 0x3c, 0x0, 0x3, 0x80, 0x0, - 0x78, 0x0, 0x7, 0x80, 0x0, 0xf0, 0x0, 0xf, - 0x0, 0x0, 0xf0, 0x0, 0x1e, 0x0, 0x1, 0xe0, - 0x0, 0x3c, 0x0, 0x3, 0xc0, 0x0, 0x3c, 0x0, - 0x7, 0x80, 0x0, 0x78, 0x0, 0x7, 0x80, 0x0, - 0xf0, 0x0, 0xf, 0x0, 0x1, 0xe0, 0x0, 0x1e, - 0x0, 0x1, 0xe0, 0x0, 0x3c, 0x0, 0x3, 0xc0, - 0x0, 0x7c, 0x0, 0x7, 0x80, 0x0, - - /* U+0038 "8" */ - 0x1, 0xf8, 0x0, 0xff, 0xf0, 0x1f, 0xff, 0x83, - 0xf0, 0xfc, 0x3c, 0x3, 0xc7, 0xc0, 0x3e, 0x78, - 0x1, 0xe7, 0x80, 0x1e, 0x78, 0x1, 0xe7, 0x80, - 0x1e, 0x3c, 0x3, 0xc3, 0xe0, 0x7c, 0x1f, 0xf, - 0x80, 0xff, 0xf0, 0x3, 0xfc, 0x0, 0x7f, 0xe0, - 0xf, 0xff, 0x3, 0xe0, 0x7c, 0x3c, 0x3, 0xc7, - 0x80, 0x1e, 0xf0, 0x0, 0xff, 0x0, 0xf, 0xf0, - 0x0, 0xff, 0x0, 0xf, 0xf0, 0x0, 0xff, 0x80, - 0x1f, 0x7c, 0x3, 0xe7, 0xe0, 0x7e, 0x3f, 0xff, - 0xc0, 0xff, 0xf0, 0x3, 0xfc, 0x0, - - /* U+0039 "9" */ - 0x3, 0xf8, 0x0, 0xff, 0xf0, 0x1f, 0xff, 0x83, - 0xe0, 0xfc, 0x7c, 0x3, 0xe7, 0x80, 0x1e, 0xf8, - 0x1, 0xff, 0x0, 0xf, 0xf0, 0x0, 0xff, 0x0, - 0xf, 0xf0, 0x0, 0xff, 0x0, 0xf, 0xf8, 0x1, - 0xf7, 0x80, 0x1e, 0x7c, 0x3, 0xe3, 0xe0, 0x7e, - 0x3f, 0xff, 0xc1, 0xff, 0xfc, 0x7, 0xe7, 0x80, - 0x0, 0xf8, 0x0, 0xf, 0x0, 0x1, 0xe0, 0x0, - 0x1e, 0x0, 0x3, 0xc0, 0x0, 0x3c, 0x0, 0x7, - 0x80, 0x0, 0xf8, 0x0, 0xf, 0x0, 0x1, 0xe0, - 0x0, 0x1e, 0x0, 0x3, 0xc0, 0x0, - - /* U+003A ":" */ - 0x7d, 0xff, 0xff, 0xff, 0xef, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, - 0xf7, 0xff, 0xff, 0xff, 0xbe -}; - - -/*--------------------- - * 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 = 403, .box_w = 24, .box_h = 31, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 93, .adv_w = 403, .box_w = 19, .box_h = 31, .ofs_x = 3, .ofs_y = 0}, - {.bitmap_index = 167, .adv_w = 403, .box_w = 19, .box_h = 31, .ofs_x = 4, .ofs_y = 0}, - {.bitmap_index = 241, .adv_w = 403, .box_w = 19, .box_h = 31, .ofs_x = 3, .ofs_y = 0}, - {.bitmap_index = 315, .adv_w = 403, .box_w = 19, .box_h = 31, .ofs_x = 3, .ofs_y = 0}, - {.bitmap_index = 389, .adv_w = 403, .box_w = 18, .box_h = 31, .ofs_x = 3, .ofs_y = 0}, - {.bitmap_index = 459, .adv_w = 403, .box_w = 18, .box_h = 31, .ofs_x = 3, .ofs_y = 0}, - {.bitmap_index = 529, .adv_w = 403, .box_w = 20, .box_h = 31, .ofs_x = 3, .ofs_y = 0}, - {.bitmap_index = 607, .adv_w = 403, .box_w = 20, .box_h = 31, .ofs_x = 3, .ofs_y = 0}, - {.bitmap_index = 685, .adv_w = 403, .box_w = 20, .box_h = 31, .ofs_x = 3, .ofs_y = 0}, - {.bitmap_index = 763, .adv_w = 403, .box_w = 20, .box_h = 31, .ofs_x = 3, .ofs_y = 0}, - {.bitmap_index = 841, .adv_w = 403, .box_w = 7, .box_h = 24, .ofs_x = 9, .ofs_y = 0} -}; - -/*--------------------- - * CHARACTER MAPPING - *--------------------*/ - - - -/*Collect the unicode lists and glyph_id offsets*/ -static const lv_font_fmt_txt_cmap_t cmaps[] = -{ - { - .range_start = 37, .range_length = 1, .glyph_id_start = 1, - .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY - }, - { - .range_start = 48, .range_length = 11, .glyph_id_start = 2, - .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY - } -}; - - - -/*-------------------- - * ALL CUSTOM DATA - *--------------------*/ - -#if LV_VERSION_CHECK(8, 0, 0) -/*Store all the custom data of the font*/ -static lv_font_fmt_txt_glyph_cache_t cache; -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 = 2, - .bpp = 1, - .kern_classes = 0, - .bitmap_format = 0, -#if LV_VERSION_CHECK(8, 0, 0) - .cache = &cache -#endif -}; - - -/*----------------- - * PUBLIC FONT - *----------------*/ - -/*Initialize a public general font descriptor*/ -#if LV_VERSION_CHECK(8, 0, 0) -const lv_font_t jetbrains_mono_42 = { -#else -lv_font_t jetbrains_mono_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 = 31, /*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 = -7, - .underline_thickness = 2, -#endif - .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ -}; - - - -#endif /*#if JETBRAINS_MONO_42*/ - diff --git a/src/displayapp/fonts/jetbrains_mono_76.c b/src/displayapp/fonts/jetbrains_mono_76.c deleted file mode 100644 index 2200e39..0000000 --- a/src/displayapp/fonts/jetbrains_mono_76.c +++ /dev/null @@ -1,554 +0,0 @@ -/******************************************************************************* - * Size: 76 px - * Bpp: 1 - * Opts: - ******************************************************************************/ - -#ifdef LV_LVGL_H_INCLUDE_SIMPLE -#include "lvgl.h" -#else -#include "lvgl/lvgl.h" -#endif - -#ifndef JETBRAINS_MONO_76 -#define JETBRAINS_MONO_76 1 -#endif - -#if JETBRAINS_MONO_76 - -/*----------------- - * BITMAPS - *----------------*/ - -/*Store the image of the glyphs*/ -static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { - /* U+0025 "%" */ - 0x1, 0xfc, 0x0, 0x0, 0x7, 0xe1, 0xff, 0xf0, - 0x0, 0x1, 0xf8, 0x7f, 0xff, 0x0, 0x0, 0x3f, - 0x1f, 0xff, 0xf0, 0x0, 0xf, 0xc7, 0xff, 0xff, - 0x0, 0x3, 0xf0, 0xfe, 0xf, 0xe0, 0x0, 0x7e, - 0x3f, 0x80, 0xfc, 0x0, 0x1f, 0x87, 0xe0, 0xf, - 0xc0, 0x7, 0xe0, 0xfc, 0x1, 0xf8, 0x0, 0xfc, - 0x1f, 0x80, 0x3f, 0x0, 0x3f, 0x3, 0xf0, 0x7, - 0xe0, 0xf, 0xc0, 0x7e, 0x0, 0xfc, 0x1, 0xf8, - 0xf, 0xc0, 0x1f, 0x80, 0x7e, 0x1, 0xf8, 0x3, - 0xf0, 0x1f, 0x80, 0x3f, 0x0, 0x7e, 0x3, 0xf0, - 0x7, 0xe0, 0xf, 0xc0, 0xfc, 0x0, 0xfc, 0x1, - 0xf8, 0x3f, 0x0, 0x1f, 0x80, 0x3f, 0x7, 0xe0, - 0x3, 0xf8, 0xf, 0xe1, 0xf8, 0x0, 0x3f, 0x83, - 0xf8, 0x7e, 0x0, 0x7, 0xff, 0xff, 0xf, 0xc0, - 0x0, 0x7f, 0xff, 0xc3, 0xf0, 0x0, 0x7, 0xff, - 0xf0, 0xfc, 0x0, 0x0, 0x7f, 0xfc, 0x1f, 0x80, - 0x0, 0x1, 0xfc, 0x7, 0xe0, 0x0, 0x0, 0x0, - 0x1, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x0, - 0x0, 0x0, 0x0, 0xf, 0xc0, 0x0, 0x0, 0x0, - 0x3, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x7e, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0x80, 0x0, 0x0, 0x0, - 0x7, 0xe0, 0x3f, 0x80, 0x0, 0x0, 0xfc, 0x3f, - 0xfe, 0x0, 0x0, 0x3f, 0xf, 0xff, 0xe0, 0x0, - 0xf, 0xc3, 0xff, 0xfe, 0x0, 0x1, 0xf8, 0xff, - 0xff, 0xe0, 0x0, 0x7e, 0x1f, 0xc1, 0xfc, 0x0, - 0x1f, 0x83, 0xf0, 0x1f, 0x80, 0x3, 0xf0, 0xfc, - 0x1, 0xf8, 0x0, 0xfc, 0x1f, 0x80, 0x3f, 0x0, - 0x3f, 0x3, 0xf0, 0x7, 0xe0, 0x7, 0xe0, 0x7e, - 0x0, 0xfc, 0x1, 0xf8, 0xf, 0xc0, 0x1f, 0x80, - 0x7e, 0x1, 0xf8, 0x3, 0xf0, 0xf, 0xc0, 0x3f, - 0x0, 0x7e, 0x3, 0xf0, 0x7, 0xe0, 0xf, 0xc0, - 0xfc, 0x0, 0xfc, 0x1, 0xf8, 0x1f, 0x80, 0x1f, - 0x80, 0x3f, 0x7, 0xe0, 0x3, 0xf8, 0xf, 0xe1, - 0xf8, 0x0, 0x7f, 0x1, 0xfc, 0x3f, 0x0, 0x7, - 0xff, 0xff, 0xf, 0xc0, 0x0, 0xff, 0xff, 0xe3, - 0xf0, 0x0, 0xf, 0xff, 0xf8, 0xfe, 0x0, 0x0, - 0xff, 0xfe, 0x1f, 0x80, 0x0, 0xf, 0xff, 0x87, - 0xe0, 0x0, 0x0, 0xff, 0xe0, 0x0, 0x0, 0x0, - 0x0, 0x80, 0x0, - - /* U+002D "-" */ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, - - /* U+002F "/" */ - 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0xf, - 0xe0, 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, 0x1, - 0xfe, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, - 0x1f, 0xc0, 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, - 0x3, 0xf8, 0x0, 0x0, 0x1, 0xfe, 0x0, 0x0, - 0x0, 0x7f, 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, - 0x0, 0xf, 0xf0, 0x0, 0x0, 0x3, 0xf8, 0x0, - 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x7f, 0x0, - 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, 0xf, 0xf0, - 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, 0x0, 0xfe, - 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, 0x1f, - 0xc0, 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, 0x3, - 0xf8, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, - 0x7f, 0x80, 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, - 0x7, 0xf0, 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, - 0x0, 0xfe, 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, - 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x7, 0xf0, 0x0, - 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, 0xfe, 0x0, - 0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, 0x1f, 0xe0, - 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, 0x1, 0xfc, - 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x3f, - 0x80, 0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x7, - 0xf0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, - 0xff, 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, - 0xf, 0xe0, 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, - 0x1, 0xfc, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, - 0x0, 0x3f, 0x80, 0x0, 0x0, 0xf, 0xe0, 0x0, - 0x0, 0x7, 0xf8, 0x0, 0x0, 0x1, 0xfc, 0x0, - 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x3f, 0x80, - 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, 0x7, 0xf8, - 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0xf, - 0xe0, 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, 0x1, - 0xfc, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, - 0x3f, 0xc0, 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, - 0x3, 0xf8, 0x0, 0x0, 0x1, 0xfe, 0x0, 0x0, - 0x0, 0x7f, 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, - 0x0, 0xf, 0xe0, 0x0, 0x0, 0x3, 0xf8, 0x0, - 0x0, 0x0, - - /* U+0030 "0" */ - 0x0, 0xf, 0xfc, 0x0, 0x0, 0x1f, 0xff, 0xe0, - 0x0, 0x1f, 0xff, 0xfe, 0x0, 0xf, 0xff, 0xff, - 0xc0, 0x7, 0xff, 0xff, 0xf8, 0x3, 0xff, 0xff, - 0xff, 0x1, 0xff, 0xc0, 0xff, 0xe0, 0xff, 0x80, - 0x7, 0xfc, 0x3f, 0xc0, 0x0, 0xff, 0x1f, 0xe0, - 0x0, 0x1f, 0xe7, 0xf8, 0x0, 0x7, 0xf9, 0xfc, - 0x0, 0x0, 0xfe, 0xff, 0x0, 0x0, 0x3f, 0xff, - 0x80, 0x0, 0x7, 0xff, 0xe0, 0x0, 0x1, 0xff, - 0xf8, 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x1f, - 0xff, 0x80, 0x0, 0x7, 0xff, 0xe0, 0x0, 0x1, - 0xff, 0xf8, 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, - 0x1f, 0xff, 0x80, 0x0, 0x7, 0xff, 0xe0, 0x0, - 0x1, 0xff, 0xf8, 0x0, 0x0, 0x7f, 0xfe, 0x3, - 0xe0, 0x1f, 0xff, 0x81, 0xfc, 0x7, 0xff, 0xe0, - 0xff, 0x81, 0xff, 0xf8, 0x3f, 0xe0, 0x7f, 0xfe, - 0xf, 0xf8, 0x1f, 0xff, 0x83, 0xfe, 0x7, 0xff, - 0xe0, 0xff, 0x81, 0xff, 0xf8, 0x1f, 0xc0, 0x7f, - 0xfe, 0x3, 0xe0, 0x1f, 0xff, 0x80, 0x0, 0x7, - 0xff, 0xe0, 0x0, 0x1, 0xff, 0xf8, 0x0, 0x0, - 0x7f, 0xfe, 0x0, 0x0, 0x1f, 0xff, 0x80, 0x0, - 0x7, 0xff, 0xe0, 0x0, 0x1, 0xff, 0xf8, 0x0, - 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x1f, 0xff, 0x80, - 0x0, 0x7, 0xff, 0xe0, 0x0, 0x1, 0xff, 0xf8, - 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x1f, 0xff, - 0xc0, 0x0, 0xf, 0xf7, 0xf0, 0x0, 0x3, 0xf9, - 0xfe, 0x0, 0x1, 0xfe, 0x7f, 0xc0, 0x0, 0xff, - 0x8f, 0xf8, 0x0, 0x7f, 0xc1, 0xff, 0x0, 0x3f, - 0xe0, 0x7f, 0xff, 0xff, 0xf8, 0xf, 0xff, 0xff, - 0xfc, 0x1, 0xff, 0xff, 0xfe, 0x0, 0x3f, 0xff, - 0xff, 0x0, 0x3, 0xff, 0xff, 0x0, 0x0, 0x3f, - 0xff, 0x0, 0x0, 0x0, 0x30, 0x0, 0x0, - - /* U+0031 "1" */ - 0x0, 0xf, 0xfc, 0x0, 0x0, 0x7, 0xff, 0x0, - 0x0, 0x7, 0xff, 0xc0, 0x0, 0x3, 0xff, 0xf0, - 0x0, 0x1, 0xff, 0xfc, 0x0, 0x1, 0xff, 0xff, - 0x0, 0x0, 0xff, 0xdf, 0xc0, 0x0, 0x7f, 0xe7, - 0xf0, 0x0, 0x7f, 0xe1, 0xfc, 0x0, 0x3f, 0xf0, - 0x7f, 0x0, 0xf, 0xf8, 0x1f, 0xc0, 0x3, 0xfc, - 0x7, 0xf0, 0x0, 0xfc, 0x1, 0xfc, 0x0, 0x3e, - 0x0, 0x7f, 0x0, 0xf, 0x0, 0x1f, 0xc0, 0x3, - 0x0, 0x7, 0xf0, 0x0, 0x80, 0x1, 0xfc, 0x0, - 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x1f, 0xc0, - 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, 0x1, 0xfc, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x1f, - 0xc0, 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, 0x1, - 0xfc, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, - 0x1f, 0xc0, 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, - 0x1, 0xfc, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, - 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x7, 0xf0, 0x0, - 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, 0x7f, 0x0, - 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x7, 0xf0, - 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x7, - 0xf0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, - 0x7f, 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, - 0x7, 0xf0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, - 0x0, 0x7f, 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, - 0x0, 0x7, 0xf0, 0x0, 0x0, 0x1, 0xfc, 0x0, - 0x0, 0x0, 0x7f, 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, - - /* U+0032 "2" */ - 0x0, 0xf, 0xfc, 0x0, 0x0, 0x1f, 0xff, 0xe0, - 0x0, 0x1f, 0xff, 0xfe, 0x0, 0xf, 0xff, 0xff, - 0xc0, 0x7, 0xff, 0xff, 0xf8, 0x3, 0xff, 0xff, - 0xff, 0x1, 0xff, 0xc0, 0x7f, 0xe0, 0xff, 0x80, - 0x7, 0xfc, 0x3f, 0xc0, 0x0, 0xff, 0x1f, 0xe0, - 0x0, 0x1f, 0xe7, 0xf0, 0x0, 0x3, 0xf9, 0xfc, - 0x0, 0x0, 0xfe, 0xff, 0x0, 0x0, 0x3f, 0xff, - 0x80, 0x0, 0x7, 0xff, 0xe0, 0x0, 0x1, 0xff, - 0xf8, 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x1f, - 0xc0, 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, 0x1, - 0xfc, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, - 0x3f, 0x80, 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, - 0x7, 0xf8, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, - 0x0, 0xff, 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, - 0x0, 0x1f, 0xe0, 0x0, 0x0, 0xf, 0xf0, 0x0, - 0x0, 0x7, 0xf8, 0x0, 0x0, 0x3, 0xfe, 0x0, - 0x0, 0x1, 0xff, 0x0, 0x0, 0x0, 0xff, 0x80, - 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x1f, 0xe0, - 0x0, 0x0, 0xf, 0xf8, 0x0, 0x0, 0x7, 0xfc, - 0x0, 0x0, 0x3, 0xfe, 0x0, 0x0, 0x1, 0xff, - 0x0, 0x0, 0x0, 0xff, 0x80, 0x0, 0x0, 0x7f, - 0xc0, 0x0, 0x0, 0x3f, 0xe0, 0x0, 0x0, 0x1f, - 0xf0, 0x0, 0x0, 0xf, 0xf8, 0x0, 0x0, 0x7, - 0xfc, 0x0, 0x0, 0x3, 0xfe, 0x0, 0x0, 0x0, - 0xff, 0x80, 0x0, 0x0, 0x7f, 0xc0, 0x0, 0x0, - 0x3f, 0xe0, 0x0, 0x0, 0x1f, 0xf0, 0x0, 0x0, - 0xf, 0xf8, 0x0, 0x0, 0x7, 0xfc, 0x0, 0x0, - 0x1, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, - 0xff, 0xdf, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, - 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, - 0xff, 0xff, 0xc0, - - /* U+0033 "3" */ - 0x3f, 0xff, 0xff, 0xfe, 0xf, 0xff, 0xff, 0xff, - 0x83, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, - 0xf8, 0x3f, 0xff, 0xff, 0xfe, 0xf, 0xff, 0xff, - 0xff, 0x80, 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, - 0x7, 0xf0, 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, - 0x1, 0xfc, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, - 0x0, 0x7f, 0x80, 0x0, 0x0, 0x3f, 0xc0, 0x0, - 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x7, 0xf0, 0x0, - 0x0, 0x3, 0xf8, 0x0, 0x0, 0x1, 0xfc, 0x0, - 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x7f, 0x80, - 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x1f, 0xe0, - 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0, 0x1, 0xff, - 0xfc, 0x0, 0x0, 0x7f, 0xff, 0xc0, 0x0, 0x1f, - 0xff, 0xf8, 0x0, 0x7, 0xff, 0xff, 0x0, 0x1, - 0xff, 0xff, 0xe0, 0x0, 0x0, 0xf, 0xfc, 0x0, - 0x0, 0x1, 0xff, 0x0, 0x0, 0x0, 0x1f, 0xe0, - 0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0, 0xfe, - 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x7, - 0xf0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, - 0x7f, 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, - 0x7, 0xf0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, - 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x1f, 0xff, 0x80, - 0x0, 0x7, 0xff, 0xe0, 0x0, 0x1, 0xff, 0xf8, - 0x0, 0x0, 0x7f, 0xff, 0x0, 0x0, 0x3f, 0xdf, - 0xc0, 0x0, 0xf, 0xe7, 0xf8, 0x0, 0x7, 0xf9, - 0xfe, 0x0, 0x1, 0xfe, 0x3f, 0xc0, 0x0, 0xff, - 0xf, 0xfc, 0x0, 0xff, 0x81, 0xff, 0xff, 0xff, - 0xe0, 0x3f, 0xff, 0xff, 0xf0, 0x7, 0xff, 0xff, - 0xf8, 0x0, 0xff, 0xff, 0xf8, 0x0, 0xf, 0xff, - 0xfc, 0x0, 0x0, 0xff, 0xf8, 0x0, 0x0, 0x0, - 0xc0, 0x0, 0x0, - - /* U+0034 "4" */ - 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, 0x1f, 0xe0, - 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x3f, 0xc0, - 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, 0x7f, 0x0, - 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xfe, 0x0, - 0x0, 0x1, 0xfe, 0x0, 0x0, 0x3, 0xfc, 0x0, - 0x0, 0x3, 0xf8, 0x0, 0x0, 0x7, 0xf8, 0x0, - 0x0, 0x7, 0xf0, 0x0, 0x0, 0xf, 0xf0, 0x0, - 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x1f, 0xe0, 0x0, - 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x3f, 0x80, 0x0, - 0x0, 0x7f, 0x80, 0x0, 0x0, 0xff, 0x0, 0x0, - 0x0, 0xff, 0x0, 0x0, 0x1, 0xfe, 0x0, 0x0, - 0x1, 0xfc, 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, - 0x7, 0xf8, 0x0, 0x7f, 0x7, 0xf8, 0x0, 0x7f, - 0xf, 0xf0, 0x0, 0x7f, 0xf, 0xe0, 0x0, 0x7f, - 0x1f, 0xe0, 0x0, 0x7f, 0x3f, 0xc0, 0x0, 0x7f, - 0x3f, 0xc0, 0x0, 0x7f, 0x7f, 0x80, 0x0, 0x7f, - 0x7f, 0x0, 0x0, 0x7f, 0xff, 0x0, 0x0, 0x7f, - 0xfe, 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x7f, - 0xfe, 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x7f, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7f, - - /* U+0035 "5" */ - 0x7f, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xfc, - 0x7f, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xfc, - 0x7f, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xfc, - 0x7f, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, - 0x7f, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, - 0x7f, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, - 0x7f, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, - 0x7f, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, - 0x7f, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, - 0x7f, 0x0, 0x0, 0x0, 0x7f, 0x3, 0xfc, 0x0, - 0x7f, 0xf, 0xff, 0x80, 0x7f, 0x3f, 0xff, 0xc0, - 0x7f, 0x7f, 0xff, 0xf0, 0x7f, 0x7f, 0xff, 0xf8, - 0x7f, 0xff, 0xff, 0xf8, 0x7f, 0xf8, 0x1f, 0xfc, - 0x7f, 0xe0, 0x7, 0xfc, 0x7f, 0xc0, 0x1, 0xfe, - 0x7f, 0x80, 0x1, 0xfe, 0x7f, 0x80, 0x0, 0xfe, - 0x7f, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7f, - 0xfe, 0x0, 0x0, 0xff, 0xfe, 0x0, 0x0, 0xfe, - 0xff, 0x0, 0x0, 0xfe, 0x7f, 0x0, 0x1, 0xfe, - 0x7f, 0x80, 0x3, 0xfc, 0x3f, 0xe0, 0x7, 0xfc, - 0x3f, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xf0, - 0xf, 0xff, 0xff, 0xe0, 0x7, 0xff, 0xff, 0xc0, - 0x1, 0xff, 0xff, 0x80, 0x0, 0x7f, 0xfc, 0x0, - 0x0, 0x1, 0x0, 0x0, - - /* U+0036 "6" */ - 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x3, 0xf8, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0xf, - 0xf0, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, - 0x1f, 0xe0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, - 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x3, 0xf8, 0x0, - 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7, 0xf0, - 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x1f, - 0xe0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, - 0x3f, 0xc0, 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, - 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7, 0xf0, 0x0, - 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x1f, 0xe0, - 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, 0x3f, - 0xc0, 0x0, 0x0, 0x3, 0xf8, 0x7f, 0x80, 0x0, - 0x7f, 0x9f, 0xff, 0x0, 0x7, 0xf7, 0xff, 0xf8, - 0x0, 0xfe, 0xff, 0xff, 0xe0, 0xf, 0xff, 0xff, - 0xff, 0x1, 0xff, 0xff, 0xff, 0xf0, 0x1f, 0xfe, - 0x7, 0xff, 0x83, 0xff, 0x0, 0xf, 0xfc, 0x3f, - 0xe0, 0x0, 0x7f, 0xc7, 0xfc, 0x0, 0x3, 0xfe, - 0x7f, 0x80, 0x0, 0x1f, 0xe7, 0xf0, 0x0, 0x0, - 0xfe, 0x7f, 0x0, 0x0, 0xf, 0xff, 0xf0, 0x0, - 0x0, 0xff, 0xfe, 0x0, 0x0, 0x7, 0xff, 0xe0, - 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x7, 0xff, - 0xe0, 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x7, - 0xff, 0xe0, 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, - 0x7, 0xff, 0xe0, 0x0, 0x0, 0x7f, 0x7f, 0x0, - 0x0, 0xf, 0xe7, 0xf0, 0x0, 0x0, 0xfe, 0x7f, - 0x80, 0x0, 0x1f, 0xe3, 0xf8, 0x0, 0x1, 0xfc, - 0x3f, 0xc0, 0x0, 0x3f, 0xc1, 0xfe, 0x0, 0x7, - 0xf8, 0x1f, 0xf8, 0x1, 0xff, 0x80, 0xff, 0xff, - 0xff, 0xf0, 0x7, 0xff, 0xff, 0xfe, 0x0, 0x3f, - 0xff, 0xff, 0xc0, 0x1, 0xff, 0xff, 0xf8, 0x0, - 0x7, 0xff, 0xfe, 0x0, 0x0, 0x1f, 0xff, 0x80, - 0x0, 0x0, 0x6, 0x0, 0x0, - - /* U+0037 "7" */ - 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, 0xfe, 0x0, 0x0, 0xf, 0xef, - 0xe0, 0x0, 0x0, 0xfe, 0xfe, 0x0, 0x0, 0x1f, - 0xef, 0xe0, 0x0, 0x1, 0xfc, 0xfe, 0x0, 0x0, - 0x1f, 0xcf, 0xe0, 0x0, 0x3, 0xf8, 0xfe, 0x0, - 0x0, 0x3f, 0x8f, 0xe0, 0x0, 0x7, 0xf8, 0xfe, - 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7, 0xf0, - 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0xf, - 0xe0, 0x0, 0x0, 0x1, 0xfe, 0x0, 0x0, 0x0, - 0x1f, 0xc0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, - 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x3, 0xf8, 0x0, - 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, 0x7, 0xf0, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0xf, - 0xf0, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, - 0x1f, 0xe0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, - 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x3, 0xfc, 0x0, - 0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, 0x3, 0xf8, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7, - 0xf0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, - 0xf, 0xe0, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, - 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x1, 0xfc, 0x0, - 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x3, 0xf8, - 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, 0x7, - 0xf8, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, - 0xf, 0xf0, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, - 0x0, 0xf, 0xe0, 0x0, 0x0, 0x1, 0xfe, 0x0, - 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x3, 0xfc, - 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, 0x3, - 0xf8, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, - 0x7, 0xf0, 0x0, 0x0, - - /* U+0038 "8" */ - 0x0, 0x7, 0xfe, 0x0, 0x0, 0x3, 0xff, 0xfc, - 0x0, 0x0, 0xff, 0xff, 0xf0, 0x0, 0x3f, 0xff, - 0xff, 0xc0, 0x7, 0xff, 0xff, 0xfe, 0x0, 0xff, - 0xff, 0xff, 0xf0, 0x1f, 0xfc, 0x3, 0xff, 0x81, - 0xff, 0x0, 0xf, 0xf8, 0x3f, 0xe0, 0x0, 0x7f, - 0xc3, 0xfc, 0x0, 0x3, 0xfc, 0x7f, 0x80, 0x0, - 0x1f, 0xc7, 0xf8, 0x0, 0x1, 0xfe, 0x7f, 0x0, - 0x0, 0xf, 0xe7, 0xf0, 0x0, 0x0, 0xfe, 0x7f, - 0x0, 0x0, 0xf, 0xe7, 0xf0, 0x0, 0x0, 0xfe, - 0x7f, 0x0, 0x0, 0xf, 0xe7, 0xf8, 0x0, 0x1, - 0xfe, 0x3f, 0x80, 0x0, 0x1f, 0xc3, 0xfc, 0x0, - 0x3, 0xfc, 0x1f, 0xc0, 0x0, 0x7f, 0x81, 0xff, - 0x0, 0xf, 0xf8, 0xf, 0xf8, 0x1, 0xff, 0x0, - 0x7f, 0xe0, 0x7f, 0xe0, 0x3, 0xff, 0x9f, 0xfc, - 0x0, 0xf, 0xff, 0xff, 0x0, 0x0, 0x7f, 0xff, - 0xe0, 0x0, 0x1, 0xff, 0xf8, 0x0, 0x0, 0x7f, - 0xff, 0xe0, 0x0, 0xf, 0xff, 0xff, 0x0, 0x3, - 0xff, 0x9f, 0xfc, 0x0, 0x7f, 0xe0, 0x7f, 0xe0, - 0xf, 0xf8, 0x1, 0xff, 0x1, 0xfe, 0x0, 0x7, - 0xf8, 0x1f, 0xc0, 0x0, 0x3f, 0x83, 0xf8, 0x0, - 0x1, 0xfc, 0x7f, 0x80, 0x0, 0x1f, 0xe7, 0xf0, - 0x0, 0x0, 0xfe, 0x7f, 0x0, 0x0, 0xf, 0xef, - 0xe0, 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x7, - 0xff, 0xe0, 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, - 0x7, 0xff, 0xe0, 0x0, 0x0, 0x7f, 0xfe, 0x0, - 0x0, 0x7, 0xff, 0xf0, 0x0, 0x0, 0xff, 0xff, - 0x0, 0x0, 0xf, 0xf7, 0xf8, 0x0, 0x1, 0xfe, - 0x7f, 0xc0, 0x0, 0x3f, 0xe3, 0xfe, 0x0, 0x7, - 0xfc, 0x3f, 0xf8, 0x1, 0xff, 0xc1, 0xff, 0xff, - 0xff, 0xf8, 0xf, 0xff, 0xff, 0xff, 0x0, 0x7f, - 0xff, 0xff, 0xe0, 0x3, 0xff, 0xff, 0xfc, 0x0, - 0xf, 0xff, 0xff, 0x0, 0x0, 0x1f, 0xff, 0x80, - 0x0, 0x0, 0x6, 0x0, 0x0, - - /* U+0039 "9" */ - 0x0, 0x7, 0xfe, 0x0, 0x0, 0x3, 0xff, 0xfc, - 0x0, 0x0, 0xff, 0xff, 0xf0, 0x0, 0x1f, 0xff, - 0xff, 0x80, 0x3, 0xff, 0xff, 0xfe, 0x0, 0x7f, - 0xff, 0xff, 0xf0, 0xf, 0xfc, 0x7, 0xff, 0x1, - 0xff, 0x0, 0xf, 0xf8, 0x3f, 0xe0, 0x0, 0x7f, - 0xc3, 0xfc, 0x0, 0x3, 0xfc, 0x7f, 0x80, 0x0, - 0x1f, 0xe7, 0xf0, 0x0, 0x1, 0xfe, 0x7f, 0x0, - 0x0, 0xf, 0xe7, 0xf0, 0x0, 0x0, 0xff, 0xfe, - 0x0, 0x0, 0x7, 0xff, 0xe0, 0x0, 0x0, 0x7f, - 0xfe, 0x0, 0x0, 0x7, 0xff, 0xe0, 0x0, 0x0, - 0x7f, 0xfe, 0x0, 0x0, 0x7, 0xff, 0xe0, 0x0, - 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x7, 0xff, 0xe0, - 0x0, 0x0, 0x7f, 0xff, 0x0, 0x0, 0xf, 0xef, - 0xf0, 0x0, 0x0, 0xfe, 0x7f, 0x0, 0x0, 0x1f, - 0xe7, 0xf8, 0x0, 0x1, 0xfe, 0x7f, 0xc0, 0x0, - 0x3f, 0xc3, 0xfe, 0x0, 0x7, 0xfc, 0x3f, 0xf0, - 0x0, 0xff, 0x81, 0xff, 0xe0, 0x3f, 0xf8, 0xf, - 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0xf0, - 0x3, 0xff, 0xff, 0xff, 0x0, 0x1f, 0xff, 0xef, - 0xe0, 0x0, 0xff, 0xf9, 0xfc, 0x0, 0x1, 0xfe, - 0x1f, 0xc0, 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, - 0x0, 0x3f, 0x80, 0x0, 0x0, 0x7, 0xf0, 0x0, - 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xf, 0xe0, - 0x0, 0x0, 0x1, 0xfe, 0x0, 0x0, 0x0, 0x1f, - 0xc0, 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, 0x0, - 0x3f, 0x80, 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, - 0x0, 0xff, 0x0, 0x0, 0x0, 0xf, 0xe0, 0x0, - 0x0, 0x1, 0xfe, 0x0, 0x0, 0x0, 0x1f, 0xc0, - 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, 0x3f, - 0x80, 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, 0x0, - 0xff, 0x0, 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, - 0x1, 0xfe, 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, - 0x0, - - /* U+003A ":" */ - 0xf, 0x81, 0xff, 0x1f, 0xfd, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xf1, 0xff, - 0x7, 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, 0x0, 0x0, 0x2, 0x0, 0xff, 0x1f, - 0xfc, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x7f, 0xf3, 0xff, 0x8f, 0xf8, 0x4, 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 = 730, .box_w = 43, .box_h = 57, .ofs_x = 1, .ofs_y = -1}, - {.bitmap_index = 307, .adv_w = 730, .box_w = 24, .box_h = 6, .ofs_x = 11, .ofs_y = 22}, - {.bitmap_index = 325, .adv_w = 730, .box_w = 34, .box_h = 72, .ofs_x = 6, .ofs_y = -8}, - {.bitmap_index = 631, .adv_w = 730, .box_w = 34, .box_h = 58, .ofs_x = 6, .ofs_y = -1}, - {.bitmap_index = 878, .adv_w = 730, .box_w = 34, .box_h = 56, .ofs_x = 7, .ofs_y = 0}, - {.bitmap_index = 1116, .adv_w = 730, .box_w = 34, .box_h = 57, .ofs_x = 6, .ofs_y = 0}, - {.bitmap_index = 1359, .adv_w = 730, .box_w = 34, .box_h = 57, .ofs_x = 5, .ofs_y = -1}, - {.bitmap_index = 1602, .adv_w = 730, .box_w = 32, .box_h = 56, .ofs_x = 5, .ofs_y = 0}, - {.bitmap_index = 1826, .adv_w = 730, .box_w = 32, .box_h = 57, .ofs_x = 7, .ofs_y = -1}, - {.bitmap_index = 2054, .adv_w = 730, .box_w = 36, .box_h = 58, .ofs_x = 5, .ofs_y = -1}, - {.bitmap_index = 2315, .adv_w = 730, .box_w = 36, .box_h = 56, .ofs_x = 6, .ofs_y = 0}, - {.bitmap_index = 2567, .adv_w = 730, .box_w = 36, .box_h = 58, .ofs_x = 5, .ofs_y = -1}, - {.bitmap_index = 2828, .adv_w = 730, .box_w = 36, .box_h = 57, .ofs_x = 5, .ofs_y = 0}, - {.bitmap_index = 3085, .adv_w = 730, .box_w = 13, .box_h = 44, .ofs_x = 16, .ofs_y = -1} -}; - -/*--------------------- - * CHARACTER MAPPING - *--------------------*/ - -static const uint16_t unicode_list_0[] = { - 0x0, 0x8 -}; - -/*Collect the unicode lists and glyph_id offsets*/ -static const lv_font_fmt_txt_cmap_t cmaps[] = -{ - { - .range_start = 37, .range_length = 9, .glyph_id_start = 1, - .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 2, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY - }, - { - .range_start = 47, .range_length = 12, .glyph_id_start = 3, - .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY - } -}; - - - -/*-------------------- - * ALL CUSTOM DATA - *--------------------*/ - -#if LV_VERSION_CHECK(8, 0, 0) -/*Store all the custom data of the font*/ -static lv_font_fmt_txt_glyph_cache_t cache; -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 = 2, - .bpp = 1, - .kern_classes = 0, - .bitmap_format = 0, -#if LV_VERSION_CHECK(8, 0, 0) - .cache = &cache -#endif -}; - - -/*----------------- - * PUBLIC FONT - *----------------*/ - -/*Initialize a public general font descriptor*/ -#if LV_VERSION_CHECK(8, 0, 0) -const lv_font_t jetbrains_mono_76 = { -#else -lv_font_t jetbrains_mono_76 = { -#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 = 72, /*The maximum line height required by the font*/ - .base_line = 8, /*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 = -12, - .underline_thickness = 4, -#endif - .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ -}; - - - -#endif /*#if JETBRAINS_MONO_76*/ - diff --git a/src/displayapp/fonts/jetbrains_mono_bold_20.c b/src/displayapp/fonts/jetbrains_mono_bold_20.c deleted file mode 100644 index 5c40d49..0000000 --- a/src/displayapp/fonts/jetbrains_mono_bold_20.c +++ /dev/null @@ -1,1334 +0,0 @@ -/******************************************************************************* - * Size: 20 px - * Bpp: 1 - * Opts: - ******************************************************************************/ - -#ifdef LV_LVGL_H_INCLUDE_SIMPLE -#include "lvgl.h" -#else -#include "lvgl/lvgl.h" -#endif - -#ifndef JETBRAINS_MONO_BOLD_20 -#define JETBRAINS_MONO_BOLD_20 1 -#endif - -#if JETBRAINS_MONO_BOLD_20 - -/*----------------- - * BITMAPS - *----------------*/ - -/*Store the image of the glyphs*/ -static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { - /* U+0020 " " */ - 0x0, - - /* U+0021 "!" */ - 0xff, 0xff, 0xff, 0xfc, 0xf, 0xc0, - - /* U+0022 "\"" */ - 0xef, 0xdf, 0xbf, 0x7e, 0xfd, 0xc0, - - /* U+0023 "#" */ - 0x8, 0xc3, 0x18, 0x62, 0x3f, 0xf7, 0xfe, 0x23, - 0xc, 0x61, 0x88, 0xff, 0xdf, 0xf8, 0x8c, 0x11, - 0x86, 0x30, 0xc4, 0x0, - - /* U+0024 "$" */ - 0x8, 0x2, 0x0, 0x81, 0xfc, 0x7f, 0xba, 0x7e, - 0x9f, 0xa0, 0xf8, 0x1f, 0x83, 0xf8, 0x3f, 0x9, - 0xfa, 0x7e, 0x9d, 0xfe, 0x7f, 0x2, 0x0, 0x80, - 0x20, - - /* U+0025 "%" */ - 0x78, 0x3f, 0xc6, 0xcc, 0xcc, 0xcc, 0xfd, 0x87, - 0xb0, 0x6, 0x0, 0x7e, 0xf, 0xf1, 0xb3, 0x33, - 0x33, 0x33, 0x63, 0xfc, 0x1e, - - /* U+0026 "&" */ - 0x1e, 0xf, 0xe1, 0x8e, 0x30, 0x6, 0x0, 0x60, - 0x1e, 0x7, 0xe6, 0xed, 0xdc, 0xf3, 0x9e, 0x73, - 0xcf, 0xfc, 0xf9, 0x80, - - /* U+0027 "'" */ - 0xff, 0xff, 0xc0, - - /* U+0028 "(" */ - 0x2, 0x1c, 0x79, 0xc7, 0x1e, 0x38, 0x70, 0xe1, - 0xc3, 0x87, 0xe, 0x1c, 0x3c, 0x38, 0x3c, 0x3c, - 0x38, - - /* U+0029 ")" */ - 0x1, 0xc3, 0xc3, 0xc1, 0xc3, 0xc3, 0x87, 0xe, - 0x1c, 0x38, 0x70, 0xe1, 0xc7, 0xe, 0x79, 0xe3, - 0x0, - - /* U+002A "*" */ - 0xc, 0x3, 0x8, 0xc7, 0xb7, 0x7f, 0x83, 0x1, - 0xe0, 0xcc, 0x73, 0x80, 0x0, - - /* U+002B "+" */ - 0x1c, 0x7, 0x1, 0xc3, 0xff, 0xff, 0xc7, 0x1, - 0xc0, 0x70, 0x1c, 0x0, - - /* U+002C "," */ - 0x7b, 0x9c, 0xce, 0x60, - - /* U+002D "-" */ - 0xff, 0xf0, - - /* U+002E "." */ - 0xff, 0xf0, - - /* U+002F "/" */ - 0x1, 0xc0, 0x60, 0x38, 0xe, 0x3, 0x1, 0xc0, - 0x70, 0x18, 0xe, 0x3, 0x1, 0xc0, 0x70, 0x18, - 0xe, 0x3, 0x80, 0xc0, 0x70, 0x18, 0xe, 0x0, - - /* U+0030 "0" */ - 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7e, - 0xdf, 0xb7, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, - 0x8f, 0xc0, - - /* U+0031 "1" */ - 0x1e, 0x3f, 0x3f, 0x99, 0xc8, 0xe0, 0x70, 0x38, - 0x1c, 0xe, 0x7, 0x3, 0x81, 0xcf, 0xff, 0xfc, - - /* U+0032 "2" */ - 0x3e, 0x3f, 0xbd, 0xfc, 0x70, 0x38, 0x1c, 0x1c, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0xf, 0xff, 0xfc, - - /* U+0033 "3" */ - 0x7f, 0x9f, 0xe0, 0x30, 0x18, 0xc, 0x7, 0xc1, - 0xf8, 0xf, 0x1, 0xc0, 0x7e, 0x1f, 0xcf, 0x7f, - 0x8f, 0xc0, - - /* U+0034 "4" */ - 0x7, 0x7, 0x3, 0x83, 0x83, 0x83, 0xc1, 0xcf, - 0xe7, 0xe3, 0xff, 0xff, 0xe0, 0x70, 0x38, 0x1c, - - /* U+0035 "5" */ - 0x7f, 0x9f, 0xe7, 0x1, 0xc0, 0x77, 0x1f, 0xe7, - 0x3c, 0x7, 0x1, 0xc0, 0x77, 0x1d, 0xcf, 0x7f, - 0x87, 0xc0, - - /* U+0036 "6" */ - 0xe, 0x3, 0x1, 0xc0, 0x60, 0x38, 0x1d, 0xc7, - 0xfb, 0xcf, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, - 0x8f, 0x80, - - /* U+0037 "7" */ - 0xff, 0xff, 0xfe, 0x1f, 0x86, 0x3, 0x80, 0xe0, - 0x30, 0x1c, 0x6, 0x3, 0x80, 0xc0, 0x70, 0x1c, - 0xe, 0x0, - - /* U+0038 "8" */ - 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xdc, 0xe3, - 0xf0, 0xfc, 0x73, 0xb8, 0x7e, 0x1f, 0xcf, 0x7f, - 0x8f, 0xc0, - - /* U+0039 "9" */ - 0x1e, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7f, - 0x3d, 0xfe, 0x3b, 0x81, 0xc0, 0x60, 0x38, 0xc, - 0x7, 0x0, - - /* U+003A ":" */ - 0xff, 0x80, 0x0, 0xff, 0x80, - - /* U+003B ";" */ - 0x7b, 0xde, 0x0, 0x0, 0x0, 0x3, 0xdc, 0xe6, - 0x73, 0x0, - - /* U+003C "<" */ - 0x0, 0x81, 0xc3, 0xe7, 0xcf, 0x6, 0x3, 0xc0, - 0x7c, 0xf, 0x81, 0xc0, 0x20, - - /* U+003D "=" */ - 0xff, 0xff, 0xc0, 0x0, 0x0, 0x7, 0xff, 0xfe, - - /* U+003E ">" */ - 0x80, 0x70, 0x3e, 0x7, 0xc0, 0xf8, 0xc, 0x1e, - 0x3c, 0xf8, 0x70, 0x20, 0x0, - - /* U+003F "?" */ - 0xfc, 0xfe, 0xf, 0x7, 0x7, 0xf, 0x3e, 0x3c, - 0x30, 0x30, 0x0, 0x0, 0x70, 0x70, - - /* U+0040 "@" */ - 0x1f, 0x7, 0xf9, 0xc3, 0x70, 0x3c, 0x7, 0x8e, - 0xf3, 0xfe, 0x63, 0xcc, 0x79, 0x8f, 0x31, 0xe6, - 0x3c, 0xff, 0x8e, 0xf8, 0x3, 0x80, 0x3e, 0x3, - 0xc0, - - /* U+0041 "A" */ - 0x1e, 0x7, 0x81, 0xe0, 0xfc, 0x3f, 0xc, 0xc3, - 0x31, 0xce, 0x73, 0x9f, 0xe7, 0xfb, 0x87, 0xe1, - 0xf0, 0x30, - - /* U+0042 "B" */ - 0xfe, 0x3f, 0xce, 0x3b, 0x8e, 0xe3, 0xb8, 0xef, - 0xe3, 0xfc, 0xe3, 0xf8, 0x7e, 0x1f, 0x8f, 0xff, - 0xbf, 0xc0, - - /* U+0043 "C" */ - 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe0, 0x38, 0xe, - 0x3, 0x80, 0xe0, 0x38, 0xe, 0x1f, 0xcf, 0x7f, - 0x8f, 0xc0, - - /* U+0044 "D" */ - 0xfe, 0x7f, 0xb9, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0xff, 0xf7, 0xf0, - - /* U+0045 "E" */ - 0xff, 0xff, 0xf8, 0x1c, 0xe, 0x7, 0x3, 0xfd, - 0xfe, 0xe0, 0x70, 0x38, 0x1c, 0xf, 0xff, 0xfc, - - /* U+0046 "F" */ - 0xff, 0xff, 0xf8, 0x1c, 0xe, 0x7, 0x3, 0xff, - 0xff, 0xe0, 0x70, 0x38, 0x1c, 0xe, 0x7, 0x0, - - /* U+0047 "G" */ - 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe0, 0x38, 0xe, - 0x7f, 0x9f, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, - 0x8f, 0xc0, - - /* U+0048 "H" */ - 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0xff, - 0xff, 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1c, - - /* U+0049 "I" */ - 0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, - 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff, - - /* U+004A "J" */ - 0x1f, 0xc7, 0xf0, 0x1c, 0x7, 0x1, 0xc0, 0x70, - 0x1c, 0x7, 0x1, 0xc0, 0x7e, 0x1f, 0xcf, 0x7f, - 0x8f, 0xc0, - - /* U+004B "K" */ - 0xe1, 0xf8, 0x7e, 0x3b, 0x8e, 0xe7, 0x39, 0xcf, - 0xe3, 0xf8, 0xe7, 0x39, 0xce, 0x3b, 0x8e, 0xe1, - 0xf8, 0x70, - - /* U+004C "L" */ - 0xe0, 0x70, 0x38, 0x1c, 0xe, 0x7, 0x3, 0x81, - 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0xf, 0xff, 0xfc, - - /* U+004D "M" */ - 0xf3, 0xfc, 0xfd, 0x3f, 0xcf, 0xff, 0xff, 0xfe, - 0xdf, 0xb7, 0xe1, 0xf8, 0x7e, 0x1f, 0x87, 0xe1, - 0xf8, 0x70, - - /* U+004E "N" */ - 0xe1, 0xf0, 0xfc, 0x7e, 0x3f, 0x9e, 0xcf, 0x67, - 0x9b, 0xcd, 0xe6, 0xf1, 0xf8, 0xfc, 0x7e, 0x1c, - - /* U+004F "O" */ - 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x77, 0xf1, 0xf0, - - /* U+0050 "P" */ - 0xff, 0x3f, 0xee, 0x3f, 0x87, 0xe1, 0xf8, 0xff, - 0xfb, 0xfc, 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0, - 0x38, 0x0, - - /* U+0051 "Q" */ - 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7e, - 0x1f, 0x87, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, - 0x8f, 0x80, 0x70, 0xe, 0x3, 0x80, 0x70, - - /* U+0052 "R" */ - 0xff, 0x3f, 0xee, 0x3f, 0x87, 0xe1, 0xf8, 0xff, - 0xfb, 0xf8, 0xe6, 0x39, 0xce, 0x33, 0x8e, 0xe3, - 0xb8, 0x70, - - /* U+0053 "S" */ - 0x3f, 0x1f, 0xee, 0x3f, 0x87, 0xe0, 0x3e, 0x7, - 0xf0, 0xfe, 0x3, 0xc0, 0x7e, 0x1f, 0xcf, 0x7f, - 0x8f, 0xc0, - - /* U+0054 "T" */ - 0xff, 0xff, 0xf0, 0xe0, 0x38, 0xe, 0x3, 0x80, - 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0, 0x38, 0xe, - 0x3, 0x80, - - /* U+0055 "U" */ - 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x77, 0xf1, 0xf0, - - /* U+0056 "V" */ - 0xc0, 0xf8, 0x7e, 0x1d, 0x86, 0x61, 0x9c, 0xe7, - 0x38, 0xcc, 0x33, 0xe, 0xc3, 0xf0, 0x78, 0x1e, - 0x7, 0x80, - - /* U+0057 "W" */ - 0xce, 0x79, 0xcf, 0x29, 0xe5, 0x3c, 0xa7, 0xd5, - 0xda, 0xb3, 0x56, 0x7b, 0xcf, 0x79, 0xef, 0x38, - 0xe7, 0x1c, 0xe3, 0x80, - - /* U+0058 "X" */ - 0xe1, 0xd8, 0x67, 0x38, 0xcc, 0x3f, 0x7, 0x81, - 0xe0, 0x78, 0x1e, 0xf, 0xc3, 0x31, 0xce, 0xe1, - 0xf8, 0x70, - - /* U+0059 "Y" */ - 0xe0, 0xfc, 0x1d, 0xc7, 0x38, 0xe3, 0xb8, 0x77, - 0x6, 0xc0, 0xf8, 0xe, 0x1, 0xc0, 0x38, 0x7, - 0x0, 0xe0, 0x1c, 0x0, - - /* U+005A "Z" */ - 0xff, 0xff, 0xc0, 0xe0, 0xe0, 0x70, 0x70, 0x70, - 0x38, 0x38, 0x38, 0x1c, 0x1c, 0xf, 0xff, 0xfc, - - /* U+005B "[" */ - 0xff, 0xfe, 0x38, 0xe3, 0x8e, 0x38, 0xe3, 0x8e, - 0x38, 0xe3, 0x8e, 0x38, 0xff, 0xf0, - - /* U+005C "\\" */ - 0xe0, 0x18, 0x7, 0x1, 0xc0, 0x30, 0xe, 0x3, - 0x80, 0x60, 0x1c, 0x3, 0x0, 0xe0, 0x38, 0x6, - 0x1, 0xc0, 0x70, 0xc, 0x3, 0x80, 0x60, 0x1c, - - /* U+005D "]" */ - 0xff, 0xf1, 0xc7, 0x1c, 0x71, 0xc7, 0x1c, 0x71, - 0xc7, 0x1c, 0x71, 0xc7, 0xff, 0xf0, - - /* U+005E "^" */ - 0xc, 0x7, 0x81, 0xe0, 0xfc, 0x33, 0x1c, 0xe6, - 0x19, 0x86, - - /* U+005F "_" */ - 0xff, 0xff, 0xf0, - - /* U+0060 "`" */ - 0xe3, 0x8c, - - /* U+0061 "a" */ - 0x1f, 0x1f, 0xe7, 0x1c, 0x7, 0x3f, 0xdf, 0xfe, - 0x1f, 0x87, 0xe3, 0xff, 0xf3, 0xdc, - - /* U+0062 "b" */ - 0xe0, 0x70, 0x38, 0x1d, 0xcf, 0xf7, 0x1f, 0x8f, - 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x7f, 0xf7, 0x70, - - /* U+0063 "c" */ - 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe0, 0x38, 0xe, - 0x3, 0x87, 0xf3, 0xdf, 0xe3, 0xf0, - - /* U+0064 "d" */ - 0x3, 0x81, 0xc0, 0xe7, 0x77, 0xff, 0x1f, 0x8f, - 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x77, 0xf9, 0xdc, - - /* U+0065 "e" */ - 0x3e, 0x3f, 0xb8, 0xfc, 0x7f, 0xff, 0xff, 0x81, - 0xc0, 0xe3, 0xbf, 0x8f, 0x80, - - /* U+0066 "f" */ - 0xf, 0xc7, 0xf1, 0xc0, 0x70, 0xff, 0xff, 0xf1, - 0xc0, 0x70, 0x1c, 0x7, 0x1, 0xc0, 0x70, 0x1c, - 0x7, 0x0, - - /* U+0067 "g" */ - 0x3b, 0xbf, 0xfd, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xc7, 0xf7, 0xbf, 0xce, 0xe0, 0x70, 0x39, 0xf8, - 0xf8, - - /* U+0068 "h" */ - 0xe0, 0x70, 0x38, 0x1d, 0xcf, 0xf7, 0x1f, 0x8f, - 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1c, - - /* U+0069 "i" */ - 0x1c, 0x7, 0x1, 0xc0, 0x0, 0x0, 0x3f, 0xf, - 0xc0, 0x70, 0x1c, 0x7, 0x1, 0xc0, 0x70, 0x1c, - 0x7, 0xf, 0xff, 0xff, - - /* U+006A "j" */ - 0x7, 0x7, 0x7, 0x0, 0xff, 0xff, 0x7, 0x7, - 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, - 0xf, 0xfe, 0xfc, - - /* U+006B "k" */ - 0xe0, 0x38, 0xe, 0x3, 0x87, 0xe3, 0xb8, 0xee, - 0x73, 0xf8, 0xfe, 0x39, 0xce, 0x33, 0x8e, 0xe1, - 0xb8, 0x70, - - /* U+006C "l" */ - 0xfe, 0x1f, 0xc0, 0x38, 0x7, 0x0, 0xe0, 0x1c, - 0x3, 0x80, 0x70, 0xe, 0x1, 0xc0, 0x38, 0x7, - 0x0, 0x7e, 0x7, 0xc0, - - /* U+006D "m" */ - 0xd9, 0xbf, 0xfc, 0xcf, 0x33, 0xcc, 0xf3, 0x3c, - 0xcf, 0x33, 0xcc, 0xf3, 0x3c, 0xcc, - - /* U+006E "n" */ - 0xee, 0x7f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xc7, 0xe3, 0xf1, 0xf8, 0xe0, - - /* U+006F "o" */ - 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xc7, 0xe3, 0xbf, 0x8f, 0x80, - - /* U+0070 "p" */ - 0xee, 0x7f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xc7, 0xe3, 0xff, 0xbb, 0x9c, 0xe, 0x7, 0x3, - 0x80, - - /* U+0071 "q" */ - 0x3b, 0xbf, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xc7, 0xe3, 0xbf, 0xce, 0xe0, 0x70, 0x38, 0x1c, - 0xe, - - /* U+0072 "r" */ - 0xee, 0x7f, 0xb8, 0xfc, 0x7e, 0x3f, 0x3, 0x81, - 0xc0, 0xe0, 0x70, 0x38, 0x0, - - /* U+0073 "s" */ - 0x1f, 0x1f, 0xf7, 0x1d, 0xc0, 0x7c, 0xf, 0xe0, - 0x3c, 0x7, 0x71, 0xdf, 0xf3, 0xf0, - - /* U+0074 "t" */ - 0x1c, 0x7, 0x1, 0xc3, 0xff, 0xff, 0xc7, 0x1, - 0xc0, 0x70, 0x1c, 0x7, 0x1, 0xc0, 0x70, 0x1f, - 0xc3, 0xf0, - - /* U+0075 "u" */ - 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xc7, 0xe3, 0xbf, 0x8f, 0x80, - - /* U+0076 "v" */ - 0xc0, 0xf8, 0x7e, 0x1d, 0x86, 0x73, 0x8c, 0xc3, - 0x30, 0xfc, 0x1e, 0x7, 0x81, 0xe0, - - /* U+0077 "w" */ - 0xc6, 0x36, 0x66, 0x66, 0x66, 0xf6, 0x6f, 0x66, - 0x96, 0x69, 0x62, 0x94, 0x29, 0x43, 0x9c, 0x39, - 0xc0, - - /* U+0078 "x" */ - 0xe1, 0xdc, 0xe3, 0x30, 0xfc, 0x1e, 0x7, 0x81, - 0xe0, 0xfc, 0x73, 0x9c, 0xee, 0x1c, - - /* U+0079 "y" */ - 0xe0, 0xf8, 0x76, 0x19, 0xce, 0x73, 0x8c, 0xc3, - 0xf0, 0x7c, 0x1e, 0x7, 0x80, 0xe0, 0x30, 0x1c, - 0x6, 0x3, 0x80, - - /* U+007A "z" */ - 0xff, 0xff, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, - 0xe0, 0xe0, 0x7f, 0xff, 0xe0, - - /* U+007B "{" */ - 0x7, 0x87, 0xc3, 0x81, 0xc0, 0xe0, 0x70, 0x38, - 0x1c, 0xfc, 0x7e, 0x3, 0x81, 0xc0, 0xe0, 0x70, - 0x30, 0x1c, 0xf, 0x83, 0xc0, - - /* U+007C "|" */ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, - - /* U+007D "}" */ - 0xf0, 0x7c, 0xe, 0x7, 0x3, 0x81, 0xc0, 0xe0, - 0x70, 0x1f, 0x8f, 0xce, 0x7, 0x3, 0x81, 0xc0, - 0x60, 0x70, 0xf8, 0x78, 0x0, - - /* U+007E "~" */ - 0x78, 0xff, 0x3c, 0xcf, 0x3f, 0xc7, 0x80, - - /* U+0410 "А" */ - 0x1e, 0x7, 0x81, 0xe0, 0xfc, 0x3f, 0xc, 0xc3, - 0x31, 0xce, 0x73, 0x9f, 0xe7, 0xfb, 0x87, 0xe1, - 0xf0, 0x30, - - /* U+0411 "Б" */ - 0xff, 0xbf, 0xee, 0x3, 0x80, 0xe0, 0x3f, 0xcf, - 0xfb, 0x8f, 0xe1, 0xf8, 0x7e, 0x1f, 0x8f, 0xff, - 0xbf, 0xc0, - - /* U+0412 "В" */ - 0xfe, 0x3f, 0xce, 0x3b, 0x8e, 0xe3, 0xb8, 0xef, - 0xe3, 0xfc, 0xe3, 0xf8, 0x7e, 0x1f, 0x8f, 0xff, - 0xbf, 0xc0, - - /* U+0413 "Г" */ - 0xff, 0xff, 0xf8, 0x1c, 0xe, 0x7, 0x3, 0x81, - 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0xe, 0x7, 0x0, - - /* U+0414 "Д" */ - 0x3f, 0xc7, 0xf8, 0xe7, 0x1c, 0xe3, 0x9c, 0x73, - 0x8e, 0x71, 0xce, 0x39, 0xc7, 0x38, 0xe7, 0x38, - 0xef, 0xff, 0xff, 0xf8, 0x3f, 0x7, 0xe0, 0xe0, - - /* U+0415 "Е" */ - 0xff, 0xff, 0xf8, 0x1c, 0xe, 0x7, 0x3, 0xfd, - 0xfe, 0xe0, 0x70, 0x38, 0x1c, 0xf, 0xff, 0xfc, - - /* U+0416 "Ж" */ - 0xe6, 0x76, 0x66, 0x66, 0x67, 0x66, 0x36, 0xc3, - 0x6c, 0x3f, 0xc3, 0x6c, 0x36, 0xc7, 0x6e, 0x66, - 0x66, 0x66, 0x66, 0x6c, 0x63, - - /* U+0417 "З" */ - 0x3f, 0x1f, 0xef, 0x1f, 0x87, 0x1, 0xc7, 0xc1, - 0xf8, 0xf, 0x1, 0xc0, 0x7e, 0x1f, 0xcf, 0x7f, - 0x8f, 0x80, - - /* U+0418 "И" */ - 0xc3, 0xe3, 0xf1, 0xf8, 0xfc, 0xde, 0x6f, 0x37, - 0xb3, 0xd9, 0xfc, 0xfc, 0x7e, 0x3e, 0x1f, 0xc, - - /* U+0419 "Й" */ - 0x63, 0x31, 0x8f, 0x83, 0x80, 0x6, 0x1f, 0x1f, - 0x8f, 0xc7, 0xe7, 0xf3, 0x79, 0xbd, 0x9e, 0xcf, - 0xe7, 0xe3, 0xf1, 0xf8, 0xf8, 0x60, - - /* U+041A "К" */ - 0xe1, 0xf8, 0x7e, 0x3b, 0x8e, 0xe7, 0x39, 0xcf, - 0xe3, 0xf8, 0xe7, 0x39, 0xce, 0x3b, 0x8e, 0xe1, - 0xf8, 0x70, - - /* U+041B "Л" */ - 0x3f, 0xcf, 0xf3, 0x9c, 0xe7, 0x39, 0xce, 0x73, - 0x9c, 0xe7, 0x39, 0xce, 0x73, 0x9d, 0xe7, 0xf1, - 0xf8, 0x70, - - /* U+041C "М" */ - 0xf3, 0xfc, 0xfd, 0x3f, 0xcf, 0xff, 0xff, 0xfe, - 0xdf, 0xb7, 0xe1, 0xf8, 0x7e, 0x1f, 0x87, 0xe1, - 0xf8, 0x70, - - /* U+041D "Н" */ - 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0xff, - 0xff, 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1c, - - /* U+041E "О" */ - 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x77, 0xf1, 0xf0, - - /* U+041F "П" */ - 0xff, 0xff, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1c, - - /* U+0420 "Р" */ - 0xff, 0x3f, 0xee, 0x3f, 0x87, 0xe1, 0xf8, 0xff, - 0xfb, 0xfc, 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0, - 0x38, 0x0, - - /* U+0421 "С" */ - 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe0, 0x38, 0xe, - 0x3, 0x80, 0xe0, 0x38, 0xe, 0x1f, 0xcf, 0x7f, - 0x8f, 0xc0, - - /* U+0422 "Т" */ - 0xff, 0xff, 0xf0, 0xe0, 0x38, 0xe, 0x3, 0x80, - 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0, 0x38, 0xe, - 0x3, 0x80, - - /* U+0423 "У" */ - 0xe1, 0xf8, 0x76, 0x19, 0xce, 0x33, 0x8c, 0xc3, - 0xb0, 0x7c, 0x1e, 0x3, 0x80, 0xc0, 0x70, 0x1c, - 0x6, 0x0, - - /* U+0424 "Ф" */ - 0xc, 0xf, 0xc7, 0xfb, 0xb7, 0xcc, 0xf3, 0x3c, - 0xcf, 0x33, 0xcc, 0xf3, 0x3c, 0xcf, 0xb7, 0x7f, - 0x8f, 0xc0, 0xc0, 0x30, - - /* U+0425 "Х" */ - 0xe1, 0xd8, 0x67, 0x38, 0xcc, 0x3f, 0x7, 0x81, - 0xe0, 0x78, 0x1e, 0xf, 0xc3, 0x31, 0xce, 0xe1, - 0xf8, 0x70, - - /* U+0426 "Ц" */ - 0xe3, 0xb8, 0xee, 0x3b, 0x8e, 0xe3, 0xb8, 0xee, - 0x3b, 0x8e, 0xe3, 0xb8, 0xee, 0x3b, 0x8e, 0xff, - 0xff, 0xf0, 0x1c, 0x7, 0x1, 0xc0, - - /* U+0427 "Ч" */ - 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xff, 0x3f, 0x81, 0xc0, 0xe0, 0x70, 0x38, 0x1c, - - /* U+0428 "Ш" */ - 0xcc, 0xf3, 0x3c, 0xcf, 0x33, 0xcc, 0xf3, 0x3c, - 0xcf, 0x33, 0xcc, 0xf3, 0x3c, 0xcf, 0x33, 0xff, - 0xff, 0xf0, - - /* U+0429 "Щ" */ - 0xcc, 0xd9, 0x9b, 0x33, 0x66, 0x6c, 0xcd, 0x99, - 0xb3, 0x36, 0x66, 0xcc, 0xd9, 0x9b, 0x33, 0x66, - 0x6f, 0xff, 0xff, 0xc0, 0x18, 0x3, - - /* U+042A "Ъ" */ - 0xfc, 0xf, 0xc0, 0x1c, 0x1, 0xc0, 0x1c, 0x1, - 0xfc, 0x1f, 0xe1, 0xcf, 0x1c, 0x71, 0xc7, 0x1c, - 0x71, 0xcf, 0x1f, 0xe1, 0xfc, - - /* U+042B "Ы" */ - 0xc0, 0xf0, 0x3c, 0xf, 0x3, 0xc0, 0xfe, 0x3f, - 0xcf, 0x3b, 0xc6, 0xf1, 0xbc, 0x6f, 0x3b, 0xfc, - 0xfe, 0x30, - - /* U+042C "Ь" */ - 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0, 0x3f, 0xcf, - 0xfb, 0x8f, 0xe1, 0xf8, 0x7e, 0x1f, 0x8f, 0xff, - 0xbf, 0x80, - - /* U+042D "Э" */ - 0x3e, 0x3f, 0xb8, 0xfc, 0x70, 0x38, 0x1c, 0x7e, - 0x3f, 0x3, 0x81, 0xf8, 0xfc, 0x77, 0xf1, 0xf0, - - /* U+042E "Ю" */ - 0xc7, 0xb3, 0xfc, 0xcf, 0x33, 0xcc, 0xff, 0x3f, - 0xcf, 0x33, 0xcc, 0xf3, 0x3c, 0xcf, 0x33, 0xcf, - 0xf1, 0xe0, - - /* U+042F "Я" */ - 0x3f, 0xdf, 0xff, 0x1f, 0x87, 0xe1, 0xfc, 0x77, - 0xfc, 0x7f, 0x19, 0xce, 0x73, 0x1d, 0xc7, 0x71, - 0xf8, 0x70, - - /* U+0430 "а" */ - 0x1f, 0x1f, 0xe7, 0x1c, 0x7, 0x3f, 0xdf, 0xfe, - 0x1f, 0x87, 0xe3, 0xff, 0xf3, 0xdc, - - /* U+0431 "б" */ - 0x1f, 0x3f, 0x9c, 0x1c, 0xe, 0xe7, 0xfb, 0x9f, - 0xc7, 0xe3, 0xf1, 0xf8, 0xfe, 0xf7, 0xf1, 0xf0, - - /* U+0432 "в" */ - 0xff, 0x3f, 0xee, 0x3b, 0x8e, 0xfe, 0x3f, 0xee, - 0x1f, 0x87, 0xe1, 0xff, 0xef, 0xf0, - - /* U+0433 "г" */ - 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, - 0xe0, 0xe0, 0xe0, - - /* U+0434 "д" */ - 0x3f, 0xc7, 0xf8, 0xe7, 0x1c, 0xe3, 0x9c, 0x73, - 0x8e, 0x71, 0xce, 0x71, 0xdf, 0xff, 0xff, 0xf0, - 0x7e, 0xf, 0xc1, 0xc0, - - /* U+0435 "е" */ - 0x3e, 0x3f, 0xb8, 0xfc, 0x7f, 0xff, 0xff, 0x81, - 0xc0, 0xe3, 0xbf, 0x8f, 0x80, - - /* U+0436 "ж" */ - 0xe6, 0x76, 0x66, 0x66, 0x63, 0x6c, 0x36, 0xc3, - 0xfc, 0x36, 0xc3, 0x6e, 0x66, 0x66, 0x66, 0xe6, - 0x70, - - /* U+0437 "з" */ - 0x3f, 0x1f, 0xfe, 0x1c, 0x7, 0x1f, 0x7, 0xe0, - 0x1c, 0x7, 0xe1, 0xdf, 0xe3, 0xf0, - - /* U+0438 "и" */ - 0xc3, 0xe3, 0xf1, 0xf9, 0xfc, 0xde, 0xef, 0x67, - 0xb3, 0xf1, 0xf8, 0xf8, 0x60, - - /* U+0439 "й" */ - 0x63, 0x31, 0x8f, 0x83, 0x80, 0x6, 0x1f, 0x1f, - 0x8f, 0xcf, 0xe6, 0xf7, 0x7b, 0x3f, 0x9f, 0x8f, - 0xc7, 0xc3, - - /* U+043A "к" */ - 0xe1, 0xf8, 0xee, 0x3b, 0x9c, 0xfe, 0x3f, 0x8e, - 0x73, 0x8c, 0xe3, 0xb8, 0x6e, 0x1c, - - /* U+043B "л" */ - 0x3f, 0xcf, 0xf3, 0x9c, 0xe7, 0x39, 0xce, 0x73, - 0x9c, 0xe7, 0x39, 0xfc, 0x7e, 0x1c, - - /* U+043C "м" */ - 0xe1, 0xf8, 0x7f, 0x3f, 0xcf, 0xda, 0xf7, 0xbd, - 0xef, 0x33, 0xc0, 0xf0, 0x3c, 0xc, - - /* U+043D "н" */ - 0xe3, 0xf1, 0xf8, 0xfc, 0x7f, 0xff, 0xff, 0x8f, - 0xc7, 0xe3, 0xf1, 0xf8, 0xe0, - - /* U+043E "о" */ - 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xc7, 0xe3, 0xbf, 0x8f, 0x80, - - /* U+043F "п" */ - 0xff, 0xff, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xc7, 0xe3, 0xf1, 0xf8, 0xe0, - - /* U+0440 "р" */ - 0xee, 0x7f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, - 0xc7, 0xe3, 0xff, 0xbb, 0x9c, 0xe, 0x7, 0x3, - 0x80, - - /* U+0441 "с" */ - 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe0, 0x38, 0xe, - 0x3, 0x87, 0xf3, 0xdf, 0xe3, 0xf0, - - /* U+0442 "т" */ - 0xff, 0xff, 0xf0, 0xe0, 0x38, 0xe, 0x3, 0x80, - 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0, - - /* U+0443 "у" */ - 0xe0, 0xf8, 0x76, 0x19, 0xce, 0x73, 0x8c, 0xc3, - 0xf0, 0x7c, 0x1e, 0x7, 0x80, 0xe0, 0x30, 0x1c, - 0x6, 0x3, 0x80, - - /* U+0444 "ф" */ - 0xc, 0x3, 0x0, 0xc0, 0xfc, 0x7f, 0xbb, 0x7c, - 0xcf, 0x33, 0xcc, 0xf3, 0x3c, 0xcf, 0xb7, 0x7f, - 0x8f, 0xc0, 0xc0, 0x30, 0xc, 0x3, 0x0, - - /* U+0445 "х" */ - 0xe1, 0xdc, 0xe3, 0x30, 0xfc, 0x1e, 0x7, 0x81, - 0xe0, 0xfc, 0x73, 0x9c, 0xee, 0x1c, - - /* U+0446 "ц" */ - 0xe3, 0xb8, 0xee, 0x3b, 0x8e, 0xe3, 0xb8, 0xee, - 0x3b, 0x8e, 0xe3, 0xbf, 0xff, 0xfc, 0x7, 0x1, - 0xc0, 0x70, - - /* U+0447 "ч" */ - 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0xfd, 0xfe, - 0x7, 0x3, 0x81, 0xc0, 0xe0, - - /* U+0448 "ш" */ - 0xcc, 0xf3, 0x3c, 0xcf, 0x33, 0xcc, 0xf3, 0x3c, - 0xcf, 0x33, 0xcc, 0xff, 0xff, 0xfc, - - /* U+0449 "щ" */ - 0xcc, 0xd9, 0x9b, 0x33, 0x66, 0x6c, 0xcd, 0x99, - 0xb3, 0x36, 0x66, 0xcc, 0xdf, 0xff, 0xff, 0x80, - 0x30, 0x6, - - /* U+044A "ъ" */ - 0xfc, 0xf, 0xc0, 0x1c, 0x1, 0xc0, 0x1f, 0xc1, - 0xfe, 0x1c, 0x71, 0xc7, 0x1c, 0x71, 0xfe, 0x1f, - 0xc0, - - /* U+044B "ы" */ - 0xc0, 0xf0, 0x3c, 0xf, 0x3, 0xf8, 0xff, 0x3c, - 0xef, 0x1b, 0xc6, 0xff, 0x3f, 0x8c, - - /* U+044C "ь" */ - 0xe0, 0x38, 0xe, 0x3, 0x80, 0xff, 0x3f, 0xee, - 0x1f, 0x87, 0xe1, 0xff, 0xef, 0xf0, - - /* U+044D "э" */ - 0x1f, 0x1f, 0xe6, 0x3c, 0x7, 0xf, 0xc3, 0xf0, - 0x1d, 0x87, 0x73, 0xdf, 0xe1, 0xf0, - - /* U+044E "ю" */ - 0xc7, 0xb3, 0xfc, 0xcf, 0x33, 0xfc, 0xff, 0x3c, - 0xcf, 0x33, 0xcc, 0xf3, 0xfc, 0x78, - - /* U+044F "я" */ - 0x3f, 0xbf, 0xf8, 0xfc, 0x7e, 0x3b, 0xfc, 0xfe, - 0x77, 0x33, 0xb9, 0xf8, 0xe0, - - /* U+F001 "" */ - 0x0, 0x0, 0x70, 0x0, 0x7f, 0x0, 0x3f, 0xf0, - 0x1f, 0xff, 0x7, 0xff, 0xf0, 0x7f, 0xff, 0x7, - 0xfc, 0x70, 0x7e, 0x7, 0x7, 0x0, 0x70, 0x70, - 0x7, 0x7, 0x0, 0x70, 0x70, 0x7, 0x7, 0x0, - 0x70, 0x70, 0x7f, 0x7, 0xf, 0xf7, 0xf0, 0xff, - 0xff, 0x7, 0xef, 0xf0, 0x10, 0xff, 0x0, 0x3, - 0xc0, 0x0, - - /* U+F015 "" */ - 0x0, 0x38, 0xe0, 0x0, 0xf9, 0xc0, 0x3, 0xfb, - 0x80, 0x1e, 0x3f, 0x0, 0x79, 0x3e, 0x1, 0xe7, - 0x3c, 0xf, 0x9f, 0xbc, 0x3c, 0xff, 0x9e, 0xf3, - 0xff, 0x9e, 0xcf, 0xff, 0x98, 0x3f, 0xff, 0x80, - 0x7f, 0xff, 0x0, 0xfc, 0x7e, 0x1, 0xf8, 0xfc, - 0x3, 0xf1, 0xf8, 0x7, 0xe3, 0xf0, 0xf, 0xc7, - 0xe0, - - /* U+F017 "" */ - 0x3, 0xf8, 0x1, 0xff, 0xc0, 0x7f, 0xfc, 0x1f, - 0xff, 0xc7, 0xf1, 0xfc, 0xfe, 0x3f, 0x9f, 0xc7, - 0xf7, 0xf8, 0xff, 0xff, 0x1f, 0xff, 0xe3, 0xff, - 0xfc, 0x3f, 0xff, 0x83, 0xff, 0xfc, 0x7e, 0xff, - 0xcf, 0x9f, 0xff, 0xf1, 0xff, 0xfc, 0x1f, 0xff, - 0x1, 0xff, 0xc0, 0x1f, 0xf0, 0x0, 0x70, 0x0, - - /* U+F024 "" */ - 0x70, 0x0, 0xf, 0x80, 0x0, 0xf9, 0x0, 0xf, - 0xff, 0xf, 0x7f, 0xff, 0xf7, 0xff, 0xff, 0x7f, - 0xff, 0xf7, 0xff, 0xff, 0x7f, 0xff, 0xf7, 0xff, - 0xff, 0x7f, 0xff, 0xf7, 0xff, 0xff, 0x7f, 0xff, - 0xf7, 0xff, 0xff, 0x7f, 0xff, 0xe7, 0x0, 0xf8, - 0x70, 0x0, 0x7, 0x0, 0x0, 0x70, 0x0, 0x7, - 0x0, 0x0, - - /* U+F027 "" */ - 0x0, 0xc0, 0x3, 0x80, 0xf, 0x0, 0x3e, 0xf, - 0xfc, 0x9f, 0xf9, 0xbf, 0xf1, 0xff, 0xe3, 0xff, - 0xc7, 0xff, 0x9b, 0xff, 0x20, 0x3e, 0x0, 0x3c, - 0x0, 0x38, 0x0, 0x30, 0x0, - - /* U+F028 "" */ - 0x0, 0x0, 0x40, 0x0, 0x0, 0xc0, 0x3, 0x0, - 0xc0, 0xe, 0x18, 0xc0, 0x3c, 0x39, 0xc0, 0xf8, - 0x39, 0xbf, 0xf2, 0x33, 0xff, 0xe6, 0x33, 0xff, - 0xc6, 0x67, 0xff, 0x8c, 0xcf, 0xff, 0x19, 0x9f, - 0xfe, 0x63, 0x3f, 0xfc, 0x8c, 0xe0, 0xf8, 0x39, - 0x80, 0xf0, 0xe7, 0x0, 0xe1, 0x8c, 0x0, 0xc0, - 0x30, 0x0, 0x0, 0xc0, 0x0, 0x1, 0x0, - - /* U+F029 "" */ - 0xff, 0x3f, 0xff, 0xcf, 0xfe, 0x73, 0x9f, 0x9c, - 0xe7, 0xe7, 0x39, 0xff, 0xcf, 0xff, 0xf3, 0xfc, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf3, - 0xcf, 0xfc, 0xff, 0xff, 0x3f, 0xf9, 0xcf, 0xfe, - 0x73, 0xbf, 0xfc, 0xe0, 0xff, 0x3a, 0xc0, - - /* U+F03A "" */ - 0xf0, 0x0, 0xf, 0x3f, 0xff, 0xf3, 0xff, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0x0, 0x0, 0xf3, 0xff, 0xff, 0x3f, - 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xf, 0x0, 0x0, 0xf3, 0xff, 0xff, 0x3f, 0xff, - 0xf0, 0x0, 0x0, - - /* U+F048 "" */ - 0xe0, 0x3f, 0x3, 0xf8, 0x3f, 0xc3, 0xfe, 0x3f, - 0xf3, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xfb, 0xff, 0xcf, 0xfe, 0x3f, 0xf0, 0xff, 0x83, - 0xfc, 0xf, 0xe0, 0x38, - - /* U+F04B "" */ - 0x0, 0x0, 0x3c, 0x0, 0xf, 0xc0, 0x3, 0xfc, - 0x0, 0xff, 0x80, 0x3f, 0xf8, 0xf, 0xff, 0x83, - 0xff, 0xf8, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0x8f, - 0xff, 0x83, 0xff, 0x80, 0xff, 0x80, 0x3f, 0xc0, - 0xf, 0xc0, 0x3, 0xc0, 0x0, 0x0, 0x0, 0x0, - - /* U+F04C "" */ - 0x7e, 0x1f, 0xbf, 0xcf, 0xff, 0xf3, 0xff, 0xfc, - 0xff, 0xff, 0x3f, 0xff, 0xcf, 0xff, 0xf3, 0xff, - 0xfc, 0xff, 0xff, 0x3f, 0xff, 0xcf, 0xff, 0xf3, - 0xff, 0xfc, 0xff, 0xff, 0x3f, 0xff, 0xcf, 0xff, - 0xf3, 0xff, 0xfc, 0xff, 0x7e, 0x1f, 0x80, - - /* U+F04D "" */ - 0x7f, 0xff, 0xbf, 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, 0xff, 0xff, 0x7f, 0xff, 0x80, - - /* U+F051 "" */ - 0xe0, 0x3f, 0x81, 0xfe, 0xf, 0xf8, 0x7f, 0xe3, - 0xff, 0x9f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xef, 0xfe, 0x7f, 0xe3, 0xfe, 0x1f, 0xe0, - 0xfe, 0x7, 0xe0, 0x38, - - /* U+F069 "" */ - 0x0, 0xe0, 0x0, 0x1c, 0x0, 0x3, 0x80, 0x0, - 0x70, 0x6, 0xe, 0xc, 0xf1, 0xc7, 0x9f, 0xbb, - 0xf1, 0xff, 0xfc, 0xf, 0xfe, 0x0, 0x7f, 0x0, - 0xf, 0xe0, 0x7, 0xff, 0x3, 0xff, 0xf8, 0xfd, - 0xdf, 0x9e, 0x38, 0xf3, 0x7, 0x6, 0x0, 0xe0, - 0x0, 0x1c, 0x0, 0x3, 0x80, 0x0, 0x70, 0x0, - - /* U+F06E "" */ - 0x0, 0xfe, 0x0, 0xf, 0xff, 0x80, 0x3e, 0xf, - 0x80, 0xf8, 0xf, 0x83, 0xe3, 0x8f, 0x8f, 0x87, - 0x8f, 0xbf, 0x1f, 0x9f, 0xfe, 0xff, 0x3f, 0xfd, - 0xfe, 0x7e, 0xf9, 0xf8, 0xf8, 0xf9, 0xe3, 0xe0, - 0xf8, 0xf, 0x80, 0xf8, 0x3e, 0x0, 0xff, 0xf0, - 0x0, 0x3f, 0x80, 0x0, - - /* U+F095 "" */ - 0x0, 0x0, 0x0, 0x0, 0x3e, 0x0, 0x7, 0xf0, - 0x0, 0x7f, 0x0, 0x7, 0xf0, 0x0, 0xff, 0x0, - 0x7, 0xf0, 0x0, 0x3e, 0x0, 0x1, 0xe0, 0x0, - 0x3e, 0x0, 0x3, 0xc0, 0x0, 0x7c, 0x0, 0xf, - 0x81, 0xc1, 0xf0, 0x7e, 0x3e, 0xf, 0xff, 0xc0, - 0xff, 0xf8, 0xf, 0xff, 0x0, 0x7f, 0xc0, 0x7, - 0xf0, 0x0, 0x0, 0x0, 0x0, - - /* U+F129 "" */ - 0x3c, 0x7e, 0x7e, 0x7e, 0x3c, 0x0, 0x0, 0xfc, - 0xfc, 0xfc, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, - 0xff, 0xff, 0xff, - - /* U+F185 "" */ - 0x0, 0x60, 0x0, 0x6, 0x0, 0x0, 0xf0, 0x1, - 0xcf, 0x38, 0x1f, 0xff, 0x81, 0xf0, 0xf8, 0xc, - 0xf3, 0x1, 0xdf, 0xb8, 0x7b, 0xfd, 0xef, 0xbf, - 0xdf, 0x7b, 0xfd, 0xe1, 0x9f, 0x98, 0xc, 0xf3, - 0x0, 0xc0, 0x30, 0x1f, 0xf, 0x81, 0xff, 0xf8, - 0x1c, 0xf3, 0x80, 0xf, 0x0, 0x0, 0x60, 0x0, - 0x6, 0x0, - - /* U+F1E6 "" */ - 0x18, 0x30, 0x70, 0x70, 0xe0, 0xe1, 0xc1, 0xc3, - 0x83, 0x80, 0x0, 0x3f, 0xff, 0xff, 0xff, 0x7f, - 0xfc, 0xff, 0xf9, 0xff, 0xf1, 0xff, 0xc3, 0xff, - 0x83, 0xfe, 0x3, 0xf8, 0x1, 0xc0, 0x3, 0x80, - 0x7, 0x0, 0xe, 0x0, - - /* U+F1FC "" */ - 0x0, 0x0, 0xf0, 0x0, 0x1f, 0x0, 0x3, 0xf0, - 0x0, 0x7e, 0x0, 0xf, 0xe0, 0x3, 0xfc, 0x0, - 0x7f, 0xc0, 0xf, 0xf8, 0x0, 0xff, 0x80, 0x1f, - 0xf0, 0x0, 0xfe, 0x0, 0xf, 0xe0, 0xe, 0x7c, - 0x1, 0xf8, 0x0, 0x9f, 0xc0, 0xf, 0xfc, 0x0, - 0x7f, 0xc0, 0x7, 0xf8, 0x0, 0x1f, 0x0, 0x0, - - /* U+F201 "" */ - 0x40, 0x0, 0x7, 0x0, 0x0, 0x38, 0x1, 0xf9, - 0xc0, 0x7, 0xce, 0x18, 0x1e, 0x71, 0xe1, 0xf3, - 0x9f, 0x9d, 0x9d, 0xff, 0xc4, 0xe6, 0x7c, 0x7, - 0x1, 0xc0, 0x38, 0x0, 0x1, 0xc0, 0x0, 0xe, - 0x0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xe0, - - /* U+F21E "" */ - 0x1e, 0x7, 0x83, 0xf9, 0xfe, 0x7f, 0xff, 0xef, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xfc, - 0xf7, 0xf7, 0xd6, 0x3e, 0x79, 0x6b, 0xe0, 0x34, - 0x80, 0x1f, 0x9f, 0x80, 0xf9, 0xf0, 0x7, 0xfe, - 0x0, 0x3f, 0xc0, 0x1, 0xf8, 0x0, 0xf, 0x0, - 0x0, 0x60, 0x0, - - /* U+F240 "" */ - 0x7f, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xb8, 0x0, - 0x1, 0xfd, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0x7f, - 0x7f, 0xff, 0x9f, 0xbf, 0xff, 0xcf, 0xdf, 0xff, - 0xef, 0xe0, 0x0, 0x7, 0xf0, 0x0, 0x3, 0xff, - 0xff, 0xff, 0xcf, 0xff, 0xff, 0xe0, - - /* U+F241 "" */ - 0x7f, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xb8, 0x0, - 0x1, 0xfd, 0xff, 0xe0, 0xfe, 0xff, 0xf0, 0x7f, - 0x7f, 0xf8, 0x1f, 0xbf, 0xfc, 0xf, 0xdf, 0xfe, - 0xf, 0xe0, 0x0, 0x7, 0xf0, 0x0, 0x3, 0xff, - 0xff, 0xff, 0xcf, 0xff, 0xff, 0xe0, - - /* U+F242 "" */ - 0x7f, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xb8, 0x0, - 0x1, 0xfd, 0xfe, 0x0, 0xfe, 0xff, 0x0, 0x7f, - 0x7f, 0x80, 0x1f, 0xbf, 0xc0, 0xf, 0xdf, 0xe0, - 0xf, 0xe0, 0x0, 0x7, 0xf0, 0x0, 0x3, 0xff, - 0xff, 0xff, 0xcf, 0xff, 0xff, 0xe0, - - /* U+F243 "" */ - 0x7f, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xb8, 0x0, - 0x1, 0xfd, 0xf0, 0x0, 0xfe, 0xf8, 0x0, 0x7f, - 0x7c, 0x0, 0x1f, 0xbe, 0x0, 0xf, 0xdf, 0x0, - 0xf, 0xe0, 0x0, 0x7, 0xf0, 0x0, 0x3, 0xff, - 0xff, 0xff, 0xcf, 0xff, 0xff, 0xe0, - - /* U+F244 "" */ - 0x7f, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xb8, 0x0, - 0x1, 0xfc, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x1f, 0x80, 0x0, 0xf, 0xc0, 0x0, - 0xf, 0xe0, 0x0, 0x7, 0xf0, 0x0, 0x3, 0xff, - 0xff, 0xff, 0xcf, 0xff, 0xff, 0xe0, - - /* U+F252 "" */ - 0xff, 0xff, 0xff, 0xfd, 0x80, 0x33, 0x80, 0xe7, - 0xff, 0xc7, 0xff, 0xf, 0xfe, 0xf, 0xf8, 0xf, - 0xe0, 0xf, 0x80, 0x7f, 0xc0, 0xe3, 0x83, 0x83, - 0x86, 0x3, 0x1f, 0xff, 0x3f, 0xfe, 0x7f, 0xfd, - 0xff, 0xff, 0xff, 0xf8, - - /* U+F293 "" */ - 0x7, 0xe0, 0x3f, 0xe0, 0xfb, 0xe3, 0xf3, 0xe7, - 0xe3, 0xdf, 0xd3, 0xf9, 0xb3, 0xf9, 0x4f, 0xf8, - 0x3f, 0xf8, 0xff, 0xf1, 0xff, 0xc1, 0xff, 0x29, - 0xfc, 0xd9, 0xff, 0xa7, 0xbf, 0x1e, 0x7e, 0x7c, - 0x7d, 0xf0, 0x7f, 0xe0, 0x7f, 0x0, - - /* U+F294 "" */ - 0x0, 0x0, 0x80, 0x18, 0x3, 0x80, 0x78, 0x8d, - 0xb9, 0x9b, 0xb6, 0x3f, 0x83, 0xe0, 0x38, 0x7, - 0x81, 0xf8, 0x6d, 0x99, 0x9a, 0x36, 0x7, 0x80, - 0xe0, 0x18, 0x2, 0x0, 0x0, - - /* U+F2F2 "" */ - 0x7, 0xe0, 0x7, 0xe0, 0x1, 0x80, 0x3, 0xc0, - 0xf, 0xf2, 0x1f, 0xff, 0x3e, 0x7e, 0x7e, 0x7e, - 0xfe, 0x7e, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x7f, - 0xfe, 0x7f, 0xff, 0xff, 0x7f, 0xfe, 0x7f, 0xfe, - 0x3f, 0xfc, 0x1f, 0xf8, 0x7, 0xe0, - - /* U+F3DD "" */ - 0x40, 0x0, 0x40, 0x70, 0x0, 0x7e, 0x3c, 0x0, - 0x3f, 0x8f, 0x80, 0x1f, 0x81, 0xe0, 0x1f, 0xc0, - 0x78, 0xf, 0xe0, 0x1e, 0x7, 0xf0, 0x3, 0xc1, - 0xf8, 0x0, 0xf0, 0x78, 0x0, 0x3c, 0x3c, 0x0, - 0xf, 0xbe, 0x0, 0x1, 0xfe, 0x0, 0x0, 0x7e, - 0x0, 0x1c, 0x1f, 0x0, 0x7f, 0x3, 0xc0, 0x3f, - 0xf0, 0xf0, 0x1f, 0xfc, 0x3c, 0xf, 0xfe, 0x7, - 0x87, 0xfe, 0x1, 0xe3, 0xf8, 0x0, 0x70, 0x80, - 0x0, 0x10, - - /* U+F3FD "" */ - 0x0, 0xfe, 0x0, 0x7, 0xff, 0x0, 0x3f, 0xbf, - 0x80, 0xfe, 0x2f, 0x83, 0xfe, 0xcf, 0x8f, 0x3f, - 0x27, 0x9e, 0x7e, 0x4f, 0x3f, 0xfc, 0xfe, 0xff, - 0xf3, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xcf, 0xff, - 0xfe, 0x3f, 0xfe, 0x78, 0x3c, 0xff, 0xf0, 0x7f, - 0xdf, 0xe0, 0xff, 0x3f, 0xff, 0xfe, 0x3f, 0xff, - 0xf8, - - /* U+F45D "" */ - 0x0, 0x10, 0x0, 0xf, 0xe0, 0x3, 0xff, 0x80, - 0x7f, 0xfc, 0xf, 0xff, 0xe0, 0xff, 0xfe, 0x7, - 0xff, 0xe2, 0x3f, 0xff, 0x31, 0xff, 0xf3, 0x8f, - 0xff, 0x3e, 0x7f, 0xf3, 0xf3, 0xc2, 0x1f, 0x90, - 0x0, 0xfc, 0x3c, 0x1f, 0xe7, 0xe3, 0xfe, 0xff, - 0x7e, 0xef, 0xff, 0xc6, 0xff, 0x78, 0x7, 0xe3, - 0x0, 0x3c, - - /* U+F54B "" */ - 0x0, 0xf, 0xf8, 0x1, 0xdf, 0xff, 0x1, 0xef, - 0xff, 0xc0, 0xf7, 0xff, 0xf0, 0x7b, 0xff, 0xf8, - 0x1d, 0xff, 0xfc, 0x0, 0x1f, 0xfc, 0x0, 0x3, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7, 0xf8, 0x0, 0xf, 0xfe, - 0x3, 0xbf, 0xff, 0x83, 0xdf, 0xff, 0xc1, 0xef, - 0xff, 0xe0, 0xf7, 0xff, 0xe0, 0x3b, 0xff, 0xe0, - 0x0, 0x7f, 0xc0, 0x0, - - /* U+F560 "" */ - 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0xf, 0x0, - 0x1, 0xf0, 0x8, 0x3e, 0x1, 0xc7, 0xc4, 0x1e, - 0xf8, 0xe1, 0xff, 0x1f, 0xf, 0xe3, 0xf0, 0x7c, - 0x7e, 0x23, 0x8f, 0xc7, 0x11, 0xf8, 0xf8, 0x3f, - 0xf, 0xc7, 0xe0, 0x7e, 0xfc, 0x3, 0xff, 0x80, - 0x1f, 0xf0, 0x0, 0xfe, 0x0, 0x7, 0xc0, 0x0, - 0x38, 0x0, 0x1, 0x0, 0x0, - - /* U+F569 "" */ - 0x0, 0x0, 0x4, 0x0, 0x0, 0x3c, 0x0, 0x0, - 0xf0, 0x0, 0x7, 0xc0, 0x1f, 0xfe, 0x3, 0xff, - 0xfe, 0xf, 0x87, 0xfe, 0x38, 0x3e, 0xe, 0xc0, - 0xf8, 0x7, 0x81, 0xc0, 0xf, 0x0, 0x0, 0x1f, - 0x80, 0x0, 0xff, 0xe0, 0xf, 0xff, 0xff, 0xff, - 0xf9, 0xff, 0xf3, 0xf3, 0xe3, 0xe7, 0xe7, 0xc7, - 0xce, 0xcf, 0x8f, 0x98, 0x9f, 0x1f, 0x20, 0x3e, - 0x3e, 0x0, 0x4, 0x60, 0x0, - - /* U+F59F "" */ - 0x0, 0x78, 0x0, 0x7, 0xf8, 0x0, 0x1f, 0xe0, - 0x0, 0xff, 0xc0, 0x3, 0xff, 0x0, 0xf, 0xfc, - 0x0, 0x3f, 0xf0, 0x47, 0x7f, 0x87, 0x7d, 0xfe, - 0x7f, 0xf3, 0xf3, 0xff, 0xc7, 0x8f, 0xff, 0x5c, - 0xbf, 0xfd, 0xb6, 0xff, 0xf6, 0x1b, 0xff, 0xdf, - 0xef, 0xff, 0x7f, 0xbf, 0xfd, 0xfe, 0xff, 0xf7, - 0xfb, 0xff, 0x3, 0xef, 0x30, 0x1, 0xb0, - - /* U+F5A0 "" */ - 0x0, 0x78, 0x0, 0x7, 0xf8, 0x0, 0x1f, 0xe0, - 0x0, 0xf3, 0xc0, 0x3, 0x87, 0x0, 0xf, 0x3c, - 0x0, 0x9f, 0xe1, 0xcf, 0x7f, 0x9f, 0xfc, 0xfc, - 0xff, 0xf1, 0xe3, 0xff, 0xd7, 0xaf, 0xff, 0x4d, - 0xbf, 0xfd, 0x86, 0xff, 0xf7, 0xfb, 0xff, 0xdf, - 0xef, 0xff, 0x7f, 0xbf, 0xfd, 0xfe, 0xff, 0xc0, - 0xfb, 0xcc, 0x0, 0x6c, 0x0, - - /* U+F6A9 "" */ - 0x0, 0xc0, 0x0, 0x1c, 0x0, 0x3, 0xc0, 0x0, - 0x7c, 0x0, 0xff, 0xc6, 0x2f, 0xfc, 0x77, 0xff, - 0xc7, 0xef, 0xfc, 0x3c, 0xff, 0xc7, 0xef, 0xfc, - 0x77, 0xff, 0xc6, 0x20, 0x7c, 0x0, 0x3, 0xc0, - 0x0, 0x1c, 0x0, 0x0, 0xc0, 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 = 192, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1, .adv_w = 192, .box_w = 3, .box_h = 14, .ofs_x = 4, .ofs_y = 0}, - {.bitmap_index = 7, .adv_w = 192, .box_w = 7, .box_h = 6, .ofs_x = 3, .ofs_y = 8}, - {.bitmap_index = 13, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 33, .adv_w = 192, .box_w = 10, .box_h = 20, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 58, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 79, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 99, .adv_w = 192, .box_w = 3, .box_h = 6, .ofs_x = 5, .ofs_y = 8}, - {.bitmap_index = 102, .adv_w = 192, .box_w = 7, .box_h = 19, .ofs_x = 3, .ofs_y = -2}, - {.bitmap_index = 119, .adv_w = 192, .box_w = 7, .box_h = 19, .ofs_x = 2, .ofs_y = -2}, - {.bitmap_index = 136, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, - {.bitmap_index = 149, .adv_w = 192, .box_w = 10, .box_h = 9, .ofs_x = 1, .ofs_y = 2}, - {.bitmap_index = 161, .adv_w = 192, .box_w = 5, .box_h = 6, .ofs_x = 3, .ofs_y = -4}, - {.bitmap_index = 165, .adv_w = 192, .box_w = 6, .box_h = 2, .ofs_x = 3, .ofs_y = 5}, - {.bitmap_index = 167, .adv_w = 192, .box_w = 4, .box_h = 3, .ofs_x = 4, .ofs_y = 0}, - {.bitmap_index = 169, .adv_w = 192, .box_w = 10, .box_h = 19, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 193, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 211, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 227, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 243, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 261, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 277, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 295, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 313, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 331, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 349, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 367, .adv_w = 192, .box_w = 3, .box_h = 11, .ofs_x = 4, .ofs_y = 0}, - {.bitmap_index = 372, .adv_w = 192, .box_w = 5, .box_h = 15, .ofs_x = 3, .ofs_y = -4}, - {.bitmap_index = 382, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 1}, - {.bitmap_index = 395, .adv_w = 192, .box_w = 9, .box_h = 7, .ofs_x = 2, .ofs_y = 3}, - {.bitmap_index = 403, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 1}, - {.bitmap_index = 416, .adv_w = 192, .box_w = 8, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 430, .adv_w = 192, .box_w = 11, .box_h = 18, .ofs_x = 1, .ofs_y = -4}, - {.bitmap_index = 455, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 473, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 491, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 509, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 525, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 541, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 557, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 575, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 591, .adv_w = 192, .box_w = 8, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 605, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 623, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 641, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 657, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 675, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 691, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 707, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 725, .adv_w = 192, .box_w = 10, .box_h = 18, .ofs_x = 1, .ofs_y = -4}, - {.bitmap_index = 748, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 766, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 784, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 802, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 818, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 836, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 856, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 874, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 894, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 910, .adv_w = 192, .box_w = 6, .box_h = 18, .ofs_x = 4, .ofs_y = -2}, - {.bitmap_index = 924, .adv_w = 192, .box_w = 10, .box_h = 19, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 948, .adv_w = 192, .box_w = 6, .box_h = 18, .ofs_x = 3, .ofs_y = -2}, - {.bitmap_index = 962, .adv_w = 192, .box_w = 10, .box_h = 8, .ofs_x = 1, .ofs_y = 7}, - {.bitmap_index = 972, .adv_w = 192, .box_w = 10, .box_h = 2, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 975, .adv_w = 192, .box_w = 5, .box_h = 3, .ofs_x = 3, .ofs_y = 13}, - {.bitmap_index = 977, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 991, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1007, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1021, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1037, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1050, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1068, .adv_w = 192, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = -4}, - {.bitmap_index = 1085, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1101, .adv_w = 192, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1121, .adv_w = 192, .box_w = 8, .box_h = 19, .ofs_x = 1, .ofs_y = -4}, - {.bitmap_index = 1140, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1158, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1178, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1192, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1205, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1218, .adv_w = 192, .box_w = 9, .box_h = 15, .ofs_x = 2, .ofs_y = -4}, - {.bitmap_index = 1235, .adv_w = 192, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = -4}, - {.bitmap_index = 1252, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1265, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1279, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1297, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1310, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1324, .adv_w = 192, .box_w = 12, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1341, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1355, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = -4}, - {.bitmap_index = 1374, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1387, .adv_w = 192, .box_w = 9, .box_h = 18, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 1408, .adv_w = 192, .box_w = 3, .box_h = 18, .ofs_x = 5, .ofs_y = -2}, - {.bitmap_index = 1415, .adv_w = 192, .box_w = 9, .box_h = 18, .ofs_x = 2, .ofs_y = -2}, - {.bitmap_index = 1436, .adv_w = 192, .box_w = 10, .box_h = 5, .ofs_x = 1, .ofs_y = 5}, - {.bitmap_index = 1443, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1461, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1479, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1497, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1513, .adv_w = 192, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 1537, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1553, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1574, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1592, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1608, .adv_w = 192, .box_w = 9, .box_h = 19, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1630, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1648, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1666, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1684, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1700, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1716, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1732, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1750, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1768, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1786, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1804, .adv_w = 192, .box_w = 10, .box_h = 16, .ofs_x = 1, .ofs_y = -1}, - {.bitmap_index = 1824, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1842, .adv_w = 192, .box_w = 10, .box_h = 17, .ofs_x = 2, .ofs_y = -3}, - {.bitmap_index = 1864, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1880, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1898, .adv_w = 192, .box_w = 11, .box_h = 16, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 1920, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1941, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1959, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1977, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1993, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2011, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2029, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2043, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2059, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2073, .adv_w = 192, .box_w = 8, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2084, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 2104, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2117, .adv_w = 192, .box_w = 12, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 2134, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2148, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2161, .adv_w = 192, .box_w = 9, .box_h = 16, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2179, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2193, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2207, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2221, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2234, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2247, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2260, .adv_w = 192, .box_w = 9, .box_h = 15, .ofs_x = 2, .ofs_y = -4}, - {.bitmap_index = 2277, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2291, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2305, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = -4}, - {.bitmap_index = 2324, .adv_w = 192, .box_w = 10, .box_h = 18, .ofs_x = 1, .ofs_y = -4}, - {.bitmap_index = 2347, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2361, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = -3}, - {.bitmap_index = 2379, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2392, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2406, .adv_w = 192, .box_w = 11, .box_h = 13, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 2424, .adv_w = 192, .box_w = 12, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 2441, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2455, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 2469, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2483, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2497, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 2510, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 2560, .adv_w = 360, .box_w = 23, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 2609, .adv_w = 320, .box_w = 19, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 2657, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 2707, .adv_w = 240, .box_w = 15, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 2736, .adv_w = 360, .box_w = 23, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 2791, .adv_w = 280, .box_w = 18, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 2830, .adv_w = 320, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 2873, .adv_w = 280, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = -1}, - {.bitmap_index = 2901, .adv_w = 280, .box_w = 18, .box_h = 21, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 2949, .adv_w = 280, .box_w = 18, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 2988, .adv_w = 280, .box_w = 18, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 3027, .adv_w = 280, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = -1}, - {.bitmap_index = 3055, .adv_w = 320, .box_w = 19, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 3103, .adv_w = 360, .box_w = 23, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 3147, .adv_w = 320, .box_w = 20, .box_h = 21, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 3200, .adv_w = 120, .box_w = 8, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 3219, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 3269, .adv_w = 240, .box_w = 15, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 3305, .adv_w = 320, .box_w = 20, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 3353, .adv_w = 320, .box_w = 21, .box_h = 15, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 3393, .adv_w = 320, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 3436, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, - {.bitmap_index = 3474, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, - {.bitmap_index = 3512, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, - {.bitmap_index = 3550, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, - {.bitmap_index = 3588, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, - {.bitmap_index = 3626, .adv_w = 240, .box_w = 15, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 3662, .adv_w = 280, .box_w = 15, .box_h = 20, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 3700, .adv_w = 200, .box_w = 11, .box_h = 21, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 3729, .adv_w = 280, .box_w = 16, .box_h = 19, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 3767, .adv_w = 400, .box_w = 25, .box_h = 21, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 3833, .adv_w = 360, .box_w = 23, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 3882, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 3932, .adv_w = 400, .box_w = 25, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 3992, .adv_w = 320, .box_w = 20, .box_h = 21, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 4045, .adv_w = 360, .box_w = 23, .box_h = 21, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 4106, .adv_w = 360, .box_w = 22, .box_h = 20, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 4161, .adv_w = 360, .box_w = 22, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 4214, .adv_w = 320, .box_w = 20, .box_h = 15, .ofs_x = 0, .ofs_y = 0} -}; - -/*--------------------- - * CHARACTER MAPPING - *--------------------*/ - -static const uint16_t unicode_list_2[] = { - 0x0, 0x14, 0x16, 0x23, 0x26, 0x27, 0x28, 0x39, - 0x47, 0x4a, 0x4b, 0x4c, 0x50, 0x68, 0x6d, 0x94, - 0x128, 0x184, 0x1e5, 0x1fb, 0x200, 0x21d, 0x23f, 0x240, - 0x241, 0x242, 0x243, 0x251, 0x292, 0x293, 0x2f1, 0x3dc, - 0x3fc, 0x45c, 0x54a, 0x55f, 0x568, 0x59e, 0x59f, 0x6a8 -}; - -/*Collect the unicode lists and glyph_id offsets*/ -static const lv_font_fmt_txt_cmap_t cmaps[] = -{ - { - .range_start = 32, .range_length = 95, .glyph_id_start = 1, - .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY - }, - { - .range_start = 1040, .range_length = 64, .glyph_id_start = 96, - .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY - }, - { - .range_start = 61441, .range_length = 1705, .glyph_id_start = 160, - .unicode_list = unicode_list_2, .glyph_id_ofs_list = NULL, .list_length = 40, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY - } -}; - - - -/*-------------------- - * ALL CUSTOM DATA - *--------------------*/ - -#if LV_VERSION_CHECK(8, 0, 0) -/*Store all the custom data of the font*/ -static lv_font_fmt_txt_glyph_cache_t cache; -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 = 3, - .bpp = 1, - .kern_classes = 0, - .bitmap_format = 0, -#if LV_VERSION_CHECK(8, 0, 0) - .cache = &cache -#endif -}; - - -/*----------------- - * PUBLIC FONT - *----------------*/ - -/*Initialize a public general font descriptor*/ -#if LV_VERSION_CHECK(8, 0, 0) -const lv_font_t jetbrains_mono_bold_20 = { -#else -lv_font_t jetbrains_mono_bold_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 = 23, /*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 = -3, - .underline_thickness = 1, -#endif - .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ -}; - - - -#endif /*#if JETBRAINS_MONO_BOLD_20*/ - diff --git a/src/displayapp/fonts/jetbrains_mono_bold_20.c_zero.patch b/src/displayapp/fonts/jetbrains_mono_bold_20.c_zero.patch new file mode 100644 index 0000000..ecb9966 --- /dev/null +++ b/src/displayapp/fonts/jetbrains_mono_bold_20.c_zero.patch @@ -0,0 +1,6 @@ +91,92c91,92 +< 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7f, +< 0xdf, 0xf7, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, +--- +> 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7e, +> 0xdf, 0xb7, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, diff --git a/src/displayapp/fonts/jetbrains_mono_extrabold_compressed.c b/src/displayapp/fonts/jetbrains_mono_extrabold_compressed.c deleted file mode 100644 index ab0a5c4..0000000 --- a/src/displayapp/fonts/jetbrains_mono_extrabold_compressed.c +++ /dev/null @@ -1,523 +0,0 @@ -/******************************************************************************* - * Size: 80 px - * Bpp: 1 - * Opts: - ******************************************************************************/ - -#ifdef LV_LVGL_H_INCLUDE_SIMPLE -#include "lvgl.h" -#else -#include "lvgl/lvgl.h" -#endif - -#ifndef JETBRAINS_MONO_EXTRABOLD_COMPRESSED -#define JETBRAINS_MONO_EXTRABOLD_COMPRESSED 1 -#endif - -#if JETBRAINS_MONO_EXTRABOLD_COMPRESSED - -/*----------------- - * BITMAPS - *----------------*/ - -/*Store the image of the glyphs*/ -static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { - /* U+0030 "0" */ - 0x0, 0x3, 0xff, 0x80, 0x0, 0x0, 0x3f, 0xff, - 0xe0, 0x0, 0x1, 0xff, 0xff, 0xf0, 0x0, 0xf, - 0xff, 0xff, 0xf8, 0x0, 0x3f, 0xff, 0xff, 0xf8, - 0x0, 0xff, 0xff, 0xff, 0xf8, 0x3, 0xff, 0xff, - 0xff, 0xf8, 0xf, 0xff, 0xff, 0xff, 0xf8, 0x3f, - 0xff, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, - 0xf1, 0xff, 0xfc, 0x7, 0xff, 0xf3, 0xff, 0xe0, - 0x3, 0xff, 0xe7, 0xff, 0x80, 0x3, 0xff, 0xdf, - 0xfe, 0x0, 0x3, 0xff, 0xff, 0xfc, 0x0, 0x3, - 0xff, 0xff, 0xf0, 0x0, 0x7, 0xff, 0xff, 0xe0, - 0x0, 0xf, 0xff, 0xff, 0xc0, 0x0, 0x1f, 0xff, - 0xff, 0x80, 0x0, 0x3f, 0xff, 0xff, 0x0, 0x0, - 0x7f, 0xff, 0xfe, 0x0, 0x0, 0xff, 0xff, 0xfc, - 0x0, 0x1, 0xff, 0xff, 0xf8, 0x0, 0x3, 0xff, - 0xff, 0xf0, 0x0, 0x7, 0xff, 0xff, 0xe0, 0x7c, - 0xf, 0xff, 0xff, 0xc1, 0xfe, 0x1f, 0xff, 0xff, - 0x87, 0xfc, 0x3f, 0xff, 0xff, 0x1f, 0xfc, 0x7f, - 0xff, 0xfe, 0x3f, 0xf8, 0xff, 0xff, 0xfc, 0x7f, - 0xf1, 0xff, 0xff, 0xf8, 0xff, 0xe3, 0xff, 0xff, - 0xf1, 0xff, 0xc7, 0xff, 0xff, 0xe1, 0xff, 0xf, - 0xff, 0xff, 0xc1, 0xfc, 0x1f, 0xff, 0xff, 0x81, - 0xf0, 0x3f, 0xff, 0xff, 0x0, 0x0, 0x7f, 0xff, - 0xfe, 0x0, 0x0, 0xff, 0xff, 0xfc, 0x0, 0x1, - 0xff, 0xff, 0xf8, 0x0, 0x3, 0xff, 0xff, 0xf0, - 0x0, 0x7, 0xff, 0xff, 0xe0, 0x0, 0xf, 0xff, - 0xff, 0xc0, 0x0, 0x1f, 0xff, 0xff, 0x80, 0x0, - 0x3f, 0xff, 0xff, 0x0, 0x0, 0x7f, 0xff, 0xfe, - 0x0, 0x0, 0xff, 0xff, 0xfe, 0x0, 0x1, 0xff, - 0xff, 0xfc, 0x0, 0x7, 0xff, 0xbf, 0xfc, 0x0, - 0x1f, 0xfe, 0x7f, 0xfc, 0x0, 0x7f, 0xfc, 0xff, - 0xfe, 0x3, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, - 0xe1, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, - 0xff, 0xff, 0x1, 0xff, 0xff, 0xff, 0xfc, 0x1, - 0xff, 0xff, 0xff, 0xf0, 0x1, 0xff, 0xff, 0xff, - 0xc0, 0x1, 0xff, 0xff, 0xff, 0x0, 0x0, 0xff, - 0xff, 0xf8, 0x0, 0x0, 0x7f, 0xff, 0xc0, 0x0, - 0x0, 0x1f, 0xfc, 0x0, 0x0, - - /* U+0031 "1" */ - 0x0, 0x3, 0xff, 0xe0, 0x0, 0x0, 0x3f, 0xff, - 0x80, 0x0, 0x1, 0xff, 0xfe, 0x0, 0x0, 0x1f, - 0xff, 0xf8, 0x0, 0x0, 0xff, 0xff, 0xe0, 0x0, - 0x7, 0xff, 0xff, 0x80, 0x0, 0x7f, 0xff, 0xfe, - 0x0, 0x3, 0xff, 0xff, 0xf8, 0x0, 0x3f, 0xff, - 0xff, 0xe0, 0x1, 0xff, 0xff, 0xff, 0x80, 0xf, - 0xff, 0xff, 0xfe, 0x0, 0x3f, 0xff, 0xff, 0xf8, - 0x0, 0xff, 0xfd, 0xff, 0xe0, 0x3, 0xff, 0xc7, - 0xff, 0x80, 0xf, 0xfe, 0x1f, 0xfe, 0x0, 0x3f, - 0xe0, 0x7f, 0xf8, 0x0, 0xff, 0x1, 0xff, 0xe0, - 0x3, 0xf8, 0x7, 0xff, 0x80, 0xf, 0x80, 0x1f, - 0xfe, 0x0, 0x3c, 0x0, 0x7f, 0xf8, 0x0, 0xe0, - 0x1, 0xff, 0xe0, 0x2, 0x0, 0x7, 0xff, 0x80, - 0x0, 0x0, 0x1f, 0xfe, 0x0, 0x0, 0x0, 0x7f, - 0xf8, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, - 0x7, 0xff, 0x80, 0x0, 0x0, 0x1f, 0xfe, 0x0, - 0x0, 0x0, 0x7f, 0xf8, 0x0, 0x0, 0x1, 0xff, - 0xe0, 0x0, 0x0, 0x7, 0xff, 0x80, 0x0, 0x0, - 0x1f, 0xfe, 0x0, 0x0, 0x0, 0x7f, 0xf8, 0x0, - 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x7, 0xff, - 0x80, 0x0, 0x0, 0x1f, 0xfe, 0x0, 0x0, 0x0, - 0x7f, 0xf8, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, - 0x0, 0x7, 0xff, 0x80, 0x0, 0x0, 0x1f, 0xfe, - 0x0, 0x0, 0x0, 0x7f, 0xf8, 0x0, 0x0, 0x1, - 0xff, 0xe0, 0x0, 0x0, 0x7, 0xff, 0x80, 0x0, - 0x0, 0x1f, 0xfe, 0x0, 0x0, 0x0, 0x7f, 0xf8, - 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x7, - 0xff, 0x80, 0x0, 0x0, 0x1f, 0xfe, 0x0, 0x0, - 0x0, 0x7f, 0xf8, 0x0, 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, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xc0, - - /* U+0032 "2" */ - 0x0, 0x1, 0xff, 0x80, 0x0, 0x0, 0x3f, 0xff, - 0xe0, 0x0, 0x1, 0xff, 0xff, 0xf8, 0x0, 0xf, - 0xff, 0xff, 0xf8, 0x0, 0x3f, 0xff, 0xff, 0xf8, - 0x0, 0xff, 0xff, 0xff, 0xfc, 0x3, 0xff, 0xff, - 0xff, 0xf8, 0xf, 0xff, 0xff, 0xff, 0xf8, 0x1f, - 0xff, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, - 0xf0, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xfc, - 0xf, 0xff, 0xe7, 0xff, 0xe0, 0xf, 0xff, 0xcf, - 0xff, 0x80, 0xf, 0xff, 0xff, 0xfe, 0x0, 0xf, - 0xff, 0xff, 0xfc, 0x0, 0x1f, 0xff, 0xff, 0xf0, - 0x0, 0x1f, 0xff, 0xff, 0xe0, 0x0, 0x3f, 0xff, - 0xff, 0xc0, 0x0, 0x7f, 0xf8, 0x0, 0x0, 0x0, - 0xff, 0xf0, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, - 0x0, 0x3, 0xff, 0xc0, 0x0, 0x0, 0xf, 0xff, - 0x0, 0x0, 0x0, 0x1f, 0xfe, 0x0, 0x0, 0x0, - 0x7f, 0xfc, 0x0, 0x0, 0x0, 0xff, 0xf8, 0x0, - 0x0, 0x3, 0xff, 0xe0, 0x0, 0x0, 0xf, 0xff, - 0xc0, 0x0, 0x0, 0x3f, 0xff, 0x0, 0x0, 0x0, - 0xff, 0xfc, 0x0, 0x0, 0x3, 0xff, 0xf8, 0x0, - 0x0, 0xf, 0xff, 0xe0, 0x0, 0x0, 0x3f, 0xff, - 0x80, 0x0, 0x0, 0xff, 0xfe, 0x0, 0x0, 0x3, - 0xff, 0xfc, 0x0, 0x0, 0xf, 0xff, 0xf0, 0x0, - 0x0, 0x3f, 0xff, 0xc0, 0x0, 0x0, 0xff, 0xff, - 0x0, 0x0, 0x3, 0xff, 0xfc, 0x0, 0x0, 0xf, - 0xff, 0xf0, 0x0, 0x0, 0x3f, 0xff, 0xc0, 0x0, - 0x0, 0xff, 0xff, 0x0, 0x0, 0x3, 0xff, 0xf8, - 0x0, 0x0, 0xf, 0xff, 0xe0, 0x0, 0x0, 0x3f, - 0xff, 0x80, 0x0, 0x0, 0xff, 0xfe, 0x0, 0x0, - 0x3, 0xff, 0xf8, 0x0, 0x0, 0xf, 0xff, 0xe0, - 0x0, 0x0, 0x3f, 0xff, 0x80, 0x0, 0x0, 0xff, - 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, - 0xfb, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, - 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xdf, - 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, - 0xff, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, - 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xfb, - 0xff, 0xff, 0xff, 0xff, 0xf0, - - /* U+0033 "3" */ - 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xff, 0xff, - 0xff, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xe0, 0xff, - 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, - 0x83, 0xff, 0xff, 0xff, 0xff, 0x7, 0xff, 0xff, - 0xff, 0xfe, 0xf, 0xff, 0xff, 0xff, 0xfc, 0x1f, - 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xff, 0xff, 0xff, - 0xf0, 0x0, 0x0, 0x3, 0xff, 0xc0, 0x0, 0x0, - 0xf, 0xff, 0x0, 0x0, 0x0, 0x3f, 0xfc, 0x0, - 0x0, 0x0, 0xff, 0xf0, 0x0, 0x0, 0x3, 0xff, - 0xc0, 0x0, 0x0, 0x1f, 0xff, 0x0, 0x0, 0x0, - 0x7f, 0xf8, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, - 0x0, 0x7, 0xff, 0x80, 0x0, 0x0, 0x1f, 0xfe, - 0x0, 0x0, 0x0, 0x7f, 0xf8, 0x0, 0x0, 0x1, - 0xff, 0xf8, 0x0, 0x0, 0x3, 0xff, 0xfe, 0x0, - 0x0, 0x7, 0xff, 0xff, 0x0, 0x0, 0xf, 0xff, - 0xff, 0x80, 0x0, 0x1f, 0xff, 0xff, 0x80, 0x0, - 0x3f, 0xff, 0xff, 0x80, 0x0, 0x7f, 0xff, 0xff, - 0x80, 0x0, 0xff, 0xff, 0xff, 0x80, 0x1, 0xff, - 0xff, 0xff, 0x0, 0x3, 0xff, 0xff, 0xff, 0x0, - 0x0, 0x0, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x7f, - 0xfc, 0x0, 0x0, 0x0, 0x7f, 0xfc, 0x0, 0x0, - 0x0, 0xff, 0xf8, 0x0, 0x0, 0x0, 0xff, 0xf0, - 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x3, - 0xff, 0xc0, 0x0, 0x0, 0x7, 0xff, 0x80, 0x0, - 0x0, 0xf, 0xff, 0x0, 0x0, 0x0, 0x1f, 0xfe, - 0x0, 0x0, 0x0, 0x3f, 0xff, 0xff, 0xc0, 0x0, - 0x7f, 0xff, 0xff, 0x80, 0x0, 0xff, 0xff, 0xff, - 0x0, 0x1, 0xff, 0xff, 0xff, 0x0, 0x7, 0xff, - 0xff, 0xfe, 0x0, 0xf, 0xff, 0xbf, 0xfe, 0x0, - 0x3f, 0xfe, 0x7f, 0xff, 0x1, 0xff, 0xfc, 0xff, - 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, - 0xe0, 0xff, 0xff, 0xff, 0xff, 0x81, 0xff, 0xff, - 0xff, 0xff, 0x1, 0xff, 0xff, 0xff, 0xfc, 0x1, - 0xff, 0xff, 0xff, 0xf0, 0x0, 0xff, 0xff, 0xff, - 0x80, 0x0, 0xff, 0xff, 0xfe, 0x0, 0x0, 0x7f, - 0xff, 0xf0, 0x0, 0x0, 0xf, 0xfe, 0x0, 0x0, - - /* U+0034 "4" */ - 0x0, 0x0, 0x3, 0xff, 0xf0, 0x0, 0x0, 0x1f, - 0xff, 0x80, 0x0, 0x0, 0x7f, 0xfc, 0x0, 0x0, - 0x3, 0xff, 0xe0, 0x0, 0x0, 0x1f, 0xff, 0x80, - 0x0, 0x0, 0x7f, 0xfc, 0x0, 0x0, 0x3, 0xff, - 0xe0, 0x0, 0x0, 0x1f, 0xff, 0x80, 0x0, 0x0, - 0xff, 0xfc, 0x0, 0x0, 0x3, 0xff, 0xe0, 0x0, - 0x0, 0x1f, 0xff, 0x0, 0x0, 0x0, 0xff, 0xfc, - 0x0, 0x0, 0x3, 0xff, 0xe0, 0x0, 0x0, 0x1f, - 0xff, 0x0, 0x0, 0x0, 0xff, 0xfc, 0x0, 0x0, - 0x7, 0xff, 0xe0, 0x0, 0x0, 0x1f, 0xff, 0x0, - 0x0, 0x0, 0xff, 0xf8, 0x0, 0x0, 0x7, 0xff, - 0xe0, 0x0, 0x0, 0x1f, 0xff, 0x0, 0x0, 0x0, - 0xff, 0xf8, 0x0, 0x0, 0x7, 0xff, 0xe0, 0x0, - 0x0, 0x3f, 0xff, 0x0, 0x0, 0x0, 0xff, 0xf8, - 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0, 0x0, 0x3f, - 0xff, 0x0, 0xff, 0xf0, 0xff, 0xf8, 0x3, 0xff, - 0xc7, 0xff, 0xc0, 0xf, 0xff, 0x3f, 0xff, 0x0, - 0x3f, 0xfd, 0xff, 0xf8, 0x0, 0xff, 0xf7, 0xff, - 0xc0, 0x3, 0xff, 0xff, 0xfe, 0x0, 0xf, 0xff, - 0xff, 0xf8, 0x0, 0x3f, 0xff, 0xff, 0xc0, 0x0, - 0xff, 0xff, 0xfe, 0x0, 0x3, 0xff, 0xff, 0xf8, - 0x0, 0xf, 0xff, 0xff, 0xe0, 0x0, 0x3f, 0xff, - 0xff, 0x80, 0x0, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x3f, - 0xfc, 0x0, 0x0, 0x0, 0xff, 0xf0, 0x0, 0x0, - 0x3, 0xff, 0xc0, 0x0, 0x0, 0xf, 0xff, 0x0, - 0x0, 0x0, 0x3f, 0xfc, 0x0, 0x0, 0x0, 0xff, - 0xf0, 0x0, 0x0, 0x3, 0xff, 0xc0, 0x0, 0x0, - 0xf, 0xff, 0x0, 0x0, 0x0, 0x3f, 0xfc, 0x0, - 0x0, 0x0, 0xff, 0xf0, 0x0, 0x0, 0x3, 0xff, - 0xc0, - - /* U+0035 "5" */ - 0x7f, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, - 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, - 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xf1, - 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, - 0xff, 0x1f, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, - 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xc7, - 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0x0, 0x0, - 0x0, 0x7f, 0xf8, 0x0, 0x0, 0x1, 0xff, 0xe0, - 0x0, 0x0, 0x7, 0xff, 0x80, 0x0, 0x0, 0x1f, - 0xfe, 0x0, 0x0, 0x0, 0x7f, 0xf8, 0x0, 0x0, - 0x1, 0xff, 0xe0, 0x0, 0x0, 0x7, 0xff, 0x80, - 0x0, 0x0, 0x1f, 0xfe, 0x0, 0x0, 0x0, 0x7f, - 0xf8, 0x1f, 0xf0, 0x1, 0xff, 0xe1, 0xff, 0xf0, - 0x7, 0xff, 0x9f, 0xff, 0xf0, 0x1f, 0xfe, 0xff, - 0xff, 0xe0, 0x7f, 0xfb, 0xff, 0xff, 0xc1, 0xff, - 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, - 0x1f, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, - 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, - 0xf0, 0x3f, 0xff, 0x9f, 0xff, 0x0, 0x3f, 0xfe, - 0x7f, 0xf8, 0x0, 0x7f, 0xfc, 0x0, 0x0, 0x1, - 0xff, 0xf0, 0x0, 0x0, 0x3, 0xff, 0xc0, 0x0, - 0x0, 0xf, 0xff, 0x0, 0x0, 0x0, 0x3f, 0xfc, - 0x0, 0x0, 0x0, 0xff, 0xf0, 0x0, 0x0, 0x3, - 0xff, 0xc0, 0x0, 0x0, 0xf, 0xff, 0x0, 0x0, - 0x0, 0x3f, 0xfc, 0x0, 0x0, 0x0, 0xff, 0xf0, - 0x0, 0x0, 0x3, 0xff, 0xc0, 0x0, 0x0, 0xf, - 0xff, 0xff, 0xf0, 0x0, 0x3f, 0xff, 0xff, 0xc0, - 0x0, 0xff, 0xff, 0xff, 0x0, 0x7, 0xff, 0xff, - 0xfe, 0x0, 0x1f, 0xfe, 0xff, 0xfc, 0x0, 0xff, - 0xf9, 0xff, 0xfc, 0xf, 0xff, 0xe7, 0xff, 0xff, - 0xff, 0xff, 0xf, 0xff, 0xff, 0xff, 0xfc, 0x3f, - 0xff, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xff, - 0x80, 0xff, 0xff, 0xff, 0xfc, 0x1, 0xff, 0xff, - 0xff, 0xe0, 0x3, 0xff, 0xff, 0xfe, 0x0, 0x3, - 0xff, 0xff, 0xf0, 0x0, 0x3, 0xff, 0xff, 0x0, - 0x0, 0x1, 0xff, 0xc0, 0x0, - - /* U+0036 "6" */ - 0x0, 0x0, 0x3f, 0xfe, 0x0, 0x0, 0x0, 0x1f, - 0xff, 0x0, 0x0, 0x0, 0x1f, 0xff, 0x0, 0x0, - 0x0, 0xf, 0xff, 0x80, 0x0, 0x0, 0xf, 0xff, - 0x80, 0x0, 0x0, 0x7, 0xff, 0x80, 0x0, 0x0, - 0x7, 0xff, 0xc0, 0x0, 0x0, 0x7, 0xff, 0xc0, - 0x0, 0x0, 0x3, 0xff, 0xe0, 0x0, 0x0, 0x3, - 0xff, 0xe0, 0x0, 0x0, 0x1, 0xff, 0xf0, 0x0, - 0x0, 0x1, 0xff, 0xf0, 0x0, 0x0, 0x0, 0xff, - 0xf0, 0x0, 0x0, 0x0, 0xff, 0xf8, 0x0, 0x0, - 0x0, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x7f, 0xfc, - 0x0, 0x0, 0x0, 0x7f, 0xfc, 0x0, 0x0, 0x0, - 0x3f, 0xfc, 0x0, 0x0, 0x0, 0x3f, 0xfe, 0x0, - 0x0, 0x0, 0x3f, 0xfe, 0x0, 0x0, 0x0, 0x1f, - 0xff, 0x0, 0x0, 0x0, 0x1f, 0xff, 0x0, 0x0, - 0x0, 0xf, 0xff, 0x80, 0x0, 0x0, 0xf, 0xff, - 0x87, 0xf8, 0x0, 0x7, 0xff, 0x8f, 0xff, 0x0, - 0x7, 0xff, 0xcf, 0xff, 0xe0, 0x3, 0xff, 0xdf, - 0xff, 0xf8, 0x3, 0xff, 0xef, 0xff, 0xfe, 0x1, - 0xff, 0xff, 0xff, 0xff, 0x81, 0xff, 0xff, 0xff, - 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x7f, - 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0x81, 0xff, - 0xff, 0x3f, 0xff, 0x0, 0x3f, 0xff, 0x9f, 0xff, - 0x0, 0x7, 0xff, 0xdf, 0xff, 0x80, 0x3, 0xff, - 0xef, 0xff, 0x80, 0x0, 0xff, 0xff, 0xff, 0xc0, - 0x0, 0x7f, 0xff, 0xff, 0xc0, 0x0, 0x1f, 0xff, - 0xff, 0xe0, 0x0, 0xf, 0xff, 0xff, 0xf0, 0x0, - 0x7, 0xff, 0xff, 0xf8, 0x0, 0x3, 0xff, 0xff, - 0xfc, 0x0, 0x1, 0xff, 0xff, 0xfe, 0x0, 0x0, - 0xff, 0xff, 0xff, 0x80, 0x0, 0xff, 0xfb, 0xff, - 0xc0, 0x0, 0x7f, 0xfd, 0xff, 0xf0, 0x0, 0x7f, - 0xfc, 0xff, 0xf8, 0x0, 0x3f, 0xfe, 0x3f, 0xfe, - 0x0, 0x3f, 0xff, 0x1f, 0xff, 0xc0, 0x7f, 0xff, - 0x7, 0xff, 0xff, 0xff, 0xff, 0x83, 0xff, 0xff, - 0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0xff, 0x80, - 0x3f, 0xff, 0xff, 0xff, 0xc0, 0xf, 0xff, 0xff, - 0xff, 0xc0, 0x3, 0xff, 0xff, 0xff, 0x80, 0x0, - 0xff, 0xff, 0xff, 0x80, 0x0, 0x1f, 0xff, 0xff, - 0x0, 0x0, 0x3, 0xff, 0xfe, 0x0, 0x0, 0x0, - 0x3f, 0xf8, 0x0, 0x0, - - /* U+0037 "7" */ - 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, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x3, 0xff, - 0xff, 0xfe, 0x0, 0x1, 0xff, 0xef, 0xff, 0x0, - 0x1, 0xff, 0xf7, 0xff, 0x80, 0x0, 0xff, 0xf3, - 0xff, 0xc0, 0x0, 0xff, 0xf9, 0xff, 0xe0, 0x0, - 0x7f, 0xfc, 0xff, 0xf0, 0x0, 0x7f, 0xfc, 0x7f, - 0xf8, 0x0, 0x3f, 0xfe, 0x3f, 0xfc, 0x0, 0x3f, - 0xfe, 0x1f, 0xfe, 0x0, 0x1f, 0xff, 0x0, 0x0, - 0x0, 0x1f, 0xff, 0x0, 0x0, 0x0, 0xf, 0xff, - 0x80, 0x0, 0x0, 0x7, 0xff, 0x80, 0x0, 0x0, - 0x7, 0xff, 0xc0, 0x0, 0x0, 0x3, 0xff, 0xe0, - 0x0, 0x0, 0x3, 0xff, 0xe0, 0x0, 0x0, 0x1, - 0xff, 0xf0, 0x0, 0x0, 0x1, 0xff, 0xf0, 0x0, - 0x0, 0x0, 0xff, 0xf8, 0x0, 0x0, 0x0, 0xff, - 0xf8, 0x0, 0x0, 0x0, 0x7f, 0xfc, 0x0, 0x0, - 0x0, 0x3f, 0xfc, 0x0, 0x0, 0x0, 0x3f, 0xfe, - 0x0, 0x0, 0x0, 0x1f, 0xff, 0x0, 0x0, 0x0, - 0x1f, 0xff, 0x0, 0x0, 0x0, 0xf, 0xff, 0x80, - 0x0, 0x0, 0xf, 0xff, 0x80, 0x0, 0x0, 0x7, - 0xff, 0xc0, 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0, - 0x0, 0x3, 0xff, 0xe0, 0x0, 0x0, 0x3, 0xff, - 0xe0, 0x0, 0x0, 0x1, 0xff, 0xf0, 0x0, 0x0, - 0x0, 0xff, 0xf8, 0x0, 0x0, 0x0, 0xff, 0xf8, - 0x0, 0x0, 0x0, 0x7f, 0xfc, 0x0, 0x0, 0x0, - 0x7f, 0xfc, 0x0, 0x0, 0x0, 0x3f, 0xfe, 0x0, - 0x0, 0x0, 0x3f, 0xfe, 0x0, 0x0, 0x0, 0x1f, - 0xff, 0x0, 0x0, 0x0, 0x1f, 0xff, 0x0, 0x0, - 0x0, 0xf, 0xff, 0x80, 0x0, 0x0, 0xf, 0xff, - 0xc0, 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0, 0x0, - 0x3, 0xff, 0xe0, 0x0, 0x0, 0x3, 0xff, 0xe0, - 0x0, 0x0, 0x1, 0xff, 0xf0, 0x0, 0x0, 0x1, - 0xff, 0xf0, 0x0, 0x0, 0x0, 0xff, 0xf8, 0x0, - 0x0, 0x0, - - /* U+0038 "8" */ - 0x0, 0x1, 0xff, 0x80, 0x0, 0x0, 0xf, 0xff, - 0xfc, 0x0, 0x0, 0x1f, 0xff, 0xff, 0x80, 0x0, - 0x1f, 0xff, 0xff, 0xf0, 0x0, 0x3f, 0xff, 0xff, - 0xfc, 0x0, 0x3f, 0xff, 0xff, 0xff, 0x0, 0x3f, - 0xff, 0xff, 0xff, 0xc0, 0x3f, 0xff, 0xff, 0xff, - 0xf0, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, - 0xff, 0xff, 0xfe, 0xf, 0xff, 0xe0, 0x7f, 0xff, - 0x7, 0xff, 0xc0, 0xf, 0xff, 0x87, 0xff, 0xc0, - 0x3, 0xff, 0xe3, 0xff, 0xe0, 0x1, 0xff, 0xf1, - 0xff, 0xe0, 0x0, 0x7f, 0xf8, 0xff, 0xf0, 0x0, - 0x3f, 0xfc, 0x7f, 0xf8, 0x0, 0x1f, 0xfe, 0x3f, - 0xfc, 0x0, 0xf, 0xff, 0x1f, 0xfe, 0x0, 0x7, - 0xff, 0x8f, 0xff, 0x80, 0x7, 0xff, 0xc3, 0xff, - 0xc0, 0x3, 0xff, 0xc1, 0xff, 0xf0, 0x3, 0xff, - 0xe0, 0x7f, 0xfc, 0x3, 0xff, 0xe0, 0x3f, 0xff, - 0x3, 0xff, 0xf0, 0xf, 0xff, 0xe7, 0xff, 0xf0, - 0x3, 0xff, 0xff, 0xff, 0xf0, 0x0, 0xff, 0xff, - 0xff, 0xf0, 0x0, 0x1f, 0xff, 0xff, 0xf0, 0x0, - 0x7, 0xff, 0xff, 0xf0, 0x0, 0x1, 0xff, 0xff, - 0xf0, 0x0, 0x3, 0xff, 0xff, 0xfc, 0x0, 0x3, - 0xff, 0xff, 0xff, 0x80, 0x3, 0xff, 0xff, 0xff, - 0xe0, 0x3, 0xff, 0xff, 0xff, 0xf8, 0x3, 0xff, - 0xf0, 0xff, 0xfe, 0x3, 0xff, 0xf0, 0x1f, 0xff, - 0x83, 0xff, 0xe0, 0x7, 0xff, 0xe3, 0xff, 0xe0, - 0x1, 0xff, 0xf1, 0xff, 0xe0, 0x0, 0x7f, 0xfc, - 0xff, 0xf0, 0x0, 0x1f, 0xfe, 0xff, 0xf0, 0x0, - 0x7, 0xff, 0xff, 0xf8, 0x0, 0x3, 0xff, 0xff, - 0xfc, 0x0, 0x1, 0xff, 0xff, 0xfe, 0x0, 0x0, - 0xff, 0xff, 0xff, 0x0, 0x0, 0x7f, 0xff, 0xff, - 0xc0, 0x0, 0x7f, 0xff, 0xff, 0xe0, 0x0, 0x3f, - 0xff, 0xff, 0xf8, 0x0, 0x3f, 0xff, 0x7f, 0xfe, - 0x0, 0x3f, 0xff, 0x3f, 0xff, 0xc0, 0x7f, 0xff, - 0x9f, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, - 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xc0, - 0x7f, 0xff, 0xff, 0xff, 0xe0, 0x3f, 0xff, 0xff, - 0xff, 0xe0, 0x7, 0xff, 0xff, 0xff, 0xe0, 0x1, - 0xff, 0xff, 0xff, 0xc0, 0x0, 0x3f, 0xff, 0xff, - 0x80, 0x0, 0x7, 0xff, 0xff, 0x0, 0x0, 0x0, - 0x3f, 0xf8, 0x0, 0x0, - - /* U+0039 "9" */ - 0x0, 0x1, 0xff, 0x80, 0x0, 0x0, 0x7, 0xff, - 0xfc, 0x0, 0x0, 0xf, 0xff, 0xff, 0x80, 0x0, - 0x1f, 0xff, 0xff, 0xf0, 0x0, 0x1f, 0xff, 0xff, - 0xfc, 0x0, 0x1f, 0xff, 0xff, 0xff, 0x0, 0x1f, - 0xff, 0xff, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0xff, - 0xf0, 0x1f, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xff, - 0xff, 0xff, 0xfe, 0xf, 0xff, 0xf0, 0x7f, 0xff, - 0x8f, 0xff, 0xe0, 0xf, 0xff, 0xc7, 0xff, 0xc0, - 0x1, 0xff, 0xf3, 0xff, 0xe0, 0x0, 0xff, 0xfb, - 0xff, 0xe0, 0x0, 0x3f, 0xfd, 0xff, 0xf0, 0x0, - 0x1f, 0xff, 0xff, 0xf0, 0x0, 0x7, 0xff, 0xff, - 0xf8, 0x0, 0x3, 0xff, 0xff, 0xfc, 0x0, 0x1, - 0xff, 0xff, 0xfe, 0x0, 0x0, 0xff, 0xff, 0xff, - 0x0, 0x0, 0x7f, 0xff, 0xff, 0x80, 0x0, 0x3f, - 0xff, 0xff, 0xe0, 0x0, 0x3f, 0xff, 0xff, 0xf0, - 0x0, 0x1f, 0xff, 0x7f, 0xfc, 0x0, 0x1f, 0xff, - 0x3f, 0xfe, 0x0, 0xf, 0xff, 0x9f, 0xff, 0xc0, - 0x1f, 0xff, 0xc7, 0xff, 0xf8, 0x3f, 0xff, 0xe3, - 0xff, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, - 0xff, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0x1f, - 0xff, 0xff, 0xff, 0xf8, 0x7, 0xff, 0xff, 0xbf, - 0xfc, 0x1, 0xff, 0xff, 0xbf, 0xfc, 0x0, 0x7f, - 0xff, 0xbf, 0xfe, 0x0, 0xf, 0xff, 0x1f, 0xfe, - 0x0, 0x1, 0xfe, 0x1f, 0xff, 0x0, 0x0, 0x0, - 0xf, 0xff, 0x0, 0x0, 0x0, 0xf, 0xff, 0x80, - 0x0, 0x0, 0x7, 0xff, 0x80, 0x0, 0x0, 0x7, - 0xff, 0xc0, 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0, - 0x0, 0x3, 0xff, 0xc0, 0x0, 0x0, 0x3, 0xff, - 0xe0, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, - 0x1, 0xff, 0xf0, 0x0, 0x0, 0x0, 0xff, 0xf0, - 0x0, 0x0, 0x0, 0xff, 0xf8, 0x0, 0x0, 0x0, - 0xff, 0xf8, 0x0, 0x0, 0x0, 0x7f, 0xfc, 0x0, - 0x0, 0x0, 0x7f, 0xfc, 0x0, 0x0, 0x0, 0x3f, - 0xfe, 0x0, 0x0, 0x0, 0x3f, 0xfe, 0x0, 0x0, - 0x0, 0x1f, 0xfe, 0x0, 0x0, 0x0, 0x1f, 0xff, - 0x0, 0x0, 0x0, 0x1f, 0xff, 0x0, 0x0, 0x0, - 0xf, 0xff, 0x80, 0x0, 0x0, 0xf, 0xff, 0x80, - 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0, 0x0, 0x7, - 0xff, 0xc0, 0x0, 0x0, - - /* U+003A ":" */ - 0x7, 0xe0, 0x1f, 0xf8, 0x3f, 0xfc, 0x7f, 0xfe, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0x3f, 0xfc, - 0x1f, 0xf8, 0x7, 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, 0x0, 0x0, 0x0, 0x0, - 0x7, 0xe0, 0x1f, 0xf8, 0x3f, 0xfc, 0x7f, 0xfe, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0x3f, 0xfc, - 0x1f, 0xf8, 0x7, 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 = 768, .box_w = 39, .box_h = 60, .ofs_x = 5, .ofs_y = -1}, - {.bitmap_index = 293, .adv_w = 768, .box_w = 38, .box_h = 59, .ofs_x = 6, .ofs_y = 0}, - {.bitmap_index = 574, .adv_w = 768, .box_w = 39, .box_h = 60, .ofs_x = 4, .ofs_y = 0}, - {.bitmap_index = 867, .adv_w = 768, .box_w = 39, .box_h = 59, .ofs_x = 4, .ofs_y = -1}, - {.bitmap_index = 1155, .adv_w = 768, .box_w = 38, .box_h = 59, .ofs_x = 4, .ofs_y = 0}, - {.bitmap_index = 1436, .adv_w = 768, .box_w = 38, .box_h = 60, .ofs_x = 5, .ofs_y = -1}, - {.bitmap_index = 1721, .adv_w = 768, .box_w = 41, .box_h = 60, .ofs_x = 4, .ofs_y = -1}, - {.bitmap_index = 2029, .adv_w = 768, .box_w = 41, .box_h = 58, .ofs_x = 4, .ofs_y = 0}, - {.bitmap_index = 2327, .adv_w = 768, .box_w = 41, .box_h = 60, .ofs_x = 4, .ofs_y = -1}, - {.bitmap_index = 2635, .adv_w = 768, .box_w = 41, .box_h = 60, .ofs_x = 4, .ofs_y = -1}, - {.bitmap_index = 2943, .adv_w = 768, .box_w = 16, .box_h = 46, .ofs_x = 16, .ofs_y = -1} -}; - -/*--------------------- - * CHARACTER MAPPING - *--------------------*/ - - - -/*Collect the unicode lists and glyph_id offsets*/ -static const lv_font_fmt_txt_cmap_t cmaps[] = -{ - { - .range_start = 48, .range_length = 11, .glyph_id_start = 1, - .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY - } -}; - - - -/*-------------------- - * ALL CUSTOM DATA - *--------------------*/ - -#if LV_VERSION_CHECK(8, 0, 0) -/*Store all the custom data of the font*/ -static lv_font_fmt_txt_glyph_cache_t cache; -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 = 1, - .kern_classes = 0, - .bitmap_format = 0, -#if LV_VERSION_CHECK(8, 0, 0) - .cache = &cache -#endif -}; - - -/*----------------- - * PUBLIC FONT - *----------------*/ - -/*Initialize a public general font descriptor*/ -#if LV_VERSION_CHECK(8, 0, 0) -const lv_font_t jetbrains_mono_extrabold_compressed = { -#else -lv_font_t jetbrains_mono_extrabold_compressed = { -#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 = 61, /*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 = -12, - .underline_thickness = 4, -#endif - .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ -}; - - - -#endif /*#if JETBRAINS_MONO_EXTRABOLD_COMPRESSED*/ - diff --git a/src/displayapp/fonts/lv_font_navi_80.c b/src/displayapp/fonts/lv_font_navi_80.c deleted file mode 100644 index 8fd3979..0000000 --- a/src/displayapp/fonts/lv_font_navi_80.c +++ /dev/null @@ -1,2636 +0,0 @@ -/******************************************************************************* - * Size: 80 px - * Bpp: 2 - * Opts: --font navigation.ttf -r 0xe900-0xe929 --size 80 --format lvgl --bpp 2 -o lv_font_navi_80.c - ******************************************************************************/ - -#ifdef LV_LVGL_H_INCLUDE_SIMPLE -#include "lvgl.h" -#else -#include "lvgl/lvgl.h" -#endif - -#ifndef LV_FONT_NAVI_80 -#define LV_FONT_NAVI_80 1 -#endif - -#if LV_FONT_NAVI_80 - -/*----------------- - * BITMAPS - *----------------*/ - -/*Store the image of the glyphs*/ -static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { - /* U+E900 "" */ - 0xf, 0xfe, 0x2d, 0xfa, 0xf, 0xfe, 0xa3, 0xa1, - 0x9d, 0xf, 0xfe, 0x8d, 0x3, 0xf4, 0x87, 0xff, - 0x3d, 0x41, 0xfe, 0x90, 0xff, 0xe7, 0x41, 0xff, - 0xc0, 0x83, 0xff, 0x9a, 0x87, 0xff, 0x9, 0xf, - 0xfe, 0x66, 0x1f, 0xfc, 0x2c, 0x3f, 0xf9, 0x88, - 0x7f, 0xf0, 0x90, 0xff, 0xff, 0x87, 0xff, 0xe5, - 0xf, 0xfe, 0x12, 0x1f, 0xfc, 0xcc, 0x3f, 0xf8, - 0x58, 0x7f, 0xf3, 0x10, 0xff, 0xe1, 0x21, 0xff, - 0xcd, 0xc3, 0xff, 0x81, 0x87, 0xff, 0x3e, 0xf, - 0xf4, 0x1f, 0xfd, 0x6, 0xf, 0xda, 0x1f, 0xfd, - 0x17, 0x90, 0x36, 0x1f, 0xfd, 0x56, 0xf4, 0x87, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, - 0xff, 0xf8, 0x7f, 0xfb, 0x28, 0x1f, 0xfd, 0xa5, - 0x7, 0xff, 0x67, 0x6, 0x1f, 0xfd, 0x78, 0x34, - 0x1f, 0xfd, 0x55, 0x6, 0x50, 0x7f, 0xf5, 0x20, - 0xf4, 0x1f, 0xfd, 0x38, 0x3f, 0x41, 0xff, 0xd1, - 0x50, 0x7e, 0x50, 0x7f, 0xf4, 0x20, 0xff, 0x41, - 0xff, 0xcf, 0xc3, 0xff, 0x81, 0x87, 0xff, 0x35, - 0xf, 0xfe, 0x12, 0x1f, 0xfc, 0xc8, 0x3f, 0xf8, - 0x50, 0x7f, 0xf2, 0xf0, 0xff, 0xe2, 0x61, 0xff, - 0xc9, 0x83, 0xff, 0x8d, 0x7, 0xff, 0x1d, 0x41, - 0xff, 0xc6, 0x50, 0x7f, 0xf1, 0xa0, 0xff, 0xe4, - 0x41, 0xff, 0xc5, 0x83, 0xff, 0x95, 0x7, 0xff, - 0xd, 0x41, 0xff, 0xca, 0x50, 0x7f, 0xf0, 0xa0, - 0xff, 0xe6, 0x41, 0xff, 0xc1, 0x83, 0xff, 0x9d, - 0x7, 0xfc, 0xa0, 0xff, 0xe7, 0x28, 0x3f, 0xd0, - 0x7f, 0xf4, 0x20, 0xfe, 0xc3, 0xff, 0xa5, 0x87, - 0xd0, 0x7f, 0xf5, 0x20, 0xf2, 0x1f, 0xe8, 0x3f, - 0xd0, 0x7f, 0x90, 0xec, 0x3f, 0xad, 0xc3, 0xf6, - 0xf0, 0x7f, 0x61, 0x41, 0xfa, 0xd0, 0xff, 0xe1, - 0x3c, 0x1f, 0xa1, 0x41, 0xeb, 0x43, 0xff, 0x8c, - 0xf0, 0x79, 0x50, 0x75, 0xa1, 0xff, 0xca, 0x78, - 0x3a, 0xd, 0x68, 0x7f, 0xf3, 0x9e, 0xd, 0xb6, - 0x87, 0xff, 0x49, 0xe7, 0x24, 0x3f, 0xfa, 0xcc, - 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, - 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, - 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, - 0xff, 0xff, 0x87, 0xff, 0xde, 0xf, 0x61, 0xff, - 0xc4, - - /* U+E901 "" */ - 0xf, 0xff, 0x35, 0xc1, 0xff, 0xff, 0x34, 0x43, - 0xff, 0xfc, 0xe1, 0xff, 0xff, 0x3, 0x6, 0x43, - 0xff, 0xf9, 0x40, 0xe8, 0x3f, 0xff, 0x7a, 0x1c, - 0x87, 0xff, 0xe9, 0xc3, 0xec, 0x3f, 0xff, 0x34, - 0xf, 0xc8, 0x7f, 0xfe, 0x34, 0x3f, 0x41, 0xff, - 0xf7, 0x70, 0xff, 0x21, 0xff, 0xf6, 0xa0, 0x7f, - 0xa0, 0xff, 0xfb, 0x48, 0x7f, 0xc8, 0x7f, 0xfd, - 0x74, 0x3f, 0xe4, 0x3f, 0xfb, 0x2d, 0xe9, 0xf, - 0xfe, 0x4b, 0x87, 0xff, 0x6, 0xf, 0xfe, 0xbd, - 0xc8, 0x1b, 0x83, 0xff, 0x8d, 0x40, 0xff, 0xe0, - 0xa1, 0xff, 0xd7, 0xd0, 0xfc, 0xe1, 0xff, 0xc4, - 0xd0, 0xff, 0xe1, 0x41, 0xff, 0xd6, 0xc3, 0xff, - 0x81, 0x87, 0xff, 0x5, 0xc3, 0xff, 0xcd, 0x7, - 0xff, 0xa, 0xf, 0xfa, 0x81, 0xff, 0xc5, 0x83, - 0xff, 0xaa, 0x87, 0xff, 0x9, 0xf, 0xf6, 0x87, - 0xff, 0x19, 0xff, 0xf4, 0x87, 0xff, 0x22, 0xf, - 0xfe, 0x22, 0x1f, 0x38, 0x7f, 0xf4, 0xdb, 0xc8, - 0x7f, 0xf1, 0x50, 0xff, 0xe2, 0x61, 0xe6, 0xf, - 0xfe, 0xc5, 0xc1, 0xff, 0xd4, 0x43, 0xa8, 0x1f, - 0xfd, 0xb7, 0x83, 0xff, 0xae, 0xa0, 0xff, 0xef, - 0x3a, 0x1f, 0xfd, 0x4, 0x33, 0x7, 0xff, 0x82, - 0x81, 0xfe, 0x43, 0xff, 0x89, 0x87, 0x38, 0x7f, - 0xf8, 0x18, 0x3f, 0xb0, 0xff, 0xe2, 0x21, 0xf6, - 0x87, 0xff, 0x7d, 0xc3, 0xf2, 0x1f, 0xfc, 0x34, - 0x3f, 0xa8, 0x1f, 0xfc, 0x84, 0x32, 0x1f, 0xfc, - 0x6c, 0x3f, 0x61, 0xff, 0xc2, 0x83, 0xfc, 0xe1, - 0xff, 0xc6, 0xef, 0xd7, 0xd2, 0x1f, 0xfc, 0x28, - 0x3f, 0x41, 0xff, 0xc0, 0xc3, 0xff, 0x83, 0xa1, - 0xff, 0xce, 0x6e, 0xf, 0xfe, 0x2, 0x83, 0xe7, - 0xf, 0xe7, 0xf, 0xfe, 0x1c, 0x87, 0xff, 0xd, - 0xf, 0xfe, 0x3, 0xc1, 0xff, 0x41, 0xfd, 0xc8, - 0x67, 0x83, 0xff, 0x8b, 0x40, 0xff, 0xe1, 0x41, - 0xff, 0xc2, 0x70, 0xff, 0xb0, 0xfe, 0x6f, 0xd0, - 0x7f, 0xf2, 0x1c, 0x3f, 0xf8, 0x48, 0x7f, 0xf0, - 0xf4, 0x3f, 0xc8, 0x7f, 0xf6, 0x74, 0x3f, 0xf8, - 0x18, 0x7f, 0xf1, 0x20, 0xff, 0x41, 0xff, 0xda, - 0xa0, 0x7f, 0xc8, 0x7f, 0xf1, 0x70, 0xff, 0x21, - 0xff, 0xda, 0x70, 0xff, 0xa0, 0xff, 0xe2, 0xe1, - 0xfd, 0x7, 0xff, 0x73, 0x43, 0xf9, 0xf, 0xfe, - 0x32, 0x1f, 0xc8, 0x7f, 0xf7, 0x28, 0x1f, 0xd0, - 0x7f, 0xf1, 0x60, 0xfe, 0xc3, 0xff, 0xba, 0xc1, - 0xf9, 0xf, 0xfe, 0x34, 0x1f, 0x90, 0xff, 0xef, - 0x38, 0x7e, 0x43, 0xff, 0x8a, 0x87, 0xff, 0xa7, - 0x43, 0xd0, 0x7f, 0xf1, 0x90, 0xfc, 0x87, 0xff, - 0x82, 0x81, 0xe4, 0x3f, 0xf8, 0xb8, 0x7e, 0xc3, - 0xff, 0xc2, 0xe1, 0xd0, 0x7f, 0xf1, 0x50, 0xff, - 0xf6, 0x68, 0x7f, 0xf4, 0x90, 0xff, 0xf2, 0x50, - 0x3f, 0xff, 0xe1, 0x9e, 0xc3, 0xff, 0xfe, 0x12, - 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, - 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, - 0x7f, 0xff, 0xc3, 0xff, 0xd5, 0x87, 0xd0, 0x7f, - 0xff, 0x3f, 0xe4, - - /* U+E902 "" */ - 0xf, 0xfe, 0x7d, 0xc1, 0xff, 0xff, 0x2, 0x38, - 0x7f, 0xff, 0xc3, 0xb4, 0x3f, 0xff, 0xc8, 0x69, - 0xf, 0xff, 0xec, 0x1d, 0x40, 0xff, 0xfe, 0xa1, - 0xce, 0x1f, 0xff, 0xcc, 0x3e, 0xd0, 0xff, 0xfd, - 0x21, 0xfa, 0x81, 0xff, 0xfa, 0x83, 0xf3, 0x87, - 0xff, 0xe5, 0xf, 0xf6, 0x87, 0xff, 0xe2, 0xf, - 0xf5, 0x3, 0xff, 0xee, 0x87, 0xfc, 0xc1, 0xff, - 0xf7, 0x43, 0xfe, 0x70, 0xff, 0xfb, 0x41, 0xff, - 0xc1, 0xd0, 0xff, 0xe4, 0xb7, 0xa4, 0x3f, 0xfb, - 0x48, 0x7f, 0xf0, 0x68, 0x1f, 0xfc, 0x6b, 0x90, - 0x37, 0x7, 0xff, 0x62, 0xf, 0xfe, 0x13, 0x87, - 0xff, 0x13, 0x43, 0xf3, 0x87, 0xff, 0xa3, 0x43, - 0xff, 0x83, 0x87, 0xff, 0x3, 0xf, 0xfe, 0xb4, - 0x1f, 0xfc, 0x5a, 0x7, 0xfd, 0x7, 0xff, 0xa, - 0xf, 0xfe, 0x4b, 0x7f, 0xf9, 0xf, 0xfe, 0x33, - 0x87, 0xf9, 0xf, 0xfe, 0x12, 0x1f, 0xfc, 0x67, - 0xd2, 0x1f, 0xfd, 0x3d, 0xf, 0x90, 0xff, 0xe2, - 0x41, 0xff, 0xc3, 0xb8, 0x3f, 0xfb, 0x12, 0x1e, - 0xc3, 0xff, 0x88, 0x87, 0xff, 0x6, 0xd0, 0xff, - 0xed, 0xd0, 0x39, 0xf, 0xfe, 0x83, 0xa1, 0xff, - 0xde, 0x50, 0x7f, 0xf5, 0x28, 0x1f, 0xfe, 0x9, - 0xc, 0x87, 0xff, 0x3a, 0x43, 0xff, 0xc1, 0xa1, - 0xd8, 0x7f, 0xf1, 0x10, 0xfd, 0xa1, 0xff, 0xdf, - 0x70, 0xf9, 0xf, 0xfe, 0x26, 0x1f, 0x61, 0xff, - 0xc6, 0x43, 0x21, 0xff, 0xc8, 0xa0, 0x7f, 0x21, - 0xff, 0xc3, 0x43, 0xd0, 0x7f, 0xf0, 0x9b, 0xeb, - 0xf5, 0x87, 0xff, 0x1b, 0x43, 0xfd, 0x7, 0xff, - 0xb, 0xf, 0x28, 0x3f, 0xf8, 0x17, 0x21, 0xff, - 0xce, 0x70, 0xff, 0xe0, 0xe1, 0xff, 0xc0, 0x83, - 0xe8, 0x3f, 0xeb, 0x43, 0xff, 0x80, 0x87, 0xff, - 0xd, 0x83, 0xff, 0x87, 0xa1, 0xfd, 0xa1, 0xec, - 0x3f, 0xed, 0xf, 0xfe, 0x14, 0x1f, 0xfc, 0x2a, - 0x7, 0xff, 0x16, 0xd0, 0xcd, 0x87, 0xc8, 0x7f, - 0x9c, 0x3f, 0xf8, 0x68, 0x7f, 0xf0, 0xb4, 0x3f, - 0xf9, 0x17, 0xe9, 0xf, 0xd0, 0x7f, 0x30, 0x7f, - 0xf1, 0x30, 0xff, 0xe0, 0x38, 0x7f, 0xf6, 0x10, - 0xff, 0x41, 0xff, 0xc5, 0x43, 0xfe, 0xa0, 0x7f, - 0xf6, 0x60, 0xfe, 0xc3, 0xff, 0x8b, 0x7, 0xfd, - 0xa1, 0xff, 0xd9, 0x43, 0xf9, 0xf, 0xfe, 0x32, - 0x1f, 0xce, 0x1f, 0xfd, 0xbc, 0x3f, 0xa0, 0xff, - 0xe2, 0xc1, 0xfd, 0x40, 0xff, 0xee, 0x21, 0xfa, - 0xf, 0xfe, 0x32, 0x1f, 0xa4, 0x3f, 0xfc, 0xc8, - 0x7f, 0xf1, 0x50, 0xfd, 0xa1, 0xff, 0xdd, 0x43, - 0xf2, 0x1f, 0xfc, 0x68, 0x3c, 0xe1, 0xff, 0xdf, - 0xc3, 0xf6, 0x1f, 0xfc, 0x54, 0x3d, 0x40, 0xff, - 0xf4, 0xa1, 0xff, 0xc5, 0x83, 0xb4, 0x3f, 0xfc, - 0x28, 0x7f, 0xf4, 0x9c, 0x3f, 0xff, 0xe0, 0xa0, - 0x7f, 0xff, 0xfb, 0x43, 0xff, 0xfe, 0x4, 0x3f, - 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, - 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, - 0xff, 0x87, 0xa0, 0xfb, 0xf, 0xff, 0xdb, 0xff, - 0x7, 0xff, 0xf0, - - /* U+E903 "" */ - 0xe, 0xf4, 0x1f, 0xff, 0x4b, 0xc1, 0xfd, 0x81, - 0xc3, 0xff, 0xe5, 0xa0, 0xc3, 0xec, 0x3b, 0xf, - 0xff, 0x86, 0x1d, 0x87, 0x61, 0xf6, 0x1f, 0xfe, - 0xec, 0x3e, 0xc2, 0xc3, 0xfb, 0xf, 0xff, 0x66, - 0x1f, 0xd9, 0x87, 0xfd, 0x87, 0xff, 0xab, 0xf, - 0xfb, 0xf, 0xfe, 0xe, 0x1f, 0xfe, 0x8c, 0x3f, - 0xf8, 0x28, 0x7f, 0xf0, 0x70, 0xff, 0xf3, 0x61, - 0xff, 0xc1, 0x60, 0xff, 0xe1, 0x61, 0xff, 0xe4, - 0xc3, 0xff, 0x85, 0x18, 0x7f, 0xf0, 0xb0, 0xff, - 0xf1, 0x61, 0xff, 0xc2, 0xc2, 0xc3, 0xff, 0x85, - 0x87, 0xff, 0x83, 0xf, 0xfe, 0x16, 0x1d, 0x87, - 0xff, 0xb, 0xf, 0xfe, 0xf6, 0x1f, 0xfc, 0x2c, - 0x3e, 0xc3, 0xff, 0x85, 0x87, 0xff, 0x73, 0xf, - 0xfe, 0x16, 0x1f, 0xd8, 0x7f, 0xf0, 0xb0, 0xff, - 0xed, 0x61, 0xff, 0xc2, 0xc3, 0xfe, 0xc3, 0xff, - 0x85, 0x87, 0xff, 0x63, 0xf, 0xfe, 0x16, 0x1f, - 0xfc, 0x1c, 0x3f, 0xf8, 0x58, 0x7f, 0xf5, 0xb0, - 0xff, 0xe1, 0x61, 0xff, 0xc3, 0xc3, 0xff, 0x85, - 0x87, 0xff, 0x53, 0xf, 0xfe, 0x16, 0x1f, 0xfc, - 0x5c, 0x3f, 0xf8, 0x58, 0x7f, 0xf4, 0xb0, 0xff, - 0xe1, 0x61, 0xff, 0xc7, 0xc3, 0xff, 0x85, 0x87, - 0xff, 0x43, 0xf, 0xfe, 0x16, 0x1f, 0xfc, 0x9c, - 0x3f, 0xf8, 0x58, 0x7f, 0xf3, 0xb0, 0xff, 0xe1, - 0x61, 0xff, 0xcb, 0xc3, 0xff, 0x85, 0x87, 0xff, - 0x33, 0xf, 0xfe, 0x16, 0x1f, 0xfc, 0xdc, 0x3f, - 0xf8, 0x58, 0x7f, 0xf2, 0xb0, 0xff, 0xe1, 0x61, - 0xff, 0xcf, 0xc3, 0xff, 0x85, 0x87, 0xff, 0x23, - 0xf, 0xfe, 0x16, 0x1f, 0xfd, 0x1c, 0x3f, 0xf8, - 0x58, 0x7f, 0xf1, 0xb0, 0xff, 0xe1, 0x61, 0xff, - 0xd3, 0xc3, 0xff, 0x85, 0x87, 0xff, 0x13, 0xf, - 0xfe, 0x16, 0x1f, 0xfd, 0x5c, 0x3f, 0xf8, 0x58, - 0x7f, 0xf0, 0xb0, 0xff, 0xe1, 0x61, 0xff, 0xd7, - 0xc3, 0xff, 0x85, 0x87, 0xff, 0x3, 0xf, 0xfe, - 0x16, 0x1f, 0xfd, 0x9c, 0x3f, 0xf8, 0x58, 0x7f, - 0xb0, 0xff, 0xe1, 0x61, 0xff, 0xdb, 0xc3, 0xff, - 0x85, 0x87, 0xec, 0x3f, 0xf8, 0x58, 0x7f, 0xf7, - 0x70, 0xff, 0xe1, 0x61, 0xec, 0x3f, 0xf8, 0x58, - 0x7f, 0xf7, 0xf0, 0xff, 0xe1, 0x61, 0xb0, 0xff, - 0xe1, 0x61, 0xff, 0xe1, 0xc3, 0xff, 0x85, 0xf8, - 0x3f, 0xf8, 0x58, 0x7f, 0xf8, 0xf0, 0xff, 0xe9, - 0x61, 0xff, 0xe5, 0xc3, 0xff, 0xa1, 0x87, 0xff, - 0x9f, 0xf, 0xfe, 0x76, 0x1f, 0xfe, 0x9c, 0x3f, - 0xf9, 0x98, 0x7f, 0xfa, 0xf0, 0xff, 0xe5, 0x61, - 0xff, 0xed, 0xc3, 0xff, 0x91, 0x87, 0xff, 0xbf, - 0xf, 0xfe, 0x36, 0x1f, 0xff, 0xf0, 0xff, 0xff, - 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xf8, 0x7f, 0xf1, - 0xb0, 0xff, 0xf7, 0xe1, 0xff, 0xc8, 0xc3, 0xff, - 0xdb, 0x87, 0xff, 0x2b, 0xf, 0xff, 0x5e, 0x1f, - 0xfc, 0xcc, 0x3f, 0xfd, 0x38, 0x7f, 0xf3, 0xb0, - 0xff, 0xf3, 0xe1, 0xff, 0xd0, 0xc3, 0xff, 0xcb, - 0x87, 0xff, 0x4b, 0xf, 0xff, 0x1e, 0x1f, 0xfc, - 0x2f, 0xc1, 0xff, 0xc2, 0xc3, 0xff, 0xc3, 0x87, - 0xff, 0xb, 0xd, 0x87, 0xff, 0xb, 0xf, 0xfe, - 0xfe, 0x1f, 0xfc, 0x2c, 0x3d, 0x87, 0xff, 0xb, - 0xf, 0xfe, 0xee, 0x1f, 0xfc, 0x2c, 0x3f, 0x61, - 0xff, 0xc2, 0xc3, 0xff, 0xb7, 0x87, 0xff, 0xb, - 0xf, 0xf6, 0x1f, 0xfc, 0x2c, 0x3f, 0xfb, 0x38, - 0x7f, 0xf0, 0xb0, 0xff, 0xe0, 0x61, 0xff, 0xc2, - 0xc3, 0xff, 0xaf, 0x87, 0xff, 0xb, 0xf, 0xfe, - 0x16, 0x1f, 0xfc, 0x2c, 0x3f, 0xfa, 0xb8, 0x7f, - 0xf0, 0xb0, 0xff, 0xe2, 0x61, 0xff, 0xc2, 0xc3, - 0xff, 0xa7, 0x87, 0xff, 0xb, 0xf, 0xfe, 0x36, - 0x1f, 0xfc, 0x2c, 0x3f, 0xfa, 0x38, 0x7f, 0xf0, - 0xb0, 0xff, 0xe4, 0x61, 0xff, 0xc2, 0xc3, 0xff, - 0x9f, 0x87, 0xff, 0xb, 0xf, 0xfe, 0x56, 0x1f, - 0xfc, 0x2c, 0x3f, 0xf9, 0xb8, 0x7f, 0xf0, 0xb0, - 0xff, 0xe6, 0x61, 0xff, 0xc2, 0xc3, 0xff, 0x97, - 0x87, 0xff, 0xb, 0xf, 0xfe, 0x76, 0x1f, 0xfc, - 0x2c, 0x3f, 0xf9, 0x38, 0x7f, 0xf0, 0xb0, 0xff, - 0xe8, 0x61, 0xff, 0xc2, 0xc3, 0xff, 0x8f, 0x87, - 0xff, 0xb, 0xf, 0xfe, 0x96, 0x1f, 0xfc, 0x2c, - 0x3f, 0xf8, 0xb8, 0x7f, 0xf0, 0xb0, 0xff, 0xea, - 0x61, 0xff, 0xc2, 0xc3, 0xff, 0x87, 0x87, 0xff, - 0xb, 0xf, 0xfe, 0xb6, 0x1f, 0xfc, 0x2c, 0x3f, - 0xf8, 0x38, 0x7f, 0xf0, 0xb0, 0xff, 0xec, 0x61, - 0xff, 0xc2, 0xc3, 0xfe, 0xc3, 0xff, 0x85, 0x87, - 0xff, 0x6b, 0xf, 0xfe, 0x16, 0x1f, 0xd8, 0x7f, - 0xf0, 0xb0, 0xff, 0xee, 0x61, 0xff, 0xc2, 0xc3, - 0xec, 0x3f, 0xf8, 0x58, 0x7f, 0xf7, 0xb0, 0xff, - 0xe1, 0x61, 0xd8, 0x7f, 0xf0, 0xb0, 0xff, 0xf0, - 0x61, 0xff, 0xc2, 0xc2, 0xc3, 0xff, 0x85, 0x87, - 0xff, 0x8b, 0xf, 0xfe, 0x16, 0x41, 0xff, 0xc2, - 0xc3, 0xff, 0xc9, 0x87, 0xff, 0xa, 0x43, 0xff, - 0x83, 0x87, 0xff, 0x9b, 0xf, 0xfe, 0xa, 0x1f, - 0xfc, 0x1c, 0x3f, 0xfd, 0x18, 0x7f, 0xf0, 0x70, - 0xff, 0xb0, 0xff, 0xf5, 0x61, 0xff, 0x66, 0x1f, - 0xd8, 0x7f, 0xfb, 0x30, 0xfe, 0xc2, 0xc3, 0xec, - 0x3f, 0xfd, 0xd8, 0x7d, 0x87, 0x61, 0xd8, 0x7f, - 0xfc, 0x30, 0xec, 0x3e, 0xc0, 0xe1, 0xff, 0xf2, - 0xd0, 0x61, 0x80, - - /* U+E904 "" */ - 0xf, 0xfe, 0x62, 0x83, 0xff, 0xc9, 0x40, 0xff, - 0xf1, 0xe0, 0xc3, 0xff, 0xc3, 0x6, 0x83, 0xff, - 0xbe, 0xa0, 0xca, 0xf, 0xfe, 0xeb, 0x7, 0xa4, - 0x3f, 0xfb, 0x90, 0x7e, 0x83, 0xff, 0xb7, 0x87, - 0xfb, 0xf, 0xfe, 0xcc, 0x1f, 0xfc, 0x8, 0x3f, - 0xfa, 0xea, 0xf, 0xfe, 0x2, 0x83, 0xff, 0xad, - 0x7, 0xff, 0xa, 0xf, 0xfe, 0xae, 0x1f, 0xfc, - 0x4c, 0x3f, 0xfa, 0x70, 0x7f, 0xf1, 0xa0, 0xff, - 0xe8, 0xa8, 0x3f, 0xf8, 0xca, 0xf, 0xfe, 0x84, - 0x1f, 0xfc, 0x88, 0x3f, 0xf9, 0xf8, 0x7f, 0xf2, - 0xb0, 0xff, 0xe6, 0xc1, 0xff, 0xcc, 0x83, 0xff, - 0x97, 0x21, 0xff, 0xcc, 0x60, 0xff, 0xe4, 0xa8, - 0x3f, 0xf9, 0xca, 0xf, 0xfe, 0x44, 0x1f, 0xfd, - 0x8, 0x3f, 0xf8, 0xf8, 0x7f, 0xf4, 0xb0, 0xff, - 0xe2, 0xc1, 0xff, 0xd4, 0x83, 0xff, 0x86, 0xa0, - 0xff, 0xea, 0x28, 0x3f, 0xf8, 0x50, 0x7f, 0xf5, - 0xa0, 0xff, 0xe0, 0xe1, 0xff, 0xd8, 0xc3, 0xfe, - 0x83, 0xff, 0xb5, 0x7, 0xf2, 0x83, 0xff, 0xb4, - 0xa0, 0xf9, 0x83, 0xff, 0xb9, 0x21, 0xe8, 0x3f, - 0xf8, 0x17, 0xa0, 0xff, 0x5e, 0x83, 0xff, 0x81, - 0x7, 0x61, 0xff, 0x5a, 0x4, 0x3f, 0xc8, 0x1e, - 0xf, 0xfb, 0xa, 0xf, 0xf5, 0xa1, 0xff, 0xc8, - 0x78, 0x3f, 0xd0, 0xa0, 0xf9, 0xf2, 0x1f, 0xfc, - 0xc7, 0xc8, 0x7c, 0xa8, 0x3c, 0xf0, 0x7f, 0xf4, - 0xad, 0xf, 0x41, 0xd7, 0x7, 0xff, 0x5a, 0xe0, - 0xe8, 0x16, 0x87, 0xff, 0x69, 0xe0, 0x4f, 0x90, - 0xff, 0xef, 0x3e, 0x43, 0xff, 0xfe, 0x1f, 0xff, - 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, - 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, - 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, - 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, - 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, - 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, - 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, - 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, - 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xf9, 0x8, - 0x7e, 0x43, 0xff, 0xb9, 0x21, 0xe6, 0xf, 0xfe, - 0x40, - - /* U+E905 "" */ - 0xf, 0xfe, 0x9b, 0xe4, 0x3f, 0xfe, 0xb4, 0x4, - 0x1f, 0xff, 0x4d, 0xf, 0xff, 0xb3, 0x87, 0x41, - 0xff, 0xf1, 0x60, 0xf2, 0x1f, 0xff, 0xa, 0x7, - 0xa0, 0xff, 0xf8, 0x68, 0x7c, 0x87, 0xff, 0xb9, - 0xc3, 0xf2, 0x1f, 0xfe, 0xea, 0x7, 0xf4, 0x1f, - 0xfe, 0xdd, 0xf, 0xe4, 0x3f, 0xfd, 0x8e, 0x1f, - 0xf4, 0x1f, 0xfe, 0xb6, 0xf, 0xf9, 0xf, 0xff, - 0x5d, 0x3, 0xff, 0x81, 0x87, 0xff, 0xab, 0x43, - 0xff, 0x82, 0x87, 0xff, 0xa1, 0xc3, 0xff, 0x85, - 0x7, 0xff, 0xa2, 0x81, 0xff, 0xc3, 0x43, 0xff, - 0xcf, 0xa1, 0xff, 0xc3, 0x83, 0xff, 0xcc, 0xe1, - 0xff, 0xc5, 0x43, 0xff, 0xcb, 0x40, 0xff, 0xfb, - 0xc8, 0x7f, 0xf1, 0xd0, 0xff, 0xf1, 0xe8, 0x7f, - 0xf2, 0x2f, 0xff, 0xe1, 0x51, 0xf, 0xfe, 0x83, - 0x87, 0xff, 0x65, 0x57, 0xa4, 0x3f, 0xf9, 0x74, - 0xf, 0xfe, 0xfb, 0x70, 0x7f, 0xf2, 0x34, 0x3f, - 0xfc, 0x6f, 0x7, 0xff, 0x11, 0xc3, 0xff, 0xce, - 0xf0, 0x7f, 0xfe, 0x5c, 0x3f, 0xf8, 0x2e, 0x1f, - 0xfe, 0xbd, 0xf, 0xfe, 0xe, 0x1f, 0xfe, 0xba, - 0x7, 0xff, 0x7, 0x43, 0xff, 0xd4, 0xc1, 0xff, - 0xc1, 0xa0, 0x7f, 0xfa, 0x98, 0x3f, 0xf8, 0x2e, - 0x1f, 0xfc, 0x9b, 0xff, 0xf8, 0x52, 0x1f, 0xfc, - 0x46, 0xf, 0xfe, 0x16, 0x87, 0xff, 0x1d, 0xf, - 0xfe, 0x13, 0x79, 0xf, 0xfe, 0x12, 0x83, 0xff, - 0x85, 0x40, 0xff, 0xec, 0xda, 0x1f, 0xfc, 0x18, - 0x3f, 0xf8, 0x6e, 0x1f, 0xfc, 0x58, 0x3f, 0xf9, - 0x16, 0x1f, 0xfc, 0x1c, 0x3f, 0xf8, 0x9a, 0x1f, - 0xfc, 0x34, 0x3f, 0xf9, 0x5a, 0x1f, 0xfc, 0x4, - 0x3f, 0xf8, 0x94, 0xf, 0xfe, 0x1a, 0x1f, 0xfc, - 0xaa, 0x7, 0xfd, 0x7, 0xff, 0x15, 0xc3, 0xff, - 0x85, 0x7, 0xff, 0x2d, 0x83, 0xfe, 0x83, 0xff, - 0x8d, 0xa1, 0xff, 0xc1, 0x43, 0xff, 0x96, 0xa0, - 0xff, 0x21, 0xff, 0xc7, 0x90, 0xff, 0xe0, 0x41, - 0xff, 0xcc, 0x83, 0xfe, 0x43, 0xff, 0x8f, 0x40, - 0xff, 0xec, 0xe1, 0xfe, 0x83, 0xff, 0x90, 0xe1, - 0xff, 0x41, 0xff, 0xcd, 0x43, 0xff, 0xa9, 0xa1, - 0xfc, 0x87, 0xff, 0x36, 0xf, 0xf4, 0x1f, 0xfc, - 0xaa, 0x7, 0xf4, 0x1f, 0xfc, 0xd4, 0x3f, 0x90, - 0xff, 0xe5, 0xb8, 0x7e, 0x43, 0xff, 0x9b, 0x7, - 0xff, 0x5f, 0x43, 0xe8, 0x3f, 0xfa, 0xe8, 0x7f, - 0xf3, 0x68, 0x1e, 0x43, 0xff, 0x9a, 0x87, 0xff, - 0x61, 0xc3, 0xc8, 0x7f, 0xf3, 0x30, 0xfe, 0xc3, - 0xff, 0xa1, 0xa1, 0xa0, 0xff, 0xfa, 0x48, 0x7f, - 0xf4, 0x10, 0xfe, 0x43, 0xff, 0xa5, 0x40, 0x61, - 0xff, 0xf6, 0x7c, 0x1f, 0xff, 0xf0, 0xff, 0xff, - 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, - 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, - 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, - 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, - 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, - 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, - 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, - 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, - 0xff, 0x85, 0xf, 0xff, 0x86, 0x1f, 0x30, - - /* U+E906 "" */ - 0xf, 0xfe, 0xbb, 0xe4, 0x3f, 0xfe, 0xd0, 0x28, - 0x1f, 0xff, 0x96, 0xf, 0xff, 0xa4, 0x19, 0xc3, - 0xff, 0xe6, 0x87, 0xb4, 0x3f, 0xfe, 0x48, 0x7a, - 0x81, 0xff, 0xf1, 0x83, 0xe7, 0xf, 0xff, 0x8a, - 0x1f, 0xb4, 0x3f, 0xfd, 0xf0, 0x7f, 0x50, 0x3f, - 0xfd, 0xe8, 0x7f, 0x30, 0x7f, 0xfb, 0xb0, 0xff, - 0x38, 0x7f, 0xfb, 0x50, 0xff, 0xe0, 0x68, 0x7f, - 0xfb, 0x20, 0xff, 0xe0, 0x50, 0x3f, 0xfd, 0x68, - 0x7f, 0xf0, 0x5c, 0x3f, 0xfd, 0x70, 0x7f, 0xf0, - 0xb4, 0x3f, 0xfd, 0x28, 0x7f, 0xf0, 0xe8, 0x1f, - 0xfe, 0x94, 0x3f, 0xf8, 0x6c, 0x1f, 0xfe, 0x88, - 0x3f, 0xf8, 0x8e, 0x1f, 0xff, 0xad, 0xf, 0xff, - 0x2c, 0x1f, 0xfc, 0x7a, 0x7, 0xff, 0x49, 0x57, - 0xff, 0xf0, 0xd0, 0xff, 0xe4, 0x38, 0x7f, 0xf3, - 0x9b, 0xa2, 0x1f, 0xfd, 0xad, 0xf, 0xfe, 0x55, - 0xc8, 0x7f, 0xf7, 0xe8, 0x1f, 0xfc, 0x7b, 0x43, - 0xff, 0xc6, 0xc1, 0xff, 0xc4, 0xb4, 0x3f, 0xfc, - 0xce, 0x1f, 0xfc, 0x17, 0x43, 0xff, 0xd4, 0x87, - 0xfc, 0xc1, 0xff, 0xeb, 0xd0, 0xff, 0x50, 0x3f, - 0xfd, 0x4e, 0x1f, 0xf4, 0x87, 0xff, 0xaa, 0x81, - 0xff, 0x48, 0x7f, 0xfa, 0xb4, 0x3f, 0xe9, 0xf, - 0xfe, 0x23, 0x7f, 0xff, 0x9, 0xf, 0xfe, 0x43, - 0x87, 0xff, 0x1, 0x41, 0xff, 0xc2, 0xbd, 0x21, - 0xff, 0xc2, 0x83, 0xff, 0x8e, 0xc1, 0xff, 0xc1, - 0x83, 0xff, 0x83, 0x68, 0x7f, 0xf6, 0x68, 0x1f, - 0xfc, 0x1c, 0x3f, 0xf8, 0xe, 0x87, 0xff, 0x22, - 0xf, 0xfe, 0x2e, 0x87, 0xff, 0x6, 0xf, 0xfe, - 0x3, 0x7, 0xff, 0x29, 0xf, 0xfe, 0x1b, 0x87, - 0xff, 0xd, 0xf, 0xfa, 0x81, 0xff, 0xca, 0x83, - 0xff, 0x87, 0x40, 0xff, 0xe1, 0xc1, 0xff, 0x48, - 0x7f, 0xf2, 0xd0, 0xff, 0xe1, 0x68, 0x7f, 0xf1, - 0x10, 0xff, 0x28, 0x3f, 0xf9, 0x68, 0x7f, 0xf0, - 0x5c, 0x3f, 0xf8, 0xb0, 0x7f, 0xd0, 0x7f, 0xf3, - 0x20, 0xff, 0xe0, 0x50, 0x3f, 0xf8, 0xc8, 0x7f, - 0xb0, 0xff, 0xe6, 0x21, 0xff, 0xc0, 0xd0, 0xff, - 0xe3, 0x21, 0xfe, 0x43, 0xff, 0x9b, 0x7, 0xf9, - 0xc3, 0xff, 0x91, 0x87, 0xfa, 0xf, 0xfe, 0xbb, - 0x7, 0xff, 0x25, 0xf, 0xe4, 0x3f, 0xf9, 0xb0, - 0x7f, 0x50, 0x3f, 0xfa, 0x90, 0x7f, 0xf3, 0x50, - 0xfd, 0xa1, 0xff, 0xca, 0x43, 0xff, 0xaf, 0x7, - 0xce, 0x1f, 0xfc, 0xcc, 0x3f, 0x90, 0xff, 0xe6, - 0xa1, 0xea, 0x7, 0xff, 0x35, 0xf, 0xec, 0x3f, - 0xf9, 0x90, 0x7b, 0x43, 0xff, 0xb0, 0x87, 0xff, - 0x31, 0xc, 0xe1, 0xff, 0xf7, 0xa0, 0x7f, 0xfd, - 0x20, 0x68, 0x7f, 0xfd, 0x5f, 0x7, 0xff, 0xfc, - 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, - 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, - 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, - 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, - 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, - 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, - 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, - 0xfc, 0x68, 0x7e, 0x43, 0xff, 0xe1, 0x21, 0xe6, - 0xf, 0xff, 0x80, - - /* U+E907 "" */ - 0xf, 0xff, 0x67, 0xfd, 0x5c, 0xb8, 0x3f, 0xfc, - 0x4b, 0xd5, 0xbf, 0xfa, 0xb2, 0xf0, 0x7f, 0xf2, - 0x50, 0xff, 0xe6, 0x2e, 0xae, 0xff, 0xd2, 0x1f, - 0xf6, 0x1f, 0xfd, 0xd6, 0x43, 0xff, 0xd5, 0x87, - 0xf9, 0xf, 0xfe, 0xfc, 0x1f, 0xfe, 0x87, 0xf, - 0xfe, 0x2, 0x1f, 0xfd, 0xab, 0x83, 0xff, 0x83, - 0x87, 0xff, 0x62, 0xd0, 0xff, 0xf3, 0x5a, 0x1f, - 0xfc, 0x54, 0x3f, 0xfa, 0x6f, 0x90, 0xff, 0xf2, - 0xbc, 0x1f, 0xfc, 0xb4, 0x3f, 0xf9, 0xcf, 0x7, - 0xff, 0x37, 0xf, 0xfe, 0x65, 0xc1, 0xff, 0xe7, - 0x50, 0x7f, 0xf4, 0x50, 0xff, 0xff, 0x84, 0x87, - 0xff, 0x4d, 0xf, 0xfe, 0x5e, 0x87, 0xff, 0x47, - 0xf, 0xfe, 0x64, 0x87, 0xff, 0x41, 0xf, 0xfe, - 0x6d, 0x3, 0xff, 0xd4, 0xe1, 0xff, 0xeb, 0xc3, - 0xff, 0x9c, 0x87, 0xff, 0x43, 0x43, 0xff, 0x99, - 0x87, 0xff, 0x46, 0x43, 0xff, 0x96, 0x87, 0xff, - 0x1, 0xf0, 0x7f, 0xf0, 0xe8, 0x1f, 0xfd, 0x78, - 0x1a, 0x1f, 0xfc, 0x27, 0xf, 0xfe, 0xd4, 0x87, - 0xff, 0xf, 0xf, 0xfe, 0x4a, 0x1f, 0xe4, 0x3a, - 0x81, 0xff, 0xc3, 0xd0, 0xff, 0xe3, 0xe1, 0xfe, - 0x83, 0xce, 0x1f, 0xfc, 0x39, 0xf, 0xfe, 0x32, - 0x1f, 0xfc, 0x7c, 0x3f, 0xf8, 0x72, 0x1f, 0xfc, - 0xf4, 0x3f, 0xda, 0x1f, 0xfc, 0x29, 0xf, 0xfe, - 0x76, 0x1f, 0xf4, 0x87, 0xff, 0xa, 0xf, 0xfe, - 0x2a, 0x1f, 0x90, 0xff, 0xe0, 0x50, 0x3f, 0xf8, - 0x58, 0x7f, 0xf1, 0x30, 0xf9, 0xf, 0xfe, 0x13, - 0x7, 0xff, 0xa, 0xf, 0xfe, 0x1a, 0x1f, 0x61, - 0xff, 0xc3, 0x70, 0xff, 0xe0, 0xa8, 0x3f, 0xf9, - 0x48, 0x7f, 0xf1, 0x70, 0xff, 0xe0, 0xc1, 0xff, - 0xdd, 0xc3, 0xff, 0x83, 0x7, 0xff, 0x9, 0xe, - 0x43, 0xff, 0x91, 0x87, 0xff, 0x1, 0xf, 0xfe, - 0x16, 0x1d, 0x87, 0xff, 0x27, 0xf, 0xfe, 0x4, - 0x1f, 0xfc, 0x14, 0x39, 0xf, 0xfe, 0x56, 0x1f, - 0xf2, 0x1f, 0xfc, 0x64, 0x3f, 0xf9, 0x90, 0x7f, - 0xd0, 0x7f, 0xf1, 0x70, 0xff, 0xe6, 0x21, 0xff, - 0x21, 0xff, 0xc1, 0x82, 0x43, 0xff, 0x9b, 0x87, - 0xfd, 0x7, 0xff, 0x1, 0xa6, 0x1f, 0xfc, 0xf4, - 0x3f, 0xc8, 0x7f, 0xf0, 0x54, 0x1f, 0xfd, 0x8, - 0x3f, 0xfd, 0x68, 0x7f, 0xa0, 0xff, 0xef, 0xe1, - 0xfe, 0x43, 0xff, 0xbe, 0x87, 0xff, 0xad, 0xf, - 0xf2, 0x1f, 0xfd, 0xfc, 0x3f, 0xfd, 0x48, 0x7f, - 0xb0, 0xff, 0xf5, 0x21, 0xff, 0xff, 0xf, 0xfe, - 0x62, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, - 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, - 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, - 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, - 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, - 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, - 0x87, 0xff, 0x32, 0xf, 0xe4, 0x3f, 0xfc, 0x32, - 0x1e, 0x60, - - /* U+E908 "" */ - 0xf, 0xff, 0xf8, 0x7f, 0xf1, 0x17, 0xab, 0x7f, - 0xc1, 0xff, 0xc8, 0x5e, 0xad, 0xff, 0xd5, 0xcb, - 0x83, 0xff, 0x8a, 0xdf, 0xfa, 0xb9, 0x70, 0x7f, - 0xf5, 0xe4, 0x3f, 0xfb, 0xa8, 0x7f, 0x21, 0xff, - 0xdf, 0xc3, 0xf9, 0xf, 0xfe, 0xfa, 0x1f, 0xed, - 0xf, 0xff, 0x4d, 0xc1, 0xff, 0xe9, 0x78, 0x3f, - 0xfb, 0x8, 0x7f, 0xf1, 0x1e, 0x43, 0xff, 0xab, - 0x87, 0xff, 0x19, 0xb4, 0x3f, 0xfa, 0x68, 0x7f, - 0xf2, 0x6d, 0xf, 0xff, 0x4d, 0xc1, 0xff, 0xe9, - 0x78, 0x3f, 0xf9, 0x88, 0x7f, 0xf4, 0x18, 0x3f, - 0xf9, 0x78, 0x7f, 0xfa, 0x50, 0xff, 0xe8, 0xc1, - 0xff, 0xe7, 0x70, 0xff, 0xf3, 0xb0, 0x7f, 0xf3, - 0x10, 0xff, 0xe7, 0x50, 0x3f, 0xf9, 0xb8, 0x7f, - 0xf3, 0x64, 0x3f, 0xf9, 0xc8, 0x7f, 0xf3, 0x34, - 0x3f, 0xfc, 0xf8, 0x7f, 0xf9, 0xdc, 0x3f, 0xfa, - 0x28, 0x7f, 0xf2, 0x68, 0x1f, 0xfc, 0x3f, 0x21, - 0xff, 0xc0, 0xc3, 0xff, 0x91, 0x21, 0xff, 0xc3, - 0xc1, 0x7, 0xff, 0x1, 0xf, 0xfe, 0x3e, 0x87, - 0xff, 0x9, 0xc3, 0x21, 0xff, 0xd2, 0xc3, 0xff, - 0x87, 0x40, 0xec, 0x3f, 0xfa, 0x38, 0x7f, 0xf0, - 0xe4, 0x3c, 0x87, 0xf9, 0xf, 0xfe, 0x2e, 0x1f, - 0xfc, 0x3d, 0xf, 0xfe, 0x36, 0x1f, 0xfc, 0x4c, - 0x3f, 0xf8, 0x78, 0x7f, 0x90, 0xfe, 0x43, 0xff, - 0x87, 0x87, 0xff, 0x9, 0xc3, 0xfe, 0x83, 0xff, - 0x99, 0x7, 0xff, 0x9, 0x83, 0xff, 0xb1, 0x21, - 0xff, 0xc1, 0xa0, 0x7f, 0xf0, 0x90, 0xf9, 0xf, - 0xfe, 0x12, 0x1f, 0xfc, 0x19, 0xf, 0xfe, 0x1e, - 0x1f, 0x61, 0xff, 0xc1, 0xc3, 0xff, 0x83, 0xa1, - 0xff, 0xc4, 0x43, 0xe4, 0x3f, 0xf8, 0x10, 0x7f, - 0xf0, 0x70, 0xff, 0xe3, 0xa1, 0xff, 0xc7, 0x43, - 0xff, 0x81, 0x87, 0xff, 0x23, 0xf, 0xfe, 0x34, - 0x1f, 0xfc, 0xc, 0x3f, 0xf9, 0x28, 0x72, 0x1f, - 0xfc, 0x4, 0x3f, 0xe8, 0x3f, 0xfa, 0x18, 0x7f, - 0xd0, 0x7f, 0xca, 0xf, 0xfe, 0x5a, 0x19, 0xf, - 0xf9, 0xf, 0xfa, 0xf, 0xfe, 0x66, 0x1f, 0xfc, - 0x34, 0x3f, 0xe8, 0x3f, 0xf9, 0xa8, 0x48, 0x7f, - 0xd0, 0x7f, 0xc8, 0x7f, 0xf3, 0xba, 0x83, 0xff, - 0x95, 0x7, 0xff, 0x41, 0x41, 0xff, 0x21, 0xff, - 0x21, 0xff, 0xdd, 0xc3, 0xfd, 0x7, 0xff, 0x79, - 0xf, 0xf2, 0x1f, 0xfe, 0x84, 0x3f, 0xfb, 0xc8, - 0x7f, 0xb0, 0xff, 0xef, 0x61, 0xfe, 0x43, 0xff, - 0xfe, 0x1f, 0xfc, 0x94, 0x3f, 0xff, 0xe1, 0xff, - 0xde, 0x43, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, - 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, - 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, - 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, - 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, - 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xe4, - 0x3f, 0xb0, 0xff, 0xef, 0xd0, 0x3e, 0x90, 0xff, - 0xef, 0x80, - - /* U+E909 "" */ - 0xf, 0xfe, 0xfb, 0x7f, 0xe9, 0xf, 0xff, 0x93, - 0x7a, 0x43, 0xf3, 0x7a, 0x43, 0xff, 0xd8, 0xf2, - 0x1f, 0xfc, 0x46, 0xe0, 0xff, 0xf4, 0x3c, 0x1f, - 0xfc, 0xa7, 0x83, 0xff, 0xc8, 0xf0, 0x7f, 0xf3, - 0x9d, 0xf, 0xff, 0xd, 0x3, 0xff, 0xa5, 0x40, - 0xff, 0xef, 0xe8, 0x7f, 0xf5, 0x1c, 0x3f, 0xfb, - 0xb8, 0x7f, 0xf6, 0x34, 0x3f, 0xfb, 0x58, 0x7f, - 0xf6, 0xa4, 0x3f, 0xfb, 0x18, 0x7f, 0xf7, 0x20, - 0xff, 0xeb, 0xe1, 0xff, 0xc5, 0x55, 0x72, 0x1f, - 0xfc, 0x5c, 0x3f, 0xfa, 0xb0, 0x7f, 0xf0, 0xdf, - 0x51, 0x7a, 0xf2, 0x1f, 0xfc, 0x3c, 0x3f, 0xfa, - 0x6a, 0xf, 0xfe, 0xb, 0xc1, 0xff, 0xc0, 0xb4, - 0x3f, 0xf8, 0x50, 0x7f, 0xf4, 0xa0, 0xff, 0xe0, - 0xf0, 0x7f, 0xf1, 0x2d, 0xf, 0xfe, 0x2, 0x1f, - 0xfd, 0x18, 0x3f, 0xf8, 0xe, 0x1f, 0xfc, 0x89, - 0xf, 0xfe, 0x6, 0x1f, 0xfd, 0x4, 0x3f, 0xea, - 0x7, 0xff, 0x2a, 0x81, 0xff, 0xc0, 0x43, 0xff, - 0x9d, 0x7, 0xfd, 0x21, 0xff, 0xcc, 0x60, 0xff, - 0xa0, 0xff, 0xe7, 0x21, 0xfe, 0x50, 0x7f, 0xf3, - 0x94, 0x1f, 0xf2, 0x1f, 0xfc, 0xc8, 0x3f, 0xe8, - 0x3f, 0xfa, 0x10, 0x7f, 0xd8, 0x7f, 0xf3, 0x10, - 0xff, 0x41, 0xff, 0xd2, 0x83, 0xfc, 0x87, 0xff, - 0x5d, 0xf, 0xfe, 0x92, 0x83, 0xfc, 0x87, 0xff, - 0x29, 0xf, 0xf4, 0x1f, 0xfd, 0x4c, 0x3f, 0xd8, - 0x7f, 0xf2, 0xb0, 0xff, 0x21, 0xff, 0xd4, 0x43, - 0xfc, 0x87, 0xff, 0x29, 0xf, 0xe4, 0x3f, 0xfa, - 0xc8, 0x7f, 0xf7, 0xb0, 0xff, 0xeb, 0x61, 0xff, - 0xff, 0x2, 0x1f, 0xe4, 0x3f, 0xfa, 0x68, 0x7f, - 0xfd, 0x90, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, - 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, - 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, - 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, - 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, - 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, - 0x49, 0xf4, 0x1f, 0xfd, 0xf6, 0xf0, 0x7f, 0xf3, - 0xe0, 0x3c, 0x1f, 0xfd, 0xb7, 0x90, 0x41, 0xff, - 0xd3, 0x78, 0x3f, 0xfa, 0xef, 0x7, 0x61, 0xff, - 0xce, 0x83, 0xcf, 0x90, 0xff, 0xe9, 0x5c, 0x1f, - 0x21, 0xff, 0xce, 0x50, 0x7e, 0xb4, 0x3f, 0xf9, - 0xd6, 0x87, 0xec, 0x3f, 0xfa, 0x10, 0x7f, 0xad, - 0xf, 0xfe, 0x55, 0xa1, 0xfd, 0x7, 0xff, 0x4b, - 0xf, 0xfa, 0xe0, 0xb0, 0xff, 0x20, 0x7c, 0x87, - 0xf9, 0x41, 0xff, 0xd3, 0x83, 0xff, 0x80, 0xfc, - 0x87, 0xfa, 0xf4, 0x1f, 0xfc, 0x18, 0x3f, 0xfa, - 0x8c, 0x1f, 0xfd, 0xec, 0x3f, 0xfa, 0xca, 0xf, - 0xfe, 0xe4, 0x1f, 0xfd, 0x88, 0x3f, 0xfb, 0x72, - 0x1f, 0xfd, 0x9c, 0x3f, 0xfb, 0x2a, 0xf, 0xfe, - 0xdc, 0x1f, 0xfd, 0x88, 0x3f, 0xfb, 0x8a, 0xf, - 0xfe, 0xb6, 0x1f, 0xfd, 0xe8, 0x3f, 0xfa, 0xb0, - 0x7f, 0xf8, 0x30, 0xff, 0xe9, 0xa8, 0x3f, 0xfc, - 0x30, 0x7f, 0xf4, 0xa0, 0xff, 0xf1, 0x28, 0x3f, - 0xfa, 0x18, 0x7f, 0xf9, 0x24, 0x3f, 0xf9, 0xd0, - 0x7f, 0xf9, 0xa0, 0xff, 0xe6, 0xa8, 0x3f, 0xfc, - 0xf8, 0x7f, 0xf3, 0x20, 0xff, 0xf4, 0xc1, 0xff, - 0xca, 0xc3, 0xff, 0xd4, 0xa0, 0xff, 0xe4, 0x61, - 0xff, 0xec, 0x83, 0xff, 0x8f, 0x7, 0xff, 0xbb, - 0xf, 0xfe, 0x2a, 0x83, 0xff, 0xdf, 0x7, 0xff, - 0x12, 0xf, 0xff, 0x82, 0x83, 0xff, 0x85, 0x87, - 0xff, 0xca, 0xf, 0xfe, 0xc, 0x1f, 0xff, 0x4c, - 0x3f, 0xe5, 0x7, 0xff, 0xd6, 0xf, 0xf4, 0x1f, - 0xff, 0x66, 0xf, 0xd8, 0x7f, 0xfe, 0x14, 0x1e, - 0x83, 0xff, 0xf5, 0x7, 0x48, 0x7f, 0xfe, 0xf0, - 0x94, 0x1f, 0xff, 0xd8, 0x10, 0x7f, 0xf6, 0xd0, - 0xfe, 0x43, 0xff, 0x98, 0xac, 0x3f, 0xfb, 0x92, - 0x1f, 0x40, - - /* U+E90A "" */ - 0xf, 0xfe, 0x54, 0x1f, 0xfd, 0xfd, 0x83, 0xff, - 0xbb, 0x1, 0x41, 0xff, 0xdb, 0x50, 0x50, 0x7f, - 0xf6, 0xe0, 0xec, 0x3f, 0xfb, 0x38, 0x7d, 0x7, - 0xff, 0x5e, 0xf, 0xca, 0xf, 0xfe, 0xaa, 0x83, - 0xfa, 0xf, 0xfe, 0xac, 0x1f, 0xf6, 0x1f, 0xfd, - 0x3c, 0x3f, 0xf8, 0x30, 0x7f, 0xf4, 0x60, 0xff, - 0xe1, 0x28, 0x3f, 0xf9, 0xea, 0xf, 0xfe, 0x1c, - 0x87, 0xff, 0x35, 0x83, 0xff, 0x8b, 0x7, 0xff, - 0x36, 0xf, 0xfe, 0x3e, 0x1f, 0xfc, 0xbc, 0x3f, - 0xf9, 0x30, 0x7f, 0xf2, 0x60, 0xff, 0xe5, 0x28, - 0x3f, 0xf8, 0xea, 0xf, 0xfe, 0x5c, 0x1f, 0xfc, - 0x78, 0x3f, 0xf9, 0xb8, 0x7f, 0xf1, 0x70, 0xff, - 0xe7, 0xc1, 0xff, 0xc3, 0x83, 0xff, 0xa0, 0xa0, - 0xff, 0xe0, 0xa8, 0x3f, 0xfa, 0x30, 0x7f, 0xf0, - 0x60, 0xff, 0xe9, 0xe1, 0xff, 0x61, 0xff, 0xd5, - 0x83, 0xfa, 0xf, 0xfe, 0xb3, 0x7, 0xca, 0xf, - 0xfe, 0xba, 0x83, 0x98, 0x3f, 0xd7, 0xa0, 0xfe, - 0xf9, 0xf, 0xf4, 0x1d, 0x7, 0xf5, 0xa0, 0x43, - 0xff, 0x81, 0x70, 0x7f, 0x61, 0x61, 0xf3, 0x68, - 0x7f, 0xf1, 0xde, 0xf, 0xd1, 0x7, 0x9e, 0x43, - 0xff, 0x96, 0xf2, 0x1c, 0xb0, 0x67, 0x83, 0xff, - 0xa0, 0xda, 0x1b, 0x81, 0x70, 0x7f, 0xf5, 0x6d, - 0x4, 0xf9, 0xf, 0xfe, 0xcd, 0xe0, 0xff, 0xff, - 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, - 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, - 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, - 0x3f, 0xff, 0xe1, 0xff, 0xed, 0x43, 0xff, 0xb1, - 0x7, 0xd8, 0x7f, 0xf6, 0x1e, 0xbb, 0x43, 0xff, - 0xb4, 0xbc, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xea, 0x69, - 0xd0, 0x3f, 0xfb, 0x2f, 0x28, 0x57, 0x83, 0xff, - 0xad, 0x40, 0xfe, 0xd0, 0xff, 0xe9, 0xa8, 0x3f, - 0xe9, 0xf, 0xfe, 0x94, 0x1f, 0xfc, 0x18, 0x3f, - 0xfa, 0x38, 0x7f, 0xf0, 0xe0, 0xff, 0xf0, 0x21, - 0xff, 0xcf, 0x43, 0xff, 0xfe, 0x1f, 0xff, 0xf0, - 0xff, 0xe8, 0xa1, 0xff, 0xf1, 0x43, 0xff, 0xa1, - 0x7, 0xff, 0xe, 0xf, 0xfe, 0x82, 0x83, 0xff, - 0x83, 0x7, 0xff, 0x4a, 0x43, 0xfe, 0x50, 0x7f, - 0xf4, 0xe4, 0x3f, 0xa8, 0x1f, 0xfd, 0x5b, 0x43, - 0x36, 0x87, 0xff, 0x14, - - /* U+E90B "" */ - 0xf, 0xfe, 0x97, 0x90, 0xff, 0xf9, 0x38, 0x20, - 0xff, 0xf8, 0xd0, 0x3f, 0xfe, 0x9a, 0x1a, 0xf, - 0xff, 0x73, 0x87, 0x90, 0xff, 0xf6, 0xd0, 0x3d, - 0x7, 0xff, 0xb7, 0x43, 0xe4, 0x3f, 0xfd, 0x6e, - 0x1f, 0x90, 0xff, 0xf5, 0xb0, 0x7f, 0x41, 0xff, - 0xea, 0xa0, 0x7f, 0x21, 0xff, 0xea, 0xd0, 0xff, - 0x41, 0xff, 0xe8, 0x70, 0xff, 0xfa, 0x50, 0x3f, - 0xf8, 0x10, 0x7f, 0xf9, 0xf4, 0x3f, 0xf8, 0x28, - 0x7f, 0xf9, 0x5c, 0x3f, 0xf8, 0x50, 0x7f, 0xf9, - 0x68, 0x1f, 0xfc, 0x34, 0x3f, 0xfc, 0x92, 0x1f, - 0xfc, 0x38, 0x3f, 0xfc, 0x9a, 0x1f, 0xff, 0x37, - 0xf, 0xfe, 0x34, 0x1f, 0xfe, 0x1a, 0x7, 0xff, - 0x23, 0xff, 0xd4, 0x43, 0xff, 0xa7, 0xa1, 0xff, - 0xd3, 0x55, 0xe4, 0x3f, 0xf9, 0xce, 0x1f, 0xfd, - 0xab, 0x83, 0xff, 0x97, 0x40, 0xff, 0xee, 0xbc, - 0x1f, 0xfc, 0x89, 0xf, 0xff, 0x3, 0xa1, 0xff, - 0xc6, 0x90, 0xff, 0xf1, 0x50, 0x3f, 0xf8, 0xd2, - 0x1f, 0xfe, 0x27, 0xf, 0xfe, 0x35, 0x3, 0xff, - 0xc7, 0x87, 0xff, 0x19, 0xc3, 0xff, 0xc7, 0x87, - 0xff, 0x1f, 0x43, 0xff, 0x91, 0x5f, 0xc8, 0x7f, - 0xf1, 0x30, 0xff, 0xe3, 0xd0, 0x3f, 0xf8, 0xd2, - 0xff, 0x5e, 0x43, 0xff, 0x85, 0x87, 0xff, 0x1d, - 0xc3, 0xff, 0xa5, 0x70, 0x7f, 0xf0, 0x60, 0xff, - 0xe4, 0x68, 0x7f, 0xf0, 0xe0, 0xff, 0xe1, 0x3a, - 0x1f, 0xf2, 0x83, 0xff, 0x91, 0x40, 0xff, 0xe1, - 0xa1, 0xff, 0xc3, 0xa0, 0x7f, 0xd0, 0x7f, 0xf2, - 0x58, 0x3f, 0xf8, 0x50, 0x7f, 0xf1, 0x1c, 0x3f, - 0xe8, 0x3f, 0xf9, 0x2e, 0x1f, 0xfd, 0x4c, 0x3f, - 0xc8, 0x7f, 0xf2, 0xf4, 0x3f, 0xf8, 0x10, 0x7f, - 0xf1, 0xa0, 0xff, 0x41, 0xff, 0xcb, 0xa0, 0x7f, - 0xc8, 0x7f, 0xf1, 0x94, 0x1f, 0xc8, 0x7f, 0xf3, - 0x1c, 0x3f, 0xe8, 0x3f, 0xf8, 0xd0, 0x7f, 0x90, - 0xff, 0xe6, 0xe8, 0x7f, 0x21, 0xff, 0xc7, 0x83, - 0xfa, 0xf, 0xfe, 0x75, 0x3, 0xf9, 0xf, 0xfe, - 0x32, 0x1f, 0xfd, 0x97, 0xf, 0xd0, 0x7f, 0xf1, - 0xe0, 0xfe, 0x43, 0xff, 0xa1, 0xa1, 0xf2, 0x1f, - 0xfc, 0x64, 0x3f, 0xb0, 0xff, 0xe8, 0xc8, 0x7a, - 0xf, 0xfe, 0x82, 0x1f, 0xfd, 0x2a, 0x7, 0x90, - 0xff, 0xe3, 0x21, 0xff, 0xdc, 0x70, 0xe8, 0x3f, - 0xf8, 0xd8, 0x7f, 0xf7, 0xb4, 0x3f, 0xf9, 0x48, - 0x7f, 0xf7, 0xe8, 0x8, 0x3f, 0xfe, 0x6f, 0x90, - 0xff, 0xe8, 0x21, 0xff, 0xff, 0xf, 0xff, 0xf8, - 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, - 0xff, 0xff, 0x87, 0xff, 0x19, 0xf, 0xff, 0x6a, - 0x1f, 0x21, 0xff, 0xee, 0xba, 0xf8, 0x3f, 0xfe, - 0xb, 0xe0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, - 0xff, 0xe1, 0xff, 0xd8, 0x6f, 0xa4, 0x3f, 0xfd, - 0xcf, 0x21, 0x37, 0x7, 0xff, 0xae, 0x81, 0xfc, - 0xe1, 0xff, 0xe9, 0x90, 0xff, 0xe0, 0x61, 0xff, - 0xe7, 0x50, 0x7f, 0xf0, 0xa0, 0xff, 0xf3, 0x41, - 0xff, 0xc3, 0x43, 0xff, 0xca, 0x87, 0xff, 0x16, - 0xf, 0xff, 0x26, 0x1f, 0xfc, 0x54, 0x3f, 0xff, - 0xe1, 0xff, 0xdc, 0x43, 0xff, 0xec, 0x87, 0xff, - 0xfc, 0x3f, 0xfd, 0xd8, 0x7f, 0xf1, 0x50, 0xff, - 0xf2, 0x21, 0xff, 0xc5, 0x83, 0xff, 0xcb, 0x7, - 0xff, 0xd, 0xf, 0xff, 0x32, 0x83, 0xff, 0x85, - 0x7, 0xff, 0x9e, 0x43, 0xff, 0x81, 0x87, 0xff, - 0xa6, 0x81, 0xfc, 0xe1, 0xff, 0xeb, 0x79, 0xc, - 0xf0, 0x70, - - /* U+E90C "" */ - 0xf, 0xfe, 0xab, 0xe0, 0xff, 0xfa, 0x40, 0xd0, - 0xff, 0xf9, 0x21, 0x50, 0x3f, 0xfe, 0x38, 0x67, - 0xf, 0xff, 0x82, 0x1e, 0xd0, 0xff, 0xf7, 0xc1, - 0xea, 0x7, 0xff, 0xb9, 0xf, 0x9c, 0x3f, 0xfd, - 0xd0, 0x7e, 0xd0, 0xff, 0xf6, 0x21, 0xfd, 0x40, - 0xff, 0xf6, 0x21, 0xfc, 0xc1, 0xff, 0xeb, 0x83, - 0xfc, 0xe1, 0xff, 0xeb, 0x43, 0xfe, 0xd0, 0xff, - 0xf4, 0xc1, 0xff, 0xc0, 0xa0, 0x7f, 0xfd, 0x9c, - 0x3f, 0xfd, 0x10, 0x7f, 0xf0, 0xb4, 0x3f, 0xfc, - 0xc8, 0x7f, 0xf0, 0xe8, 0x1f, 0xfe, 0x68, 0x3f, - 0xf8, 0x6e, 0x1f, 0xff, 0x7d, 0xf, 0xff, 0x1c, - 0x1f, 0xfc, 0x69, 0xf, 0xfe, 0xab, 0x4f, 0xff, - 0x7, 0xff, 0x22, 0x81, 0xff, 0xd1, 0x6e, 0x50, - 0x7f, 0xf4, 0xdc, 0x3f, 0xf9, 0xd7, 0x21, 0xff, - 0xd9, 0xd0, 0xff, 0xe5, 0x5a, 0x1f, 0xfd, 0xda, - 0x7, 0xff, 0x1d, 0xd0, 0xff, 0xf0, 0x38, 0x7f, - 0xf1, 0x68, 0x1f, 0xfe, 0x3c, 0x3f, 0xf8, 0x9a, - 0x1f, 0xfe, 0x27, 0xf, 0xfe, 0x26, 0x1f, 0xfe, - 0x3a, 0x7, 0xff, 0x13, 0xf, 0xff, 0x1e, 0x87, - 0xff, 0x13, 0xf, 0xfe, 0x23, 0x5f, 0xc1, 0xff, - 0xc8, 0x70, 0xff, 0xe2, 0xe1, 0xff, 0xc2, 0x7d, - 0x2f, 0xf4, 0x1f, 0xfc, 0x6a, 0x7, 0xff, 0x16, - 0xf, 0xfe, 0xd, 0xc1, 0xff, 0xd2, 0xd0, 0xff, - 0xe2, 0xa8, 0x3f, 0xe7, 0x43, 0xff, 0x85, 0x7, - 0xff, 0xd, 0xc3, 0xff, 0x8f, 0x7, 0xfd, 0x40, - 0xff, 0xe9, 0xb0, 0x7f, 0xf1, 0xe0, 0xff, 0xa4, - 0x3f, 0xf8, 0x90, 0x7f, 0xf0, 0xa8, 0x1f, 0xfc, - 0x84, 0x3f, 0xda, 0x1f, 0xfc, 0x54, 0x3f, 0xf8, - 0x3a, 0x1f, 0xfc, 0x88, 0x3f, 0xd0, 0x7f, 0xf1, - 0xa0, 0xff, 0xe0, 0x38, 0x7f, 0xf2, 0x90, 0xfe, - 0x50, 0x7f, 0xf1, 0x90, 0xff, 0xa8, 0x1f, 0xfc, - 0xa4, 0x3f, 0xd0, 0x7f, 0xf1, 0x90, 0xff, 0xb4, - 0x3f, 0xf9, 0x70, 0x7f, 0x41, 0xff, 0xc7, 0x83, - 0xf9, 0xc3, 0xff, 0xae, 0x87, 0xff, 0x19, 0xf, - 0xea, 0x7, 0xff, 0x35, 0xf, 0xe4, 0x3f, 0xf8, - 0xf0, 0x7e, 0x90, 0xff, 0xe7, 0x61, 0xfd, 0x7, - 0xff, 0x19, 0xf, 0xda, 0x1f, 0xfc, 0xf4, 0x3f, - 0xfa, 0x10, 0x79, 0xc3, 0xff, 0xb4, 0x87, 0xff, - 0x36, 0x81, 0xff, 0xdb, 0xc3, 0xff, 0x8d, 0x7, - 0x68, 0x7f, 0xfb, 0xd0, 0x9c, 0x3f, 0xfe, 0x30, - 0x28, 0x1f, 0xfd, 0x54, 0x3f, 0x90, 0xff, 0xe3, - 0x3e, 0x43, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, - 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, - 0xf1, 0x43, 0xff, 0xee, 0x87, 0xc8, 0x7f, 0xfb, - 0xab, 0xee, 0xf, 0xff, 0x7a, 0xf8, 0x3f, 0xff, - 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xf6, - 0x5b, 0xe9, 0xf, 0xff, 0x73, 0xc8, 0x4d, 0xa1, - 0xff, 0xeb, 0xa0, 0x7f, 0x50, 0x3f, 0xfd, 0x32, - 0x1f, 0xf3, 0x7, 0xff, 0x9e, 0x43, 0xff, 0x82, - 0xa0, 0xff, 0xf3, 0x21, 0xff, 0xc3, 0x83, 0xff, - 0xca, 0x87, 0xff, 0x15, 0xf, 0xff, 0x24, 0x1f, - 0xfc, 0x5c, 0x3f, 0xfe, 0xc8, 0x7f, 0xff, 0xc3, - 0xff, 0xfe, 0x1f, 0xfe, 0x64, 0x3f, 0xfc, 0x88, - 0x7f, 0xf1, 0x70, 0xff, 0xf2, 0x41, 0xff, 0xc5, - 0x43, 0xff, 0xca, 0x87, 0xff, 0xe, 0xf, 0xff, - 0x34, 0x1f, 0xfc, 0x25, 0x7, 0xff, 0x9f, 0xf, - 0xfe, 0x3, 0x7, 0xff, 0xa7, 0x43, 0xf9, 0x83, - 0xff, 0xd7, 0x68, 0x75, 0xc1, 0xff, 0xe8, - - /* U+E90D "" */ - 0xf, 0xff, 0xf8, 0x7f, 0xf4, 0xdf, 0x21, 0xff, - 0xfa, 0xa0, 0x20, 0xff, 0xfc, 0xe8, 0x7f, 0xfe, - 0xdc, 0x3a, 0xf, 0xff, 0xb5, 0x3, 0xc8, 0x7f, - 0xfd, 0x64, 0x3d, 0x7, 0xff, 0xd7, 0x43, 0xe4, - 0x3f, 0xfe, 0x6e, 0x1f, 0x90, 0xff, 0xf9, 0xd0, - 0x3f, 0xa0, 0xff, 0xf9, 0x68, 0x7f, 0x21, 0xff, - 0xf1, 0x70, 0xff, 0xa0, 0xff, 0xf8, 0x50, 0x3f, - 0xe4, 0x3f, 0xfe, 0x12, 0x1f, 0xfc, 0xc, 0x3f, - 0xfd, 0xfa, 0x1f, 0xfc, 0x14, 0x3f, 0xfd, 0xae, - 0x1f, 0xfc, 0x28, 0x3f, 0xfd, 0xb4, 0xf, 0xfe, - 0x1a, 0x1f, 0xfe, 0xcd, 0xf, 0xfe, 0x1c, 0x1f, - 0xfe, 0xb7, 0xf, 0xfe, 0x2a, 0x1f, 0xfe, 0xaa, - 0x7, 0xff, 0xf3, 0x43, 0xff, 0x8e, 0x87, 0xff, - 0xa3, 0xf, 0xfe, 0x4d, 0xff, 0xfe, 0x8, 0x39, - 0xc3, 0xff, 0xbf, 0x7f, 0xff, 0x2c, 0x82, 0xa0, - 0x7f, 0xf8, 0x2e, 0xf, 0xfe, 0x4c, 0x83, 0x43, - 0xff, 0xc6, 0xf0, 0x7f, 0xf2, 0x5c, 0x3f, 0xfc, - 0xef, 0x7, 0xff, 0xf9, 0xc3, 0xff, 0x8c, 0xe1, - 0xff, 0xeb, 0xd0, 0xff, 0xe3, 0x68, 0x7f, 0xfa, - 0xa8, 0x1f, 0xfc, 0x69, 0xf, 0xff, 0x53, 0x7, - 0xff, 0x2, 0x43, 0x50, 0x3f, 0xfd, 0x4f, 0xff, - 0xf0, 0x8, 0x39, 0xc3, 0xff, 0x93, 0x7f, 0xff, - 0x6, 0x88, 0x7f, 0xf1, 0x5f, 0xff, 0x41, 0xfb, - 0x43, 0xff, 0x8e, 0x87, 0xff, 0x5, 0x57, 0x90, - 0xff, 0xe1, 0x28, 0x3f, 0xf8, 0xf4, 0xf, 0xfe, - 0xcd, 0xa1, 0xff, 0xc1, 0x83, 0xff, 0x90, 0xe1, - 0xff, 0xc5, 0x83, 0xff, 0x91, 0x61, 0xff, 0xc1, - 0xc3, 0xff, 0x93, 0xa1, 0xff, 0xc3, 0x43, 0xff, - 0x95, 0xa1, 0xff, 0xc0, 0x43, 0xff, 0x93, 0x40, - 0xff, 0xe1, 0xa1, 0xff, 0xca, 0xa0, 0x7f, 0xd0, - 0x7f, 0xf2, 0x9c, 0x3f, 0xf8, 0x50, 0x7f, 0xf2, - 0xd8, 0x3f, 0xe8, 0x3f, 0xf9, 0x7a, 0x1f, 0xfc, - 0x14, 0x3f, 0xf9, 0x6a, 0xf, 0xf2, 0x1f, 0xfc, - 0xc9, 0xf, 0xfe, 0x4, 0x1f, 0xfc, 0xc8, 0x3f, - 0xe4, 0x3f, 0xf9, 0x94, 0xf, 0xfe, 0xce, 0x1f, - 0xe8, 0x3f, 0xf9, 0xae, 0x1f, 0xf4, 0x1f, 0xfc, - 0xd4, 0x3f, 0xfb, 0x3a, 0x1f, 0xc8, 0x7f, 0xf3, - 0x60, 0xff, 0x41, 0xff, 0xcf, 0xa0, 0x7f, 0x41, - 0xff, 0xcd, 0x43, 0xf9, 0xf, 0xfe, 0x83, 0x87, - 0xe4, 0x3f, 0xf9, 0xb0, 0x7f, 0xf7, 0x34, 0x3e, - 0x83, 0xff, 0xae, 0x87, 0xff, 0x4a, 0x81, 0xe4, - 0x3f, 0xf9, 0xa8, 0x7f, 0xf7, 0x5c, 0x3c, 0x87, - 0xff, 0x33, 0xf, 0xec, 0x3f, 0xfa, 0xba, 0x1a, - 0xf, 0xff, 0xcc, 0x87, 0xff, 0x41, 0xf, 0xe4, - 0x3f, 0xfa, 0xf4, 0x6, 0x1f, 0xff, 0xb7, 0xc1, - 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, - 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, - 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, - 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, - 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, - 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, - 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, - 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, - 0xfe, 0x1f, 0xfd, 0x74, 0x3f, 0xfe, 0xb8, 0x7c, - 0xc1, 0xc0, - - /* U+E90E "" */ - 0xf, 0xff, 0xf8, 0x7f, 0xf9, 0x9f, 0x21, 0xff, - 0xff, 0x20, 0x50, 0x3f, 0xff, 0xe1, 0x9c, 0x3f, - 0xff, 0xd0, 0x76, 0x1f, 0xff, 0xd4, 0x3d, 0xa1, - 0xff, 0xfc, 0x43, 0xd4, 0xf, 0xff, 0xdc, 0x1f, - 0x38, 0x7f, 0xfe, 0xd0, 0xfd, 0xa1, 0xff, 0xf9, - 0x83, 0xfa, 0x81, 0xff, 0xf9, 0x43, 0xf9, 0xc3, - 0xff, 0xf1, 0x87, 0xfd, 0x87, 0xff, 0xdd, 0xf, - 0xfe, 0x6, 0x87, 0xff, 0xda, 0xf, 0xfe, 0x5, - 0x3, 0xff, 0xea, 0x87, 0xff, 0x5, 0xc3, 0xff, - 0xeb, 0x7, 0xff, 0xb, 0x43, 0xff, 0xe6, 0x87, - 0xff, 0xe, 0x81, 0xff, 0xf3, 0x43, 0xff, 0x86, - 0xe1, 0xff, 0xf2, 0x83, 0xff, 0x8b, 0x87, 0xff, - 0xfc, 0x3b, 0x43, 0xff, 0xdf, 0x7, 0xff, 0x1e, - 0x81, 0xfa, 0xff, 0xff, 0x2a, 0x1f, 0xfc, 0x87, - 0xf, 0x47, 0xff, 0xf4, 0x10, 0xff, 0xef, 0xe8, - 0x66, 0xf, 0xfe, 0x6b, 0x68, 0x7f, 0xf8, 0x28, - 0x1f, 0xfd, 0x1e, 0x43, 0xff, 0xc6, 0xe1, 0xff, - 0xce, 0xb0, 0xff, 0xf4, 0x61, 0xff, 0xcb, 0x74, - 0x3f, 0xfd, 0x48, 0x7f, 0xf2, 0x68, 0x1f, 0xfe, - 0xbd, 0xf, 0xfe, 0x44, 0x87, 0xff, 0xa9, 0xc2, - 0x43, 0xff, 0x8b, 0x21, 0xff, 0xea, 0xa0, 0x5d, - 0xff, 0xfc, 0x54, 0x3f, 0xfd, 0x5a, 0x1d, 0xff, - 0xfc, 0x44, 0x3f, 0xf8, 0xad, 0xff, 0xfc, 0x24, - 0x3f, 0xf9, 0xe, 0x1f, 0xfc, 0xa9, 0xf, 0xfe, - 0x15, 0xe9, 0xf, 0xfe, 0x14, 0x1f, 0xfc, 0x7a, - 0x7, 0xff, 0x29, 0x41, 0xff, 0xc1, 0xb4, 0x3f, - 0xfb, 0x32, 0x1f, 0xfc, 0xb8, 0x3f, 0xf8, 0xe, - 0x87, 0xff, 0x22, 0xf, 0xfe, 0x2e, 0x87, 0xff, - 0x2e, 0xf, 0xfe, 0x5, 0x3, 0xff, 0x94, 0x87, - 0xff, 0xd, 0xc3, 0xff, 0x9a, 0x87, 0xfd, 0x21, - 0xff, 0xca, 0x83, 0xff, 0x87, 0x40, 0xff, 0xe6, - 0xc1, 0xff, 0x48, 0x7f, 0xf2, 0xd0, 0xff, 0xe1, - 0x68, 0x7f, 0xf3, 0x90, 0xff, 0x48, 0x7f, 0xf2, - 0xd0, 0xff, 0xe0, 0xb8, 0x7f, 0xf3, 0xe0, 0xff, - 0x28, 0x3f, 0xf9, 0x90, 0x7f, 0xf0, 0x28, 0x1f, - 0xfd, 0x4, 0x3f, 0xd0, 0x7f, 0xf3, 0x10, 0xff, - 0xe0, 0x68, 0x7f, 0xf4, 0x10, 0xff, 0x41, 0xff, - 0xcd, 0x83, 0xfc, 0xe1, 0xff, 0xd2, 0xc3, 0xfc, - 0x87, 0xff, 0x5d, 0x83, 0xff, 0xa6, 0x87, 0xf2, - 0x1f, 0xfc, 0xd8, 0x3f, 0xa8, 0x1f, 0xfd, 0x34, - 0x3f, 0xd0, 0x7f, 0xf3, 0x50, 0xfd, 0xa1, 0xff, - 0xf8, 0x83, 0xe7, 0xf, 0xfe, 0xb6, 0x1f, 0xc8, - 0x7f, 0xf3, 0x50, 0xf5, 0x3, 0xff, 0xae, 0x87, - 0xf6, 0x1f, 0xfc, 0xc8, 0x3d, 0xa1, 0xff, 0xe2, - 0x43, 0xff, 0x98, 0x86, 0x70, 0xff, 0xff, 0x82, - 0x81, 0xff, 0xfe, 0x81, 0xa1, 0xff, 0xff, 0x7c, - 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, - 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, - 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, - 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, - 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, - 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, - 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, - 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, - 0xff, 0xe1, 0xff, 0xff, 0xf, 0xfe, 0x7a, 0x1f, - 0x90, 0xff, 0xfd, 0x48, 0x79, 0x83, 0xff, 0xe0, - - /* U+E90F "" */ - 0xf, 0xfe, 0x63, 0x7f, 0xff, 0x16, 0x81, 0xff, - 0xe4, 0xe4, 0x3f, 0xf8, 0xaa, 0xd0, 0xff, 0xf0, - 0xe1, 0xff, 0xcb, 0x83, 0xff, 0xc0, 0x87, 0xff, - 0x36, 0xf, 0xfe, 0xfe, 0x1f, 0xfc, 0xd4, 0x3f, - 0xfb, 0x6b, 0xc1, 0xff, 0xce, 0x5c, 0x1f, 0xfd, - 0x5b, 0xac, 0x1f, 0xfc, 0xfa, 0xde, 0x43, 0xff, - 0xa0, 0xe8, 0x7f, 0xf6, 0xa8, 0x1f, 0xfc, 0xe6, - 0xf, 0xfe, 0xeb, 0x7, 0xff, 0x36, 0xf, 0xfe, - 0xfa, 0x1f, 0xfc, 0xc8, 0x3f, 0xfc, 0x38, 0x7f, - 0xf2, 0xd0, 0xef, 0xff, 0xeb, 0x87, 0xff, 0x41, - 0xe, 0xc3, 0xff, 0xaf, 0x87, 0x21, 0xff, 0xff, - 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, - 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0x9, - 0xe0, 0xff, 0xfa, 0xbc, 0x3a, 0x1f, 0xff, 0x17, - 0x83, 0xad, 0xf, 0xff, 0x75, 0x3, 0xfa, 0x81, - 0xff, 0xeb, 0xb4, 0x3f, 0xe7, 0x83, 0xff, 0xce, - 0xe8, 0x7f, 0xf0, 0xdd, 0xf, 0xff, 0x1b, 0xc1, - 0xff, 0xc7, 0xb4, 0x3f, 0xfc, 0x1c, 0x1f, 0xfc, - 0xba, 0x7, 0xff, 0x76, 0xc3, 0xff, 0x9c, 0xf0, - 0x7f, 0xf6, 0x6d, 0xf, 0xfe, 0x8b, 0xa1, 0xff, - 0xd6, 0xd0, 0xff, 0xea, 0xd8, 0x7f, 0xff, 0xc3, - 0xff, 0xfe, 0x1f, 0xfc, 0x58, 0x3f, 0xfc, 0x70, - 0x7f, 0xf1, 0xdc, 0x3f, 0xfc, 0xba, 0x1f, 0xfc, - 0x4a, 0x7, 0xff, 0x9e, 0x81, 0xff, 0xc1, 0x74, - 0x3f, 0xfd, 0x2e, 0x87, 0xfa, 0x81, 0xff, 0xed, - 0xa0, 0x7e, 0xd0, 0xff, 0xf7, 0xb8, 0x7f, 0xff, - 0xc1, 0x7, 0xff, 0xc6, 0xf, 0x90, 0xff, 0xf8, - 0xa1, 0xfa, 0xf, 0xff, 0x7c, 0x1f, 0xc8, 0x7f, - 0xfb, 0xd0, 0xff, 0x41, 0xff, 0xed, 0x83, 0xfe, - 0x43, 0xff, 0xda, 0x87, 0xff, 0x2, 0xf, 0xff, - 0x5c, 0x1f, 0xfc, 0x14, 0x3f, 0xfd, 0x68, 0x7f, - 0xf0, 0xa0, 0xff, 0xf4, 0xc1, 0xff, 0xc3, 0x43, - 0xff, 0xd2, 0x87, 0xff, 0x12, 0xf, 0xff, 0x3c, - 0x1f, 0xfc, 0x54, 0x3f, 0xfc, 0xca, 0xf, 0xfe, - 0x34, 0x1f, 0xfe, 0x58, 0x3f, 0xf8, 0xe8, 0x7f, - 0xf9, 0x10, 0xff, 0xe4, 0xc1, 0xff, 0xe3, 0x83, - 0xff, 0x92, 0x87, 0xff, 0x89, 0xf, 0xfe, 0x5c, - 0x1f, 0xfe, 0x18, 0x3f, 0xf9, 0x68, 0x7f, 0xf8, - 0x10, 0xff, 0xe6, 0xc1, 0xff, 0xdf, 0x83, 0xff, - 0x9a, 0x87, 0xff, 0x4d, 0x70, 0x7c, 0x87, 0xff, - 0x3e, 0xc, 0xdf, 0xe9, 0xf, 0xfe, 0x3, 0x7a, - 0xb7, 0xa4, 0x28, 0x3f, 0xf9, 0xe8, 0x1e, 0x43, - 0xcd, 0xc1, 0xf9, 0xe4, 0x3f, 0x36, 0xa0, 0xff, - 0xe8, 0xdc, 0x1f, 0xfc, 0x7, 0x83, 0xb8, 0x3f, - 0xf8, 0x54, 0xf, 0xfe, 0x8a, 0x1f, 0xfc, 0x47, - 0x3, 0x87, 0xff, 0xdb, 0xa0, 0x7f, 0xfe, 0x10, - 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, - 0xff, 0xff, 0xf, 0xfe, 0x1d, 0x10, 0xff, 0xe2, - 0xb5, 0x90, 0xff, 0xe3, 0x35, 0x21, 0xff, 0xc6, - 0x61, 0x56, 0x87, 0xff, 0x6, 0xe5, 0xd7, 0x7, - 0xff, 0x5, 0xf4, 0xb5, 0xe4, 0x3f, 0xf8, 0xf, - 0xa4, 0x3a, 0x81, 0xfe, 0x74, 0x3f, 0x3a, 0x1f, - 0xee, 0xf, 0xea, 0x7, 0xfa, 0x81, 0xfe, 0x74, - 0x3e, 0x60, 0xff, 0xe0, 0x48, 0x7e, 0xc3, 0xff, - 0x80, 0xc1, 0xfb, 0x43, 0xff, 0x83, 0x21, 0xd4, - 0xf, 0xfe, 0x15, 0x3, 0x9c, 0x3f, 0xf8, 0x4e, - 0x1e, 0xc3, 0xff, 0x89, 0x45, 0xb4, 0x3e, 0x43, - 0xf3, 0xa0, 0xa0, 0x7f, 0xf1, 0x79, 0x56, 0x1f, - 0xdc, 0x1f, 0x35, 0x7, 0xd7, 0x78, 0x3f, 0x5e, - 0x43, 0xd7, 0xe0, 0xfc, 0xd1, 0xf, 0x3e, 0x3, - 0x87, 0xff, 0x13, 0x43, 0x68, 0x7f, 0xf0, 0xe4, - 0x36, 0x87, 0xff, 0xd, 0x83, 0xd8, 0x7f, 0xf0, - 0xb0, 0xfa, 0x43, 0xff, 0x83, 0xa1, 0xe9, 0xf, - 0xfe, 0xd, 0x3, 0xf6, 0x87, 0xf9, 0xc3, 0xfa, - 0x81, 0xfe, 0x70, 0xfe, 0xa0, 0x7f, 0xda, 0x1f, - 0xeb, 0x43, 0xcf, 0x7, 0xfc, 0xf0, 0x79, 0xe0, - 0xff, 0x9d, 0xf, 0x36, 0x1f, 0xfc, 0x2b, 0xfd, - 0x7, 0xff, 0xd, 0xff, 0x41, 0xff, 0xc3, 0xbf, - 0xd2, 0x1f, 0x80, - - /* U+E910 "" */ - 0x2f, 0x7, 0xff, 0x3, 0xff, 0xfd, 0xcc, 0x83, - 0xf, 0xff, 0xc4, 0xa0, 0xc8, 0x7f, 0xfd, 0xa4, - 0x3f, 0xff, 0x92, 0x1f, 0xff, 0xc5, 0x7, 0xff, - 0xf1, 0x83, 0xff, 0xf8, 0xc1, 0xff, 0xfd, 0x83, - 0xff, 0xfb, 0x87, 0xff, 0xf7, 0xf, 0xff, 0xee, - 0x1f, 0xff, 0xdc, 0x3f, 0xff, 0xb8, 0x7f, 0xff, - 0x60, 0xff, 0xfe, 0xc8, 0x7f, 0xff, 0x24, 0x3f, - 0xff, 0x8a, 0xf, 0xff, 0xe3, 0x7, 0xff, 0xf1, - 0x83, 0xff, 0xf8, 0xc1, 0xff, 0xfd, 0x83, 0xff, - 0xfb, 0x7, 0xff, 0xfa, 0xf, 0xff, 0xfe, 0x1f, - 0xff, 0xfc, 0x3f, 0xff, 0xf8, 0x7f, 0xff, 0xf0, - 0xff, 0xff, 0xc1, 0xff, 0xfe, 0x60, 0xff, 0xff, - 0x30, 0x7f, 0xff, 0x98, 0x3f, 0xff, 0xca, 0xf, - 0xff, 0xf4, 0x87, 0xff, 0xfa, 0x43, 0xff, 0xfd, - 0x7, 0xff, 0xff, 0xf, 0xff, 0xfe, 0x1f, 0xff, - 0xfc, 0x3f, 0xff, 0xf8, 0x7f, 0xff, 0xf0, 0xff, - 0xff, 0xc1, 0xff, 0xfe, 0x60, 0xff, 0xe2, 0xaf, - 0xff, 0xb4, 0x43, 0xff, 0x89, 0x5f, 0xfe, 0xe4, - 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, - 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, - 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, - 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, - 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, - 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, - 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, - 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, - 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, - 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, - 0xff, 0x43, 0x21, 0xff, 0xf9, 0x90, 0x61, 0xff, - 0xfa, - - /* U+E911 "" */ - 0x3f, 0x57, 0x2e, 0xf, 0xff, 0x4a, 0xf5, 0x77, - 0xd0, 0x72, 0xf5, 0x6f, 0xfe, 0xae, 0x5c, 0x1f, - 0xfc, 0x55, 0xea, 0xdf, 0xfd, 0x5c, 0xbc, 0x16, - 0x21, 0xff, 0xc9, 0x5e, 0xad, 0xfd, 0x7, 0xbf, - 0xab, 0x97, 0x7, 0xff, 0xc1, 0xe, 0x83, 0xff, - 0xb0, 0x98, 0x7f, 0xf7, 0x70, 0xff, 0xed, 0x21, - 0xff, 0xd6, 0x70, 0xe7, 0x43, 0xff, 0xaa, 0x87, - 0xff, 0x5e, 0xe0, 0xfd, 0x68, 0x7f, 0xf4, 0xf0, - 0x90, 0xff, 0xe8, 0xda, 0x1f, 0xfc, 0xb, 0x43, - 0xff, 0xe0, 0xda, 0x1f, 0xfc, 0x4b, 0x83, 0xff, - 0x9e, 0x85, 0x87, 0xff, 0x31, 0xe4, 0x3f, 0xf9, - 0xf, 0x7, 0xff, 0x45, 0xf, 0xfe, 0x53, 0xc1, - 0xff, 0xcd, 0x78, 0x3f, 0xf9, 0x48, 0x7f, 0xf3, - 0x5e, 0xf, 0xfe, 0x8b, 0xe0, 0xff, 0xe4, 0x61, - 0xc8, 0x7f, 0xf1, 0xe0, 0xff, 0xeb, 0x21, 0xff, - 0xe1, 0x43, 0xff, 0xac, 0x87, 0xff, 0x1d, 0xe, - 0xc3, 0xff, 0x8f, 0x21, 0xff, 0xd4, 0x83, 0xff, - 0x9c, 0x87, 0xff, 0x22, 0x81, 0xff, 0xd2, 0xd0, - 0xff, 0xe3, 0xa1, 0xff, 0xd0, 0x60, 0xff, 0xe8, - 0x61, 0xff, 0xc9, 0xc3, 0xe4, 0x3f, 0xf9, 0x2e, - 0x1f, 0xfc, 0xd7, 0xf, 0xff, 0x56, 0x1f, 0xfc, - 0xba, 0x7, 0xff, 0x2d, 0xf, 0xb0, 0xff, 0xe6, - 0x68, 0x7f, 0xf2, 0x24, 0x3f, 0xfa, 0x88, 0x7f, - 0xdc, 0x1f, 0xfc, 0x9, 0xf, 0xfe, 0x36, 0x87, - 0xff, 0x2, 0x81, 0xfe, 0x43, 0xff, 0x8f, 0x8e, - 0x1f, 0xfc, 0xa, 0x7, 0xff, 0x13, 0xf, 0xfe, - 0x3, 0xac, 0x1f, 0xd8, 0x7f, 0x21, 0xff, 0xc1, - 0xc3, 0xff, 0x80, 0xc1, 0xff, 0xc1, 0x70, 0xff, - 0xe0, 0x30, 0x58, 0x7f, 0xf1, 0xf0, 0xfc, 0x87, - 0x68, 0x7f, 0xce, 0x1f, 0xf3, 0x7, 0xff, 0x2, - 0x81, 0x90, 0xfe, 0x43, 0xff, 0x8d, 0x87, 0xa4, - 0x3f, 0xf8, 0x18, 0x7f, 0x30, 0x7f, 0xf0, 0x34, - 0x3c, 0x87, 0xff, 0x19, 0xf, 0xc8, 0x7d, 0x40, - 0xff, 0xe0, 0x61, 0xf3, 0x7, 0xff, 0x3, 0xf, - 0xd8, 0x7c, 0x87, 0xff, 0x19, 0xf, 0xe6, 0xf, - 0xfe, 0x6, 0x1c, 0xc1, 0xff, 0x38, 0x7f, 0x21, - 0xf6, 0x1f, 0xf2, 0x1e, 0xc3, 0xfc, 0xe1, 0xff, - 0xc0, 0x83, 0x41, 0xff, 0x30, 0x7f, 0xf1, 0x90, - 0xff, 0xb0, 0xf2, 0x1f, 0xfc, 0xc, 0x3f, 0xe5, - 0x3, 0xf, 0xfa, 0x81, 0xff, 0xc0, 0x43, 0xff, - 0xb7, 0xa1, 0xfe, 0x84, 0x3f, 0xe9, 0xf, 0xfe, - 0xe, 0x1f, 0xfc, 0x64, 0x39, 0xf, 0xfe, 0x1c, - 0x87, 0xfb, 0x83, 0xfd, 0xa1, 0xff, 0xc2, 0x43, - 0x90, 0xff, 0xe3, 0x41, 0xff, 0xc4, 0x90, 0xff, - 0xe4, 0x41, 0xff, 0xc5, 0x43, 0x61, 0xff, 0xc1, - 0x43, 0xff, 0x95, 0x7, 0xff, 0x1e, 0x43, 0xff, - 0x8b, 0x86, 0x43, 0xff, 0x83, 0x84, 0x87, 0xff, - 0x1f, 0xf, 0xfe, 0x2a, 0x83, 0xff, 0x8c, 0x87, - 0xff, 0x2b, 0xf, 0xfe, 0x44, 0x1f, 0xfc, 0x48, - 0x3f, 0xfb, 0x48, 0x48, 0x7f, 0xf2, 0x10, 0xff, - 0xe1, 0xc1, 0xff, 0xc9, 0x80, 0x87, 0xff, 0xf, - 0xb0, 0xff, 0xe5, 0x61, 0xff, 0xc2, 0x43, 0xff, - 0x92, 0xd4, 0x1f, 0xfc, 0x44, 0x3f, 0xf9, 0x88, - 0x7f, 0xf0, 0x20, 0xff, 0xe5, 0xa8, 0x3f, 0xfb, - 0xd8, 0x7f, 0xf0, 0x10, 0xff, 0xfb, 0xa1, 0xff, - 0x41, 0xff, 0xf9, 0x43, 0xfc, 0x87, 0xff, 0xe7, - 0xf, 0xff, 0xf8, 0x72, 0x1f, 0xc8, 0x7f, 0xff, - 0xc3, 0xff, 0xfe, 0x1f, 0xf6, 0x1f, 0xff, 0xf0, - 0xff, 0xff, 0x81, 0xf, 0xff, 0xf8, 0x7f, 0xf0, - 0x90, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, - 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xf4, - 0x50, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, - 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, - 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, - 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, - 0xf, 0xff, 0xf8, 0x7f, 0xfe, 0x30, 0xfc, 0x87, - 0xff, 0xed, 0x97, 0xd8, 0x7f, 0xf6, 0x0, - - /* U+E912 "" */ - 0xf, 0xff, 0xf8, 0x7f, 0xf5, 0x9f, 0x7, 0xff, - 0xfc, 0x14, 0x2, 0x1f, 0xff, 0xfd, 0xf, 0xff, - 0xf8, 0x1c, 0x39, 0xf, 0xff, 0xe5, 0x3, 0xa0, - 0xff, 0xfe, 0x68, 0x79, 0xf, 0xff, 0xd3, 0x87, - 0xd0, 0x7f, 0xfe, 0x98, 0x3f, 0x21, 0xff, 0xf9, - 0xa0, 0x7e, 0x43, 0xff, 0xf3, 0xa1, 0xfd, 0x7, - 0xff, 0xdd, 0xc3, 0xfc, 0x87, 0xff, 0xde, 0x81, - 0xff, 0x41, 0xff, 0xf6, 0xd0, 0xff, 0x90, 0xff, - 0xfa, 0xb8, 0x7f, 0xf0, 0x70, 0xff, 0xfa, 0x50, - 0x3f, 0xf8, 0x48, 0x7f, 0xfc, 0xe4, 0x3f, 0xf8, - 0x50, 0x7f, 0xfc, 0xf4, 0x3f, 0xf8, 0x68, 0x7f, - 0xfc, 0x5c, 0x3f, 0xf8, 0xb0, 0x7f, 0xfc, 0x28, - 0x1f, 0xfc, 0x67, 0xff, 0xf8, 0x52, 0x1f, 0xfd, - 0xfd, 0xf, 0xfe, 0xb3, 0x7a, 0xf, 0xfe, 0xd3, - 0x87, 0xff, 0x71, 0xf2, 0x1f, 0xfc, 0xdb, 0xe0, - 0xea, 0x7, 0xff, 0x82, 0xd0, 0xff, 0xe5, 0x67, - 0x98, 0x25, 0x7, 0xff, 0x8e, 0x81, 0xff, 0xc8, - 0xe8, 0x8, 0x80, 0xc1, 0xff, 0xe4, 0x74, 0x3f, - 0xf8, 0x8f, 0x21, 0xa5, 0x1, 0x83, 0xff, 0xcb, - 0x40, 0xff, 0xe1, 0x36, 0x87, 0xb8, 0x27, 0xf, - 0xff, 0x2b, 0x7, 0xff, 0x2, 0x98, 0x7f, 0x21, - 0xda, 0x1f, 0xfe, 0x46, 0xf, 0xf6, 0x61, 0xfc, - 0xa0, 0xf5, 0x3, 0xff, 0x8d, 0x7f, 0xff, 0x6, - 0x43, 0xff, 0x84, 0xa0, 0xfd, 0xb0, 0x7f, 0x36, - 0x1f, 0x38, 0x7f, 0xf1, 0x50, 0xff, 0xe0, 0xb7, - 0x90, 0xff, 0xe0, 0x48, 0x7b, 0xa0, 0x7f, 0x5e, - 0xf, 0xf6, 0x87, 0xff, 0xd, 0xf, 0xfe, 0x2d, - 0x87, 0xff, 0x2, 0xe, 0xe4, 0x3f, 0xa2, 0xf, - 0xfe, 0x5, 0x3, 0xff, 0x85, 0x7, 0xff, 0x1f, - 0x83, 0xfe, 0x82, 0xe4, 0x3f, 0xbd, 0x7, 0xff, - 0x9, 0xc3, 0xff, 0x84, 0x87, 0xff, 0x1d, 0x83, - 0xfc, 0x83, 0x90, 0xfe, 0xf2, 0x1f, 0xfc, 0x5d, - 0xf, 0xfe, 0x4, 0x1f, 0xfc, 0x87, 0xf, 0xf7, - 0x28, 0x3f, 0x3e, 0xf, 0xfe, 0x45, 0x3, 0xff, - 0x80, 0x87, 0xff, 0x26, 0xf, 0xf3, 0x7, 0xe7, - 0xc1, 0xff, 0xca, 0x70, 0xff, 0xa0, 0xff, 0xe4, - 0xa8, 0x3f, 0xf8, 0xd7, 0x7, 0xff, 0x37, 0xf, - 0xfe, 0xac, 0x1f, 0xfc, 0x58, 0x83, 0xff, 0x9f, - 0xa1, 0xfd, 0x7, 0xff, 0x2a, 0xf, 0xe4, 0x39, - 0x20, 0xff, 0xe8, 0xd0, 0x3f, 0x21, 0xff, 0xca, - 0x43, 0xfa, 0xc, 0xd0, 0x3f, 0xfa, 0x6e, 0x1f, - 0xa0, 0xff, 0xe5, 0x41, 0xff, 0xc1, 0xb0, 0xff, - 0xeb, 0x68, 0x79, 0xf, 0xfe, 0x52, 0x1f, 0xc8, - 0x28, 0x1f, 0xfd, 0x8a, 0x7, 0x90, 0xff, 0xe5, - 0x21, 0xff, 0x28, 0x3f, 0xfb, 0x2e, 0x1d, 0x7, - 0xff, 0x2b, 0xf, 0xd9, 0x40, 0xff, 0xee, 0x68, - 0x64, 0x3f, 0xfa, 0x8a, 0xf, 0xfe, 0xed, 0x3, - 0xff, 0x9a, 0x87, 0xe6, 0x81, 0xff, 0xdf, 0x75, - 0x83, 0xff, 0xa6, 0xa0, 0xff, 0xf0, 0xd0, 0x3f, - 0xfa, 0x88, 0x7f, 0xff, 0xc3, 0xb0, 0xff, 0xff, - 0x87, 0x21, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, - 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xfc, 0x14, 0x3f, - 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, - 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, - 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, - 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, - 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, - 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, - 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xb4, 0x87, 0xff, - 0xfc, 0x3d, 0x7, 0xd8, 0x7f, 0xf1, 0x80, - - /* U+E913 "" */ - 0xf, 0xff, 0xf8, 0x7f, 0xfb, 0x3c, 0x87, 0xff, - 0xfc, 0x10, 0x28, 0x1f, 0xff, 0xf3, 0x9, 0xc3, - 0xff, 0xfe, 0x87, 0x68, 0x7f, 0xff, 0xa0, 0xe9, - 0xf, 0xff, 0xea, 0x1e, 0xa0, 0x7f, 0xff, 0x50, - 0xf3, 0x87, 0xff, 0xf2, 0xf, 0xda, 0x1f, 0xff, - 0xb4, 0x3f, 0x50, 0x3f, 0xff, 0x50, 0x7f, 0x38, - 0x7f, 0xfe, 0x90, 0xff, 0x68, 0x7f, 0xfe, 0x30, - 0xff, 0xa4, 0x3f, 0xfe, 0xe8, 0x7f, 0xf0, 0x28, - 0x1f, 0xff, 0x78, 0x3f, 0xf8, 0xe, 0x1f, 0xff, - 0x64, 0x3f, 0xf8, 0x5a, 0x1f, 0xff, 0x58, 0x3f, - 0xf8, 0x54, 0xf, 0xff, 0xf8, 0x73, 0x87, 0xff, - 0xce, 0xf, 0xfe, 0x2e, 0x87, 0xff, 0x86, 0x9f, - 0xff, 0xc2, 0xf, 0xfe, 0x3d, 0x3, 0xff, 0xb8, - 0xde, 0x50, 0x7f, 0xf5, 0x98, 0x3f, 0x5e, 0x83, - 0xff, 0x9a, 0xf2, 0x1f, 0xfd, 0xb7, 0xf, 0x47, - 0x8c, 0x3f, 0xf9, 0x4f, 0x7, 0xff, 0x83, 0x42, - 0x88, 0x14, 0xc3, 0xff, 0x91, 0x40, 0xff, 0xf1, - 0xc8, 0xa8, 0x33, 0x68, 0x7f, 0xf1, 0x1d, 0xf, - 0xff, 0x24, 0x96, 0x1e, 0x79, 0xf, 0xfe, 0x13, - 0x7, 0xff, 0x97, 0x40, 0x87, 0xf7, 0x40, 0xff, - 0xe0, 0x50, 0x3f, 0xfc, 0x8e, 0x19, 0x41, 0xfd, - 0x90, 0x7f, 0xa4, 0x3f, 0xfc, 0x94, 0xe, 0xe4, - 0x3f, 0xaf, 0x7, 0xe5, 0x7, 0xff, 0x5, 0xbf, - 0xff, 0x84, 0x87, 0xff, 0x1b, 0x43, 0xef, 0x41, - 0xfc, 0xd8, 0x7d, 0x7, 0xff, 0x1, 0xe4, 0x3f, - 0xf8, 0x58, 0x7f, 0xf1, 0x1c, 0x3f, 0xd1, 0x87, - 0xf3, 0x61, 0xd8, 0x7f, 0xcf, 0x7, 0xff, 0x17, - 0xf, 0xfe, 0x1b, 0x7, 0xff, 0x2, 0x98, 0x7f, - 0x36, 0x14, 0x1f, 0xf5, 0x3, 0xff, 0x8e, 0x87, - 0xff, 0xa, 0x81, 0xff, 0xc2, 0x7c, 0x87, 0xe6, - 0xc0, 0x87, 0xfb, 0x43, 0xff, 0x8e, 0x87, 0xff, - 0xb, 0x43, 0xff, 0x8b, 0xc8, 0x7e, 0x55, 0x3, - 0xfd, 0x87, 0xff, 0x26, 0xf, 0xfe, 0x3, 0x87, - 0xff, 0x23, 0xd0, 0x7e, 0x94, 0x1f, 0xd8, 0x7f, - 0xf2, 0x50, 0xff, 0xe0, 0x50, 0x3f, 0xf9, 0x51, - 0x7, 0xff, 0x1a, 0xf, 0xfe, 0x54, 0x1f, 0xf6, - 0x87, 0xff, 0x32, 0x20, 0xff, 0xe2, 0x28, 0x3f, - 0xf9, 0x28, 0x7f, 0x9c, 0x3f, 0xf9, 0xf1, 0x7, - 0x21, 0xfd, 0x7, 0xff, 0x2a, 0xf, 0xea, 0x7, - 0xff, 0x46, 0x50, 0x6c, 0x3f, 0x21, 0xff, 0xd4, - 0xd0, 0xff, 0xe9, 0xf0, 0x64, 0x3f, 0x41, 0xff, - 0xca, 0x83, 0xe7, 0xf, 0xfe, 0xb5, 0x3, 0xff, - 0xae, 0x87, 0x98, 0x3f, 0xfa, 0xea, 0x2, 0x1f, - 0x90, 0xff, 0xe5, 0x41, 0xea, 0x7, 0xff, 0x67, - 0x8c, 0x3f, 0x61, 0xff, 0xca, 0x43, 0xb4, 0x3f, - 0xfc, 0xc8, 0x7f, 0xf2, 0x50, 0xce, 0x1f, 0xfd, - 0xde, 0xf, 0xfe, 0xbd, 0x3, 0xff, 0xbc, 0xb0, - 0x7f, 0xf4, 0x96, 0xd0, 0xff, 0xf0, 0x21, 0xff, - 0xd4, 0xa0, 0x7f, 0xf8, 0xb0, 0xff, 0xff, 0x87, - 0x21, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, - 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, - 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, - 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, - 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, - 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, - 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, - 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, - 0xff, 0xff, 0xf, 0xff, 0xce, 0x1f, 0x61, 0xff, - 0xea, - - /* U+E914 "" */ - 0xf, 0xff, 0xfd, 0xff, 0x56, 0x5c, 0x1f, 0xfe, - 0xfc, 0x3e, 0x5d, 0x5b, 0xff, 0xab, 0x97, 0x7, - 0xff, 0xd9, 0x7a, 0xb7, 0xff, 0x41, 0xff, 0xd3, - 0x43, 0xff, 0xbc, 0xc1, 0xff, 0xfe, 0x43, 0xff, - 0xa6, 0x87, 0xff, 0x7a, 0xf, 0xfe, 0x9e, 0x1f, - 0xfd, 0xc6, 0x43, 0xff, 0xf4, 0xf2, 0x1f, 0xfd, - 0x44, 0x3f, 0xfb, 0xf, 0x7, 0xff, 0xea, 0xe0, - 0xff, 0xed, 0x21, 0xff, 0xd3, 0xb4, 0x3f, 0xfb, - 0x98, 0x7f, 0xf4, 0x6d, 0xf, 0xff, 0xcb, 0xe4, - 0x3f, 0xfc, 0x8, 0x7f, 0xf3, 0x1e, 0xf, 0xff, - 0xe4, 0x1f, 0xfe, 0x64, 0x3f, 0xff, 0xd8, 0x7f, - 0xf2, 0xd0, 0xff, 0xff, 0x50, 0x3f, 0xfc, 0xa8, - 0x7f, 0xf3, 0x18, 0x3f, 0xfb, 0x17, 0xa0, 0xff, - 0xeb, 0x38, 0x7f, 0xf5, 0xb7, 0xcc, 0x1f, 0x90, - 0xff, 0xe7, 0x61, 0xff, 0xd4, 0xdc, 0x1b, 0x7, - 0xd8, 0x7f, 0xf3, 0xf4, 0x3f, 0xfa, 0xf, 0x40, - 0xda, 0x83, 0xff, 0xaf, 0x40, 0xff, 0xe7, 0x34, - 0x43, 0xd4, 0xf, 0x21, 0xff, 0xd1, 0x60, 0xff, - 0xe6, 0x53, 0x43, 0xe6, 0xc3, 0xff, 0x8f, 0x68, - 0x7f, 0xf0, 0x9c, 0x3f, 0xf9, 0x53, 0x87, 0xf9, - 0xf, 0x90, 0xff, 0xa4, 0xa0, 0x7f, 0xf0, 0xf0, - 0xff, 0xe4, 0x66, 0x1f, 0xfc, 0x7c, 0x3f, 0xe4, - 0x27, 0xf, 0xfe, 0x1e, 0x87, 0xff, 0x17, 0x60, - 0xff, 0xe0, 0x78, 0x3f, 0xf9, 0x98, 0x7f, 0xf0, - 0xe4, 0x3f, 0xf8, 0x4f, 0x40, 0xff, 0x9f, 0x7, - 0xc8, 0x7f, 0x90, 0xfb, 0x43, 0xff, 0x85, 0x21, - 0xff, 0xc0, 0x68, 0x87, 0xfd, 0x4c, 0x3f, 0xf8, - 0xf8, 0x7e, 0x90, 0xff, 0xe1, 0x48, 0x7f, 0x9b, - 0x43, 0xfe, 0x8c, 0x3f, 0xc8, 0x7f, 0x21, 0xfd, - 0x40, 0xff, 0xe1, 0x48, 0x7e, 0x6c, 0x3f, 0xf8, - 0x19, 0x7, 0xfd, 0x87, 0xe4, 0x3f, 0xe6, 0xf, - 0xfe, 0x14, 0x1f, 0xac, 0x3f, 0xf8, 0x1d, 0x3, - 0xff, 0x93, 0x87, 0xff, 0x1, 0xc3, 0xff, 0x85, - 0x87, 0xb8, 0x3f, 0xe7, 0x90, 0xff, 0xe0, 0xa1, - 0xf9, 0xf, 0xfe, 0x16, 0x1f, 0xfc, 0x2c, 0x34, - 0xa0, 0xff, 0x36, 0x87, 0xff, 0x6f, 0x43, 0xff, - 0x83, 0x1, 0x50, 0x7f, 0xa9, 0x87, 0xff, 0x15, - 0xf, 0x21, 0xff, 0xc5, 0x90, 0xff, 0xe0, 0x20, - 0xb0, 0xff, 0x46, 0x1f, 0xfc, 0x6c, 0x3d, 0x7, - 0xff, 0x1a, 0x81, 0xff, 0xc0, 0xe4, 0x3f, 0xd1, - 0x7, 0xff, 0x89, 0x41, 0xff, 0xc0, 0x60, 0xfe, - 0x88, 0x3f, 0xf9, 0x8, 0x72, 0x1f, 0xfc, 0x99, - 0xf, 0xfe, 0x4a, 0xa0, 0xff, 0xe7, 0xe1, 0xff, - 0xca, 0x83, 0xff, 0x80, 0x87, 0xcd, 0x87, 0xff, - 0x2d, 0xc, 0x87, 0xff, 0x2f, 0xf, 0xfa, 0xf, - 0xa8, 0x1f, 0xfc, 0xcc, 0x24, 0x3f, 0xf9, 0xb0, - 0x7f, 0xc8, 0x74, 0xa0, 0xff, 0xe6, 0x21, 0x61, - 0xff, 0xcd, 0x43, 0xfe, 0xc3, 0x98, 0x3f, 0xf9, - 0xdd, 0x10, 0xff, 0xe7, 0x41, 0xfe, 0x43, 0x50, - 0x3f, 0xfa, 0xa, 0xf, 0xfe, 0x7a, 0x1f, 0xf2, - 0x12, 0x83, 0xff, 0xdd, 0x7, 0xfb, 0x4, 0x87, - 0xff, 0xbd, 0xf, 0xf2, 0x6, 0xf, 0xff, 0x82, - 0x1f, 0xf2, 0x83, 0xff, 0xe3, 0x87, 0xf9, 0xf0, - 0x7f, 0xfc, 0x50, 0xff, 0x6a, 0xf, 0xff, 0xe2, - 0x1f, 0xff, 0x44, 0x3f, 0xff, 0xd8, 0x7f, 0x90, - 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, - 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, - 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, - 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, - 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, - 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, - 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, - 0xff, 0x87, 0xff, 0xcd, 0xf, 0xf4, 0x1f, 0xff, - 0x48, 0x3f, 0x41, 0xff, 0xca, - - /* U+E915 "" */ - 0xf, 0xff, 0xf8, 0x7f, 0xfb, 0x57, 0x57, 0x7f, - 0xc1, 0xff, 0xdc, 0x5d, 0x5d, 0xff, 0xd5, 0x97, - 0x83, 0xc8, 0x7f, 0xf4, 0xaf, 0xfe, 0xac, 0xbc, - 0x1f, 0xfc, 0xcc, 0x3f, 0xfa, 0x32, 0x1f, 0xfd, - 0xe4, 0x3f, 0xfa, 0x28, 0x7f, 0xff, 0x60, 0xff, - 0xef, 0x21, 0xff, 0xd2, 0x74, 0x3f, 0xff, 0xb6, - 0x87, 0xff, 0x6b, 0xf, 0xfe, 0xb5, 0xa1, 0xff, - 0xd8, 0x43, 0xff, 0xb1, 0x70, 0x7f, 0xff, 0x5e, - 0xf, 0xfe, 0x9a, 0x1f, 0xfd, 0xd7, 0x90, 0xff, - 0xfe, 0x36, 0x87, 0xff, 0x3b, 0xf, 0xff, 0x15, - 0xa1, 0xff, 0xcc, 0x43, 0xff, 0xc9, 0x7, 0xff, - 0xfc, 0x3f, 0xf9, 0x48, 0x7f, 0xf9, 0x50, 0xff, - 0xfe, 0x50, 0x3f, 0xf9, 0x78, 0x7d, 0x7a, 0xf, - 0xfe, 0xc4, 0x87, 0xff, 0x31, 0xf, 0x2a, 0xcc, - 0x3f, 0xfa, 0xda, 0x1f, 0xfd, 0x36, 0xd2, 0x74, - 0x3f, 0xfa, 0x78, 0x7f, 0xf3, 0x90, 0xf5, 0x3, - 0x54, 0x87, 0xff, 0x41, 0xc3, 0xff, 0xab, 0xc8, - 0x73, 0xd0, 0x3f, 0xf9, 0xcc, 0x1f, 0xfd, 0xc, - 0x34, 0xa0, 0xfd, 0xb0, 0x7f, 0xf3, 0x28, 0x1f, - 0xfd, 0x14, 0x33, 0x7, 0xfb, 0x30, 0xff, 0xe5, - 0x68, 0x7f, 0xf0, 0x9e, 0xf, 0xfe, 0x32, 0x83, - 0xfe, 0x9c, 0x3f, 0xf9, 0x18, 0x7f, 0xf0, 0xe8, - 0x30, 0x7f, 0xc8, 0x75, 0x10, 0xff, 0xa9, 0xa1, - 0xff, 0xc4, 0x70, 0xff, 0xe1, 0xc8, 0x48, 0x7f, - 0xf1, 0xba, 0x7, 0xfc, 0xd4, 0x1f, 0xfc, 0x26, - 0xf, 0xfe, 0x1e, 0x87, 0xff, 0x13, 0xf, 0xb2, - 0xf, 0xf9, 0xd4, 0x1f, 0xfc, 0x6, 0xf, 0xfe, - 0x1e, 0x1f, 0x21, 0xfe, 0x43, 0xf4, 0x61, 0xff, - 0xc0, 0xe4, 0x3f, 0xcc, 0x1f, 0xfc, 0x27, 0xf, - 0xd0, 0x7f, 0xf2, 0x29, 0x87, 0xff, 0x3, 0x90, - 0xfc, 0xc1, 0xff, 0xc2, 0xa0, 0x7f, 0xf1, 0xd0, - 0xff, 0x9b, 0x43, 0xfe, 0xe4, 0x3e, 0x83, 0xff, - 0x85, 0x21, 0xff, 0x21, 0xff, 0xc9, 0x79, 0xf, - 0xfb, 0x83, 0xd8, 0x7f, 0xf0, 0xb4, 0x3f, 0xf8, - 0x18, 0x7e, 0xc3, 0xff, 0x85, 0xd0, 0x3f, 0xeb, - 0xd, 0x87, 0xff, 0xb, 0xf, 0xfe, 0x12, 0x1f, - 0x90, 0xff, 0xe1, 0xe6, 0x1f, 0xe5, 0x40, 0x43, - 0xff, 0x82, 0xe1, 0xff, 0xdd, 0xa6, 0x1f, 0xe9, - 0x4, 0x1f, 0xfc, 0x6, 0xf, 0xfe, 0x2c, 0x1e, - 0x43, 0xff, 0x8c, 0xd8, 0x7f, 0xaf, 0x7, 0xff, - 0x1, 0x83, 0xff, 0x8c, 0x87, 0xff, 0x39, 0xb0, - 0xfe, 0x43, 0xff, 0x82, 0xc1, 0xff, 0xce, 0xc3, - 0xff, 0x90, 0xa8, 0x3f, 0xf9, 0x2c, 0x1f, 0xfc, - 0x94, 0x39, 0xf, 0xfe, 0x4c, 0xa0, 0xf9, 0xf, - 0xfe, 0x4, 0x1f, 0xfc, 0xac, 0x3f, 0xfa, 0x1c, - 0x1f, 0x41, 0xff, 0x61, 0xff, 0xcb, 0x43, 0x21, - 0xff, 0xcc, 0xb0, 0xff, 0xe2, 0xa1, 0xff, 0xcd, - 0x43, 0xff, 0xa0, 0x88, 0x68, 0x3f, 0xe8, 0x3f, - 0xf9, 0xb8, 0x50, 0x7f, 0xf3, 0x68, 0x19, 0xf, - 0xf4, 0x1f, 0xfc, 0xe6, 0x98, 0x7f, 0xf3, 0x91, - 0x2, 0x1f, 0xf2, 0x1f, 0xfc, 0xf5, 0x7, 0xff, - 0x42, 0x80, 0xc3, 0xfd, 0x7, 0xff, 0xb9, 0x9, - 0xf, 0xf2, 0x1f, 0xfe, 0xf6, 0xf, 0xf9, 0xf, - 0xff, 0x84, 0xa0, 0xff, 0x61, 0xff, 0xf2, 0xc3, - 0xfc, 0x87, 0xff, 0xc5, 0x41, 0xff, 0xff, 0xf, - 0xc8, 0x7f, 0xfc, 0xb0, 0xff, 0xff, 0x87, 0xff, - 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, - 0xf8, 0x7f, 0xff, 0xc3, 0x61, 0xff, 0xff, 0xf, - 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, - 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, - 0xfe, 0xd8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, - 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, - 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, - 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0x3c, 0x3f, - 0xfe, 0x48, 0x7f, 0x90, 0xff, 0xf9, 0xc1, 0xfa, - 0xf, 0xfe, 0xf8, - - /* U+E916 "" */ - 0xf, 0xff, 0xf8, 0x7f, 0xf8, 0x14, 0x1f, 0xff, - 0xf0, 0xa8, 0x87, 0xff, 0xfc, 0xc1, 0x7, 0xff, - 0xfe, 0xd, 0x87, 0xff, 0xf5, 0x41, 0xd0, 0x7f, - 0xff, 0x20, 0xf2, 0x83, 0xff, 0xf5, 0x87, 0xe8, - 0x3f, 0xff, 0x30, 0x7f, 0xb0, 0xff, 0xfb, 0xc8, - 0x7f, 0xd0, 0x7f, 0xfd, 0x54, 0x1f, 0xfc, 0x5, - 0x7, 0xff, 0xd2, 0xf, 0xfe, 0x14, 0x1f, 0xff, - 0x3c, 0x3f, 0xf8, 0x98, 0x7f, 0xfc, 0x60, 0xff, - 0xe3, 0x41, 0xff, 0xef, 0x50, 0x7f, 0xf1, 0x94, - 0x1f, 0xfe, 0xe8, 0x3f, 0xf9, 0x12, 0x1f, 0xfe, - 0xcc, 0x3f, 0xf9, 0x50, 0x7f, 0xfa, 0xe0, 0xff, - 0xe6, 0x61, 0xff, 0xe9, 0x50, 0x7f, 0xf3, 0x60, - 0xff, 0xf4, 0x41, 0xff, 0xce, 0x50, 0x7f, 0xf4, - 0x90, 0xff, 0xe3, 0xe1, 0xff, 0xd0, 0x83, 0xff, - 0xa1, 0x7c, 0x1f, 0xfc, 0x5c, 0x3f, 0xfa, 0x58, - 0x7f, 0xf1, 0x7b, 0x43, 0x93, 0xbc, 0x1f, 0xfc, - 0x38, 0x3f, 0xfa, 0x90, 0x7f, 0xf0, 0xfa, 0x72, - 0x13, 0x40, 0xbc, 0x87, 0xff, 0x1, 0x41, 0xff, - 0xd4, 0x50, 0x7f, 0xf0, 0x1f, 0x20, 0xe4, 0x16, - 0x1d, 0xe8, 0x3f, 0xe8, 0x3f, 0xfa, 0xd0, 0x7f, - 0xcd, 0x87, 0x71, 0xe0, 0xfa, 0x20, 0xfe, 0xc3, - 0xff, 0xb1, 0x87, 0xf5, 0xe0, 0xfb, 0xc1, 0xfe, - 0xbc, 0x1f, 0x41, 0xff, 0x3e, 0xf, 0xf7, 0xa0, - 0xff, 0xa0, 0xfb, 0x20, 0xff, 0x30, 0x7f, 0x36, - 0x1c, 0xa0, 0xfe, 0xb8, 0x10, 0x7e, 0x40, 0xf0, - 0x7f, 0x28, 0x3b, 0xa0, 0x7f, 0x4c, 0x41, 0xfc, - 0xf9, 0xa, 0xf, 0xd6, 0x87, 0xff, 0x19, 0xe0, - 0xfd, 0x20, 0x7c, 0x87, 0xf4, 0x45, 0xe0, 0xff, - 0x72, 0x61, 0xe6, 0xd0, 0xff, 0xe5, 0x3e, 0x43, - 0xd0, 0xd8, 0x7f, 0xb2, 0x9, 0xb0, 0xff, 0x76, - 0x1c, 0xf2, 0x1f, 0xfc, 0xfb, 0x43, 0xbb, 0xf, - 0xf7, 0x40, 0xe7, 0xc8, 0x7f, 0x61, 0x9e, 0xf, - 0xfe, 0xa5, 0xa1, 0xb0, 0xfe, 0x7c, 0x87, 0xee, - 0x81, 0xfd, 0x8f, 0x7, 0xff, 0x62, 0xe3, 0xf, - 0xe6, 0xc3, 0xfe, 0xc8, 0x3f, 0xb4, 0x3f, 0xfb, - 0x96, 0x1f, 0xd7, 0x83, 0xff, 0x83, 0x18, 0x7f, - 0x50, 0x3f, 0xfb, 0x54, 0xf, 0xe8, 0x83, 0xff, - 0x87, 0x4c, 0x3f, 0x22, 0x1f, 0xfd, 0x84, 0x43, - 0xf7, 0xa0, 0xff, 0xe2, 0xb6, 0x1f, 0xa8, 0x1f, - 0xfd, 0x8a, 0x7, 0xee, 0x43, 0xff, 0x8e, 0xd8, - 0x7e, 0xa0, 0x7f, 0xf5, 0xa8, 0x1f, 0xa8, 0x87, - 0xff, 0x25, 0x50, 0x7c, 0xa0, 0xff, 0xeb, 0x28, - 0x3e, 0x84, 0x3f, 0xf9, 0x70, 0x87, 0xd4, 0xf, - 0xfe, 0xa5, 0x3, 0xe5, 0x41, 0xff, 0xcd, 0xa0, - 0x7c, 0xa0, 0xff, 0xea, 0x28, 0x3e, 0xb0, 0xff, - 0xe7, 0xd0, 0x3e, 0x50, 0x7f, 0xf4, 0x94, 0x1f, - 0x28, 0x3f, 0xfa, 0xa, 0xf, 0xa8, 0x1f, 0xfd, - 0x2e, 0xf, 0xa8, 0x1f, 0xfd, 0x19, 0xf, 0xfe, - 0xd2, 0x1f, 0x30, 0x7f, 0xf4, 0x98, 0x3e, 0x50, - 0x7f, 0xf4, 0x14, 0x1f, 0x48, 0x7f, 0xf4, 0xd4, - 0x1e, 0xf0, 0x7f, 0xf4, 0x3c, 0x1f, 0x21, 0xff, - 0xd4, 0xf0, 0x79, 0x41, 0xff, 0xd0, 0x50, 0x7a, - 0xc3, 0xff, 0xa8, 0xa0, 0xff, 0xf0, 0x28, 0x3f, - 0xfb, 0xa8, 0x7f, 0xf4, 0x10, 0xff, 0xef, 0x21, - 0xf9, 0xf, 0xfe, 0x72, 0x1f, 0x90, 0xff, 0xeb, - 0xa1, 0xff, 0xde, 0x43, 0xff, 0xbf, 0x87, 0xff, - 0x43, 0xf, 0xb0, 0xff, 0xeb, 0x61, 0xfb, 0xf, - 0xfe, 0x76, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, - 0xff, 0xcb, 0xf, 0xfe, 0x76, 0x1f, 0xff, 0xf0, - 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, - 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, - 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, - 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, - 0xfe, 0x8, 0x3d, 0x21, 0xf9, 0xf, 0xd8, 0x7f, - 0x41, 0xec, 0x3f, 0xfa, 0xed, 0xfe, 0x83, 0xfd, - 0x7, 0xa4, 0x3f, 0x37, 0xfc, 0x87, 0xff, 0x14, - - /* U+E917 "" */ - 0xf, 0xfe, 0x62, 0x83, 0xff, 0xfe, 0x1a, 0x81, - 0xff, 0xff, 0xb, 0x6, 0x1f, 0xff, 0xf2, 0xd, - 0x87, 0xff, 0xf9, 0x41, 0xd0, 0x7f, 0xff, 0x60, - 0xf2, 0x83, 0xff, 0xf7, 0x87, 0xe8, 0x3f, 0xff, - 0x50, 0x7f, 0xb0, 0xff, 0xfc, 0x48, 0x7f, 0xd0, - 0x7f, 0xfd, 0x94, 0x1f, 0xfc, 0x5, 0x7, 0xff, - 0xd6, 0xf, 0xfe, 0x14, 0x1f, 0xff, 0x4c, 0x3f, - 0xf8, 0x98, 0x7f, 0xfc, 0xa0, 0xff, 0xe3, 0x41, - 0xff, 0xf0, 0x50, 0x7f, 0xf1, 0x94, 0x1f, 0xfe, - 0xf8, 0x3f, 0xf9, 0x12, 0x1f, 0xfe, 0xdc, 0x3f, - 0xf9, 0x50, 0x7f, 0xfb, 0x20, 0xff, 0xe6, 0x61, - 0xff, 0xea, 0x90, 0xff, 0xe6, 0xc1, 0xff, 0xe8, - 0x50, 0x7f, 0xf3, 0x94, 0x1f, 0xfe, 0x78, 0x3f, - 0xfa, 0x10, 0x7f, 0xf9, 0xb0, 0xff, 0xe9, 0x61, - 0xff, 0xe4, 0x83, 0xff, 0xa9, 0x7, 0xff, 0x89, - 0x41, 0xff, 0xd4, 0x50, 0x7f, 0xf8, 0x60, 0xff, - 0xeb, 0x41, 0xff, 0xe0, 0xc3, 0xff, 0xb1, 0x87, - 0xff, 0x7a, 0xf, 0xfe, 0xd4, 0x1f, 0xfd, 0xc5, - 0x7, 0xff, 0x69, 0x83, 0xff, 0xb4, 0xc1, 0xff, - 0xdc, 0x50, 0x7f, 0xf6, 0x60, 0xff, 0xe0, 0x5e, - 0x83, 0xfc, 0xfa, 0xf, 0xfe, 0x4, 0x1f, 0xfd, - 0x8c, 0x3f, 0xeb, 0x40, 0x87, 0xfa, 0x3, 0xc1, - 0xff, 0x61, 0xff, 0xd6, 0x83, 0xf9, 0xb4, 0x3f, - 0xf9, 0xf, 0x7, 0xfa, 0xf, 0xfe, 0xa2, 0x83, - 0xe7, 0x90, 0xff, 0xe6, 0x3e, 0x43, 0xe5, 0x7, - 0xff, 0x4e, 0xf, 0x3c, 0x1f, 0xfd, 0x2b, 0x43, - 0xd0, 0x7f, 0xf6, 0x2e, 0xf, 0xfe, 0xb5, 0xc1, - 0xff, 0xd8, 0x81, 0x68, 0x7f, 0xf6, 0x9e, 0x4, - 0x1f, 0xfd, 0x37, 0xc8, 0x7f, 0xf7, 0x9f, 0x21, - 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, - 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, - 0xff, 0xfc, 0x3f, 0xf9, 0x48, 0x7f, 0xff, 0xc3, - 0xff, 0xfe, 0x1f, 0xf6, 0x1f, 0xff, 0xf0, 0xe4, - 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xfe, 0x4, - 0x1f, 0xff, 0xf0, 0xe4, 0x3f, 0xff, 0x50, 0x7f, - 0xa0, 0xff, 0xfc, 0xa1, 0xfe, 0x43, 0xff, 0xf4, - 0x87, 0xfb, 0xf, 0xff, 0xcc, 0x1f, 0xf4, 0x1f, - 0xff, 0x94, 0x3f, 0xca, 0xf, 0xff, 0xc4, 0x1f, - 0xf4, 0x87, 0xff, 0xe2, 0xf, 0xfa, 0x81, 0xff, - 0xf7, 0x43, 0xff, 0x80, 0xe1, 0xff, 0xf7, 0xc3, - 0xff, 0x83, 0xc1, 0xff, 0xf6, 0x83, 0xff, 0x82, - 0xf0, 0x7f, 0xfd, 0x14, 0x1f, 0xfc, 0x27, 0xd2, - 0x1f, 0xff, 0x19, 0xf, 0xfe, 0x23, 0x7f, 0xff, - 0x50, 0x3f, 0xfa, 0x50, 0x7f, 0xf9, 0xb0, 0xff, - 0xe9, 0xa1, 0xff, 0xff, 0xe, 0xa0, 0x7f, 0xff, - 0xc3, 0x9c, 0x3f, 0xff, 0xe1, 0xed, 0xf, 0xff, - 0xf8, 0x75, 0xa1, 0xff, 0xff, 0xe, 0xb4, 0x3f, - 0xff, 0xe1, 0xd7, 0x21, 0xff, 0xff, 0xc, 0xde, - 0x94, 0x1f, 0xfd, 0x4c, 0x3f, 0xfc, 0x2d, 0x3f, - 0xff, 0xa8, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, - 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xe8, 0xc1, - 0xe4, 0x3f, 0xff, 0x91, 0xfe, 0xb0, 0xff, 0xf3, - 0x80, - - /* U+E918 "" */ - 0xf, 0xff, 0x52, 0x83, 0xff, 0xfe, 0x1a, 0x81, - 0xff, 0xff, 0xb, 0x6, 0x1f, 0xff, 0xf2, 0xd, - 0x7, 0xff, 0xf9, 0x41, 0x98, 0x3f, 0xff, 0xb0, - 0x79, 0x41, 0xff, 0xfb, 0xc3, 0xf4, 0x1f, 0xff, - 0xac, 0x3f, 0xd8, 0x7f, 0xfe, 0x20, 0xff, 0xe0, - 0x41, 0xff, 0xf6, 0x50, 0x7f, 0xf0, 0x14, 0x1f, - 0xff, 0x58, 0x3f, 0xf8, 0x50, 0x7f, 0xfd, 0x30, - 0xff, 0xe2, 0x61, 0xff, 0xf2, 0x83, 0xff, 0x8d, - 0x7, 0xff, 0xc1, 0x41, 0xff, 0xc6, 0x60, 0xff, - 0xf7, 0xc1, 0xff, 0xc8, 0x50, 0x7f, 0xfb, 0x70, - 0xff, 0xe5, 0x41, 0xff, 0xec, 0x83, 0xff, 0x99, - 0x87, 0xff, 0xa9, 0x41, 0xff, 0xcd, 0x83, 0xff, - 0xd3, 0x7, 0xff, 0x39, 0x41, 0xff, 0xe7, 0xc3, - 0xff, 0xa1, 0x7, 0xff, 0x9a, 0xf, 0xfe, 0x96, - 0x1f, 0xfe, 0x49, 0xf, 0xfe, 0x9c, 0x1f, 0xfe, - 0x25, 0x7, 0xff, 0x51, 0x83, 0xff, 0xc3, 0x7, - 0xff, 0x59, 0x41, 0xff, 0xdf, 0xc3, 0xff, 0xb1, - 0x7, 0xff, 0x7a, 0xf, 0xfe, 0xd6, 0x1f, 0xfd, - 0xc5, 0x7, 0xff, 0x6e, 0xf, 0xfe, 0xdc, 0x1f, - 0xfd, 0xc5, 0x7, 0xff, 0x67, 0xf, 0xfe, 0x3, - 0xe8, 0x3f, 0xcf, 0xa0, 0xff, 0xe0, 0x41, 0xff, - 0xd8, 0x83, 0xfe, 0xb8, 0x8, 0x7f, 0xa0, 0x3c, - 0x1f, 0xf6, 0x1f, 0xfd, 0x65, 0x7, 0xf5, 0xa1, - 0xff, 0xc8, 0x79, 0xf, 0xe8, 0x3f, 0xfa, 0xb0, - 0x7c, 0xda, 0x1f, 0xfc, 0xc6, 0xd0, 0xf9, 0x83, - 0xff, 0xa7, 0x87, 0x9e, 0x43, 0xff, 0xa3, 0x68, - 0x79, 0xf, 0xfe, 0xc3, 0xc1, 0xff, 0xd6, 0xb8, - 0x3f, 0xfb, 0x18, 0x2e, 0xf, 0xfe, 0xd3, 0xc0, - 0x83, 0xff, 0xa9, 0xe4, 0x3f, 0xfb, 0xcf, 0x90, - 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, - 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, - 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, - 0xff, 0x2d, 0xf, 0xff, 0xf8, 0x76, 0x1f, 0xff, - 0xf0, 0xe4, 0x3f, 0xff, 0xe1, 0x90, 0xff, 0xff, - 0x87, 0x41, 0xff, 0xff, 0xc, 0x87, 0xf9, 0xf, - 0xff, 0xcc, 0x1f, 0xe8, 0x3f, 0xff, 0x10, 0x7f, - 0x90, 0xff, 0xfc, 0x28, 0x3f, 0xd8, 0x7f, 0xfd, - 0xd8, 0x3f, 0xe4, 0x3f, 0xfe, 0xcc, 0x1f, 0xf4, - 0x1f, 0xff, 0x66, 0xf, 0xf9, 0x41, 0xff, 0xf5, - 0xa0, 0x7f, 0xf0, 0x20, 0xff, 0xfa, 0x3a, 0x1f, - 0xfc, 0x8, 0x3f, 0xfe, 0x77, 0x7, 0xff, 0x5, - 0x41, 0xff, 0xef, 0x6f, 0x21, 0xff, 0xc2, 0x60, - 0xff, 0xe8, 0x5f, 0xff, 0xd3, 0x90, 0xff, 0xe2, - 0xc1, 0xff, 0xd0, 0xd0, 0xff, 0xf2, 0xe1, 0xff, - 0xff, 0x9, 0xf, 0xff, 0xf8, 0x66, 0xf, 0xff, - 0xf8, 0x54, 0xf, 0xff, 0xf8, 0x1d, 0xf, 0xff, - 0xf8, 0xf0, 0x7f, 0xff, 0xc7, 0x83, 0xff, 0xb2, - 0x87, 0xff, 0x65, 0xb8, 0x3f, 0xfb, 0x72, 0x1f, - 0xfd, 0x46, 0x9c, 0x87, 0xff, 0x7a, 0xff, 0xfe, - 0xa4, 0xa0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, - 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, - 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, - 0xf8, 0xa8, 0x3c, 0xa0, 0xff, 0xfd, 0xdf, 0xfa, - 0xf, 0xfe, 0x48, - - /* U+E919 "" */ - 0xf, 0xfe, 0x5a, 0x1f, 0xfe, 0xfa, 0x21, 0xff, - 0xed, 0x51, 0x7, 0xff, 0xb6, 0xb, 0xf, 0xff, - 0x5e, 0x1d, 0x7, 0xff, 0xa6, 0xf, 0x28, 0x3f, - 0xfc, 0xea, 0xf, 0xa4, 0x3f, 0xfc, 0xd0, 0x7f, - 0x41, 0xff, 0xe5, 0xc3, 0xfe, 0xc3, 0xff, 0xc7, - 0x7, 0xff, 0x6, 0xf, 0xff, 0xa, 0x83, 0xff, - 0x82, 0xa0, 0xff, 0xef, 0xb0, 0x7f, 0xf0, 0xe0, - 0xff, 0xef, 0xc1, 0xff, 0xc5, 0xc3, 0xff, 0xbb, - 0x87, 0xff, 0x1e, 0xf, 0xfe, 0xdc, 0x1f, 0xfc, - 0x85, 0x7, 0xff, 0x65, 0x41, 0xff, 0xc9, 0x83, - 0xff, 0xb3, 0x7, 0xff, 0x2f, 0xf, 0xfe, 0xbe, - 0x1f, 0xfc, 0xd8, 0x3f, 0xfa, 0xb0, 0x7f, 0xf3, - 0x94, 0x1f, 0xfd, 0x35, 0x7, 0xff, 0x3e, 0x43, - 0xff, 0xa5, 0x7, 0xff, 0x46, 0xf, 0xfe, 0x8e, - 0x1f, 0xfd, 0x3c, 0x3f, 0xf9, 0xf0, 0x7f, 0xf5, - 0x60, 0xff, 0xe6, 0xa8, 0x3f, 0xfa, 0xaa, 0xf, - 0xfe, 0x5b, 0x7, 0xff, 0x5e, 0xf, 0xfe, 0x5c, - 0x1f, 0xfd, 0x9c, 0x3f, 0xf9, 0x38, 0x7f, 0xf0, - 0x18, 0x3f, 0xe9, 0xf, 0xfe, 0x4, 0x1f, 0xfc, - 0x78, 0x3f, 0xeb, 0x98, 0x3f, 0xb6, 0xd0, 0xff, - 0x28, 0x3f, 0xf8, 0xaa, 0xf, 0xeb, 0x42, 0x43, - 0xff, 0x83, 0x70, 0x7f, 0x41, 0xff, 0xc5, 0x83, - 0xe6, 0xd0, 0xff, 0xe4, 0xbc, 0x1f, 0xb0, 0xff, - 0xe1, 0xe1, 0xe7, 0x90, 0xff, 0xe6, 0xbc, 0x87, - 0xa0, 0xff, 0xe3, 0xbc, 0x1f, 0xfd, 0x26, 0xd0, - 0xc8, 0x7f, 0xf0, 0xa0, 0x5c, 0x1f, 0xfd, 0x7b, - 0x41, 0x7, 0xff, 0x9, 0xf2, 0x1f, 0xfd, 0xbb, - 0xc8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, - 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xfa, - 0xa8, 0x7f, 0xfc, 0x30, 0xff, 0xff, 0x87, 0xff, - 0x89, 0xf, 0xff, 0x8a, 0x1f, 0xff, 0xc, 0x3f, - 0xfe, 0x8, 0x7f, 0xf9, 0xe0, 0xfe, 0x83, 0xff, - 0xcc, 0x87, 0xf2, 0x1f, 0xfe, 0x74, 0x3f, 0xb0, - 0xff, 0xf3, 0x41, 0xfe, 0x83, 0xff, 0xcc, 0x87, - 0xf2, 0x83, 0xff, 0xcb, 0x7, 0xfa, 0x43, 0xff, - 0xca, 0x87, 0xfa, 0x43, 0xff, 0xc9, 0x7, 0xfd, - 0x40, 0xff, 0xf2, 0x41, 0xff, 0x38, 0x7f, 0xf8, - 0xd4, 0x1f, 0xfc, 0xe, 0xf, 0xff, 0x14, 0x87, - 0xff, 0x1, 0xd0, 0xff, 0xf0, 0xc1, 0xff, 0xc2, - 0xa0, 0x7f, 0xfc, 0x1d, 0xf, 0xff, 0x6, 0x87, - 0xff, 0xa, 0xc3, 0xff, 0xc1, 0x21, 0xff, 0xc3, - 0xe0, 0xff, 0xef, 0xd0, 0x3f, 0xf8, 0x6e, 0x87, - 0xff, 0x79, 0xd0, 0xff, 0xe1, 0xd0, 0x3f, 0xfb, - 0xf4, 0xf, 0xfe, 0x1b, 0xa1, 0xff, 0xde, 0x74, - 0x3f, 0xf8, 0x76, 0x1f, 0xfd, 0xfb, 0xf, 0xfe, - 0x27, 0x7, 0xff, 0x7f, 0x83, 0xff, 0x86, 0xe8, - 0x7f, 0xf7, 0x9d, 0xf, 0xfe, 0x1d, 0x3, 0xff, - 0xbf, 0x40, 0xff, 0xe1, 0xb8, 0x7f, 0xf7, 0xdd, - 0xf, 0xfe, 0x1e, 0x1f, 0xfe, 0xb, 0xf, 0xff, - 0x8f, 0x7, 0xff, 0x2, 0xf, 0xff, 0x1b, 0xa1, - 0xfe, 0x43, 0xff, 0xcb, 0x40, 0xfd, 0x87, 0xff, - 0x9d, 0xd0, 0xe4, 0x3f, 0xfd, 0x56, 0x1a, 0xf, - 0xff, 0x67, 0x4c, 0x3f, 0xfa, 0x28, 0x7f, 0xf4, - 0x14, 0x1f, 0xfc, 0xbf, 0xfa, 0xc3, 0xff, 0xaa, - - /* U+E91A "" */ - 0xf, 0xfe, 0xca, 0x1f, 0xfe, 0xf6, 0x81, 0xff, - 0xee, 0x85, 0x7, 0xff, 0xb3, 0xa, 0xf, 0xff, - 0x5c, 0x1d, 0x87, 0xff, 0xa6, 0x43, 0xd0, 0x7f, - 0xf9, 0xd4, 0x1f, 0x28, 0x3f, 0xfc, 0xd0, 0x7f, - 0x41, 0xff, 0xe5, 0xc3, 0xfe, 0xc3, 0xff, 0xc7, - 0x7, 0xff, 0x6, 0xf, 0xff, 0xa, 0x83, 0xff, - 0x82, 0xa0, 0xff, 0xf0, 0x41, 0xff, 0xc3, 0x90, - 0xff, 0xef, 0x61, 0xff, 0xc5, 0x83, 0xff, 0xbb, - 0x7, 0xff, 0x1f, 0xf, 0xfe, 0xdc, 0x87, 0xff, - 0x22, 0xf, 0xfe, 0xca, 0x83, 0xff, 0x92, 0xa0, - 0xff, 0xec, 0x41, 0xff, 0xcb, 0x83, 0xff, 0xaf, - 0x87, 0xff, 0x37, 0xf, 0xfe, 0xac, 0x1f, 0xfc, - 0xf8, 0x3f, 0xfa, 0x6a, 0xf, 0xfe, 0x7a, 0x83, - 0xff, 0xa5, 0x7, 0xff, 0x46, 0xf, 0xfe, 0x8e, - 0x1f, 0xfd, 0x3c, 0x3f, 0xf9, 0xf0, 0x7f, 0xf5, - 0x60, 0xff, 0xe6, 0xa8, 0x3f, 0xfa, 0xaa, 0xf, - 0xfe, 0x5b, 0x7, 0xff, 0x5e, 0x43, 0xff, 0x95, - 0x7, 0xff, 0x66, 0xf, 0xfe, 0x4e, 0x1f, 0xfc, - 0x6, 0xf, 0xfa, 0x43, 0xff, 0x81, 0x87, 0xff, - 0x1e, 0xf, 0xf9, 0xe7, 0xf, 0xe9, 0xb8, 0x3f, - 0xe8, 0x3f, 0xf8, 0xaa, 0xf, 0xeb, 0x83, 0xff, - 0x82, 0x84, 0xf0, 0x7f, 0x28, 0x3f, 0xf8, 0x90, - 0x7e, 0xb4, 0x3f, 0xf9, 0x2f, 0x21, 0xf4, 0x1f, - 0xfc, 0x3c, 0x3c, 0xf9, 0xf, 0xfe, 0x6b, 0x68, - 0x7b, 0xf, 0xfe, 0x3b, 0xc1, 0xff, 0xd3, 0xb4, - 0x3f, 0xf8, 0xf0, 0x2e, 0xf, 0xfe, 0xbd, 0xc0, - 0x83, 0xff, 0x84, 0xf9, 0xf, 0xfe, 0xdb, 0xe4, - 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, - 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xfc, 0xb4, - 0x3f, 0xfe, 0x18, 0x7f, 0xfc, 0x10, 0xff, 0xff, - 0x87, 0xff, 0x85, 0xf, 0xff, 0x86, 0x1f, 0xff, - 0x4, 0x3f, 0xfd, 0xf0, 0x7f, 0x41, 0xff, 0xe6, - 0x43, 0xf9, 0xf, 0xff, 0x2e, 0x1f, 0xc8, 0x7f, - 0xf9, 0x60, 0xff, 0x41, 0xff, 0xe4, 0x50, 0x7f, - 0x21, 0xff, 0xe4, 0x60, 0xff, 0x41, 0xff, 0xe3, - 0x60, 0xff, 0x21, 0xff, 0xe3, 0x60, 0xff, 0xa0, - 0xff, 0xf1, 0x70, 0x7f, 0xd0, 0x7f, 0xf8, 0x6c, - 0x3f, 0xf8, 0xa, 0xf, 0xfe, 0xfb, 0xa1, 0xff, - 0xc0, 0x60, 0xff, 0xef, 0xd0, 0x3f, 0xf8, 0x50, - 0x7f, 0xf7, 0x9d, 0xf, 0xff, 0x6f, 0x7, 0xff, - 0x9, 0xc3, 0xff, 0xbb, 0x61, 0xff, 0xc3, 0x60, - 0xff, 0xee, 0x3a, 0x1f, 0xfc, 0x3a, 0x7, 0xff, - 0x72, 0x81, 0xff, 0xc3, 0x74, 0x3f, 0xfb, 0x6e, - 0x87, 0xff, 0xe, 0x81, 0xff, 0xdc, 0xe0, 0xff, - 0xe1, 0xba, 0x1f, 0xfd, 0xbb, 0xf, 0xfe, 0x27, - 0x7, 0xff, 0x6d, 0xd0, 0xff, 0xe1, 0xd8, 0x7f, - 0xf7, 0x28, 0x1f, 0xfc, 0x37, 0x43, 0xff, 0xb9, - 0xa1, 0xff, 0xc3, 0xa0, 0x7f, 0xf7, 0x70, 0xff, - 0xe1, 0xba, 0x1f, 0xfe, 0xde, 0xf, 0xff, 0x4, - 0x1f, 0xfc, 0xb, 0xf, 0xff, 0x12, 0x1f, 0xe7, - 0x43, 0xff, 0xc9, 0x87, 0xea, 0x7, 0xff, 0x9d, - 0xe, 0x74, 0x3f, 0xfd, 0x10, 0x6e, 0xf, 0xff, - 0x5f, 0x4c, 0x3f, 0xfd, 0xca, 0xf, 0xff, 0xf8, - 0x7f, 0xf0, 0x7f, 0xf8, 0x3f, 0xf8, 0xe0, - - /* U+E91B "" */ - 0xf, 0xff, 0x8b, 0x7f, 0xe9, 0xf, 0xff, 0xa3, - 0x7a, 0x43, 0xf3, 0x70, 0x7f, 0xfc, 0x1e, 0x43, - 0xff, 0x86, 0xe8, 0x7f, 0xfb, 0x78, 0x3f, 0xf9, - 0x12, 0x1f, 0xfe, 0xab, 0xf, 0xfe, 0x5c, 0x1f, - 0xfe, 0x9d, 0xf, 0xfe, 0x6c, 0x1f, 0xfe, 0x7c, - 0x3f, 0xf9, 0xe8, 0x7f, 0xf9, 0xb0, 0xff, 0xe8, - 0xa1, 0xff, 0xe3, 0x70, 0xff, 0xe9, 0x61, 0xff, - 0xe2, 0x60, 0xff, 0xe9, 0xa1, 0xff, 0xe1, 0xa0, - 0x7f, 0xf1, 0x97, 0x7, 0xff, 0xaf, 0x43, 0xff, - 0x86, 0xde, 0xac, 0x87, 0xff, 0x21, 0x83, 0xff, - 0xa7, 0x87, 0xff, 0xd, 0xe4, 0x3f, 0xf9, 0xd4, - 0x70, 0xff, 0xe8, 0xe1, 0xff, 0xc3, 0xa0, 0x7f, - 0xf4, 0x50, 0x90, 0xff, 0xe7, 0x38, 0x7f, 0xf0, - 0xf4, 0x3f, 0xfa, 0xd8, 0x7f, 0xf3, 0x68, 0x1f, - 0xfc, 0x3c, 0x3f, 0xfa, 0x68, 0x64, 0x3f, 0xf9, - 0x92, 0x1f, 0xfc, 0x27, 0xf, 0xfe, 0xa6, 0x1f, - 0xfd, 0xd, 0xf, 0xfe, 0x13, 0x7, 0xff, 0x55, - 0xe, 0x43, 0xff, 0x93, 0x87, 0xff, 0xe, 0x81, - 0xff, 0xdc, 0xc3, 0xff, 0x91, 0x87, 0xff, 0xe, - 0x43, 0xff, 0xba, 0x87, 0xff, 0x19, 0xc3, 0xff, - 0x87, 0xa1, 0xff, 0xd7, 0x43, 0xe4, 0x3f, 0xf8, - 0x94, 0xf, 0xfe, 0x1e, 0x1f, 0xfd, 0x9c, 0x3e, - 0xc3, 0xff, 0x87, 0x21, 0xff, 0xc2, 0x70, 0xff, - 0xed, 0x21, 0xf2, 0x1f, 0xfc, 0x2d, 0xf, 0xfe, - 0x13, 0x7, 0xff, 0xc7, 0xf, 0xfe, 0x1d, 0x3, - 0xff, 0xb6, 0x87, 0xf2, 0x1f, 0xe7, 0xf, 0xfe, - 0x1c, 0x87, 0xff, 0x73, 0xf, 0xec, 0x3f, 0x98, - 0x3f, 0xf8, 0x7a, 0x1f, 0xfd, 0xd4, 0x3f, 0x90, - 0xfd, 0x40, 0xff, 0xe1, 0xe1, 0xff, 0xf1, 0x90, - 0xff, 0xe1, 0x38, 0x7f, 0xfa, 0xe0, 0xed, 0xf, - 0xfe, 0x13, 0x7, 0xff, 0x81, 0xf, 0xf9, 0xd, - 0x87, 0xff, 0xe, 0x81, 0xff, 0xe1, 0xc3, 0xff, - 0x80, 0x8e, 0x1f, 0xfc, 0x39, 0xf, 0xff, 0x12, - 0x1f, 0xfc, 0xb, 0x83, 0xff, 0x87, 0xa1, 0xff, - 0xff, 0x6, 0x1f, 0xfe, 0x44, 0x3f, 0xfa, 0xe, - 0x1f, 0xfe, 0x5c, 0x3f, 0xf9, 0xec, 0x1f, 0xff, - 0xf0, 0x50, 0x3f, 0xfc, 0xe8, 0x7f, 0xf3, 0x64, - 0x3f, 0xff, 0xe0, 0xd0, 0xff, 0xf4, 0x21, 0xff, - 0xcc, 0xc3, 0xff, 0xd5, 0x87, 0xff, 0x2f, 0xf, - 0xff, 0x5a, 0x1f, 0xff, 0xf0, 0xff, 0xe8, 0x41, - 0xff, 0xff, 0xc, 0xf0, 0x7f, 0xfa, 0x10, 0xff, - 0xe7, 0x3c, 0x1f, 0xfe, 0x6c, 0x3f, 0xfa, 0xf, - 0x7, 0xff, 0x91, 0xf, 0xfe, 0x93, 0xc1, 0xff, - 0xff, 0xc, 0xf2, 0x1f, 0xfd, 0xe4, 0x3f, 0xfa, - 0xed, 0xa1, 0xff, 0xdc, 0xc3, 0xff, 0xb5, 0x68, - 0x7f, 0xf6, 0x90, 0xff, 0xee, 0x58, 0x7f, 0xff, - 0xc3, 0xa0, 0xff, 0xff, 0x87, 0xff, 0x71, 0xf, - 0xfe, 0xfc, 0x1f, 0xfd, 0x7c, 0x3f, 0xf9, 0xab, - 0xea, 0xf7, 0xf8, 0x3f, 0xfb, 0x6b, 0xea, 0xf7, - 0xff, 0xd5, 0xe5, 0xf0, 0x7f, 0xf7, 0xaf, 0x57, - 0x97, 0xc1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, - 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, - 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, - 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, - 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, - 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, - 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, - 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, - 0xe1, 0xff, 0xc2, 0xc3, 0xf9, 0xf, 0xff, 0xca, - 0x83, 0xe6, - - /* U+E91C "" */ - 0xf, 0x9b, 0xff, 0x48, 0x7f, 0xfd, 0xae, 0x43, - 0xf3, 0x7a, 0x43, 0xff, 0xe0, 0xe8, 0x7f, 0xf0, - 0xdb, 0x43, 0xff, 0xda, 0xc1, 0xff, 0xc8, 0xb0, - 0xff, 0xf6, 0x41, 0xff, 0xcb, 0xe0, 0xff, 0xf4, - 0xc1, 0xff, 0xcd, 0x70, 0xff, 0xf4, 0x21, 0xff, - 0xcf, 0xc3, 0xff, 0xcc, 0x87, 0xff, 0x47, 0xf, - 0xff, 0x2e, 0x1f, 0xfd, 0x2d, 0xf, 0xff, 0x1a, - 0x1f, 0xfd, 0x39, 0xf, 0xff, 0x6a, 0xe0, 0xff, - 0xe3, 0x50, 0x3f, 0xfd, 0x6d, 0x6f, 0x48, 0x7f, - 0xf0, 0xdc, 0x3f, 0xfe, 0x2d, 0xa1, 0xff, 0xc3, - 0xc3, 0xff, 0xa7, 0x21, 0xff, 0xd2, 0xa0, 0x7f, - 0xf0, 0xf0, 0xff, 0xe8, 0xed, 0x3, 0xff, 0xa4, - 0xe1, 0xff, 0xc3, 0xd0, 0xff, 0xe7, 0x21, 0x21, - 0xff, 0xd4, 0xc3, 0xff, 0x87, 0x40, 0xff, 0xe6, - 0xe1, 0xff, 0xd9, 0xd0, 0xff, 0xe1, 0x30, 0x7f, - 0xf3, 0x10, 0xc8, 0x7f, 0xf5, 0x64, 0x3f, 0xf8, - 0x4e, 0x1f, 0xfd, 0xc, 0x3f, 0xfa, 0xd4, 0xf, - 0xfe, 0x1e, 0x1f, 0xfc, 0x94, 0x39, 0xf, 0xfe, - 0xbb, 0x7, 0xff, 0xf, 0xf, 0xfe, 0x46, 0x1f, - 0xfd, 0xe7, 0xf, 0xfe, 0x1e, 0x87, 0xff, 0x19, - 0xf, 0xff, 0x6, 0x1f, 0xfc, 0x3a, 0x7, 0xff, - 0x11, 0xf, 0x90, 0xff, 0xed, 0x68, 0x7f, 0xf0, - 0x98, 0x3f, 0xf8, 0x78, 0x7d, 0x87, 0xff, 0x6e, - 0x43, 0xff, 0x84, 0xe1, 0xff, 0xc2, 0x43, 0xe4, - 0x3f, 0xfb, 0x94, 0xf, 0xfe, 0x1e, 0x1f, 0xff, - 0x36, 0xf, 0xfe, 0x1e, 0x87, 0xf9, 0xf, 0xe4, - 0x3f, 0xfb, 0xae, 0x1f, 0xfc, 0x39, 0xf, 0xec, - 0x3f, 0xb0, 0xff, 0xef, 0xe1, 0xff, 0xc3, 0xa0, - 0x7e, 0x43, 0xf9, 0xf, 0xff, 0x6, 0x87, 0xff, - 0x9, 0x83, 0xff, 0xe7, 0x21, 0xff, 0xc2, 0x70, - 0xe8, 0x3f, 0xfd, 0xb4, 0xf, 0xfe, 0x1e, 0x19, - 0xf, 0xf9, 0xf, 0xff, 0x13, 0x7, 0xff, 0xf, - 0x44, 0x3f, 0xf8, 0x18, 0x7f, 0xf8, 0xdc, 0x3f, - 0xf8, 0x77, 0x7, 0xff, 0x1, 0xf, 0xff, 0x2e, - 0x1f, 0xff, 0xf0, 0xed, 0xf, 0xfe, 0x82, 0x1f, - 0xfe, 0x69, 0xf, 0xff, 0xf8, 0x6a, 0x7, 0xff, - 0x3b, 0xf, 0xff, 0x43, 0x7, 0xff, 0x35, 0xf, - 0xff, 0x4b, 0x87, 0xff, 0xfc, 0x3b, 0xf, 0xfe, - 0x62, 0x1f, 0xfe, 0xbc, 0x3f, 0xf9, 0x78, 0x7f, - 0xff, 0xc3, 0x21, 0xff, 0xeb, 0x83, 0xff, 0xfe, - 0xb, 0x43, 0xff, 0xff, 0x68, 0x7f, 0xf3, 0x90, - 0xff, 0xf2, 0x5a, 0x1f, 0xfd, 0xc, 0x3f, 0xfc, - 0x56, 0x87, 0xff, 0x49, 0xf, 0xfe, 0xfb, 0x68, - 0x7f, 0xff, 0x9e, 0x43, 0xff, 0xae, 0x87, 0xff, - 0x69, 0xe0, 0xff, 0xed, 0x61, 0xff, 0xd9, 0xe0, - 0xff, 0xee, 0x21, 0xff, 0xd8, 0x83, 0xff, 0xfe, - 0x19, 0xf, 0xff, 0xf8, 0x6c, 0x3f, 0xfb, 0xe8, - 0x7f, 0xf6, 0x3f, 0xd5, 0xe5, 0xf0, 0x7f, 0xf3, - 0x70, 0xff, 0xef, 0x2f, 0xab, 0xdf, 0xff, 0x57, - 0x97, 0xc1, 0xff, 0xf8, 0x5f, 0x57, 0xbd, 0x7, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, - 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, - 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, - 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, - 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, - 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, - 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, - 0xfe, 0x1f, 0xfd, 0x24, 0x3f, 0xb0, 0xff, 0xfc, - 0xc8, 0x7c, 0xa0, 0xff, 0xfc, 0x80, - - /* U+E91D "" */ - 0xf, 0xfe, 0x9b, 0xe4, 0x3f, 0xf9, 0xd7, 0xfa, - 0xf, 0xfe, 0x9d, 0x1, 0x7, 0xff, 0x37, 0xff, - 0x10, 0x7f, 0xf4, 0x74, 0x3f, 0xfa, 0x48, 0x7a, - 0x43, 0xff, 0x9e, 0xe1, 0xd0, 0x7f, 0xfc, 0x58, - 0x3c, 0x87, 0xff, 0xc2, 0x81, 0xe8, 0x3f, 0xfe, - 0x1a, 0x1f, 0x21, 0xff, 0xee, 0x70, 0xfc, 0x87, - 0xff, 0xba, 0x81, 0xfd, 0x7, 0xff, 0xb7, 0x43, - 0xf9, 0xf, 0xff, 0x63, 0x87, 0xfd, 0x7, 0xff, - 0xad, 0x83, 0xfe, 0x43, 0xff, 0xd7, 0x40, 0xff, - 0xe0, 0x61, 0xff, 0xea, 0xd0, 0xff, 0xe0, 0xa1, - 0xff, 0xe8, 0x70, 0xff, 0xe1, 0x41, 0xff, 0xe8, - 0xa0, 0x7f, 0xf0, 0xd0, 0xff, 0xf3, 0xe8, 0x7f, - 0xf0, 0xe0, 0xff, 0xf3, 0x38, 0x7f, 0xf1, 0x50, - 0xff, 0xf2, 0xd0, 0x3f, 0xfe, 0xf2, 0x1f, 0xfc, - 0x74, 0x3f, 0xfc, 0x7a, 0x1f, 0xfc, 0x8b, 0xff, - 0xf8, 0x54, 0x43, 0xff, 0xa0, 0xe1, 0xff, 0xd9, - 0x55, 0xe9, 0xf, 0xfe, 0x5d, 0x3, 0xff, 0xbe, - 0xdc, 0x1f, 0xfc, 0x8d, 0xf, 0xff, 0x1b, 0xc1, - 0xff, 0xc4, 0x70, 0xff, 0xf3, 0xbc, 0x1f, 0xff, - 0x97, 0xf, 0xfe, 0xb, 0x87, 0xff, 0xaf, 0x43, - 0xff, 0x83, 0x87, 0xff, 0xae, 0x81, 0xff, 0xc1, - 0xd0, 0xff, 0xf5, 0x21, 0xff, 0xc2, 0xa0, 0x7f, - 0xfa, 0xe0, 0xff, 0xe0, 0xb8, 0x7f, 0xf2, 0x6f, - 0xff, 0xe1, 0x48, 0x7f, 0xf1, 0x18, 0x3f, 0xf8, - 0x5a, 0x1f, 0xfc, 0x74, 0x3f, 0xf8, 0x4d, 0xe4, - 0x3f, 0xf8, 0x4a, 0xf, 0xfe, 0x15, 0x3, 0xff, - 0xb3, 0x68, 0x7f, 0xf0, 0x60, 0xff, 0xe1, 0xb8, - 0x7f, 0xf1, 0x60, 0xff, 0xe4, 0x58, 0x7f, 0xf0, - 0x70, 0xff, 0xe2, 0x68, 0x7f, 0xf0, 0xd0, 0xff, - 0xe5, 0x68, 0x7f, 0xf0, 0x10, 0xff, 0xe2, 0x50, - 0x3f, 0xf8, 0x68, 0x7f, 0xf2, 0xa8, 0x1f, 0xf4, - 0x1f, 0xfc, 0x57, 0xf, 0xfe, 0x14, 0x1f, 0xfc, - 0xb6, 0xf, 0xfa, 0xf, 0xfe, 0x36, 0x87, 0xff, - 0x5, 0xf, 0xfe, 0x5a, 0x83, 0xfc, 0x87, 0xff, - 0x1e, 0x43, 0xff, 0x81, 0x7, 0xff, 0x32, 0xf, - 0xf9, 0xf, 0xfe, 0x3d, 0x3, 0xff, 0xb3, 0x87, - 0xfa, 0xf, 0xfe, 0x43, 0x87, 0xfd, 0x7, 0xff, - 0x35, 0xf, 0xf2, 0x1f, 0xfc, 0x9d, 0xf, 0xe4, - 0x3f, 0xf9, 0xb0, 0x7f, 0xb0, 0xff, 0xe5, 0x50, - 0x3f, 0xa0, 0xff, 0xe6, 0xa1, 0xfc, 0x87, 0xff, - 0x2d, 0xc3, 0xf2, 0x1f, 0xfc, 0xd8, 0x3f, 0xfa, - 0xfa, 0x1f, 0x41, 0xff, 0xf1, 0xa0, 0x79, 0xf, - 0xfe, 0x6a, 0x1f, 0xfd, 0x87, 0xf, 0x21, 0xff, - 0xf3, 0xd0, 0xd0, 0x7f, 0xf3, 0x30, 0xff, 0xed, - 0xc8, 0x7f, 0xf4, 0x10, 0xff, 0xee, 0x50, 0x18, - 0x7f, 0xfd, 0x9f, 0x7, 0xff, 0xfc, 0x3f, 0xff, - 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, - 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, - 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, - 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, - 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, - 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, - 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, - 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, - 0xff, 0xff, 0xf, 0xfe, 0x9c, 0x1f, 0xb0, - - /* U+E91E "" */ - 0x2f, 0xf4, 0x1f, 0xfc, 0xe7, 0xc8, 0x7f, 0xf4, - 0xe3, 0xfc, 0x41, 0xff, 0xcd, 0x81, 0x40, 0xff, - 0xe9, 0x30, 0x7a, 0x43, 0xff, 0xa2, 0xc1, 0xff, - 0xf4, 0x83, 0x38, 0x7f, 0xfc, 0xd0, 0xf6, 0x87, - 0xff, 0xc9, 0xf, 0x50, 0x3f, 0xfe, 0x30, 0x7c, - 0xe1, 0xff, 0xf1, 0x43, 0xf6, 0x87, 0xff, 0xbe, - 0xf, 0xea, 0x7, 0xff, 0xbd, 0xf, 0xe7, 0xf, - 0xff, 0x76, 0x1f, 0xf6, 0x1f, 0xfe, 0xd4, 0x3f, - 0xf8, 0x1a, 0x1f, 0xfe, 0xc8, 0x3f, 0xf8, 0x14, - 0xf, 0xff, 0x5a, 0x1f, 0xfc, 0x17, 0xf, 0xff, - 0x5c, 0x1f, 0xfc, 0x2d, 0xf, 0xff, 0x4a, 0x1f, - 0xfc, 0x3a, 0x7, 0xff, 0xa5, 0xf, 0xfe, 0x1b, - 0x87, 0xff, 0xa2, 0xf, 0xfe, 0x2e, 0x87, 0xff, - 0xe6, 0x43, 0xff, 0xcb, 0x7, 0xff, 0x1e, 0x81, - 0xff, 0xd2, 0x55, 0xff, 0xfc, 0x34, 0x3f, 0xf9, - 0xe, 0x1f, 0xfc, 0xe7, 0xd4, 0x43, 0xff, 0xb5, - 0xa1, 0xff, 0xca, 0xb8, 0x3f, 0xfc, 0x14, 0xf, - 0xfe, 0x3d, 0xa1, 0xff, 0xe3, 0x70, 0xff, 0xe2, - 0x5a, 0x1f, 0xfe, 0x7d, 0xf, 0xfe, 0x3, 0xa1, - 0xff, 0xf6, 0x60, 0xff, 0xf5, 0xe8, 0x7f, 0xa8, - 0x1f, 0xfe, 0xa7, 0xf, 0xfe, 0x2, 0x1f, 0xfe, - 0xaa, 0x7, 0xfd, 0x7, 0xff, 0xaf, 0x43, 0xfe, - 0x90, 0xff, 0xe2, 0x37, 0xff, 0xf0, 0xa0, 0xff, - 0xe4, 0x38, 0x7f, 0xf0, 0x14, 0x1f, 0xfc, 0x2b, - 0xd2, 0x1f, 0xfc, 0x24, 0x3f, 0xf8, 0xec, 0x1f, - 0xfc, 0x18, 0x3f, 0xf8, 0x36, 0x87, 0xff, 0x66, - 0x81, 0xff, 0xc1, 0xc3, 0xff, 0x80, 0xe8, 0x7f, - 0xf2, 0x20, 0xff, 0xe2, 0xe8, 0x7f, 0xf0, 0x60, - 0xff, 0xe0, 0x50, 0x3f, 0xf9, 0x48, 0x7f, 0xf0, - 0xdc, 0x3f, 0xf8, 0x68, 0x7f, 0xd2, 0x1f, 0xfc, - 0xa8, 0x3f, 0xf8, 0x74, 0xf, 0xfe, 0x1c, 0x1f, - 0xf4, 0x87, 0xff, 0x2d, 0xf, 0xfe, 0x16, 0x87, - 0xff, 0x11, 0xf, 0xf4, 0x87, 0xff, 0x2d, 0xf, - 0xfe, 0xb, 0x87, 0xff, 0x16, 0xf, 0xf2, 0x83, - 0xff, 0x99, 0x7, 0xff, 0x2, 0x81, 0xff, 0xc6, - 0x43, 0xfd, 0x7, 0xff, 0x31, 0xf, 0xfe, 0x6, - 0x87, 0xff, 0x19, 0xf, 0xf4, 0x1f, 0xfc, 0xd8, - 0x3f, 0xce, 0x1f, 0xfc, 0x8c, 0x3f, 0xc8, 0x7f, - 0xf5, 0xd8, 0x3f, 0xf9, 0x28, 0x7f, 0x21, 0xff, - 0xcd, 0x83, 0xfa, 0x81, 0xff, 0xd4, 0x83, 0xff, - 0x9a, 0x87, 0xed, 0xf, 0xff, 0x74, 0x1f, 0x38, - 0x7f, 0xf5, 0x90, 0xff, 0xe6, 0xa1, 0xea, 0x7, - 0xff, 0x5f, 0xf, 0xfe, 0x64, 0x1e, 0xd0, 0xff, - 0xec, 0x21, 0xff, 0xcc, 0x43, 0x38, 0x7f, 0xfd, - 0xe8, 0x1f, 0xff, 0x4c, 0x1a, 0x1f, 0xff, 0x6f, - 0x7, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, - 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, - 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, - 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, - 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, - 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, - 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, - 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xde, 0xc3, - 0xf6, 0x1f, 0xff, 0x0, - - /* U+E91F "" */ - 0xf, 0xfe, 0xed, 0xfe, 0x83, 0xff, 0xbb, 0x7f, - 0xe8, 0x3f, 0xfb, 0x8a, 0xf, 0x28, 0x3f, 0xff, - 0xe1, 0xff, 0xcd, 0xff, 0xab, 0x2e, 0xf, 0xfe, - 0xba, 0x1e, 0x5d, 0x5b, 0xff, 0xab, 0x97, 0x7, - 0xff, 0x17, 0xf, 0xfe, 0x5a, 0xf5, 0x6f, 0xf8, - 0x3f, 0xfc, 0xf8, 0x7e, 0x43, 0xff, 0xfe, 0x1f, - 0xfc, 0x38, 0x3f, 0x90, 0xff, 0xec, 0xc2, 0x1f, - 0xd8, 0x7f, 0xf5, 0xed, 0xf, 0xff, 0x3, 0x68, - 0x7f, 0xf0, 0x50, 0xff, 0xe9, 0x3c, 0x87, 0xff, - 0x81, 0xe0, 0xff, 0xe3, 0xa1, 0xff, 0xcd, 0xb8, - 0x3f, 0xf9, 0x38, 0x7f, 0xf2, 0xed, 0xf, 0xff, - 0x16, 0x87, 0xff, 0x35, 0xf, 0xff, 0xe4, 0x1f, - 0xfc, 0xf4, 0x3f, 0xf9, 0x2c, 0x1f, 0xfc, 0xec, - 0x3f, 0xf9, 0x4e, 0x1f, 0xfe, 0x6c, 0x3f, 0xf9, - 0x88, 0x7f, 0xf3, 0x74, 0x3f, 0xfc, 0xb4, 0xf, - 0xfe, 0x52, 0x1f, 0xfc, 0xe6, 0xf, 0xfe, 0x4e, - 0x1f, 0xfc, 0x4, 0x3f, 0xf8, 0x4e, 0x1f, 0xfd, - 0x4a, 0x70, 0x7f, 0xf0, 0xb0, 0xff, 0xe3, 0xa1, - 0xff, 0x20, 0x60, 0xff, 0xe1, 0x68, 0x7f, 0xf5, - 0x5c, 0x3f, 0xf8, 0x52, 0x1f, 0xfc, 0x54, 0x3f, - 0xa0, 0xf6, 0x1f, 0xfc, 0x2a, 0x7, 0xff, 0x13, - 0xf, 0xe4, 0x3e, 0xd0, 0xff, 0xe0, 0xb0, 0x7f, - 0xf5, 0xa8, 0x1f, 0xfc, 0x14, 0x3f, 0xf8, 0x68, - 0x7e, 0x43, 0xfc, 0xc1, 0xff, 0xc2, 0x43, 0xff, - 0x95, 0x87, 0xfc, 0xe1, 0xff, 0xc1, 0x83, 0xff, - 0x84, 0x87, 0xc8, 0x7f, 0xf0, 0x70, 0xff, 0xe0, - 0xe1, 0xff, 0xc1, 0xc3, 0xc8, 0x7f, 0xf0, 0xf4, - 0x3f, 0xf8, 0x10, 0x7f, 0xf0, 0x10, 0xf6, 0x1f, - 0xfc, 0x49, 0xf, 0xf9, 0x41, 0xff, 0xc6, 0x43, - 0xff, 0x8b, 0x21, 0xff, 0x41, 0xff, 0xd9, 0x90, - 0xff, 0xa0, 0xff, 0x90, 0xd0, 0x7f, 0xf2, 0x20, - 0xff, 0x90, 0xff, 0xb0, 0xc8, 0x7f, 0xf2, 0x70, - 0xff, 0xa0, 0xff, 0x21, 0xff, 0xcf, 0x83, 0xfc, - 0x87, 0xff, 0x9, 0xf, 0xfe, 0x5a, 0x83, 0xfc, - 0x87, 0xfa, 0x18, 0x3f, 0xf9, 0x90, 0x7f, 0xa0, - 0xff, 0x3c, 0x1f, 0xfc, 0xe4, 0x3f, 0xfc, 0xb0, - 0x7f, 0x90, 0xff, 0xf2, 0xe1, 0xff, 0xdb, 0x83, - 0xf9, 0xf, 0xfe, 0xda, 0x1f, 0xff, 0xf0, 0xff, - 0xe6, 0xa1, 0xff, 0xe5, 0xc3, 0xff, 0xca, 0x87, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, - 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, - 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, - 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, - 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, - 0xff, 0x87, 0xff, 0x9a, 0xf, 0xd8, - - /* U+E920 "" */ - 0x2f, 0xf4, 0x1f, 0xfd, 0xdb, 0xff, 0x41, 0xff, - 0xdc, 0x50, 0x79, 0x41, 0xff, 0xff, 0xf, 0xff, - 0xf8, 0x7f, 0xf3, 0x57, 0x56, 0xff, 0x83, 0xff, - 0x8a, 0xba, 0xbb, 0xff, 0xab, 0x2e, 0xf, 0x21, - 0xfe, 0xff, 0xab, 0x2f, 0x7, 0xff, 0x2f, 0xf, - 0xd8, 0x7f, 0xff, 0xc3, 0xff, 0x86, 0x87, 0xe8, - 0x3f, 0xfc, 0xa9, 0x7, 0xff, 0x65, 0xf, 0xf9, - 0xe0, 0xff, 0xeb, 0xe1, 0xff, 0xc1, 0x79, 0xf, - 0xff, 0x23, 0x68, 0x7f, 0xf4, 0x90, 0xff, 0xe3, - 0x5a, 0x1f, 0xfe, 0x5b, 0x83, 0xff, 0x9a, 0x87, - 0xff, 0x2d, 0xe0, 0xff, 0xe5, 0xe1, 0xff, 0xcd, - 0x70, 0xff, 0xfe, 0x21, 0xff, 0xce, 0x83, 0xff, - 0xc9, 0xa1, 0xff, 0xc9, 0x43, 0xff, 0x9b, 0x87, - 0xff, 0x2f, 0xf, 0xfe, 0x66, 0x1f, 0xfe, 0x37, - 0xf, 0xfe, 0x6a, 0x1f, 0xfc, 0x9a, 0x7, 0xff, - 0x8e, 0x43, 0xff, 0x9c, 0x87, 0xff, 0x23, 0x43, - 0xff, 0x84, 0x87, 0xff, 0x3, 0xf, 0xfe, 0x3e, - 0x1f, 0xfc, 0x2b, 0xa0, 0x7f, 0xf4, 0x5c, 0x3f, - 0xf8, 0x52, 0x4, 0x3f, 0xe4, 0x3f, 0xf8, 0x8c, - 0x1f, 0xfc, 0x2d, 0xf, 0xfe, 0x9d, 0x3, 0xff, - 0x85, 0x87, 0xa0, 0xfe, 0x43, 0xff, 0x87, 0x21, - 0xff, 0xc1, 0x70, 0xf9, 0xf, 0xec, 0x3f, 0xf8, - 0x68, 0x7f, 0xf0, 0x68, 0x1f, 0xfc, 0x64, 0x3f, - 0xf8, 0x28, 0x7f, 0xf0, 0xa4, 0x3f, 0xc8, 0x7f, - 0xf2, 0xa0, 0xff, 0xe0, 0xe8, 0x7f, 0xd8, 0x7f, - 0xf2, 0x70, 0xff, 0xe0, 0xe1, 0xff, 0xc1, 0x43, - 0xe4, 0x3f, 0xf8, 0x10, 0x7f, 0xf0, 0x1c, 0x3f, - 0xf8, 0x68, 0x7b, 0xf, 0xf9, 0x41, 0xff, 0x30, - 0x7f, 0xf1, 0x30, 0xf2, 0x1f, 0xf4, 0x1f, 0xf3, - 0x7, 0xff, 0x15, 0xf, 0xfe, 0x2c, 0x1f, 0xf3, - 0x7, 0xff, 0x61, 0xf, 0xfa, 0xf, 0xfe, 0x44, - 0x19, 0xf, 0xf4, 0x1f, 0xf6, 0x1f, 0xfc, 0x94, - 0x36, 0x1f, 0xe4, 0x3f, 0xd0, 0x7f, 0xf3, 0xd0, - 0xfe, 0x43, 0xfc, 0xa0, 0xff, 0xe5, 0xa1, 0xff, - 0xc1, 0x83, 0xfd, 0x7, 0xff, 0x32, 0x48, 0x3f, - 0xf9, 0x8, 0x7f, 0xf3, 0xad, 0xf, 0xe4, 0x3f, - 0xd0, 0x7f, 0xf6, 0xb0, 0xff, 0xf2, 0xa1, 0xfd, - 0x7, 0xff, 0x95, 0xf, 0xff, 0xf8, 0x7f, 0xf2, - 0xd0, 0xff, 0xf2, 0xe1, 0xff, 0xe5, 0x43, 0xff, - 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, - 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, - 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, - 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, - 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, - 0xc3, 0xff, 0xb7, 0x87, 0xec, 0x3f, 0xfb, 0x80, - - /* U+E921 "" */ - 0xf, 0xff, 0xaa, 0xaf, 0x83, 0xff, 0xee, 0xd3, - 0xf5, 0x10, 0xff, 0xf9, 0x2a, 0x9f, 0xa5, 0x7, - 0xf4, 0x1f, 0xfe, 0xbb, 0xea, 0x28, 0x3f, 0xf8, - 0x7a, 0x1f, 0xfe, 0xb4, 0x3f, 0xf9, 0xe, 0x1f, - 0xfe, 0xd4, 0x3f, 0xf8, 0xfc, 0x1f, 0xfe, 0xe8, - 0x3f, 0xf8, 0xae, 0x1f, 0xff, 0xf0, 0x50, 0x3f, - 0xfe, 0x50, 0x7f, 0xf0, 0xa4, 0x3f, 0xfe, 0x68, - 0x7f, 0xf0, 0xb0, 0xff, 0xf0, 0xd0, 0x3f, 0xf8, - 0xc8, 0x7f, 0xf0, 0x5c, 0x3f, 0xfb, 0xce, 0xa0, - 0xff, 0xe3, 0x41, 0xff, 0xc3, 0xd0, 0xff, 0xed, - 0xd0, 0x2c, 0x3f, 0xf8, 0xc8, 0x7f, 0xf0, 0xe8, - 0x1f, 0xfd, 0x99, 0xe, 0x43, 0xff, 0x8b, 0x87, - 0xff, 0x11, 0xc3, 0xff, 0xaf, 0xa1, 0xe8, 0x3f, - 0xf8, 0xa8, 0x7f, 0xf1, 0xb0, 0xff, 0xea, 0xe1, - 0xff, 0xcf, 0x43, 0xeb, 0x43, 0xf6, 0x1f, 0xfd, - 0x3c, 0x3f, 0x58, 0x7f, 0xf1, 0xa0, 0xf9, 0x28, - 0x1f, 0xb0, 0xff, 0xe8, 0xc1, 0xfb, 0x43, 0xff, - 0x90, 0x87, 0xf3, 0xa1, 0xf6, 0x1f, 0xfc, 0xf9, - 0xf, 0xb0, 0xff, 0xe5, 0x61, 0xff, 0x48, 0x7d, - 0x87, 0xff, 0x39, 0xf, 0xb0, 0xff, 0xe5, 0xa1, - 0xff, 0xc0, 0xa0, 0x7c, 0x87, 0xff, 0x33, 0xf, - 0xb0, 0xff, 0xe6, 0xc1, 0x90, 0xf9, 0x41, 0xe8, - 0x3f, 0xf9, 0x70, 0x7d, 0x87, 0xff, 0x39, 0xf, - 0xfe, 0xc, 0x87, 0xb0, 0xff, 0xe5, 0x21, 0xec, - 0x3f, 0xfa, 0x8, 0x58, 0x7f, 0x41, 0xf2, 0x1f, - 0xfc, 0x88, 0x3d, 0x7, 0xff, 0x46, 0xf, 0xfe, - 0x16, 0x1e, 0x83, 0xff, 0x90, 0x87, 0x90, 0xff, - 0xf0, 0xa1, 0xe4, 0x3f, 0xf8, 0xd0, 0x7b, 0xf, - 0xfe, 0x9c, 0x4, 0x3f, 0xe8, 0x3d, 0x7, 0xff, - 0x19, 0xe, 0x43, 0xff, 0xa8, 0xb0, 0x7f, 0xf0, - 0x60, 0xf2, 0x1f, 0xfc, 0x44, 0x3d, 0x7, 0xff, - 0x56, 0x81, 0xff, 0xc1, 0x43, 0xd8, 0x7f, 0xf1, - 0x20, 0xe4, 0x3f, 0xfc, 0xd0, 0x72, 0x1f, 0xfc, - 0xac, 0x3f, 0xfc, 0xc8, 0x79, 0xf, 0xfe, 0x12, - 0x1e, 0x43, 0xff, 0xce, 0x87, 0x41, 0xff, 0xc2, - 0xc3, 0x90, 0xff, 0xf4, 0x61, 0xff, 0xc8, 0x43, - 0xb0, 0xff, 0xf4, 0x21, 0xff, 0xce, 0x43, 0xff, - 0xde, 0x87, 0xff, 0x1, 0xf, 0xff, 0x82, 0x1d, - 0x87, 0xff, 0xf7, 0xf, 0x3a, 0x1f, 0xfc, 0x34, - 0x3f, 0xad, 0xf, 0xff, 0x2c, 0x5c, 0x1f, 0x61, - 0xff, 0xc1, 0xb4, 0xc3, 0xff, 0xc8, 0xe1, 0x3c, - 0x1f, 0xfc, 0x5b, 0x42, 0x83, 0xff, 0xcd, 0x6, - 0x79, 0xf, 0xf9, 0xf2, 0x1a, 0xf, 0xfe, 0xfb, - 0xfe, 0x14, 0x1c, 0xdc, 0x87, 0x37, 0x7, 0x94, - 0x1f, 0xfe, 0x88, 0x3f, 0x21, 0xf2, 0x1f, 0xa0, - 0xff, 0xf5, 0x61, 0xff, 0xcb, 0xc3, 0xff, 0xd9, - 0x7, 0xff, 0x26, 0xf, 0xff, 0x6a, 0x83, 0xff, - 0x8e, 0xa0, 0xff, 0xf7, 0x41, 0xff, 0xc6, 0x60, - 0xff, 0xf8, 0x61, 0xff, 0xc5, 0x83, 0xff, 0xe5, - 0x7, 0xff, 0xf, 0xf, 0xff, 0x9a, 0x83, 0xff, - 0x83, 0x7, 0xff, 0xd6, 0x43, 0xfe, 0x50, 0x7f, - 0xfd, 0xa0, 0xff, 0xa0, 0xff, 0xfc, 0x61, 0xfd, - 0x87, 0xff, 0xea, 0xf, 0xa0, 0xff, 0xfd, 0xa8, - 0x39, 0x41, 0xff, 0xd4, 0xb9, 0x41, 0xff, 0xd7, - 0x83, 0xa0, 0xff, 0xea, 0x28, 0x69, 0xfa, 0x88, - 0x7f, 0xf4, 0x70, 0xb0, 0xff, 0xea, 0xa8, 0x3f, - 0x2a, 0xfd, 0x45, 0x7, 0xff, 0x2a, 0x20, 0xff, - 0xeb, 0xd0, 0x3f, 0xf8, 0x4a, 0xa7, 0xd4, 0xf, - 0xfe, 0x2b, 0xa1, 0xff, 0xd8, 0x74, 0x3f, 0xf8, - 0xea, 0xf, 0xff, 0x75, 0x3, 0xff, 0x8e, 0x87, - 0xff, 0xbd, 0xc3, 0xff, 0x8d, 0x7, 0xff, 0xc7, - 0x43, 0xff, 0x86, 0x87, 0xff, 0xce, 0x43, 0xff, - 0x85, 0x87, 0xff, 0xfc, 0x32, 0x1f, 0xfd, 0x8d, - 0xf, 0xfe, 0x63, 0xa1, 0xff, 0xc1, 0x83, 0xff, - 0xb1, 0x16, 0x87, 0xff, 0x21, 0xe0, 0xff, 0xe1, - 0xa1, 0xff, 0xd8, 0x42, 0xb9, 0xf, 0xfe, 0x13, - 0x70, 0x7f, 0xf1, 0x10, 0xff, 0xec, 0x41, 0xe6, - 0xf5, 0x17, 0xd4, 0xf4, 0x87, 0xff, 0x1b, 0xf, - 0xfe, 0xba, 0x83, 0xfc, 0xaa, 0xf2, 0x83, 0xff, - 0x94, 0x87, 0xff, 0xe1, 0xd0, 0xfa, 0xf, 0xfe, - 0xc3, 0xc1, 0xff, 0xd0, 0x78, 0x83, 0xe4, 0x3f, - 0xfb, 0x4f, 0x21, 0xff, 0xcb, 0xb8, 0x3f, 0xc8, - 0x7f, 0xf7, 0x5b, 0x90, 0xff, 0xe2, 0xbe, 0x43, - 0xff, 0x81, 0x7, 0xff, 0x81, 0xbd, 0x28, 0x3c, - 0xaa, 0x7a, 0xf, 0xff, 0xa3, 0x4f, 0xf5, 0x14, - 0x1f, 0xfc, 0x4, 0x34, 0x1f, 0xff, 0xf0, 0xc8, - 0x7f, 0xff, 0xc2, 0x43, 0xff, 0xff, 0x85, 0x7, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xfa, 0xf, 0xff, - 0xf8, 0x81, 0xf, 0xff, 0xf8, 0x3c, 0x1f, 0xfc, - 0x0, - - /* U+E922 "" */ - 0xf, 0xff, 0x55, 0xff, 0xd0, 0x7f, 0xfd, 0xef, - 0x21, 0xfc, 0xfa, 0xf, 0xff, 0x97, 0x90, 0xff, - 0xe1, 0xbe, 0xf, 0xff, 0x73, 0x87, 0xff, 0x27, - 0x83, 0xff, 0xd7, 0xc1, 0xff, 0xcb, 0x70, 0xff, - 0xf4, 0xe1, 0xff, 0x34, 0x50, 0x7f, 0xd8, 0x7f, - 0xf9, 0xf0, 0xfc, 0xfd, 0x2a, 0x9f, 0x21, 0xfb, - 0xf, 0xff, 0x2e, 0x1f, 0xb8, 0x3f, 0xeb, 0x43, - 0xec, 0x3f, 0xf9, 0x56, 0x87, 0xff, 0x2b, 0xf, - 0xbc, 0x1f, 0xfc, 0x3b, 0xf, 0xb0, 0xff, 0xe4, - 0x68, 0x7f, 0xf2, 0xd0, 0xfb, 0xf, 0xfe, 0x3e, - 0x1f, 0x41, 0xff, 0xc6, 0xc2, 0x43, 0xff, 0x93, - 0x7, 0xb0, 0xff, 0xe4, 0xe1, 0xe4, 0x3f, 0xf8, - 0x8e, 0x14, 0x1f, 0xfc, 0x98, 0x3d, 0x87, 0xff, - 0x2f, 0xf, 0x61, 0xff, 0xc2, 0xa0, 0x64, 0x3f, - 0xf9, 0x28, 0x76, 0x1f, 0xfc, 0xdc, 0x3f, 0xf8, - 0xfa, 0x19, 0xf, 0xfe, 0x4c, 0x1f, 0xfd, 0x54, - 0x3a, 0xf, 0xf3, 0x87, 0xa0, 0xff, 0xe4, 0xa1, - 0xd8, 0x7f, 0xf3, 0xe0, 0xe4, 0x3f, 0xa8, 0x1e, - 0x43, 0xff, 0xda, 0x87, 0xff, 0x7, 0x43, 0xe8, - 0x3f, 0xf9, 0x28, 0x76, 0x1f, 0xfd, 0x18, 0x3a, - 0xe, 0x70, 0xff, 0xe9, 0xc1, 0xff, 0xdd, 0x43, - 0x30, 0x7f, 0x97, 0xff, 0x94, 0x1f, 0xfe, 0x2a, - 0x7, 0xfd, 0x5f, 0xfc, 0xa0, 0xff, 0xec, 0xa1, - 0xf6, 0x87, 0xff, 0x6d, 0xf, 0xfe, 0xd4, 0x1f, - 0xff, 0xf0, 0xe9, 0xf, 0xff, 0xf8, 0x75, 0x3, - 0xff, 0xb6, 0x87, 0xff, 0x4d, 0xf, 0xce, 0x1f, - 0xf7, 0xff, 0xf2, 0x95, 0xe9, 0xf, 0xfe, 0xf6, - 0x87, 0xff, 0x4f, 0x9, 0x41, 0xff, 0xdf, 0xa0, - 0x7e, 0x43, 0xff, 0x92, 0xa0, 0xc8, 0x7f, 0xf4, - 0x50, 0xe4, 0x3e, 0x70, 0xfa, 0xf, 0xfe, 0x75, - 0x87, 0xff, 0x46, 0xe, 0x83, 0xfb, 0x43, 0xc8, - 0x7f, 0xf2, 0x58, 0xa, 0xf, 0xfe, 0x82, 0x1f, - 0xfc, 0x5a, 0x7, 0x41, 0xff, 0xc9, 0x90, 0xac, - 0x3f, 0xf9, 0xf0, 0x72, 0x1f, 0xfc, 0x7, 0xf, - 0xfe, 0x82, 0x4, 0x43, 0xff, 0x9b, 0x7, 0xa0, - 0xff, 0xe1, 0x68, 0x50, 0x7f, 0xf2, 0x68, 0x17, - 0x21, 0xff, 0xcb, 0x50, 0x7f, 0xf2, 0xa8, 0x4, - 0x3f, 0xf9, 0x2a, 0x82, 0xa0, 0x7f, 0xf2, 0x98, - 0x3d, 0x87, 0xff, 0x15, 0xc0, 0x87, 0xff, 0x26, - 0x50, 0x1b, 0x43, 0xff, 0x8f, 0x40, 0xf4, 0x1f, - 0xfc, 0x8e, 0x43, 0xff, 0x95, 0x40, 0x9e, 0x81, - 0xff, 0xc5, 0xd0, 0xf9, 0xf, 0xfe, 0x4a, 0x1f, - 0xfc, 0xb6, 0xc3, 0x66, 0x87, 0xff, 0x7, 0xc1, - 0xfb, 0xf, 0xff, 0x1a, 0xb0, 0xd7, 0xd2, 0x1e, - 0x6f, 0x7, 0xf6, 0x1f, 0xfe, 0x59, 0xc3, 0xaf, - 0xfe, 0x90, 0xff, 0x61, 0xff, 0xe7, 0xa7, 0x7, - 0x36, 0x1f, 0xfc, 0x4c, 0x3f, 0xfd, 0x2e, 0x68, - 0x7f, 0xf2, 0x2c, 0x3f, 0xfd, 0x95, 0x70, 0x7f, - 0xf1, 0x74, 0x3f, 0xfd, 0xcf, 0x1e, 0xa0, 0x7f, - 0x9f, 0x7, 0xff, 0xc9, 0xbb, 0xf, 0xcf, 0xa0, - 0xff, 0xfb, 0xaa, 0xe, 0xf4, 0x1f, 0xff, 0xf0, - 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, - 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, - 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, - 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, - 0xfd, 0x30, - - /* U+E923 "" */ - 0xf, 0xfe, 0x23, 0x7f, 0xa8, 0x87, 0xff, 0xdd, - 0xfd, 0x7f, 0x8f, 0x48, 0x7f, 0xfc, 0xaf, 0x5c, - 0xa0, 0xe6, 0x9e, 0xb4, 0x3f, 0xfd, 0xce, 0x72, - 0x1f, 0xfc, 0x17, 0xd6, 0x1f, 0xfe, 0xca, 0x70, - 0x73, 0x7e, 0xa2, 0x1d, 0xda, 0x1f, 0xfe, 0x9c, - 0xc3, 0x3f, 0xaf, 0xfa, 0xc, 0xf4, 0xf, 0xff, - 0x3e, 0xc1, 0x3f, 0xa5, 0x4, 0xab, 0xe8, 0x36, - 0xc1, 0xff, 0xe5, 0xd8, 0x2e, 0xe0, 0xff, 0xe0, - 0x39, 0xa1, 0x6c, 0x1f, 0xfe, 0x39, 0x82, 0xdc, - 0x3f, 0xf8, 0x97, 0x40, 0xb5, 0x7, 0xff, 0x29, - 0xe0, 0xff, 0xe4, 0x2a, 0xb, 0xa0, 0x7f, 0xf1, - 0xf6, 0xb, 0x83, 0xff, 0x98, 0xe1, 0xff, 0xc7, - 0xa0, 0x5c, 0x87, 0xff, 0x27, 0x50, 0x4c, 0x1f, - 0xfc, 0x94, 0x2d, 0xf, 0xfe, 0x24, 0xa0, 0x6a, - 0xf, 0xfe, 0x5f, 0x20, 0x94, 0x1f, 0xfc, 0x98, - 0x29, 0xf, 0xfe, 0x1b, 0x1, 0x20, 0xff, 0xe6, - 0xd0, 0x2a, 0x7, 0xff, 0x25, 0xd, 0x40, 0xff, - 0xe0, 0xc8, 0x54, 0xf, 0xfe, 0x72, 0x20, 0x43, - 0xff, 0x96, 0x86, 0x70, 0xff, 0xe0, 0x38, 0x16, - 0xf, 0xfe, 0x7d, 0x2, 0x60, 0xff, 0xe4, 0xc1, - 0xed, 0xf, 0xf9, 0x5, 0x87, 0xff, 0x41, 0x10, - 0x48, 0x7f, 0xf2, 0x90, 0xf5, 0x3, 0xf2, 0x83, - 0x21, 0xff, 0xd1, 0x70, 0xff, 0xe7, 0x41, 0xf3, - 0x87, 0xde, 0x2, 0x83, 0xff, 0xa5, 0x21, 0x28, - 0x3f, 0xfa, 0x7a, 0x1c, 0x85, 0xe0, 0xff, 0xea, - 0x2e, 0x97, 0xff, 0x94, 0x1f, 0xe9, 0xe, 0x43, - 0xff, 0xb1, 0x50, 0x2b, 0xff, 0x94, 0x1f, 0xf5, - 0x3, 0xff, 0xfe, 0x1c, 0xe1, 0xff, 0xff, 0xf, - 0x41, 0xff, 0xff, 0xc, 0xc1, 0xff, 0xff, 0xa, - 0x81, 0x20, 0xf0, 0x7f, 0xf4, 0x90, 0xf7, 0xff, - 0xf2, 0x83, 0xfe, 0xd0, 0x90, 0x94, 0x1f, 0xfd, - 0x28, 0x39, 0xf, 0xfe, 0x9b, 0x87, 0x78, 0x3f, - 0xfb, 0x98, 0x7f, 0xf2, 0x50, 0xfd, 0x40, 0xf2, - 0x82, 0x60, 0xff, 0xe8, 0x21, 0xe4, 0x3f, 0xf9, - 0x30, 0x7d, 0xa1, 0xfc, 0x82, 0x43, 0xff, 0xa1, - 0x7, 0xff, 0x3d, 0xf, 0x38, 0x7f, 0xac, 0x26, - 0xf, 0xfe, 0x72, 0x1e, 0x83, 0xff, 0x93, 0x7, - 0x50, 0x3f, 0xe5, 0x5, 0x28, 0x3f, 0xf9, 0xb0, - 0x79, 0xf, 0xfe, 0x42, 0x1d, 0xa1, 0xff, 0xc1, - 0xa0, 0x5c, 0x1f, 0xfc, 0xcc, 0x3d, 0x7, 0xff, - 0x27, 0x9, 0xc3, 0xff, 0x86, 0xb0, 0x56, 0x1f, - 0xfc, 0xac, 0x3e, 0x43, 0xff, 0x92, 0x81, 0x83, - 0xff, 0x8b, 0x40, 0x9b, 0x43, 0xff, 0x8f, 0x87, - 0xd8, 0x7f, 0xf2, 0x50, 0x50, 0x3f, 0xf8, 0xca, - 0xc2, 0x6a, 0xf, 0xfe, 0x25, 0x87, 0xc8, 0x7f, - 0xf2, 0x9b, 0x43, 0xff, 0x91, 0x30, 0x4e, 0x68, - 0x7f, 0xf0, 0x1d, 0xf, 0xd0, 0x7f, 0xf2, 0xd0, - 0xff, 0xe5, 0xcc, 0x1a, 0xee, 0x43, 0xcf, 0xa0, - 0xfe, 0xc3, 0xff, 0xcb, 0x98, 0x77, 0xff, 0xa0, - 0xff, 0xb0, 0xff, 0xf3, 0xd3, 0x43, 0x9a, 0x7, - 0xff, 0xd, 0xc3, 0xff, 0xd2, 0xf6, 0x87, 0xff, - 0x23, 0x83, 0xff, 0xd9, 0xd3, 0x43, 0xff, 0x89, - 0x61, 0xff, 0xef, 0x7b, 0xea, 0x7, 0xfa, 0xd0, - 0xff, 0xf9, 0x37, 0x61, 0xfa, 0xf2, 0x1f, 0xff, - 0x75, 0x41, 0xde, 0x43, 0xff, 0xfe, 0x1f, 0xff, - 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, - 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xff, - 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0xff, 0xff, - 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, - 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xf2, - - /* U+E924 "" */ - 0xf, 0xff, 0x1d, 0xff, 0xf2, 0x1f, 0xff, 0x4f, - 0x90, 0xff, 0xaf, 0x41, 0xff, 0xee, 0x7c, 0x1f, - 0xfc, 0x67, 0xc1, 0xff, 0xeb, 0xe0, 0xff, 0xe5, - 0xf8, 0x3f, 0xfc, 0xfe, 0xf, 0xfe, 0x7f, 0x7, - 0xff, 0x93, 0xf, 0xfe, 0x93, 0x87, 0xff, 0x85, - 0xc3, 0xff, 0xab, 0x87, 0xff, 0x7e, 0x81, 0xff, - 0xc0, 0xbf, 0xf9, 0xf, 0xfe, 0x6, 0x1f, 0xfd, - 0xd5, 0x7, 0xfa, 0xf2, 0x1f, 0xd7, 0x90, 0xff, - 0x61, 0xff, 0xdb, 0x60, 0xfe, 0xb4, 0x3f, 0xf8, - 0x76, 0x87, 0xf6, 0x1f, 0xfd, 0xa8, 0x3f, 0xb4, - 0x3f, 0xf8, 0xf6, 0x1f, 0xd8, 0x7f, 0xf6, 0x30, - 0xfd, 0x61, 0xff, 0xcb, 0xc3, 0xf9, 0xf, 0xfe, - 0xb2, 0x1f, 0xa4, 0x3f, 0xf9, 0xba, 0x1f, 0x41, - 0xff, 0xd6, 0x83, 0xe9, 0xf, 0xfe, 0x7c, 0x1f, - 0xb0, 0xff, 0xea, 0x61, 0xf2, 0x83, 0xff, 0xa3, - 0x87, 0xff, 0x92, 0xf, 0xfe, 0x9e, 0x1f, 0x61, - 0xff, 0xd2, 0x83, 0xec, 0x3f, 0xfa, 0xa8, 0x7f, - 0xf6, 0x50, 0xff, 0xee, 0xc1, 0xf4, 0x1f, 0xfd, - 0x8c, 0x3f, 0xfa, 0xe8, 0x79, 0xf, 0xfe, 0x84, - 0x1f, 0xfd, 0xf8, 0x3f, 0xfa, 0xe8, 0x7a, 0xf, - 0xff, 0x4, 0x1f, 0xfd, 0x64, 0x3f, 0xfb, 0x28, - 0x79, 0xf, 0xff, 0xe4, 0x1f, 0xfd, 0x54, 0x3f, - 0xff, 0xe1, 0xb0, 0xff, 0xff, 0x87, 0xfc, 0x87, - 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, - 0xff, 0xf8, 0x7f, 0xf0, 0x30, 0xf2, 0x1f, 0xff, - 0xc4, 0x3f, 0xff, 0xe1, 0xff, 0xe6, 0x43, 0xff, - 0xba, 0x87, 0xff, 0x66, 0xf, 0x21, 0xff, 0xd6, - 0x83, 0xff, 0xc1, 0x7, 0xff, 0x3e, 0xf, 0xfe, - 0xfa, 0x1f, 0xfd, 0x74, 0x3e, 0xc3, 0xff, 0xaf, - 0x7, 0xff, 0xfc, 0x24, 0x3e, 0xc3, 0xff, 0xa3, - 0x87, 0xd8, 0x7f, 0xf5, 0x60, 0xff, 0xf1, 0x21, - 0xff, 0xd3, 0xc3, 0xe8, 0x3f, 0xfa, 0x78, 0x7d, - 0x7, 0xff, 0x4a, 0xf, 0xc8, 0x7f, 0xf7, 0x30, - 0xff, 0xe8, 0x28, 0x3e, 0x83, 0xff, 0xab, 0x87, - 0xec, 0x3f, 0xf9, 0xd4, 0xf, 0xc8, 0x7f, 0xf5, - 0xa0, 0xfd, 0xa1, 0xff, 0xcb, 0xd0, 0xfd, 0x87, - 0xff, 0x5d, 0xf, 0xea, 0x7, 0xff, 0x21, 0xc3, - 0xfb, 0xf, 0xfe, 0xc6, 0x1f, 0xb9, 0xd0, 0xff, - 0xe2, 0xf0, 0x7f, 0x41, 0xff, 0xd8, 0xc3, 0xf6, - 0x3b, 0x68, 0x7f, 0xf0, 0x2f, 0x7, 0xfa, 0x43, - 0xff, 0xaf, 0x87, 0xec, 0x35, 0xb7, 0xae, 0xb7, - 0xe4, 0x3f, 0xe9, 0xf, 0xfe, 0xbe, 0x1f, 0xd8, - 0x7a, 0xf4, 0x5, 0xc1, 0xff, 0xc3, 0x90, 0xff, - 0xeb, 0xe1, 0xfb, 0xc6, 0x87, 0xcc, 0x1f, 0xfc, - 0x7d, 0xf, 0xfe, 0xbe, 0x1f, 0xb0, 0x74, 0xd0, - 0xff, 0xe6, 0x58, 0x7f, 0xf6, 0x30, 0xfd, 0x86, - 0x76, 0xe0, 0xff, 0xe4, 0xe8, 0x7f, 0xf6, 0x30, - 0xfd, 0x87, 0xd7, 0x3e, 0x94, 0x1f, 0xfc, 0x17, - 0xc1, 0xff, 0xc6, 0x90, 0xff, 0xe2, 0xe1, 0xfb, - 0xf, 0xf3, 0xe8, 0xa0, 0x7f, 0x9f, 0x41, 0xff, - 0xc7, 0x98, 0x3f, 0xf8, 0x98, 0x7e, 0xc3, 0xff, - 0x84, 0xde, 0xf, 0xbe, 0x83, 0xff, 0x94, 0x81, - 0xf, 0xfe, 0x16, 0x1f, 0xb0, 0xff, 0xe6, 0xa1, - 0xff, 0xd1, 0x83, 0xff, 0x83, 0x87, 0xec, 0x3f, - 0xff, 0x38, 0x7e, 0xc3, 0xff, 0xdd, 0x7, 0xfb, - 0xf, 0xd8, 0x7f, 0xfa, 0x90, 0xc8, 0x7f, 0x61, - 0xfb, 0xf, 0xff, 0x8a, 0x1f, 0x61, 0xfb, 0xf, - 0xff, 0x66, 0x1d, 0x87, 0xb0, 0xfd, 0x87, 0xff, - 0xcd, 0xe, 0xc3, 0xf6, 0x1f, 0xfe, 0xe4, 0x3c, - 0x85, 0x87, 0xec, 0x3f, 0xfe, 0xd0, 0xe1, 0xfb, - 0xf, 0xff, 0xc7, 0x7, 0xec, 0x3f, 0xff, 0xe1, - 0x61, 0xff, 0xf1, 0x43, 0xff, 0x89, 0x87, 0xff, - 0xfc, 0x2c, 0x3f, 0xfe, 0x78, 0x7f, 0xf0, 0xa0, - 0xff, 0xff, 0x86, 0x43, 0xff, 0xe8, 0x87, 0xff, - 0xb, 0x43, 0xff, 0xfe, 0x1a, 0xe4, 0x3f, 0xff, - 0xe1, 0x37, 0x7, 0xff, 0xfc, 0x33, 0xe4, 0x3f, - 0xf9, 0x95, 0xf0, 0x7f, 0xf2, 0xd0, 0xff, 0xe6, - 0x5a, 0x1f, 0xfc, 0xa5, 0xf0, 0x7f, 0xf9, 0xf0, - 0xff, 0xf4, 0x61, 0xff, 0xcd, 0x60, 0xff, 0xfd, - 0x2a, 0x9f, 0xa0, 0xff, 0xf4, 0xa1, 0xfc, 0xaa, - 0x7e, 0xa2, 0x83, 0xff, 0xe0, 0xaa, 0x7e, 0xa2, - 0x83, 0xff, 0xec, - - /* U+E925 "" */ - 0xf, 0xfe, 0x42, 0xaf, 0xfa, 0x88, 0x7f, 0xfd, - 0x1b, 0xa0, 0xd7, 0x23, 0x79, 0xf, 0xff, 0x7d, - 0xc5, 0xea, 0x2f, 0x53, 0xd3, 0x70, 0x7f, 0xfa, - 0xdd, 0x5c, 0x87, 0xff, 0x5, 0xb9, 0xe0, 0xff, - 0xf3, 0xbd, 0x38, 0x3f, 0xf8, 0xef, 0x3a, 0x1f, - 0xfe, 0x46, 0x74, 0x3e, 0x69, 0xfa, 0x50, 0x79, - 0xea, 0xf, 0xff, 0x15, 0x60, 0xf5, 0xe8, 0xc, - 0xa2, 0x9c, 0x87, 0x3b, 0x87, 0xff, 0x83, 0x74, - 0x33, 0xe6, 0xf5, 0x4d, 0x5e, 0x8b, 0x43, 0xb7, - 0xf, 0xfe, 0xf6, 0x61, 0xd4, 0x7c, 0x87, 0xfc, - 0xdb, 0x61, 0xd3, 0x87, 0xff, 0x72, 0x30, 0xce, - 0xd0, 0x3f, 0xf8, 0xb6, 0xe8, 0x69, 0xc3, 0xff, - 0xb5, 0x38, 0x66, 0x74, 0x3f, 0xf9, 0x15, 0x83, - 0x46, 0x1f, 0xfd, 0x85, 0x41, 0xab, 0x7, 0xff, - 0x2d, 0xd8, 0x36, 0x41, 0xff, 0xd7, 0x94, 0x12, - 0xa4, 0x3f, 0xf9, 0xdb, 0x6, 0x90, 0xff, 0xeb, - 0x24, 0x13, 0x44, 0x3f, 0xfa, 0x1b, 0x4, 0xac, - 0x3f, 0xfa, 0xb4, 0xd, 0x28, 0x3f, 0xfa, 0x52, - 0x82, 0x84, 0x3f, 0xfa, 0x70, 0x85, 0x10, 0x7f, - 0xf4, 0xd5, 0x6, 0x60, 0xff, 0xe9, 0xa8, 0x33, - 0x7, 0xff, 0x56, 0x10, 0xa1, 0xf, 0xfe, 0x8a, - 0x41, 0x42, 0x1f, 0xfd, 0x66, 0xc, 0xe1, 0xff, - 0xd1, 0xd0, 0xcc, 0x1f, 0xfd, 0x78, 0x42, 0xd0, - 0xff, 0xe8, 0xb8, 0x50, 0x87, 0xff, 0x61, 0x82, - 0x44, 0x3f, 0xf9, 0xe8, 0x84, 0xc1, 0xff, 0xd9, - 0xc3, 0xd8, 0x7f, 0xf5, 0x90, 0xff, 0xec, 0xa2, - 0x12, 0x83, 0xff, 0x9f, 0xa1, 0x21, 0xff, 0xdd, - 0xc2, 0xc3, 0xff, 0xa0, 0x86, 0xc3, 0xff, 0xb8, - 0x86, 0x43, 0xff, 0xa3, 0x86, 0x43, 0xff, 0xb7, - 0xa1, 0xc8, 0x7f, 0xff, 0xc3, 0xff, 0xb0, 0x87, - 0xff, 0xfc, 0x32, 0x1f, 0xff, 0xf0, 0xff, 0xff, - 0x87, 0xf9, 0xf, 0xfe, 0xde, 0x1e, 0x43, 0xff, - 0x9c, 0xe1, 0x61, 0xff, 0xdd, 0x42, 0x43, 0xff, - 0xa2, 0x84, 0x87, 0xff, 0x71, 0xc3, 0xff, 0xa9, - 0x87, 0x90, 0xff, 0xed, 0xa1, 0x68, 0x7f, 0xf3, - 0xd1, 0x9, 0x83, 0xff, 0xb3, 0x7, 0x38, 0x7f, - 0xf4, 0x70, 0xa0, 0xff, 0xed, 0x30, 0x72, 0x1f, - 0xfd, 0x9, 0xe, 0x83, 0xff, 0xae, 0x88, 0x50, - 0x7f, 0xf4, 0x91, 0xa, 0x43, 0xff, 0xaf, 0x21, - 0x98, 0x3f, 0xfa, 0x4c, 0x12, 0xb0, 0xff, 0xea, - 0xc4, 0x12, 0x21, 0xff, 0xd2, 0x84, 0x28, 0x83, - 0xff, 0xa6, 0xa8, 0x34, 0x87, 0xff, 0x51, 0x83, - 0x4a, 0xf, 0xfe, 0x94, 0x1c, 0x90, 0x7f, 0xf5, - 0x21, 0x9, 0x50, 0x7f, 0xf4, 0x70, 0x48, 0x28, - 0x1f, 0xfd, 0x6a, 0x6, 0x9d, 0xf, 0xfe, 0x6b, - 0x86, 0x9c, 0x43, 0xff, 0xac, 0xac, 0x34, 0xc8, - 0x7f, 0xf2, 0xe8, 0x1e, 0x8c, 0x3f, 0xfb, 0x11, - 0x6, 0xac, 0x1f, 0xfc, 0x9d, 0xf, 0xe4, 0x3f, - 0xfb, 0x3b, 0x6, 0x77, 0x83, 0xff, 0x8b, 0xe0, - 0xff, 0xa4, 0x3f, 0xfb, 0x3b, 0x7, 0x73, 0xc8, - 0x7f, 0xcf, 0x83, 0xff, 0x85, 0x21, 0xff, 0xd9, - 0xdc, 0x39, 0xe6, 0xfe, 0xbf, 0xa0, 0xff, 0xe2, - 0xc8, 0x7f, 0xf6, 0x73, 0x43, 0x9f, 0x48, 0x48, - 0x7f, 0xf3, 0x24, 0x3f, 0xfb, 0x3b, 0x40, 0xf9, - 0x90, 0xff, 0xe3, 0x78, 0x3f, 0x48, 0x7f, 0xf6, - 0x6d, 0xe0, 0xff, 0xe6, 0xe0, 0xc3, 0xf4, 0x87, - 0xff, 0x6b, 0x9e, 0x43, 0xff, 0x91, 0xe0, 0xd8, - 0x7e, 0x90, 0xff, 0xed, 0x3c, 0x5e, 0x94, 0x1f, - 0xfc, 0x1f, 0x7, 0xd8, 0x7e, 0x90, 0xff, 0xed, - 0xb7, 0x2a, 0xf, 0xfa, 0xf0, 0x7f, 0xb0, 0xfd, - 0x21, 0xff, 0xc4, 0x60, 0xff, 0xe5, 0xb7, 0x83, - 0xef, 0xc8, 0x7f, 0xf0, 0x70, 0xfd, 0x21, 0xff, - 0xc3, 0x98, 0x3f, 0xf9, 0xc8, 0x7f, 0xf3, 0x70, - 0xfd, 0x21, 0xff, 0xc1, 0x40, 0x87, 0xff, 0xa7, - 0xf, 0xd2, 0x1f, 0xfc, 0x8, 0x3f, 0xfd, 0xb8, - 0x7e, 0x90, 0xff, 0xfd, 0x61, 0xfa, 0x43, 0xfa, - 0xf, 0xff, 0x86, 0x1f, 0xa0, 0xfe, 0x43, 0x21, - 0xff, 0xec, 0xc3, 0xf6, 0x1f, 0x21, 0xff, 0xf3, - 0xc3, 0xf6, 0x1e, 0xc3, 0xb0, 0xff, 0xf7, 0x61, - 0xfb, 0xe, 0x43, 0xff, 0xeb, 0x87, 0xec, 0x24, - 0x3c, 0x87, 0xff, 0xc3, 0xf, 0xda, 0x41, 0xff, - 0xf8, 0xc3, 0xf5, 0x87, 0xff, 0xeb, 0xf, 0xff, - 0xf8, 0x76, 0x1f, 0xfc, 0x44, 0x3f, 0xfe, 0x78, - 0x7f, 0xff, 0xc3, 0xa0, 0xff, 0xe1, 0x61, 0xff, - 0xf4, 0x43, 0xff, 0xfe, 0x13, 0x87, 0xff, 0x9, - 0xf, 0xff, 0x83, 0x70, 0x7f, 0xff, 0xae, 0x43, - 0xff, 0xbd, 0x5f, 0x7, 0xff, 0x31, 0xf2, 0x1f, - 0xfe, 0x25, 0xf0, 0x7f, 0xf2, 0x9e, 0xf, 0xfe, - 0x62, 0x1f, 0xfe, 0x8c, 0x3f, 0xff, 0xe1, 0xa4, - 0x3f, 0xf9, 0xb8, 0x7f, 0xfa, 0x6f, 0xd4, 0x50, - 0x7f, 0xff, 0xc5, 0x53, 0xf5, 0x14, 0x1f, 0xc8, - 0x7f, 0xfd, 0x95, 0x4f, 0xd4, 0x50, 0x0, - - /* U+E926 "" */ - 0xf, 0xff, 0xb7, 0xd4, 0x50, 0x7f, 0xfc, 0x55, - 0x4f, 0xd2, 0x83, 0xff, 0xce, 0x87, 0xf9, 0xa7, - 0xea, 0x28, 0x3f, 0xfe, 0x2a, 0xa0, 0x7f, 0xf7, - 0xf0, 0xff, 0xe4, 0x21, 0xff, 0xf1, 0x6e, 0xf, - 0xfe, 0xfa, 0x1f, 0xfc, 0x3b, 0x90, 0xff, 0xf7, - 0x3e, 0x43, 0xff, 0xe3, 0x7, 0xff, 0xd1, 0xf, - 0xff, 0x42, 0x1f, 0xf4, 0x87, 0xff, 0xd2, 0x43, - 0xff, 0xcd, 0x87, 0xff, 0x6, 0x43, 0xff, 0xd6, - 0xf8, 0x3d, 0x21, 0xff, 0xe4, 0x43, 0xb0, 0x61, - 0xe9, 0xf, 0xff, 0x4a, 0x16, 0x1e, 0x90, 0xff, - 0xf3, 0xa1, 0xd8, 0x7a, 0x43, 0xff, 0xcd, 0x7, - 0xb0, 0xf4, 0x87, 0xff, 0x85, 0xf, 0xfa, 0xf, - 0x48, 0x7f, 0xf8, 0x30, 0x41, 0xf9, 0x83, 0xd2, - 0x1f, 0xfe, 0x24, 0x3f, 0x98, 0x3d, 0x21, 0xff, - 0xde, 0x44, 0x3f, 0xe6, 0xf, 0x48, 0x7f, 0xcf, - 0xff, 0x21, 0xff, 0xc8, 0xe0, 0xff, 0xe0, 0x30, - 0x7a, 0x43, 0xe7, 0xd0, 0x7f, 0x5e, 0x83, 0xff, - 0xa8, 0xc1, 0xe9, 0xc, 0xf0, 0x7f, 0xf0, 0xdf, - 0x7, 0xff, 0x4d, 0x83, 0xd2, 0xe, 0xf, 0xfe, - 0x46, 0x87, 0xff, 0x49, 0x83, 0xd4, 0xc3, 0xff, - 0x97, 0x61, 0xff, 0xd2, 0x60, 0xf2, 0x1f, 0xfc, - 0xec, 0x3f, 0xfa, 0x4c, 0x1f, 0xfc, 0x3b, 0xfc, - 0x87, 0xfb, 0xf, 0xfe, 0x93, 0x7, 0xfd, 0x79, - 0xf, 0x5e, 0x43, 0xf6, 0x1f, 0xfd, 0x25, 0x7, - 0xeb, 0x43, 0xff, 0x81, 0x61, 0xfb, 0xf, 0xfe, - 0x92, 0x83, 0xda, 0x1f, 0xfc, 0x4e, 0xf, 0xa0, - 0xff, 0xe8, 0x4d, 0x3, 0x61, 0xff, 0xc7, 0x70, - 0xf2, 0x1f, 0xfc, 0xf5, 0x43, 0x3, 0xf, 0xfe, - 0x54, 0x1e, 0xc3, 0xff, 0x9d, 0x40, 0xb3, 0xf, - 0xfe, 0x5a, 0x83, 0xff, 0xaa, 0x84, 0xe1, 0xff, - 0xcd, 0x83, 0xd0, 0x7f, 0xf3, 0x24, 0x29, 0xf, - 0xfe, 0x7c, 0x1c, 0x87, 0xff, 0x31, 0x82, 0x60, - 0xff, 0xe7, 0xa1, 0xff, 0xd6, 0x50, 0x7f, 0xf4, - 0x60, 0xe8, 0x3f, 0xf9, 0x4a, 0xb, 0xc1, 0xff, - 0xd1, 0x43, 0x90, 0xff, 0xe5, 0x61, 0x94, 0x1f, - 0xfe, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xcd, 0x43, - 0xff, 0x9e, 0x87, 0xff, 0xd1, 0xf, 0xff, 0xf8, - 0x7f, 0xfa, 0xf0, 0xff, 0xeb, 0xa1, 0xff, 0xcf, - 0xc3, 0xff, 0xe8, 0xa0, 0x94, 0x1f, 0xff, 0x3e, - 0xf, 0xfe, 0x8c, 0x1d, 0x7, 0xff, 0x2d, 0x80, - 0x88, 0x7f, 0xf4, 0x10, 0xe4, 0x3f, 0xf9, 0x7a, - 0x15, 0x3, 0xff, 0x9f, 0x7, 0xff, 0x49, 0x10, - 0x22, 0x1f, 0xfc, 0xe4, 0x3b, 0xf, 0xfe, 0x6d, - 0x2, 0xe0, 0xff, 0xe6, 0xe1, 0xff, 0xd4, 0x44, - 0x2b, 0xf, 0xfe, 0x5e, 0x1e, 0xc3, 0xff, 0x9f, - 0xc1, 0x2b, 0xf, 0xfe, 0x4e, 0x1e, 0x43, 0xff, - 0xa3, 0x61, 0x4e, 0x1f, 0xfc, 0x7c, 0x3e, 0x83, - 0xff, 0xa2, 0xac, 0x2a, 0x70, 0x7f, 0xf0, 0xec, - 0x3e, 0xc3, 0xff, 0xa7, 0x38, 0x4e, 0x70, 0x7f, - 0xd6, 0x87, 0xd8, 0x7f, 0xf5, 0x67, 0xd, 0x67, - 0xaa, 0x69, 0xf2, 0x1f, 0xb0, 0xff, 0xeb, 0xd3, - 0x43, 0x5c, 0x2a, 0x50, 0x7f, 0xd8, 0x7f, 0xf6, - 0x5e, 0xd0, 0xcc, 0x1f, 0xfc, 0x27, 0xf, 0xfe, - 0xe7, 0x4d, 0xf, 0xfe, 0x2f, 0x7, 0xff, 0x79, - 0xef, 0xa4, 0x3f, 0xef, 0x7, 0xff, 0x89, 0xb8, - 0x83, 0xf5, 0xe0, 0xff, 0xf3, 0xb6, 0x1d, 0x79, - 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, - 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, - 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, - 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, 0xf0, - 0xff, 0xff, 0x87, 0xff, 0xc, - - /* U+E927 "" */ - 0xf, 0xff, 0x82, 0xa8, 0x1f, 0xfe, 0x95, 0x53, - 0xf5, 0x14, 0x1f, 0xfe, 0x15, 0x53, 0xf5, 0x14, - 0x1f, 0xfe, 0x7b, 0xa2, 0x83, 0xff, 0xfe, 0x1f, - 0xfe, 0x5b, 0x43, 0xff, 0x8c, 0x87, 0xff, 0x86, - 0xe4, 0x3f, 0xfe, 0x6d, 0xc8, 0x7f, 0xf0, 0x30, - 0xff, 0xf3, 0x32, 0x1f, 0xf2, 0x1f, 0xfe, 0x84, - 0x3f, 0xfe, 0x78, 0x7f, 0xfc, 0xf0, 0xff, 0xf9, - 0xe1, 0xff, 0xc1, 0x43, 0xff, 0xcb, 0x87, 0x9e, - 0xf, 0xff, 0x56, 0x1e, 0x61, 0xe, 0xc3, 0xff, - 0xc7, 0x87, 0x98, 0x24, 0x3f, 0xfc, 0xf8, 0x79, - 0x83, 0x61, 0x90, 0xff, 0xf0, 0xe1, 0xe6, 0xe, - 0x43, 0xff, 0xcb, 0x87, 0x98, 0x3e, 0x43, 0xff, - 0xc7, 0x87, 0x98, 0x3f, 0x41, 0xff, 0xe2, 0xc3, - 0xcc, 0x1f, 0xe4, 0x43, 0xff, 0xbd, 0x87, 0x98, - 0x3f, 0xec, 0xc3, 0xff, 0x8c, 0xdf, 0xfd, 0x21, - 0xfe, 0xc3, 0xcc, 0x1f, 0xfc, 0x7, 0x43, 0xff, - 0x86, 0xdf, 0xff, 0x45, 0xc1, 0xf6, 0x1e, 0x60, - 0xff, 0xe9, 0x77, 0xa4, 0x3f, 0x37, 0x8e, 0xd, - 0x87, 0x98, 0x3f, 0xfa, 0x37, 0x68, 0x7f, 0xf0, - 0xec, 0xd3, 0xf, 0x30, 0x7f, 0xf4, 0x73, 0x43, - 0x37, 0xfd, 0x21, 0xae, 0xc3, 0xd4, 0xf, 0xfe, - 0x8f, 0x40, 0xd7, 0xff, 0xd6, 0x87, 0xfd, 0x21, - 0xff, 0xd1, 0xe4, 0x2b, 0xe9, 0xf, 0x9f, 0xc9, - 0x87, 0xa4, 0x3f, 0xfa, 0x3c, 0x85, 0x9a, 0x1f, - 0xfc, 0x1a, 0xb0, 0xf4, 0x87, 0xff, 0x47, 0x90, - 0x3d, 0x3, 0xff, 0x88, 0xe1, 0xf4, 0x1f, 0xfd, - 0x19, 0x40, 0x6d, 0xf, 0xfe, 0x3e, 0x1f, 0x41, - 0xff, 0xd0, 0x60, 0xa8, 0x1f, 0xfc, 0xac, 0x3c, - 0x87, 0xff, 0x3e, 0x81, 0x72, 0x1f, 0xfc, 0xbc, - 0x3d, 0x87, 0xff, 0x39, 0x40, 0x58, 0x3f, 0xf9, - 0xb0, 0x7f, 0xf4, 0xe4, 0x2a, 0x7, 0xff, 0x39, - 0xf, 0x41, 0xff, 0xcc, 0x60, 0x28, 0x3f, 0xfa, - 0x18, 0x72, 0x1f, 0xfc, 0xb4, 0x35, 0x3, 0xff, - 0xdd, 0xa1, 0xff, 0xd6, 0x43, 0xa0, 0xff, 0xe5, - 0xe0, 0x50, 0x7f, 0xf4, 0xa0, 0xe4, 0x3f, 0xf9, - 0x48, 0x5e, 0xf, 0xff, 0x82, 0x1f, 0xff, 0x74, - 0x3f, 0xfe, 0x88, 0x7f, 0xff, 0xc3, 0xff, 0xce, - 0x85, 0x87, 0xff, 0xbd, 0xb, 0xf, 0xfe, 0x9a, - 0x1f, 0xfd, 0x1c, 0xa, 0xf, 0xfe, 0x94, 0x1c, - 0x87, 0xff, 0x2b, 0x42, 0x50, 0x7f, 0xf5, 0xe0, - 0xff, 0xe5, 0x21, 0xb8, 0x3f, 0xfa, 0x10, 0x7f, - 0xf4, 0x98, 0x8, 0x87, 0xff, 0x3d, 0xe, 0x43, - 0xff, 0x99, 0x21, 0x50, 0x3f, 0xf9, 0xd0, 0x7a, - 0xf, 0xfe, 0x6a, 0x80, 0xa8, 0x3f, 0xf9, 0x8a, - 0xf, 0xfe, 0xa5, 0x2, 0x94, 0x1f, 0xfc, 0xb8, - 0x3d, 0x87, 0xff, 0x3d, 0x82, 0xe4, 0x3f, 0xf9, - 0x38, 0x7a, 0xf, 0xfe, 0x84, 0xa0, 0xba, 0x7, - 0xff, 0x19, 0xc3, 0xe4, 0x3f, 0xfa, 0x3c, 0x85, - 0x9a, 0x1f, 0xfc, 0x3e, 0xf, 0xb0, 0xff, 0xe9, - 0xf2, 0x15, 0x64, 0x3f, 0xef, 0x7, 0xec, 0x3f, - 0xfa, 0xbc, 0x84, 0xfa, 0xe5, 0xeb, 0xe0, 0xfe, - 0xc3, 0xff, 0xaf, 0xd0, 0x33, 0xf5, 0x72, 0x1f, - 0xf6, 0x1f, 0xfd, 0x9c, 0xd0, 0xe6, 0xf, 0xfe, - 0x13, 0x87, 0xff, 0x6e, 0xee, 0xf, 0xfe, 0x37, - 0x7, 0xff, 0x7b, 0x8f, 0x4e, 0x1f, 0xf7, 0x83, - 0xff, 0xc2, 0xdc, 0x48, 0x7e, 0xbc, 0x1f, 0xfe, - 0x66, 0xe0, 0xef, 0x90, 0xff, 0xff, 0x87, 0xff, - 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, 0xf, 0xff, - 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, - 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, - 0xe1, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xf6, - 0x40, - - /* U+E928 "" */ - 0xf, 0xfe, 0x3c, 0x1f, 0xfd, 0xa5, 0x61, 0xff, - 0xd9, 0x81, 0x7, 0xff, 0x5f, 0x9, 0x41, 0xff, - 0xd5, 0x83, 0xa4, 0x3f, 0xfa, 0x6a, 0xf, 0x41, - 0xff, 0xd2, 0x60, 0xfd, 0x87, 0xff, 0x46, 0xf, - 0xf4, 0x1f, 0xfc, 0xfc, 0x3f, 0xe5, 0x7, 0xff, - 0x36, 0xf, 0xfe, 0xc, 0x1f, 0xfc, 0xc5, 0x7, - 0xff, 0xb, 0xf, 0xfe, 0x5c, 0x1f, 0xfc, 0x48, - 0x3f, 0xf9, 0x38, 0x7f, 0xf1, 0x54, 0x1f, 0xfc, - 0x78, 0x3f, 0xf8, 0xf0, 0x7f, 0xf1, 0x94, 0x19, - 0xb0, 0xeb, 0x83, 0xb0, 0xff, 0xe2, 0xc1, 0x3c, - 0x88, 0x79, 0xe0, 0xd8, 0x7f, 0xf0, 0xe0, 0x3c, - 0x1f, 0xfc, 0x17, 0x90, 0xff, 0xe2, 0xd3, 0x83, - 0xff, 0x8a, 0xdc, 0x1f, 0xfc, 0x44, 0x3f, 0xf9, - 0x48, 0x7f, 0xff, 0xc3, 0xff, 0xfe, 0x1f, 0xff, - 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, 0x3f, 0xff, - 0xe1, 0xff, 0xc1, 0x64, 0x35, 0xe4, 0x3f, 0xf9, - 0xd7, 0xe0, 0xfd, 0x78, 0x3f, 0xf9, 0x56, 0x7a, - 0x50, 0x7f, 0xbc, 0x1f, 0xfc, 0x67, 0x38, 0x3f, - 0xf8, 0xbc, 0x1f, 0xfc, 0x3a, 0x70, 0x66, 0x43, - 0xff, 0x82, 0xe1, 0xff, 0xc1, 0x8c, 0x35, 0xff, - 0xa0, 0xff, 0x61, 0xff, 0x44, 0x15, 0xf4, 0x87, - 0x3f, 0x7, 0xec, 0x3f, 0xa2, 0xb, 0x34, 0x3f, - 0xf8, 0x1e, 0xf, 0xb0, 0xf9, 0x50, 0x5d, 0x3, - 0xff, 0x89, 0x87, 0xd0, 0x7a, 0xc2, 0xe4, 0x3f, - 0xf8, 0xda, 0x1c, 0x87, 0x48, 0x5c, 0x87, 0xff, - 0x22, 0xf, 0x61, 0x98, 0x12, 0x83, 0xff, 0x95, - 0x87, 0xf4, 0x84, 0xc1, 0xff, 0xcc, 0xc3, 0xb0, - 0x30, 0x28, 0x1f, 0xfd, 0xa5, 0x7, 0xff, 0x3b, - 0xe, 0x58, 0xa, 0xf, 0xfe, 0xad, 0xe0, 0x78, - 0x3f, 0xfa, 0xca, 0x2, 0x83, 0xff, 0xa1, 0x7, - 0xff, 0x6d, 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, - 0xf9, 0xe, 0x50, 0x14, 0x1f, 0xfd, 0x8, 0x3b, - 0xc0, 0xf0, 0x7f, 0xf5, 0x94, 0x5, 0x7, 0xff, - 0x56, 0xe, 0x50, 0x7f, 0xf3, 0xb0, 0xe4, 0x60, - 0x50, 0x3f, 0xfa, 0xd2, 0x13, 0x7, 0xff, 0x33, - 0xe, 0xc2, 0x60, 0x4a, 0xf, 0xfe, 0x56, 0x1f, - 0xe9, 0xb, 0x90, 0xff, 0xe4, 0x41, 0xec, 0x3a, - 0xc2, 0xe4, 0x3f, 0xf8, 0xda, 0x1c, 0x87, 0x95, - 0x5, 0xd0, 0x3f, 0xf8, 0x98, 0x7d, 0x7, 0xd1, - 0x5, 0xf2, 0x1f, 0xfc, 0xf, 0x7, 0xd8, 0x7f, - 0x44, 0x13, 0xf4, 0x87, 0x3f, 0x7, 0xec, 0x3f, - 0xe8, 0xc3, 0x5f, 0xfa, 0xf, 0xf6, 0x1f, 0xfc, - 0x1a, 0x70, 0x66, 0x43, 0xff, 0x82, 0xe1, 0xff, - 0xc3, 0x73, 0x83, 0xff, 0x8b, 0xc1, 0xff, 0xc6, - 0xb3, 0xd2, 0x83, 0xfd, 0xe0, 0xff, 0xe5, 0x5f, - 0x83, 0xf5, 0xe0, 0xff, 0xe7, 0xb2, 0x1a, 0xf2, - 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, - 0x3f, 0xff, 0xe1, 0xff, 0xfe, - - /* U+E929 "" */ - 0xf, 0xfe, 0x54, 0x1f, 0xfd, 0xfd, 0x83, 0xff, - 0xbb, 0x1, 0x41, 0xff, 0xdb, 0x50, 0x50, 0x7f, - 0xf6, 0xe0, 0xec, 0x3f, 0xfb, 0x38, 0x7d, 0x7, - 0xff, 0x5e, 0xf, 0xca, 0xf, 0xfe, 0xaa, 0x83, - 0xfa, 0xf, 0xfe, 0xac, 0x1f, 0xf6, 0x1f, 0xfd, - 0x3c, 0x3f, 0xf8, 0x30, 0x7f, 0xf4, 0x60, 0xff, - 0xe1, 0x28, 0x3f, 0xf9, 0xf2, 0x1f, 0xfc, 0x39, - 0xf, 0xfe, 0x6a, 0x83, 0xff, 0x8b, 0x7, 0xff, - 0x36, 0xf, 0xfe, 0x3e, 0x1f, 0xfc, 0xbc, 0x3f, - 0xf9, 0x30, 0x7f, 0xf2, 0x60, 0xff, 0xe5, 0x28, - 0x3f, 0xf8, 0xea, 0xf, 0xfe, 0x5c, 0x1f, 0xfc, - 0x78, 0x3f, 0xf9, 0xb8, 0x7f, 0xf1, 0x70, 0xff, - 0xe7, 0xc1, 0xff, 0xc3, 0x83, 0xff, 0xa0, 0xa0, - 0xff, 0xe0, 0xa8, 0x3f, 0xfa, 0x30, 0x7f, 0xf0, - 0x18, 0x3f, 0xfa, 0x78, 0x7f, 0xd0, 0x7f, 0xf5, - 0x60, 0xfe, 0xc3, 0xff, 0xac, 0xc1, 0xf4, 0x1f, - 0xfd, 0x85, 0x7, 0x28, 0x3f, 0xd7, 0xa0, 0xfe, - 0xf9, 0xf, 0xf4, 0x1d, 0x7, 0xf5, 0xa0, 0x43, - 0xff, 0x81, 0x68, 0x7f, 0x61, 0x61, 0xf3, 0x68, - 0x7f, 0xf1, 0xee, 0xf, 0xd1, 0x7, 0x9e, 0x43, - 0xff, 0x96, 0xf0, 0x79, 0x60, 0xcf, 0x7, 0xff, - 0x41, 0xf2, 0x1b, 0x81, 0x70, 0x7f, 0xf5, 0x6d, - 0x4, 0xf9, 0xf, 0xfe, 0xcd, 0xe0, 0xff, 0xff, - 0x87, 0xff, 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xff, - 0xf, 0xff, 0xf8, 0x7f, 0xff, 0xc3, 0xff, 0xfe, - 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x87, 0xff, 0xfc, - 0x3f, 0xf8, 0x8f, 0x90, 0xff, 0xec, 0xde, 0x20, - 0x5c, 0x1f, 0xfd, 0x5b, 0x41, 0x21, 0x9e, 0xf, - 0xfe, 0x83, 0xe4, 0x37, 0x7, 0x9e, 0x43, 0xff, - 0x96, 0xf0, 0x79, 0x46, 0x1f, 0x36, 0x87, 0xff, - 0x1e, 0xe0, 0xfd, 0x5, 0x7, 0xf5, 0xa0, 0x43, - 0xff, 0x81, 0x68, 0x7f, 0x61, 0x94, 0x1f, 0xeb, - 0xd0, 0x7f, 0x7c, 0x87, 0xfa, 0xf, 0x41, 0xff, - 0xd8, 0x50, 0x7d, 0x87, 0xff, 0x59, 0x83, 0xfa, - 0xf, 0xfe, 0xac, 0x1f, 0xe6, 0xf, 0xfe, 0x9e, - 0x1f, 0xfc, 0x5, 0x7, 0xff, 0x46, 0xf, 0xfe, - 0x14, 0x1f, 0xfd, 0x5, 0x7, 0xff, 0xf, 0xf, - 0xfe, 0x7c, 0x1f, 0xfc, 0x58, 0x3f, 0xf9, 0xb8, - 0x7f, 0xf1, 0x94, 0x1f, 0xfc, 0xb8, 0x3f, 0xf9, - 0x10, 0x7f, 0xf2, 0x94, 0x1f, 0xfc, 0x9c, 0x3f, - 0xf9, 0x30, 0x7f, 0xf2, 0xe0, 0xff, 0xe3, 0xe1, - 0xff, 0xcc, 0x50, 0x7f, 0xf1, 0x60, 0xff, 0xe7, - 0x48, 0x7f, 0xf0, 0xe4, 0x3f, 0xf9, 0xf0, 0x7f, - 0xf0, 0x94, 0x1f, 0xfd, 0x1c, 0x3f, 0xf8, 0x30, - 0x7f, 0xf4, 0xe0, 0xff, 0xb0, 0xff, 0xea, 0x28, - 0x3f, 0xa0, 0xff, 0xeb, 0x41, 0xf9, 0x41, 0xff, - 0xd7, 0xc3, 0xe8, 0x3f, 0xfb, 0x30, 0x76, 0x1f, - 0xfd, 0xa5, 0x5, 0x7, 0xff, 0x72, 0x2, 0x83, - 0xff, 0xbb, 0xb0, 0x7f, 0xf2, 0x40 -}; - - -/*--------------------- - * 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 = 640, .box_w = 40, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 305, .adv_w = 1280, .box_w = 80, .box_h = 54, .ofs_x = 0, .ofs_y = 7}, - {.bitmap_index = 716, .adv_w = 1280, .box_w = 80, .box_h = 54, .ofs_x = 0, .ofs_y = 7}, - {.bitmap_index = 1127, .adv_w = 1280, .box_w = 80, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 1842, .adv_w = 800, .box_w = 50, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 2139, .adv_w = 1118, .box_w = 70, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 2570, .adv_w = 1118, .box_w = 70, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 3005, .adv_w = 854, .box_w = 55, .box_h = 81, .ofs_x = -1, .ofs_y = -5}, - {.bitmap_index = 3399, .adv_w = 854, .box_w = 54, .box_h = 81, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 3793, .adv_w = 1240, .box_w = 78, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 4307, .adv_w = 711, .box_w = 45, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 4623, .adv_w = 1058, .box_w = 67, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 5089, .adv_w = 1058, .box_w = 67, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 5552, .adv_w = 1198, .box_w = 75, .box_h = 81, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 5994, .adv_w = 1278, .box_w = 80, .box_h = 81, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 6450, .adv_w = 1108, .box_w = 70, .box_h = 81, .ofs_x = 0, .ofs_y = -6}, - {.bitmap_index = 6997, .adv_w = 1195, .box_w = 75, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 7238, .adv_w = 1280, .box_w = 81, .box_h = 67, .ofs_x = -1, .ofs_y = 2}, - {.bitmap_index = 7773, .adv_w = 1280, .box_w = 81, .box_h = 73, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 8252, .adv_w = 1280, .box_w = 81, .box_h = 73, .ofs_x = -1, .ofs_y = -1}, - {.bitmap_index = 8717, .adv_w = 1188, .box_w = 75, .box_h = 81, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 9234, .adv_w = 1185, .box_w = 74, .box_h = 81, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 9757, .adv_w = 1280, .box_w = 80, .box_h = 73, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 10293, .adv_w = 1283, .box_w = 81, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 10718, .adv_w = 1283, .box_w = 81, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 11145, .adv_w = 978, .box_w = 61, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 11577, .adv_w = 978, .box_w = 61, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 12008, .adv_w = 1280, .box_w = 80, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 12482, .adv_w = 1280, .box_w = 80, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 12952, .adv_w = 1118, .box_w = 70, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 13391, .adv_w = 1119, .box_w = 70, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 13827, .adv_w = 800, .box_w = 50, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 14185, .adv_w = 800, .box_w = 50, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 14545, .adv_w = 1280, .box_w = 80, .box_h = 81, .ofs_x = 0, .ofs_y = -6}, - {.bitmap_index = 15178, .adv_w = 1280, .box_w = 81, .box_h = 59, .ofs_x = -1, .ofs_y = 6}, - {.bitmap_index = 15628, .adv_w = 1280, .box_w = 81, .box_h = 59, .ofs_x = 0, .ofs_y = 6}, - {.bitmap_index = 16108, .adv_w = 1280, .box_w = 80, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 16679, .adv_w = 1280, .box_w = 80, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 17334, .adv_w = 1024, .box_w = 65, .box_h = 81, .ofs_x = -1, .ofs_y = -5}, - {.bitmap_index = 17819, .adv_w = 1026, .box_w = 65, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 18308, .adv_w = 640, .box_w = 40, .box_h = 80, .ofs_x = 0, .ofs_y = -5}, - {.bitmap_index = 18689, .adv_w = 711, .box_w = 45, .box_h = 80, .ofs_x = 0, .ofs_y = -5} -}; - -/*--------------------- - * CHARACTER MAPPING - *--------------------*/ - - - -/*Collect the unicode lists and glyph_id offsets*/ -static const lv_font_fmt_txt_cmap_t cmaps[] = -{ - { - .range_start = 59648, .range_length = 42, .glyph_id_start = 1, - .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY - } -}; - - - -/*-------------------- - * ALL CUSTOM DATA - *--------------------*/ - -#if LV_VERSION_CHECK(8, 0, 0) -/*Store all the custom data of the font*/ -static lv_font_fmt_txt_glyph_cache_t cache; -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 = 1, -#if LV_VERSION_CHECK(8, 0, 0) - .cache = &cache -#endif -}; - - -/*----------------- - * PUBLIC FONT - *----------------*/ - -/*Initialize a public general font descriptor*/ -#if LV_VERSION_CHECK(8, 0, 0) -const lv_font_t lv_font_navi_80 = { -#else -lv_font_t lv_font_navi_80 = { -#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 = 82, /*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` */ -}; - - - -#endif /*#if LV_FONT_NAVI_80*/ - diff --git a/src/displayapp/fonts/lv_font_sys_48.c b/src/displayapp/fonts/lv_font_sys_48.c deleted file mode 100644 index ca007e3..0000000 --- a/src/displayapp/fonts/lv_font_sys_48.c +++ /dev/null @@ -1,324 +0,0 @@ -/******************************************************************************* - * Size: 48 px - * Bpp: 1 - * Opts: - ******************************************************************************/ - -#ifdef LV_LVGL_H_INCLUDE_SIMPLE -#include "lvgl.h" -#else -#include "lvgl/lvgl.h" -#endif - -#ifndef LV_FONT_SYS_48 -#define LV_FONT_SYS_48 1 -#endif - -#if LV_FONT_SYS_48 - -/*----------------- - * BITMAPS - *----------------*/ - -/*Store the image of the glyphs*/ -static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { - /* U+E902 "" */ - 0x0, 0x1, 0xff, 0x80, 0x0, 0x0, 0x1, 0xff, - 0x80, 0x0, 0x0, 0x1, 0xff, 0x80, 0x0, 0x0, - 0x1, 0xff, 0x80, 0x0, 0x0, 0x1, 0xff, 0x80, - 0x0, 0x0, 0x3, 0xff, 0xc0, 0x0, 0x6, 0x7, - 0xff, 0xe0, 0x60, 0xf, 0x8f, 0xff, 0xf1, 0xf0, - 0xf, 0xff, 0xff, 0xff, 0xf0, 0x1f, 0xff, 0xff, - 0xff, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0xfc, 0x3f, - 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, - 0xfe, 0x7f, 0xff, 0x81, 0xff, 0xfe, 0x7f, 0xff, - 0x0, 0xff, 0xfe, 0x3f, 0xfe, 0x0, 0x7f, 0xfc, - 0x1f, 0xfc, 0x0, 0x3f, 0xf8, 0xf, 0xf8, 0x0, - 0x1f, 0xf0, 0x7, 0xf8, 0x0, 0x1f, 0xe0, 0x7, - 0xf8, 0x0, 0x1f, 0xe0, 0x7, 0xf8, 0x0, 0x1f, - 0xe0, 0x7, 0xf8, 0x0, 0x1f, 0xe0, 0xf, 0xf8, - 0x0, 0x1f, 0xf0, 0x1f, 0xfc, 0x0, 0x3f, 0xf8, - 0x3f, 0xfe, 0x0, 0x7f, 0xfc, 0x7f, 0xff, 0x0, - 0xff, 0xfe, 0x7f, 0xff, 0x81, 0xff, 0xfe, 0x7f, - 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, - 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xff, - 0xff, 0xff, 0xf8, 0xf, 0xff, 0xff, 0xff, 0xf0, - 0xf, 0x8f, 0xff, 0xf1, 0xf0, 0x6, 0x7, 0xff, - 0xe0, 0x60, 0x0, 0x3, 0xff, 0xc0, 0x0, 0x0, - 0x1, 0xff, 0x80, 0x0, 0x0, 0x1, 0xff, 0x80, - 0x0, 0x0, 0x1, 0xff, 0x80, 0x0, 0x0, 0x1, - 0xff, 0x80, 0x0, 0x0, 0x1, 0xff, 0x80, 0x0, - - /* U+E904 "" */ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xf0, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0xff, - 0xc0, 0x0, 0x0, 0x0, 0x7, 0xff, 0x80, 0x0, - 0x0, 0x7f, 0xff, 0xff, 0xff, 0x80, 0x1, 0xff, - 0xff, 0xff, 0xfe, 0x0, 0x7, 0xff, 0xff, 0xff, - 0xf8, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xe0, 0x0, - 0x7f, 0xf8, 0xf, 0xff, 0x80, 0x1, 0xff, 0x80, - 0x7, 0xfe, 0x0, 0x7, 0xfc, 0x0, 0xf, 0xf8, - 0x0, 0x1f, 0xe0, 0x0, 0x1f, 0xe0, 0x0, 0x7f, - 0x3, 0xf0, 0x3f, 0x80, 0x1, 0xf8, 0x3f, 0xf0, - 0x7e, 0x0, 0xf, 0xc1, 0xff, 0xe0, 0xfc, 0x0, - 0x7f, 0xf, 0xff, 0xc3, 0xf8, 0x3, 0xfc, 0x3f, - 0xff, 0xf, 0xf0, 0x1f, 0xe1, 0xff, 0xfe, 0x1f, - 0xe0, 0xff, 0x87, 0xff, 0xf8, 0x7f, 0xc7, 0xfe, - 0x1f, 0xff, 0xe1, 0xff, 0x9f, 0xf8, 0x7f, 0xff, - 0x87, 0xfe, 0x3f, 0xe1, 0xff, 0xfe, 0x1f, 0xf0, - 0x7f, 0x87, 0xff, 0xf8, 0x7f, 0x80, 0xff, 0xf, - 0xff, 0xc3, 0xfc, 0x1, 0xfc, 0x3f, 0xff, 0xf, - 0xe0, 0x3, 0xf0, 0x7f, 0xf8, 0x3f, 0x0, 0x7, - 0xe0, 0xff, 0xc1, 0xf8, 0x0, 0x1f, 0xc0, 0xfc, - 0xf, 0xe0, 0x0, 0x7f, 0x80, 0x0, 0x7f, 0x80, - 0x1, 0xff, 0x0, 0x3, 0xfe, 0x0, 0x7, 0xfe, - 0x0, 0x1f, 0xf8, 0x0, 0x1f, 0xff, 0x3, 0xff, - 0xe0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0x80, 0x1, - 0xff, 0xff, 0xff, 0xfe, 0x0, 0x7, 0xff, 0xff, - 0xff, 0xf8, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xe0, - 0x0, 0x0, 0x1f, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x3f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, - 0x0, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x1, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, - - /* U+E905 "" */ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xf0, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0xff, - 0xc0, 0x0, 0x0, 0x0, 0x7, 0xff, 0x80, 0x0, - 0x0, 0x7f, 0xff, 0xff, 0xff, 0x80, 0x1, 0xff, - 0xff, 0xff, 0xfe, 0x0, 0x7, 0xff, 0xff, 0xff, - 0xf8, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xe0, 0x0, - 0x7f, 0xf8, 0xf, 0xff, 0x80, 0x1, 0xff, 0x80, - 0x7, 0xfe, 0x0, 0x7, 0xfc, 0x0, 0xf, 0xf8, - 0x0, 0x1f, 0xe0, 0x0, 0x1f, 0xe0, 0x0, 0x7f, - 0x0, 0x0, 0x3f, 0x80, 0x1, 0xf8, 0x0, 0x0, - 0x7e, 0x0, 0xf, 0xc0, 0x0, 0x0, 0xfc, 0x0, - 0x7f, 0x0, 0x0, 0x3, 0xf8, 0x3, 0xfc, 0x0, - 0x0, 0xf, 0xf0, 0x1f, 0xe0, 0x0, 0x0, 0x1f, - 0xe0, 0xff, 0x80, 0x0, 0x0, 0x7f, 0xc7, 0xfe, - 0x0, 0x0, 0x1, 0xff, 0x9f, 0xf8, 0x0, 0x0, - 0x7, 0xfe, 0x3f, 0xe0, 0x0, 0x0, 0x1f, 0xf0, - 0x7f, 0x80, 0x0, 0x0, 0x7f, 0x80, 0xff, 0x0, - 0x0, 0x3, 0xfc, 0x1, 0xfc, 0x0, 0x0, 0xf, - 0xe0, 0x3, 0xf0, 0x0, 0x0, 0x3f, 0x0, 0x7, - 0xe0, 0x0, 0x1, 0xf8, 0x0, 0x1f, 0xc0, 0x0, - 0xf, 0xe0, 0x0, 0x7f, 0x80, 0x0, 0x7f, 0x80, - 0x1, 0xff, 0x0, 0x3, 0xfe, 0x0, 0x7, 0xfe, - 0x0, 0x1f, 0xf8, 0x0, 0x1f, 0xff, 0x3, 0xff, - 0xe0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0x80, 0x1, - 0xff, 0xff, 0xff, 0xfe, 0x0, 0x7, 0xff, 0xff, - 0xff, 0xf8, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xe0, - 0x0, 0x0, 0x1f, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x3f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, - 0x0, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x1, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, - - /* U+E906 "" */ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xf0, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0xff, - 0xc0, 0x0, 0x0, 0x0, 0x7, 0xff, 0x80, 0x0, - 0x0, 0x7f, 0xff, 0xff, 0xff, 0x80, 0x1, 0xff, - 0xff, 0xff, 0xfe, 0x0, 0x7, 0xff, 0xff, 0xff, - 0xf8, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xe0, 0x0, - 0x7f, 0xff, 0x8f, 0xff, 0x80, 0x1, 0xff, 0xfe, - 0x7, 0xfe, 0x0, 0x7, 0xff, 0xf8, 0xf, 0xf8, - 0x0, 0x1f, 0xff, 0xe0, 0x1f, 0xe0, 0x0, 0x7f, - 0xff, 0x80, 0x3f, 0x80, 0x1, 0xff, 0xfe, 0x0, - 0x7e, 0x0, 0xf, 0xff, 0xf8, 0x0, 0xfc, 0x0, - 0x7f, 0xff, 0xe0, 0x3, 0xf8, 0x3, 0xff, 0xff, - 0x80, 0xf, 0xf0, 0x1f, 0xff, 0xfe, 0x0, 0x1f, - 0xe0, 0xff, 0xff, 0xf8, 0x0, 0x7f, 0xc7, 0xff, - 0xff, 0xe0, 0x1, 0xff, 0x9f, 0xff, 0xff, 0x80, - 0x7, 0xfe, 0x3f, 0xff, 0xfe, 0x0, 0x1f, 0xf0, - 0x7f, 0xff, 0xf8, 0x0, 0x7f, 0x80, 0xff, 0xff, - 0xe0, 0x3, 0xfc, 0x1, 0xff, 0xff, 0x80, 0xf, - 0xe0, 0x3, 0xff, 0xfe, 0x0, 0x3f, 0x0, 0x7, - 0xff, 0xf8, 0x1, 0xf8, 0x0, 0x1f, 0xff, 0xe0, - 0xf, 0xe0, 0x0, 0x7f, 0xff, 0x80, 0x7f, 0x80, - 0x1, 0xff, 0xfe, 0x3, 0xfe, 0x0, 0x7, 0xff, - 0xf8, 0x1f, 0xf8, 0x0, 0x1f, 0xff, 0xe3, 0xff, - 0xe0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0x80, 0x1, - 0xff, 0xff, 0xff, 0xfe, 0x0, 0x7, 0xff, 0xff, - 0xff, 0xf8, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xe0, - 0x0, 0x0, 0x1f, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x3f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, - 0x0, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x1, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, - - /* U+E907 "" */ - 0x0, 0x1, 0xe0, 0x0, 0x0, 0x0, 0x78, 0x0, - 0x0, 0x0, 0x1e, 0x0, 0x0, 0x0, 0x7, 0x80, - 0x0, 0x0, 0x1, 0xe0, 0x0, 0x8, 0x0, 0x78, - 0x0, 0x47, 0x0, 0x0, 0x0, 0x3b, 0xe0, 0x0, - 0x0, 0x1f, 0x7c, 0x0, 0x0, 0xf, 0x8f, 0x80, - 0x0, 0x7, 0xc1, 0xc0, 0x0, 0x0, 0xe0, 0x20, - 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7f, 0xff, 0xff, 0x80, - 0x1f, 0xff, 0xff, 0xe0, 0x7, 0xff, 0xff, 0xf8, - 0x1, 0xff, 0xff, 0xfe, 0x0, 0x7f, 0xff, 0xff, - 0x80, 0x1f, 0xff, 0xff, 0xe0, 0x7, 0xff, 0xff, - 0xf8, 0x1, 0xff, 0xff, 0xfe, 0x0, 0x7f, 0xff, - 0xff, 0x80, 0x1f, 0xff, 0xff, 0xe0, 0x7, 0xff, - 0xff, 0xf8, 0x0, 0xff, 0xff, 0xfc, 0x0, 0x1f, - 0xff, 0xfe, 0x0, 0x3, 0xff, 0xff, 0x0, 0x0, - 0x7f, 0xff, 0x80, 0x0, 0xf, 0xff, 0xc0, 0x0, - 0x1, 0xff, 0xe0, 0x0, 0x0, 0x7f, 0xf8, 0x0, - 0x0, 0x1f, 0xfe, 0x0, 0x0, 0x7, 0xff, 0x80, - 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x7f, 0xf8, - 0x0, 0x0, 0x1f, 0xfe, 0x0, 0x0, 0x7, 0xff, - 0x80, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x7f, - 0xf8, 0x0, - - /* U+E90B "" */ - 0x0, 0x3, 0xc0, 0x0, 0x0, 0x1, 0xf8, 0x0, - 0x2, 0x0, 0x7e, 0x0, 0x1, 0xc0, 0x1f, 0x80, - 0x0, 0xf8, 0x7, 0xe0, 0x0, 0x1f, 0xf, 0xff, - 0x0, 0x3, 0xe1, 0xff, 0xe0, 0x0, 0x7c, 0x3f, - 0xfc, 0x0, 0xf, 0x87, 0xff, 0x80, 0x1, 0xf0, - 0xff, 0xf0, 0x0, 0x7e, 0x1f, 0xfe, 0x0, 0x1f, - 0xc3, 0xff, 0x80, 0x7, 0xf8, 0x7f, 0xe0, 0x3, - 0xff, 0xf, 0xfc, 0x0, 0xff, 0xe1, 0xff, 0x0, - 0x3f, 0xfc, 0x3f, 0xc0, 0xf, 0xff, 0x87, 0xf0, - 0x3, 0xff, 0xf1, 0xfc, 0x0, 0xff, 0xfe, 0x3f, - 0x0, 0x3f, 0xff, 0xc7, 0xc0, 0xf, 0xff, 0xf8, - 0xf0, 0x3, 0xff, 0xfe, 0x1c, 0x0, 0xff, 0xff, - 0xc3, 0x0, 0x3f, 0xff, 0xf8, 0x40, 0xf, 0xff, - 0xff, 0x0, 0x3, 0xff, 0xff, 0xe0, 0x0, 0xff, - 0xff, 0xfc, 0x0, 0x7f, 0xff, 0xff, 0x80, 0x3f, - 0xff, 0xff, 0xf0, 0x1f, 0xff, 0xff, 0xfe, 0xf, - 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xf8, - 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x3, - 0xe0, 0x0, 0x0, 0x0, 0x7c, 0x0, 0x3f, 0xc0, - 0xe, 0x0, 0xf, 0xf0, 0x1, 0x0, 0x1, 0xf8, - 0x0, 0x0, 0x0, 0x3c, 0x0, 0x0, - - /* U+E90C "" */ - 0x0, 0x0, 0x3c, 0x0, 0x0, 0x1, 0x80, 0x7e, - 0x1, 0x80, 0x3, 0xc0, 0x7e, 0x3, 0xc0, 0x7, - 0xe0, 0x7e, 0x7, 0xe0, 0xf, 0xc0, 0x7e, 0x3, - 0xf0, 0x1f, 0x83, 0xff, 0xc1, 0xf8, 0x3f, 0x7, - 0xff, 0xe0, 0xf8, 0x3e, 0xf, 0xff, 0xf0, 0x7c, - 0x7e, 0x1f, 0xff, 0xf8, 0x3c, 0x7c, 0x3f, 0xff, - 0xfc, 0x3e, 0x78, 0x7f, 0xff, 0xfe, 0x1e, 0xf8, - 0x7f, 0xff, 0xfe, 0x1e, 0xf8, 0x7f, 0xff, 0xfe, - 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xf, 0xf0, 0xff, - 0xff, 0xff, 0xf, 0xf0, 0xff, 0xff, 0xff, 0xf, - 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0xff, 0xff, - 0xff, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, - 0xff, 0xff, 0xff, 0x0, 0x0, 0xff, 0xff, 0xff, - 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0xff, - 0xff, 0xff, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, - 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0xff, 0xff, - 0xff, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x1, - 0xff, 0xff, 0xff, 0x80, 0x3, 0xff, 0xff, 0xff, - 0xc0, 0x7, 0xff, 0xff, 0xff, 0xe0, 0xf, 0xff, - 0xff, 0xff, 0xf0, 0xf, 0xff, 0xff, 0xff, 0xf0, - 0xf, 0xff, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, - 0x0, 0x0, 0x0, 0x7e, 0x0, 0x0, 0x0, 0x0, - 0x3c, 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 = 40, .ofs_x = 4, .ofs_y = 0}, - {.bitmap_index = 200, .adv_w = 768, .box_w = 46, .box_h = 46, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 465, .adv_w = 768, .box_w = 46, .box_h = 46, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 730, .adv_w = 768, .box_w = 46, .box_h = 46, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 995, .adv_w = 768, .box_w = 34, .box_h = 40, .ofs_x = 7, .ofs_y = 0}, - {.bitmap_index = 1165, .adv_w = 768, .box_w = 34, .box_h = 39, .ofs_x = 8, .ofs_y = 0}, - {.bitmap_index = 1331, .adv_w = 768, .box_w = 40, .box_h = 39, .ofs_x = 4, .ofs_y = 0} -}; - -/*--------------------- - * CHARACTER MAPPING - *--------------------*/ - -static const uint8_t glyph_id_ofs_list_0[] = { - 0, 0, 1, 2, 3, 4, 0, 0, - 0, 5, 6 -}; - -/*Collect the unicode lists and glyph_id offsets*/ -static const lv_font_fmt_txt_cmap_t cmaps[] = -{ - { - .range_start = 59650, .range_length = 11, .glyph_id_start = 1, - .unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_0, .list_length = 11, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL - } -}; - - - -/*-------------------- - * ALL CUSTOM DATA - *--------------------*/ - -#if LV_VERSION_CHECK(8, 0, 0) -/*Store all the custom data of the font*/ -static lv_font_fmt_txt_glyph_cache_t cache; -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 = 1, - .kern_classes = 0, - .bitmap_format = 0, -#if LV_VERSION_CHECK(8, 0, 0) - .cache = &cache -#endif -}; - - -/*----------------- - * PUBLIC FONT - *----------------*/ - -/*Initialize a public general font descriptor*/ -#if LV_VERSION_CHECK(8, 0, 0) -const lv_font_t lv_font_sys_48 = { -#else -lv_font_t lv_font_sys_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 = 46, /*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` */ -}; - - - -#endif /*#if LV_FONT_SYS_48*/ - diff --git a/src/displayapp/fonts/open_sans_light.c b/src/displayapp/fonts/open_sans_light.c deleted file mode 100644 index 84b7869..0000000 --- a/src/displayapp/fonts/open_sans_light.c +++ /dev/null @@ -1,1261 +0,0 @@ -/******************************************************************************* - * Size: 150 px - * Bpp: 1 - * Opts: - ******************************************************************************/ - -#ifdef LV_LVGL_H_INCLUDE_SIMPLE -#include "lvgl.h" -#else -#include "lvgl/lvgl.h" -#endif - -#ifndef OPEN_SANS_LIGHT -#define OPEN_SANS_LIGHT 1 -#endif - -#if OPEN_SANS_LIGHT - -/*----------------- - * BITMAPS - *----------------*/ - -/*Store the image of the glyphs*/ -static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { - /* U+0030 "0" */ - 0x0, 0x0, 0x0, 0xf, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7, 0xff, 0xff, 0xc0, 0x0, - 0x0, 0x0, 0x0, 0x1, 0xff, 0xff, 0xff, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0xff, 0xff, - 0xfe, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xff, 0xff, - 0xff, 0xf8, 0x0, 0x0, 0x0, 0xf, 0xff, 0xe0, - 0x3, 0xff, 0xf0, 0x0, 0x0, 0x0, 0xff, 0xf8, - 0x0, 0x3, 0xff, 0xc0, 0x0, 0x0, 0xf, 0xfe, - 0x0, 0x0, 0x7, 0xff, 0x0, 0x0, 0x0, 0xff, - 0xe0, 0x0, 0x0, 0xf, 0xfc, 0x0, 0x0, 0x7, - 0xfe, 0x0, 0x0, 0x0, 0x3f, 0xf0, 0x0, 0x0, - 0x7f, 0xc0, 0x0, 0x0, 0x0, 0xff, 0x80, 0x0, - 0x7, 0xfc, 0x0, 0x0, 0x0, 0x1, 0xfe, 0x0, - 0x0, 0x7f, 0xc0, 0x0, 0x0, 0x0, 0xf, 0xf8, - 0x0, 0x3, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x3f, - 0xc0, 0x0, 0x3f, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0xff, 0x0, 0x1, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x3, 0xfc, 0x0, 0x1f, 0xf0, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xe0, 0x0, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7f, 0x80, 0xf, 0xf8, 0x0, 0x0, - 0x0, 0x0, 0x3, 0xfc, 0x0, 0x7f, 0x80, 0x0, - 0x0, 0x0, 0x0, 0xf, 0xe0, 0x3, 0xfc, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x3f, 0xc0, - 0x0, 0x0, 0x0, 0x0, 0x3, 0xfc, 0x1, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0xf, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, - 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xfc, - 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xf0, 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7f, 0x81, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3, 0xfc, 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xe0, 0xff, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7f, 0x87, 0xf8, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3, 0xfc, 0x3f, 0xc0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0xe1, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0x1f, 0xe0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3, 0xf8, 0xff, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xe7, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x3f, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf9, - 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, - 0xcf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, - 0xfe, 0x7f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xf, 0xf3, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x7f, 0xbf, 0xc0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3, 0xfd, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xf, 0xff, 0xf0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0xff, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xff, 0xfc, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xe0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, - 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7f, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xff, 0xf8, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xff, 0xc0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1, 0xff, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xff, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xfc, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, - 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, - 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, - 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3f, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xfe, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xe7, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x3f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xf9, 0xfe, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xcf, 0xf0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1, 0xfe, 0x7f, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xf, 0xf3, 0xfc, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x9f, 0xe0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xfc, 0x7f, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xe3, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, - 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xf0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7f, 0x87, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3, 0xfc, 0x1f, 0xc0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xe0, 0xff, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1, 0xfe, 0x7, 0xf8, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xf, 0xf0, 0x3f, 0xc0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0x80, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7, 0xfc, 0x7, 0xf8, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x3f, 0xc0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, 0x0, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xf0, 0x7, - 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, - 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, - 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, - 0x80, 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xfc, 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0x3f, 0xe0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xfe, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xf0, 0x0, 0x1f, 0xf0, 0x0, 0x0, - 0x0, 0x1, 0xff, 0x0, 0x0, 0x7f, 0xc0, 0x0, - 0x0, 0x0, 0x1f, 0xf0, 0x0, 0x1, 0xfe, 0x0, - 0x0, 0x0, 0x0, 0xff, 0x80, 0x0, 0xf, 0xf8, - 0x0, 0x0, 0x0, 0xf, 0xf8, 0x0, 0x0, 0x3f, - 0xf0, 0x0, 0x0, 0x1, 0xff, 0x80, 0x0, 0x0, - 0xff, 0xc0, 0x0, 0x0, 0x1f, 0xf8, 0x0, 0x0, - 0x3, 0xff, 0x80, 0x0, 0x3, 0xff, 0x80, 0x0, - 0x0, 0xf, 0xff, 0x0, 0x0, 0x7f, 0xf8, 0x0, - 0x0, 0x0, 0x3f, 0xff, 0x0, 0x1f, 0xff, 0x80, - 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xf8, - 0x0, 0x0, 0x0, 0x1, 0xff, 0xff, 0xff, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0xff, 0xff, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, - 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, - 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, - 0xff, 0xc0, 0x0, 0x0, 0x0, - - /* U+0031 "1" */ - 0x0, 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, 0x3, - 0xfc, 0x0, 0x0, 0x1, 0xff, 0x80, 0x0, 0x0, - 0x7f, 0xf0, 0x0, 0x0, 0x1f, 0xfe, 0x0, 0x0, - 0xf, 0xff, 0xc0, 0x0, 0x3, 0xff, 0xf8, 0x0, - 0x0, 0xff, 0xbf, 0x0, 0x0, 0x7f, 0xe7, 0xe0, - 0x0, 0x1f, 0xf8, 0xfc, 0x0, 0x7, 0xfe, 0x1f, - 0x80, 0x3, 0xff, 0x83, 0xf0, 0x0, 0xff, 0xc0, - 0xfe, 0x0, 0x3f, 0xf0, 0x1f, 0xc0, 0x1f, 0xfc, - 0x3, 0xf8, 0x7, 0xff, 0x0, 0x7f, 0x1, 0xff, - 0x80, 0xf, 0xe0, 0xff, 0xe0, 0x1, 0xfc, 0x3f, - 0xf8, 0x0, 0x3f, 0x8f, 0xfc, 0x0, 0x7, 0xf7, - 0xff, 0x0, 0x0, 0xff, 0xff, 0xc0, 0x0, 0x1f, - 0xff, 0xf0, 0x0, 0x3, 0xfb, 0xf8, 0x0, 0x0, - 0x7f, 0x3e, 0x0, 0x0, 0xf, 0xe3, 0x80, 0x0, - 0x1, 0xfc, 0x20, 0x0, 0x0, 0x3f, 0x80, 0x0, - 0x0, 0x7, 0xf0, 0x0, 0x0, 0x0, 0xfe, 0x0, - 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x3, 0xf8, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0xf, - 0xe0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, - 0x3f, 0x80, 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, - 0x0, 0xfe, 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, - 0x0, 0x3, 0xf8, 0x0, 0x0, 0x0, 0x7f, 0x0, - 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, 0x1, 0xfc, - 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, 0x7, - 0xf0, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, - 0x1f, 0xc0, 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, - 0x0, 0x7f, 0x0, 0x0, 0x0, 0xf, 0xe0, 0x0, - 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, 0x3f, 0x80, - 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, 0x0, 0xfe, - 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x3, - 0xf8, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, - 0xf, 0xe0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, - 0x0, 0x3f, 0x80, 0x0, 0x0, 0x7, 0xf0, 0x0, - 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x1f, 0xc0, - 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, 0x1, - 0xfc, 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, - 0x7, 0xf0, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, - 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x3, 0xf8, 0x0, - 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0xf, 0xe0, - 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, 0x3f, - 0x80, 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, 0x0, - 0xfe, 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, - 0x3, 0xf8, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, - 0x0, 0xf, 0xe0, 0x0, 0x0, 0x1, 0xfc, 0x0, - 0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, 0x7, 0xf0, - 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x1f, - 0xc0, 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, 0x0, - 0x7f, 0x0, 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, - 0x1, 0xfc, 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, - 0x0, 0x7, 0xf0, 0x0, 0x0, 0x0, 0xfe, 0x0, - 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x3, 0xf8, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0xf, - 0xe0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, - 0x3f, 0x80, 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, - 0x0, 0xfe, 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, - 0x0, 0x3, 0xf8, 0x0, 0x0, 0x0, 0x7f, 0x0, - 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, 0x1, 0xfc, - 0x0, 0x0, 0x0, 0x3f, 0x80, - - /* U+0032 "2" */ - 0x0, 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1, 0xff, 0xff, 0xfc, 0x0, 0x0, - 0x0, 0x0, 0x1, 0xff, 0xff, 0xff, 0xf0, 0x0, - 0x0, 0x0, 0x1, 0xff, 0xff, 0xff, 0xff, 0x80, - 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xfc, - 0x0, 0x0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0xff, - 0xe0, 0x0, 0x0, 0x1f, 0xff, 0xf0, 0x1, 0xff, - 0xfe, 0x0, 0x0, 0xf, 0xff, 0xc0, 0x0, 0x3, - 0xff, 0xe0, 0x0, 0x7, 0xff, 0xe0, 0x0, 0x0, - 0x1f, 0xfe, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, - 0x0, 0xff, 0xe0, 0x0, 0x7f, 0xf0, 0x0, 0x0, - 0x0, 0xf, 0xfe, 0x0, 0xf, 0xfc, 0x0, 0x0, - 0x0, 0x0, 0xff, 0xc0, 0x0, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0xf, 0xfc, 0x0, 0xf, 0x80, 0x0, - 0x0, 0x0, 0x0, 0xff, 0xc0, 0x1, 0xc0, 0x0, - 0x0, 0x0, 0x0, 0xf, 0xf8, 0x0, 0x10, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0xf0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xe0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xfc, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, - 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0xf0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xfe, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, - 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x7f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3f, 0xf0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xfc, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1, 0xff, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0xf8, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7, 0xfe, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1, 0xff, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7f, 0xe0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xf, 0xf8, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xc0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xfc, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xc0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xf0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xfc, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x7f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x7, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7f, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1f, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1, 0xff, 0x80, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0xe0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0xf8, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7, 0xfe, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3f, 0xe0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xf, 0xf8, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xe0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf8, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xfe, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 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, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xf0, - - /* U+0033 "3" */ - 0x0, 0x0, 0x0, 0x1f, 0xff, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0xff, 0xff, 0xc0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, 0x80, - 0x0, 0x0, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, - 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0xff, - 0xf8, 0x0, 0x0, 0x3, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xe0, 0x0, 0x0, 0xff, 0xff, 0xe0, 0x0, - 0xff, 0xff, 0x0, 0x0, 0x3f, 0xff, 0xc0, 0x0, - 0x0, 0xff, 0xf8, 0x0, 0x7, 0xff, 0xe0, 0x0, - 0x0, 0x3, 0xff, 0xc0, 0x1, 0xff, 0xf0, 0x0, - 0x0, 0x0, 0xf, 0xfe, 0x0, 0x3f, 0xfc, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0xf0, 0x7, 0xff, 0x0, - 0x0, 0x0, 0x0, 0x1, 0xff, 0x80, 0x3f, 0xc0, - 0x0, 0x0, 0x0, 0x0, 0xf, 0xfc, 0x1, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xc0, 0xe, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xfe, 0x0, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xe0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7f, 0xc0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xf, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1, 0xff, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xf0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7, 0xfe, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0xc0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3f, 0xf8, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xc0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xf8, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xfe, 0x0, - 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0x0, - 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0x80, - 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xc0, - 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, - 0xff, 0xc0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, - 0xff, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xf, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xf, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3f, 0xf8, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xc0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xfe, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xf0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xe0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7f, 0xc0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7, 0xfc, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf8, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xe0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xfe, - 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, - 0xc0, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, - 0xf8, 0xf, 0x80, 0x0, 0x0, 0x0, 0x0, 0x7, - 0xff, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x1, - 0xff, 0xe0, 0xf, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x7f, 0xfc, 0x0, 0xff, 0xfe, 0x0, 0x0, 0x0, - 0x7f, 0xff, 0x80, 0xf, 0xff, 0xff, 0x80, 0x0, - 0xff, 0xff, 0xe0, 0x0, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xfc, 0x0, 0x1, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x0, 0x0, 0x7, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xc0, 0x0, 0x0, 0xf, 0xff, - 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x7, - 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xff, 0xff, 0x80, 0x0, 0x0, 0x0, - - /* U+0034 "4" */ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xfc, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xff, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3, 0xfb, 0xf0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xfd, 0xf8, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xfc, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xfc, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xfe, 0x3f, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0x1f, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, - 0xf, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x7f, 0x7, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0x3, 0xf0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x1, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, - 0x80, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3f, 0x80, 0x7e, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x3f, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x1f, - 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, - 0xc0, 0xf, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xc0, 0x7, 0xe0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0xe0, 0x3, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xe0, 0x1, - 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xe0, 0x0, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xf0, 0x0, 0x7e, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x3f, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf0, 0x0, - 0x1f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, - 0xf8, 0x0, 0xf, 0xc0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x7, 0xf8, 0x0, 0x7, 0xe0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xf8, 0x0, 0x3, 0xf0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xf8, 0x0, - 0x1, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xfc, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3, 0xfc, 0x0, 0x0, 0x7e, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x3f, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, 0x0, - 0x0, 0x1f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x1, - 0xfe, 0x0, 0x0, 0xf, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xfe, 0x0, 0x0, 0x7, 0xe0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x3, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, - 0x0, 0x1, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xff, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x7e, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, - 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, - 0x0, 0x0, 0x1f, 0x80, 0x0, 0x0, 0x0, 0x0, - 0x3f, 0x80, 0x0, 0x0, 0xf, 0xc0, 0x0, 0x0, - 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x7, 0xe0, - 0x0, 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, - 0x3, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xc0, - 0x0, 0x0, 0x1, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x1f, 0xe0, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, - 0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x7e, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, - 0x0, 0x3f, 0x0, 0x0, 0x0, 0x0, 0xf, 0xe0, - 0x0, 0x0, 0x0, 0x1f, 0x80, 0x0, 0x0, 0x0, - 0xf, 0xf0, 0x0, 0x0, 0x0, 0xf, 0xc0, 0x0, - 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x7, - 0xe0, 0x0, 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, - 0x0, 0x3, 0xf0, 0x0, 0x0, 0x0, 0x7, 0xf8, - 0x0, 0x0, 0x0, 0x1, 0xf8, 0x0, 0x0, 0x0, - 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, 0xfc, 0x0, - 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x7e, 0x0, 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, - 0x0, 0x0, 0x3f, 0x0, 0x0, 0x0, 0x3, 0xfc, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0x80, 0x0, 0x0, - 0x3, 0xfc, 0x0, 0x0, 0x0, 0x0, 0xf, 0xc0, - 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, 0x0, - 0x7, 0xe0, 0x0, 0x0, 0x1, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x3, 0xf0, 0x0, 0x0, 0x1, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xf8, 0x0, 0x0, - 0x0, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc, - 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x7e, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0x0, 0x0, 0x0, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x80, 0x0, - 0x0, 0x7f, 0x80, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xc0, 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, 0x0, - 0x0, 0x7, 0xe0, 0x0, 0x0, 0x7f, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xf0, 0x0, 0x0, 0x3f, - 0x80, 0x0, 0x0, 0x0, 0x0, 0x1, 0xf8, 0x0, - 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xfc, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7e, 0x0, 0x0, 0x1f, 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, 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, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, - 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xe0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, - - /* U+0035 "5" */ - 0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, - 0x0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, - 0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, - 0x0, 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x80, 0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xf8, 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xe0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xf8, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xe0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xfe, 0x0, 0x7f, 0xff, 0x80, - 0x0, 0x0, 0x0, 0x3f, 0x8f, 0xff, 0xff, 0xff, - 0x0, 0x0, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, - 0xfc, 0x0, 0x0, 0x7, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xc0, 0x0, 0x1, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xfc, 0x0, 0x0, 0x7f, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xc0, 0x0, 0xf, 0xff, 0xf0, 0x0, - 0x3f, 0xff, 0xfc, 0x0, 0x1, 0xfe, 0x0, 0x0, - 0x0, 0x7f, 0xff, 0x80, 0x0, 0x18, 0x0, 0x0, - 0x0, 0x3, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3f, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3, 0xff, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xf8, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0xe0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0xfc, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xe0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf8, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xc0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, - 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, - 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, - 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, - 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1, 0xfe, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0xf0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7, 0xfc, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xc0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xf8, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xfc, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0x3, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0x80, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xc0, - 0x3f, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xe0, - 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xf0, - 0x3, 0xff, 0x80, 0x0, 0x0, 0x1, 0xff, 0xf8, - 0x0, 0xff, 0xfc, 0x0, 0x0, 0x3, 0xff, 0xfc, - 0x0, 0x3f, 0xff, 0xfc, 0x0, 0xf, 0xff, 0xfc, - 0x0, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, - 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, - 0x0, 0x0, 0x7, 0xff, 0xff, 0xff, 0xff, 0xfe, - 0x0, 0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, 0xfc, - 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xc0, - 0x0, 0x0, 0x0, - - /* U+0036 "6" */ - 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xfe, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, - 0x80, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xff, 0xff, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, - 0xff, 0xe0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xff, - 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, - 0xff, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x7, 0xff, - 0xfc, 0x0, 0xf, 0xc0, 0x0, 0x0, 0x0, 0xff, - 0xfe, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0xf, - 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xf, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xf, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xff, 0x80, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xf, 0xf8, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7, 0xfc, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xc0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xfc, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xc0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, - 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x7f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xf8, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xc0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x3, 0xff, - 0xe0, 0x0, 0x0, 0x3, 0xf8, 0x0, 0x1, 0xff, - 0xff, 0xf0, 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x7f, - 0xff, 0xff, 0xf0, 0x0, 0x0, 0xfe, 0x0, 0xf, - 0xff, 0xff, 0xff, 0xf0, 0x0, 0xf, 0xf0, 0x1, - 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0, 0x7f, 0x0, - 0x3f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x3, 0xf8, - 0x3, 0xff, 0xf0, 0x1, 0xff, 0xfe, 0x0, 0x1f, - 0xc0, 0x7f, 0xf8, 0x0, 0x0, 0xff, 0xf8, 0x0, - 0xfe, 0x7, 0xfe, 0x0, 0x0, 0x1, 0xff, 0xe0, - 0x7, 0xf0, 0x7f, 0xc0, 0x0, 0x0, 0x3, 0xff, - 0x80, 0x3f, 0x87, 0xf8, 0x0, 0x0, 0x0, 0x7, - 0xfe, 0x1, 0xfc, 0x7f, 0x80, 0x0, 0x0, 0x0, - 0x1f, 0xf8, 0xf, 0xe7, 0xf8, 0x0, 0x0, 0x0, - 0x0, 0x7f, 0xe0, 0x7f, 0x7f, 0x0, 0x0, 0x0, - 0x0, 0x1, 0xff, 0x3, 0xff, 0xf0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xfc, 0x1f, 0xff, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0xf0, 0xff, 0xf8, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0x8f, 0xff, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x3, 0xfc, 0x7f, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xf3, 0xff, - 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x9f, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xfc, - 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, - 0xf3, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7f, 0x9f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3, 0xfc, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xe7, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0xbf, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3, 0xfd, 0xfe, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0xef, 0xf0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0x7f, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7, 0xfb, 0xfc, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xdf, 0xe0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf7, - 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, - 0x9f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xfc, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1f, 0xe7, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xff, 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x7, 0xf8, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3f, 0xc7, 0xf0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3, 0xfc, 0x3f, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0xe1, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0x7, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, 0x3f, 0xc0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xc1, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xfc, 0x7, - 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xe0, - 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, - 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xf0, 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7f, 0x80, 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0x7, 0xfc, 0x0, 0xff, 0x80, 0x0, 0x0, 0x0, - 0x0, 0x3f, 0xc0, 0x3, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x3, 0xfe, 0x0, 0x1f, 0xf0, 0x0, 0x0, - 0x0, 0x0, 0x3f, 0xe0, 0x0, 0x7f, 0xc0, 0x0, - 0x0, 0x0, 0x3, 0xfe, 0x0, 0x1, 0xff, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xf0, 0x0, 0x7, 0xfc, - 0x0, 0x0, 0x0, 0x3, 0xff, 0x0, 0x0, 0x3f, - 0xf8, 0x0, 0x0, 0x0, 0x3f, 0xf0, 0x0, 0x0, - 0xff, 0xe0, 0x0, 0x0, 0x3, 0xff, 0x0, 0x0, - 0x3, 0xff, 0xc0, 0x0, 0x0, 0x7f, 0xf0, 0x0, - 0x0, 0xf, 0xff, 0x80, 0x0, 0x1f, 0xff, 0x0, - 0x0, 0x0, 0x1f, 0xff, 0xc0, 0xf, 0xff, 0xf0, - 0x0, 0x0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, - 0xe0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xff, 0xff, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0xff, - 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, - 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, - 0xff, 0xe0, 0x0, 0x0, 0x0, - - /* U+0037 "7" */ - 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, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1, 0xfe, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xfc, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, - 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xfc, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xfe, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xfe, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3f, 0xe0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3f, 0xe0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xf, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, - - /* U+0038 "8" */ - 0x0, 0x0, 0x0, 0x1f, 0xff, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xff, 0xff, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0xff, 0xff, 0xff, 0x0, - 0x0, 0x0, 0x0, 0x7, 0xff, 0xff, 0xff, 0xfc, - 0x0, 0x0, 0x0, 0x1, 0xff, 0xff, 0xff, 0xff, - 0xf0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, - 0xff, 0xc0, 0x0, 0x0, 0xf, 0xff, 0xf0, 0x1, - 0xff, 0xfe, 0x0, 0x0, 0x1, 0xff, 0xf0, 0x0, - 0x1, 0xff, 0xf0, 0x0, 0x0, 0x3f, 0xf8, 0x0, - 0x0, 0x3, 0xff, 0x80, 0x0, 0x7, 0xfe, 0x0, - 0x0, 0x0, 0xf, 0xfc, 0x0, 0x0, 0xff, 0xc0, - 0x0, 0x0, 0x0, 0x7f, 0xe0, 0x0, 0x1f, 0xf8, - 0x0, 0x0, 0x0, 0x3, 0xff, 0x0, 0x1, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0xf8, 0x0, 0x3f, - 0xe0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x80, 0x7, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x7, 0xfc, 0x0, - 0x7f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xc0, - 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x3, 0xfc, - 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, - 0xe0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x1, - 0xfe, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1f, 0xe0, 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xff, 0x1, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xf0, 0x1f, 0xe0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x1, 0xfe, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xf, 0xf0, 0x1f, 0xe0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xff, 0x1, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xf, 0xf0, 0x1f, 0xe0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0x1, 0xfe, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x1f, 0xe0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x1, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x1f, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, 0x0, - 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xe0, - 0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, - 0x0, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x3f, - 0xe0, 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xfc, 0x0, 0x7f, 0xc0, 0x0, 0x0, 0x0, 0x0, - 0x7f, 0xc0, 0x7, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x7, 0xf8, 0x0, 0x3f, 0xf0, 0x0, 0x0, 0x0, - 0x0, 0xff, 0x80, 0x1, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xf0, 0x0, 0x1f, 0xf8, 0x0, 0x0, - 0x0, 0x3, 0xfe, 0x0, 0x0, 0xff, 0xe0, 0x0, - 0x0, 0x0, 0x7f, 0xc0, 0x0, 0x7, 0xff, 0x0, - 0x0, 0x0, 0xf, 0xf8, 0x0, 0x0, 0x3f, 0xf8, - 0x0, 0x0, 0x1, 0xff, 0x80, 0x0, 0x1, 0xff, - 0xe0, 0x0, 0x0, 0x7f, 0xe0, 0x0, 0x0, 0xf, - 0xff, 0x80, 0x0, 0x1f, 0xfc, 0x0, 0x0, 0x0, - 0x7f, 0xfe, 0x0, 0x3, 0xff, 0x80, 0x0, 0x0, - 0x1, 0xff, 0xf8, 0x0, 0xff, 0xe0, 0x0, 0x0, - 0x0, 0xf, 0xff, 0xe0, 0x3f, 0xfc, 0x0, 0x0, - 0x0, 0x0, 0x3f, 0xff, 0x9f, 0xff, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xc0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xff, 0xff, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xfc, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xf0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xff, 0xff, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xff, - 0xff, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0xe7, - 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, 0xff, 0xf8, - 0xf, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x3f, 0xfe, - 0x0, 0x3f, 0xff, 0xc0, 0x0, 0x0, 0x7, 0xff, - 0x80, 0x0, 0xff, 0xfe, 0x0, 0x0, 0x1, 0xff, - 0xe0, 0x0, 0x3, 0xff, 0xf8, 0x0, 0x0, 0x3f, - 0xf8, 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0, 0x7, - 0xfe, 0x0, 0x0, 0x0, 0x3f, 0xfe, 0x0, 0x0, - 0xff, 0xc0, 0x0, 0x0, 0x0, 0xff, 0xf0, 0x0, - 0x1f, 0xf8, 0x0, 0x0, 0x0, 0x3, 0xff, 0x80, - 0x3, 0xff, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xfc, - 0x0, 0x7f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0xff, - 0xe0, 0xf, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xff, 0x0, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, - 0x1f, 0xf0, 0x1f, 0xf0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xff, 0x81, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xf8, 0x3f, 0xe0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7f, 0xc3, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3, 0xfc, 0x7f, 0xc0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xe7, 0xf8, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xfe, 0x7f, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0xe7, 0xf8, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, 0xff, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xf0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, - 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xf, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xf, 0xff, 0xf0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1, 0xfe, 0x7f, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1f, 0xe7, 0xf8, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x1, 0xfe, 0x7f, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3f, 0xe7, 0xfc, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3, 0xfc, 0x3f, 0xc0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xc3, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, 0x1f, - 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x81, - 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xf0, - 0xf, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, - 0x0, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x7f, - 0xe0, 0x7, 0xfe, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xfc, 0x0, 0x3f, 0xf0, 0x0, 0x0, 0x0, 0x1, - 0xff, 0x80, 0x3, 0xff, 0xc0, 0x0, 0x0, 0x0, - 0x7f, 0xf0, 0x0, 0x1f, 0xff, 0x0, 0x0, 0x0, - 0x1f, 0xfe, 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, - 0xf, 0xff, 0xc0, 0x0, 0x3, 0xff, 0xfe, 0x0, - 0xf, 0xff, 0xf8, 0x0, 0x0, 0x1f, 0xff, 0xff, - 0xff, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x7f, 0xff, - 0xff, 0xff, 0xff, 0xc0, 0x0, 0x0, 0x1, 0xff, - 0xff, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x7, - 0xff, 0xff, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x7, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x7, 0xff, 0xf8, 0x0, 0x0, 0x0, - - /* U+0039 "9" */ - 0x0, 0x0, 0x0, 0x1f, 0xfe, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xff, 0xfe, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xfc, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xff, 0xff, 0xff, 0xf0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, - 0xc0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, - 0xfe, 0x0, 0x0, 0x0, 0x7, 0xff, 0xf0, 0x3, - 0xff, 0xf8, 0x0, 0x0, 0x0, 0xff, 0xf0, 0x0, - 0x3, 0xff, 0xc0, 0x0, 0x0, 0x1f, 0xfc, 0x0, - 0x0, 0xf, 0xfe, 0x0, 0x0, 0x3, 0xff, 0x0, - 0x0, 0x0, 0x3f, 0xf0, 0x0, 0x0, 0x7f, 0xc0, - 0x0, 0x0, 0x0, 0xff, 0x80, 0x0, 0xf, 0xf8, - 0x0, 0x0, 0x0, 0x7, 0xfc, 0x0, 0x1, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x3f, 0xe0, 0x0, 0x3f, - 0xe0, 0x0, 0x0, 0x0, 0x1, 0xfe, 0x0, 0x3, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, - 0x7f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, - 0xf, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, - 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, - 0xc0, 0x1f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x1, - 0xfc, 0x1, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1f, 0xe0, 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xfe, 0x3, 0xfc, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xf0, 0x3f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7f, 0x3, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x7, 0xf0, 0x7f, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0x87, 0xf8, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xf8, 0x7f, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3f, 0x87, 0xf8, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xfc, 0xff, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xcf, 0xf0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xfc, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xcf, - 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, - 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xef, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xfe, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xf, 0xef, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xfe, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xef, 0xf0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xfe, 0xff, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xf, 0xff, 0xf0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0xf, 0xff, 0xf0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x80, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0xf7, 0xf8, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0x7f, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xf7, 0xf8, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0x7f, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xf3, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, - 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, - 0xf3, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, - 0xff, 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x1, - 0xff, 0xf1, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3f, 0xff, 0xf, 0xf8, 0x0, 0x0, 0x0, 0x0, - 0x7, 0xf7, 0xf0, 0xff, 0x80, 0x0, 0x0, 0x0, - 0x0, 0xfe, 0x7f, 0x7, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xc7, 0xf0, 0x7f, 0xe0, 0x0, 0x0, - 0x0, 0x3, 0xf8, 0x7f, 0x3, 0xff, 0x80, 0x0, - 0x0, 0x0, 0xff, 0xf, 0xf0, 0x1f, 0xfc, 0x0, - 0x0, 0x0, 0x1f, 0xe0, 0xff, 0x0, 0xff, 0xf0, - 0x0, 0x0, 0x7, 0xfc, 0xf, 0xf0, 0x7, 0xff, - 0xc0, 0x0, 0x3, 0xff, 0x80, 0xfe, 0x0, 0x3f, - 0xff, 0xc0, 0x3, 0xff, 0xf0, 0xf, 0xe0, 0x1, - 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0, 0xfe, 0x0, - 0x7, 0xff, 0xff, 0xff, 0xff, 0x0, 0xf, 0xe0, - 0x0, 0x1f, 0xff, 0xff, 0xff, 0xe0, 0x0, 0xfe, - 0x0, 0x0, 0x7f, 0xff, 0xff, 0xf0, 0x0, 0xf, - 0xe0, 0x0, 0x0, 0xff, 0xff, 0xf8, 0x0, 0x1, - 0xfe, 0x0, 0x0, 0x0, 0xff, 0xf8, 0x0, 0x0, - 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xe0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, - 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, - 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x7f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0xf, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x1f, 0xf0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x3, 0xfe, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x7, 0xfc, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0xff, 0x80, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1f, 0xf0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xe0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xfc, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0x80, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xf0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xfe, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, - 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, - 0xf8, 0x0, 0x0, 0x1, 0x80, 0x0, 0x0, 0xff, - 0xff, 0x0, 0x0, 0x0, 0x1f, 0xe0, 0x0, 0xff, - 0xff, 0xc0, 0x0, 0x0, 0x1, 0xff, 0xff, 0xff, - 0xff, 0xf0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xff, - 0xff, 0xfc, 0x0, 0x0, 0x0, 0x1, 0xff, 0xff, - 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, - 0xff, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0xff, - 0xff, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x7f, 0xff, 0x80, 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 = 1370, .box_w = 69, .box_h = 110, .ofs_x = 8, .ofs_y = -1}, - {.bitmap_index = 949, .adv_w = 1370, .box_w = 35, .box_h = 107, .ofs_x = 15, .ofs_y = 0}, - {.bitmap_index = 1418, .adv_w = 1370, .box_w = 67, .box_h = 108, .ofs_x = 8, .ofs_y = 0}, - {.bitmap_index = 2323, .adv_w = 1370, .box_w = 68, .box_h = 110, .ofs_x = 7, .ofs_y = -1}, - {.bitmap_index = 3258, .adv_w = 1370, .box_w = 81, .box_h = 108, .ofs_x = 3, .ofs_y = -1}, - {.bitmap_index = 4352, .adv_w = 1370, .box_w = 66, .box_h = 108, .ofs_x = 10, .ofs_y = -1}, - {.bitmap_index = 5243, .adv_w = 1370, .box_w = 69, .box_h = 110, .ofs_x = 9, .ofs_y = -1}, - {.bitmap_index = 6192, .adv_w = 1370, .box_w = 69, .box_h = 106, .ofs_x = 8, .ofs_y = 0}, - {.bitmap_index = 7107, .adv_w = 1370, .box_w = 68, .box_h = 110, .ofs_x = 9, .ofs_y = -1}, - {.bitmap_index = 8042, .adv_w = 1370, .box_w = 68, .box_h = 110, .ofs_x = 8, .ofs_y = -1} -}; - -/*--------------------- - * CHARACTER MAPPING - *--------------------*/ - - - -/*Collect the unicode lists and glyph_id offsets*/ -static const lv_font_fmt_txt_cmap_t cmaps[] = -{ - { - .range_start = 48, .range_length = 10, .glyph_id_start = 1, - .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY - } -}; - - - -/*-------------------- - * ALL CUSTOM DATA - *--------------------*/ - -#if LV_VERSION_CHECK(8, 0, 0) -/*Store all the custom data of the font*/ -static lv_font_fmt_txt_glyph_cache_t cache; -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 = 1, - .kern_classes = 0, - .bitmap_format = 0, -#if LV_VERSION_CHECK(8, 0, 0) - .cache = &cache -#endif -}; - - -/*----------------- - * PUBLIC FONT - *----------------*/ - -/*Initialize a public general font descriptor*/ -#if LV_VERSION_CHECK(8, 0, 0) -const lv_font_t open_sans_light = { -#else -lv_font_t open_sans_light = { -#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 = 110, /*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 = -11, - .underline_thickness = 7, -#endif - .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ -}; - - - -#endif /*#if OPEN_SANS_LIGHT*/ - diff --git a/src/displayapp/icons/battery/battery.png b/src/displayapp/icons/battery/battery.png Binary files differnew file mode 100644 index 0000000..0fca804 --- /dev/null +++ b/src/displayapp/icons/battery/battery.png diff --git a/src/displayapp/icons/battery/batteryicon.c b/src/displayapp/icons/battery/batteryicon.c new file mode 100644 index 0000000..05ddf16 --- /dev/null +++ b/src/displayapp/icons/battery/batteryicon.c @@ -0,0 +1,52 @@ +#if defined(LV_LVGL_H_INCLUDE_SIMPLE) +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + + +#ifndef LV_ATTRIBUTE_MEM_ALIGN +#define LV_ATTRIBUTE_MEM_ALIGN +#endif + +#ifndef LV_ATTRIBUTE_IMG_BATTERYICON +#define LV_ATTRIBUTE_IMG_BATTERYICON +#endif + +const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_BATTERYICON uint8_t batteryicon_map[] = { + 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ + 0x6a, 0xfc, 0x6c, 0xff, /*Color of index 1*/ + + 0xe0, 0x70, + 0xe0, 0x70, + 0x00, 0x00, + 0x00, 0x00, + 0x3f, 0xc0, + 0x3f, 0xc0, + 0x3f, 0xc0, + 0x3f, 0xc0, + 0x3f, 0xc0, + 0x3f, 0xc0, + 0x3f, 0xc0, + 0x3f, 0xc0, + 0x3f, 0xc0, + 0x3f, 0xc0, + 0x3f, 0xc0, + 0x3f, 0xc0, + 0x3f, 0xc0, + 0x3f, 0xc0, + 0x00, 0x00, + 0x00, 0x00, +}; + +const lv_img_dsc_t batteryicon = { + { + LV_IMG_CF_INDEXED_1BIT, + 0, + 0, + 12, + 20, + }, + 48, + batteryicon_map, +}; diff --git a/src/displayapp/icons/battery/os_battery_005.c b/src/displayapp/icons/battery/os_battery_005.c deleted file mode 100644 index 64832b5..0000000 --- a/src/displayapp/icons/battery/os_battery_005.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERY_005 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERY_005 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERY_005 uint8_t ck_os_battery_005_map[] = { - 0x04, 0x02, 0xcc, 0xff, /*Color of index 0*/ - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 1*/ - - 0xfc, 0x00, 0x3f, - 0xf8, 0x00, 0x1f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0x00, 0xff, 0x00, - 0x00, 0xff, 0x00, - 0x00, 0xff, 0x00, - 0x00, 0xff, 0x00, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, -}; - -const lv_img_dsc_t ck_os_battery_005 = { - .header.always_zero = 0, - .header.w = 24, - .header.h = 32, - .data_size = 104, - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .data = ck_os_battery_005_map, -}; diff --git a/src/displayapp/icons/battery/os_battery_005.png b/src/displayapp/icons/battery/os_battery_005.png Binary files differdeleted file mode 100644 index 963767b..0000000 --- a/src/displayapp/icons/battery/os_battery_005.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_battery_010.c b/src/displayapp/icons/battery/os_battery_010.c deleted file mode 100644 index f36b684..0000000 --- a/src/displayapp/icons/battery/os_battery_010.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERY_010 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERY_010 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERY_010 uint8_t ck_os_battery_010_map[] = { - 0x04, 0x02, 0xcc, 0xff, /*Color of index 0*/ - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 1*/ - 0x04, 0x7a, 0xf4, 0xff, /*Color of index 2*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 3*/ - - 0x55, 0x5f, 0xff, 0xff, 0xf5, 0x55, 0x55, - 0x55, 0x7f, 0xff, 0xff, 0xfd, 0x55, 0x55, - 0x55, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, - 0x55, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, - 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x55, - 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x55, - 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x55, - 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x55, - 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0x55, - 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0x55, - 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0x55, - 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0x55, - 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0x55, - 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0x55, - 0xff, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, - 0xff, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, - 0xff, 0x55, 0x55, 0x6a, 0xaa, 0xaa, 0xa9, - 0xff, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, - 0xff, 0x55, 0x55, 0xaa, 0xa5, 0x5a, 0xaa, - 0xff, 0x55, 0x55, 0xaa, 0xa5, 0x5a, 0xaa, - 0xff, 0x55, 0x55, 0xaa, 0xa5, 0x5a, 0xaa, - 0xff, 0x55, 0x55, 0xaa, 0xa5, 0x5a, 0xaa, - 0xff, 0x55, 0x55, 0xaa, 0xa5, 0x5a, 0xaa, - 0xff, 0x55, 0x55, 0xaa, 0xa5, 0x5a, 0xaa, - 0xff, 0x50, 0x05, 0xaa, 0xaa, 0xaa, 0xaa, - 0xff, 0x50, 0x05, 0xaa, 0xaa, 0xaa, 0xaa, - 0xff, 0x55, 0x55, 0xaa, 0xa5, 0x5a, 0xaa, - 0xff, 0x55, 0x55, 0xaa, 0xa5, 0x5a, 0xaa, - 0xff, 0xff, 0xf5, 0xaa, 0xa5, 0x5a, 0xaa, - 0xff, 0xff, 0xf5, 0xaa, 0xa5, 0x5a, 0xaa, - 0xff, 0xff, 0xf5, 0xaa, 0xaa, 0xaa, 0xaa, - 0xff, 0xff, 0xf5, 0x6a, 0xaa, 0xaa, 0xa9, -}; - -const lv_img_dsc_t ck_os_battery_010 = { - .header.always_zero = 0, - .header.w = 28, - .header.h = 32, - .data_size = 240, - .header.cf = LV_IMG_CF_INDEXED_2BIT, - .data = ck_os_battery_010_map, -}; diff --git a/src/displayapp/icons/battery/os_battery_010.png b/src/displayapp/icons/battery/os_battery_010.png Binary files differdeleted file mode 100644 index 68a9f40..0000000 --- a/src/displayapp/icons/battery/os_battery_010.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_battery_020.c b/src/displayapp/icons/battery/os_battery_020.c deleted file mode 100644 index 3f648fb..0000000 --- a/src/displayapp/icons/battery/os_battery_020.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERY_020 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERY_020 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERY_020 uint8_t ck_os_battery_020_map[] = { - 0x04, 0x02, 0xcc, 0xff, /*Color of index 0*/ - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 1*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 2*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 3*/ - - 0x55, 0x5a, 0xaa, 0xaa, 0xa5, 0x55, - 0x55, 0x6a, 0xaa, 0xaa, 0xa9, 0x55, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x50, 0x00, 0x00, 0x05, 0xaa, - 0xaa, 0x50, 0x00, 0x00, 0x05, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -}; - -const lv_img_dsc_t ck_os_battery_020 = { - .header.always_zero = 0, - .header.w = 24, - .header.h = 32, - .data_size = 208, - .header.cf = LV_IMG_CF_INDEXED_2BIT, - .data = ck_os_battery_020_map, -}; diff --git a/src/displayapp/icons/battery/os_battery_020.png b/src/displayapp/icons/battery/os_battery_020.png Binary files differdeleted file mode 100644 index 32eca65..0000000 --- a/src/displayapp/icons/battery/os_battery_020.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_battery_030.c b/src/displayapp/icons/battery/os_battery_030.c deleted file mode 100644 index 4d5719b..0000000 --- a/src/displayapp/icons/battery/os_battery_030.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERY_030 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERY_030 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERY_030 uint8_t ck_os_battery_030_map[] = { - 0x04, 0x7a, 0xf4, 0xff, /*Color of index 0*/ - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 1*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 2*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 3*/ - - 0x55, 0x5a, 0xaa, 0xaa, 0xa5, 0x55, - 0x55, 0x6a, 0xaa, 0xaa, 0xa9, 0x55, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x50, 0x00, 0x00, 0x05, 0xaa, - 0xaa, 0x50, 0x00, 0x00, 0x05, 0xaa, - 0xaa, 0x50, 0x00, 0x00, 0x05, 0xaa, - 0xaa, 0x50, 0x00, 0x00, 0x05, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -}; - -const lv_img_dsc_t ck_os_battery_030 = { - .header.always_zero = 0, - .header.w = 24, - .header.h = 32, - .data_size = 208, - .header.cf = LV_IMG_CF_INDEXED_2BIT, - .data = ck_os_battery_030_map, -}; diff --git a/src/displayapp/icons/battery/os_battery_030.png b/src/displayapp/icons/battery/os_battery_030.png Binary files differdeleted file mode 100644 index aeb5eb1..0000000 --- a/src/displayapp/icons/battery/os_battery_030.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_battery_040.c b/src/displayapp/icons/battery/os_battery_040.c deleted file mode 100644 index 0606fc3..0000000 --- a/src/displayapp/icons/battery/os_battery_040.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERY_040 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERY_040 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERY_040 uint8_t ck_os_battery_040_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - - 0x03, 0xff, 0xc0, - 0x07, 0xff, 0xe0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, -}; - -const lv_img_dsc_t ck_os_battery_040 = { - .header.always_zero = 0, - .header.w = 24, - .header.h = 32, - .data_size = 104, - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .data = ck_os_battery_040_map, -}; diff --git a/src/displayapp/icons/battery/os_battery_040.png b/src/displayapp/icons/battery/os_battery_040.png Binary files differdeleted file mode 100644 index d84fda4..0000000 --- a/src/displayapp/icons/battery/os_battery_040.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_battery_050.c b/src/displayapp/icons/battery/os_battery_050.c deleted file mode 100644 index 8732dc7..0000000 --- a/src/displayapp/icons/battery/os_battery_050.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERY_050 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERY_050 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERY_050 uint8_t ck_os_battery_050_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - - 0x03, 0xff, 0xc0, - 0x07, 0xff, 0xe0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, -}; - -const lv_img_dsc_t ck_os_battery_050 = { - .header.always_zero = 0, - .header.w = 24, - .header.h = 32, - .data_size = 104, - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .data = ck_os_battery_050_map, -}; diff --git a/src/displayapp/icons/battery/os_battery_050.png b/src/displayapp/icons/battery/os_battery_050.png Binary files differdeleted file mode 100644 index 224d38d..0000000 --- a/src/displayapp/icons/battery/os_battery_050.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_battery_060.c b/src/displayapp/icons/battery/os_battery_060.c deleted file mode 100644 index a65936b..0000000 --- a/src/displayapp/icons/battery/os_battery_060.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERY_060 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERY_060 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERY_060 uint8_t ck_os_battery_060_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - - 0x03, 0xff, 0xc0, - 0x07, 0xff, 0xe0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, -}; - -const lv_img_dsc_t ck_os_battery_060 = { - .header.always_zero = 0, - .header.w = 24, - .header.h = 32, - .data_size = 104, - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .data = ck_os_battery_060_map, -}; diff --git a/src/displayapp/icons/battery/os_battery_060.png b/src/displayapp/icons/battery/os_battery_060.png Binary files differdeleted file mode 100644 index e5e00ed..0000000 --- a/src/displayapp/icons/battery/os_battery_060.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_battery_070.c b/src/displayapp/icons/battery/os_battery_070.c deleted file mode 100644 index 949c0b8..0000000 --- a/src/displayapp/icons/battery/os_battery_070.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERY_070 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERY_070 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERY_070 uint8_t ck_os_battery_070_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - - 0x03, 0xff, 0xc0, - 0x07, 0xff, 0xe0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, -}; - -const lv_img_dsc_t ck_os_battery_070 = { - .header.always_zero = 0, - .header.w = 24, - .header.h = 32, - .data_size = 104, - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .data = ck_os_battery_070_map, -}; diff --git a/src/displayapp/icons/battery/os_battery_070.png b/src/displayapp/icons/battery/os_battery_070.png Binary files differdeleted file mode 100644 index dee969b..0000000 --- a/src/displayapp/icons/battery/os_battery_070.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_battery_080.c b/src/displayapp/icons/battery/os_battery_080.c deleted file mode 100644 index f447370..0000000 --- a/src/displayapp/icons/battery/os_battery_080.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERY_080 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERY_080 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERY_080 uint8_t ck_os_battery_080_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - - 0x03, 0xff, 0xc0, - 0x07, 0xff, 0xe0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, -}; - -const lv_img_dsc_t ck_os_battery_080 = { - .header.always_zero = 0, - .header.w = 24, - .header.h = 32, - .data_size = 104, - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .data = ck_os_battery_080_map, -}; diff --git a/src/displayapp/icons/battery/os_battery_080.png b/src/displayapp/icons/battery/os_battery_080.png Binary files differdeleted file mode 100644 index 3b13fbb..0000000 --- a/src/displayapp/icons/battery/os_battery_080.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_battery_090.c b/src/displayapp/icons/battery/os_battery_090.c deleted file mode 100644 index 6fa41b2..0000000 --- a/src/displayapp/icons/battery/os_battery_090.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERY_090 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERY_090 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERY_090 uint8_t ck_os_battery_090_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - - 0x03, 0xff, 0xc0, - 0x07, 0xff, 0xe0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, -}; - -const lv_img_dsc_t ck_os_battery_090 = { - .header.always_zero = 0, - .header.w = 24, - .header.h = 32, - .data_size = 104, - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .data = ck_os_battery_090_map, -}; diff --git a/src/displayapp/icons/battery/os_battery_090.png b/src/displayapp/icons/battery/os_battery_090.png Binary files differdeleted file mode 100644 index d79f396..0000000 --- a/src/displayapp/icons/battery/os_battery_090.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_battery_100.c b/src/displayapp/icons/battery/os_battery_100.c deleted file mode 100644 index 92cf9a4..0000000 --- a/src/displayapp/icons/battery/os_battery_100.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERY_100 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERY_100 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERY_100 uint8_t ck_os_battery_100_map[] = { - 0x7c, 0xd2, 0x34, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 2*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 3*/ - - 0xaa, 0xa5, 0x55, 0x55, 0x5a, 0xaa, - 0xaa, 0x95, 0x55, 0x55, 0x56, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, - 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, - 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, - 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, - 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, - 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, - 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, - 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, - 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, -}; - -const lv_img_dsc_t ck_os_battery_100 = { - .header.always_zero = 0, - .header.w = 24, - .header.h = 32, - .data_size = 208, - .header.cf = LV_IMG_CF_INDEXED_2BIT, - .data = ck_os_battery_100_map, -}; diff --git a/src/displayapp/icons/battery/os_battery_100.png b/src/displayapp/icons/battery/os_battery_100.png Binary files differdeleted file mode 100644 index dd0d306..0000000 --- a/src/displayapp/icons/battery/os_battery_100.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_battery_error.c b/src/displayapp/icons/battery/os_battery_error.c deleted file mode 100644 index af6aba5..0000000 --- a/src/displayapp/icons/battery/os_battery_error.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERY_ERROR -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERY_ERROR -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERY_ERROR uint8_t ck_os_battery_error_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xc4, 0xc2, 0xc4, 0xff, /*Color of index 1*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 2*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 3*/ - - 0x00, 0x05, 0x55, 0x55, 0x50, 0x00, - 0x00, 0x15, 0x55, 0x55, 0x54, 0x00, - 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, - 0x00, 0x55, 0x55, 0x55, 0x55, 0x00, - 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, - 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, - 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, - 0x55, 0x54, 0x00, 0x00, 0x15, 0x55, - 0x55, 0x00, 0x0a, 0xa0, 0x00, 0x55, - 0x55, 0x00, 0xaa, 0xaa, 0x00, 0x55, - 0x55, 0x02, 0xaa, 0xaa, 0x80, 0x55, - 0x55, 0x02, 0xaa, 0xaa, 0x80, 0x55, - 0x55, 0x0a, 0xa8, 0x2a, 0xa0, 0x55, - 0x55, 0x0a, 0xa0, 0x0a, 0xa0, 0x55, - 0x55, 0x00, 0x00, 0x0a, 0xa0, 0x55, - 0x55, 0x00, 0x00, 0x2a, 0xa0, 0x55, - 0x55, 0x00, 0x02, 0xaa, 0x80, 0x55, - 0x55, 0x00, 0x0a, 0xaa, 0x80, 0x55, - 0x55, 0x00, 0x0a, 0xaa, 0x00, 0x55, - 0x55, 0x00, 0x0a, 0xa0, 0x00, 0x55, - 0x55, 0x00, 0x0a, 0xa0, 0x00, 0x55, - 0x55, 0x00, 0x0a, 0xa0, 0x00, 0x55, - 0x55, 0x00, 0x00, 0x00, 0x00, 0x55, - 0x55, 0x00, 0x00, 0x00, 0x00, 0x55, - 0x55, 0x00, 0x02, 0x80, 0x00, 0x55, - 0x55, 0x00, 0x0a, 0xa0, 0x00, 0x55, - 0x55, 0x00, 0x0a, 0xa0, 0x00, 0x55, - 0x55, 0x00, 0x02, 0x80, 0x00, 0x55, - 0x55, 0x55, 0x40, 0x01, 0x55, 0x55, - 0x55, 0x55, 0x50, 0x05, 0x55, 0x55, - 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, - 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, -}; - -const lv_img_dsc_t ck_os_battery_error = { - .header.always_zero = 0, - .header.w = 24, - .header.h = 32, - .data_size = 208, - .header.cf = LV_IMG_CF_INDEXED_2BIT, - .data = ck_os_battery_error_map, -}; diff --git a/src/displayapp/icons/battery/os_battery_error.png b/src/displayapp/icons/battery/os_battery_error.png Binary files differdeleted file mode 100644 index 4c7632f..0000000 --- a/src/displayapp/icons/battery/os_battery_error.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_batterycharging_005.c b/src/displayapp/icons/battery/os_batterycharging_005.c deleted file mode 100644 index 1b0c71d..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_005.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_005 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_005 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_005 uint8_t ck_os_batterycharging_005_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - - 0x03, 0xff, 0xc0, 0x00, - 0x07, 0xff, 0xe0, 0x00, - 0x0f, 0xff, 0xf0, 0x00, - 0x0f, 0xff, 0xf0, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x07, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x1f, 0x00, - 0xf0, 0x00, 0x3e, 0x00, - 0xf0, 0x00, 0x7e, 0x00, - 0xf0, 0x00, 0xfc, 0x00, - 0xf0, 0x01, 0xff, 0xf0, - 0xf0, 0x03, 0xff, 0xf0, - 0xf0, 0x03, 0xff, 0xf0, - 0xf0, 0x03, 0xff, 0xe0, - 0xf0, 0x00, 0x0f, 0xc0, - 0xf0, 0x00, 0x1f, 0x80, - 0xff, 0xff, 0x3f, 0x00, - 0xff, 0xff, 0x3e, 0x00, - 0xff, 0xff, 0x3c, 0x00, - 0xff, 0xff, 0x38, 0x00, -}; - -const lv_img_dsc_t ck_os_batterycharging_005 = { - .header.always_zero = 0, - .header.w = 28, - .header.h = 32, - .data_size = 136, - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .data = ck_os_batterycharging_005_map, -}; diff --git a/src/displayapp/icons/battery/os_batterycharging_005.png b/src/displayapp/icons/battery/os_batterycharging_005.png Binary files differdeleted file mode 100644 index f9545bc..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_005.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_batterycharging_010.c b/src/displayapp/icons/battery/os_batterycharging_010.c deleted file mode 100644 index 304c018..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_010.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_010 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_010 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_010 uint8_t ck_os_batterycharging_010_map[] = { - 0x04, 0x02, 0xcc, 0xff, /*Color of index 0*/ - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 1*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 2*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 3*/ - - 0x55, 0x5a, 0xaa, 0xaa, 0xa5, 0x55, 0x55, - 0x55, 0x6a, 0xaa, 0xaa, 0xa9, 0x55, 0x55, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0x6a, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x56, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x5a, 0xa9, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x6a, 0xa9, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xa5, 0x55, - 0xaa, 0x55, 0x55, 0x56, 0xaa, 0xaa, 0xaa, - 0xaa, 0x55, 0x55, 0x5a, 0xaa, 0xaa, 0xaa, - 0xaa, 0x50, 0x00, 0x5a, 0xaa, 0xaa, 0xaa, - 0xaa, 0x50, 0x00, 0x5a, 0xaa, 0xaa, 0xa9, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xa5, - 0xaa, 0x55, 0x55, 0x55, 0x56, 0xaa, 0x95, - 0xaa, 0xaa, 0xaa, 0xaa, 0x5a, 0xaa, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x5a, 0xa9, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x5a, 0xa5, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x5a, 0x95, 0x55, -}; - -const lv_img_dsc_t ck_os_batterycharging_010 = { - .header.always_zero = 0, - .header.w = 28, - .header.h = 32, - .data_size = 240, - .header.cf = LV_IMG_CF_INDEXED_2BIT, - .data = ck_os_batterycharging_010_map, -}; diff --git a/src/displayapp/icons/battery/os_batterycharging_010.png b/src/displayapp/icons/battery/os_batterycharging_010.png Binary files differdeleted file mode 100644 index 04d5f82..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_010.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_batterycharging_020.c b/src/displayapp/icons/battery/os_batterycharging_020.c deleted file mode 100644 index 1721be1..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_020.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_020 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_020 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_020 uint8_t ck_os_batterycharging_020_map[] = { - 0x04, 0x02, 0xcc, 0xff, /*Color of index 0*/ - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 1*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 2*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 3*/ - - 0x55, 0x5a, 0xaa, 0xaa, 0xa5, 0x55, 0x55, - 0x55, 0x6a, 0xaa, 0xaa, 0xa9, 0x55, 0x55, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0x6a, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x56, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x5a, 0xa9, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x6a, 0xa9, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xa5, 0x55, - 0xaa, 0x55, 0x55, 0x56, 0xaa, 0xaa, 0xaa, - 0xaa, 0x55, 0x55, 0x5a, 0xaa, 0xaa, 0xaa, - 0xaa, 0x50, 0x00, 0x5a, 0xaa, 0xaa, 0xaa, - 0xaa, 0x50, 0x00, 0x5a, 0xaa, 0xaa, 0xa9, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xa5, - 0xaa, 0x55, 0x55, 0x55, 0x56, 0xaa, 0x95, - 0xaa, 0xaa, 0xaa, 0xaa, 0x5a, 0xaa, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x5a, 0xa9, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x5a, 0xa5, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x5a, 0x95, 0x55, -}; - -const lv_img_dsc_t ck_os_batterycharging_020 = { - .header.always_zero = 0, - .header.w = 28, - .header.h = 32, - .data_size = 240, - .header.cf = LV_IMG_CF_INDEXED_2BIT, - .data = ck_os_batterycharging_020_map, -}; diff --git a/src/displayapp/icons/battery/os_batterycharging_020.png b/src/displayapp/icons/battery/os_batterycharging_020.png Binary files differdeleted file mode 100644 index 6416e1e..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_020.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_batterycharging_030.c b/src/displayapp/icons/battery/os_batterycharging_030.c deleted file mode 100644 index 83101fd..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_030.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_030 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_030 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_030 uint8_t ck_os_batterycharging_030_map[] = { - 0x04, 0x7a, 0xf4, 0xff, /*Color of index 0*/ - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 1*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 2*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 3*/ - - 0x55, 0x5a, 0xaa, 0xaa, 0xa5, 0x55, 0x55, - 0x55, 0x6a, 0xaa, 0xaa, 0xa9, 0x55, 0x55, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, - 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0x6a, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x56, 0xaa, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x5a, 0xa9, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0x6a, 0xa9, 0x55, - 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xa5, 0x55, - 0xaa, 0x50, 0x00, 0x56, 0xaa, 0xaa, 0xaa, - 0xaa, 0x50, 0x00, 0x5a, 0xaa, 0xaa, 0xaa, - 0xaa, 0x50, 0x00, 0x5a, 0xaa, 0xaa, 0xaa, - 0xaa, 0x50, 0x00, 0x5a, 0xaa, 0xaa, 0xa9, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xa5, - 0xaa, 0x55, 0x55, 0x55, 0x56, 0xaa, 0x95, - 0xaa, 0xaa, 0xaa, 0xaa, 0x5a, 0xaa, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x5a, 0xa9, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x5a, 0xa5, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x5a, 0x95, 0x55, -}; - -const lv_img_dsc_t ck_os_batterycharging_030 = { - .header.always_zero = 0, - .header.w = 28, - .header.h = 32, - .data_size = 240, - .header.cf = LV_IMG_CF_INDEXED_2BIT, - .data = ck_os_batterycharging_030_map, -}; diff --git a/src/displayapp/icons/battery/os_batterycharging_030.png b/src/displayapp/icons/battery/os_batterycharging_030.png Binary files differdeleted file mode 100644 index 96b44d2..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_030.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_batterycharging_040.c b/src/displayapp/icons/battery/os_batterycharging_040.c deleted file mode 100644 index 02af00e..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_040.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_040 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_040 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_040 uint8_t ck_os_batterycharging_040_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - - 0x03, 0xff, 0xc0, 0x00, - 0x07, 0xff, 0xe0, 0x00, - 0x0f, 0xff, 0xf0, 0x00, - 0x0f, 0xff, 0xf0, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x07, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x1f, 0x00, - 0xf0, 0x00, 0x3e, 0x00, - 0xf3, 0xf8, 0x7e, 0x00, - 0xf3, 0xf0, 0xfc, 0x00, - 0xf3, 0xf1, 0xff, 0xf0, - 0xf3, 0xf3, 0xff, 0xf0, - 0xf3, 0xf3, 0xff, 0xf0, - 0xf3, 0xf3, 0xff, 0xe0, - 0xf0, 0x00, 0x0f, 0xc0, - 0xf0, 0x00, 0x1f, 0x80, - 0xff, 0xff, 0x3f, 0x00, - 0xff, 0xff, 0x3e, 0x00, - 0xff, 0xff, 0x3c, 0x00, - 0xff, 0xff, 0x38, 0x00, -}; - -const lv_img_dsc_t ck_os_batterycharging_040 = { - .header.always_zero = 0, - .header.w = 28, - .header.h = 32, - .data_size = 136, - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .data = ck_os_batterycharging_040_map, -}; diff --git a/src/displayapp/icons/battery/os_batterycharging_040.png b/src/displayapp/icons/battery/os_batterycharging_040.png Binary files differdeleted file mode 100644 index 5a42caf..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_040.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_batterycharging_050.c b/src/displayapp/icons/battery/os_batterycharging_050.c deleted file mode 100644 index d2eea82..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_050.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_050 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_050 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_050 uint8_t ck_os_batterycharging_050_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - - 0x03, 0xff, 0xc0, 0x00, - 0x07, 0xff, 0xe0, 0x00, - 0x0f, 0xff, 0xf0, 0x00, - 0x0f, 0xff, 0xf0, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x07, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf3, 0xfe, 0x1f, 0x00, - 0xf3, 0xfc, 0x3e, 0x00, - 0xf3, 0xf8, 0x7e, 0x00, - 0xf3, 0xf0, 0xfc, 0x00, - 0xf3, 0xf1, 0xff, 0xf0, - 0xf3, 0xf3, 0xff, 0xf0, - 0xf3, 0xf3, 0xff, 0xf0, - 0xf3, 0xf3, 0xff, 0xe0, - 0xf0, 0x00, 0x0f, 0xc0, - 0xf0, 0x00, 0x1f, 0x80, - 0xff, 0xff, 0x3f, 0x00, - 0xff, 0xff, 0x3e, 0x00, - 0xff, 0xff, 0x3c, 0x00, - 0xff, 0xff, 0x38, 0x00, -}; - -const lv_img_dsc_t ck_os_batterycharging_050 = { - .header.always_zero = 0, - .header.w = 28, - .header.h = 32, - .data_size = 136, - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .data = ck_os_batterycharging_050_map, -}; diff --git a/src/displayapp/icons/battery/os_batterycharging_050.png b/src/displayapp/icons/battery/os_batterycharging_050.png Binary files differdeleted file mode 100644 index ca0e04d..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_050.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_batterycharging_060.c b/src/displayapp/icons/battery/os_batterycharging_060.c deleted file mode 100644 index 05f8b97..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_060.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_060 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_060 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_060 uint8_t ck_os_batterycharging_060_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - - 0x03, 0xff, 0xc0, 0x00, - 0x07, 0xff, 0xe0, 0x00, - 0x0f, 0xff, 0xf0, 0x00, - 0x0f, 0xff, 0xf0, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, - 0xf3, 0xff, 0x87, 0x00, - 0xf3, 0xff, 0x0f, 0x00, - 0xf3, 0xfe, 0x1f, 0x00, - 0xf3, 0xfc, 0x3e, 0x00, - 0xf3, 0xf8, 0x7e, 0x00, - 0xf3, 0xf0, 0xfc, 0x00, - 0xf3, 0xf1, 0xff, 0xf0, - 0xf3, 0xf3, 0xff, 0xf0, - 0xf3, 0xf3, 0xff, 0xf0, - 0xf3, 0xf3, 0xff, 0xe0, - 0xf0, 0x00, 0x0f, 0xc0, - 0xf0, 0x00, 0x1f, 0x80, - 0xff, 0xff, 0x3f, 0x00, - 0xff, 0xff, 0x3e, 0x00, - 0xff, 0xff, 0x3c, 0x00, - 0xff, 0xff, 0x38, 0x00, -}; - -const lv_img_dsc_t ck_os_batterycharging_060 = { - .header.always_zero = 0, - .header.w = 28, - .header.h = 32, - .data_size = 136, - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .data = ck_os_batterycharging_060_map, -}; diff --git a/src/displayapp/icons/battery/os_batterycharging_060.png b/src/displayapp/icons/battery/os_batterycharging_060.png Binary files differdeleted file mode 100644 index 2930068..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_060.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_batterycharging_070.c b/src/displayapp/icons/battery/os_batterycharging_070.c deleted file mode 100644 index ac3e319..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_070.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_070 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_070 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_070 uint8_t ck_os_batterycharging_070_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - - 0x03, 0xff, 0xc0, 0x00, - 0x07, 0xff, 0xe0, 0x00, - 0x0f, 0xff, 0xf0, 0x00, - 0x0f, 0xff, 0xf0, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf0, 0x00, 0x0f, 0x00, - 0xf3, 0xff, 0xc0, 0x00, - 0xf3, 0xff, 0xc0, 0x00, - 0xf3, 0xff, 0x87, 0x00, - 0xf3, 0xff, 0x0f, 0x00, - 0xf3, 0xfe, 0x1f, 0x00, - 0xf3, 0xfc, 0x3e, 0x00, - 0xf3, 0xf8, 0x7e, 0x00, - 0xf3, 0xf0, 0xfc, 0x00, - 0xf3, 0xf1, 0xff, 0xf0, - 0xf3, 0xf3, 0xff, 0xf0, - 0xf3, 0xf3, 0xff, 0xf0, - 0xf3, 0xf3, 0xff, 0xe0, - 0xf0, 0x00, 0x0f, 0xc0, - 0xf0, 0x00, 0x1f, 0x80, - 0xff, 0xff, 0x3f, 0x00, - 0xff, 0xff, 0x3e, 0x00, - 0xff, 0xff, 0x3c, 0x00, - 0xff, 0xff, 0x38, 0x00, -}; - -const lv_img_dsc_t ck_os_batterycharging_070 = { - .header.always_zero = 0, - .header.w = 28, - .header.h = 32, - .data_size = 136, - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .data = ck_os_batterycharging_070_map, -}; diff --git a/src/displayapp/icons/battery/os_batterycharging_070.png b/src/displayapp/icons/battery/os_batterycharging_070.png Binary files differdeleted file mode 100644 index 7d5f55d..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_070.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_batterycharging_080.c b/src/displayapp/icons/battery/os_batterycharging_080.c deleted file mode 100644 index cc1c1d2..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_080.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_080 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_080 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_080 uint8_t ck_os_batterycharging_080_map[] = { - 0x7c, 0xd2, 0x34, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 2*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 3*/ - - 0xaa, 0xa5, 0x55, 0x55, 0x5a, 0xaa, 0xaa, - 0xaa, 0x95, 0x55, 0x55, 0x56, 0xaa, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, - 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, - 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, - 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, - 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0xaa, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0xaa, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0xaa, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0xaa, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, 0xaa, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, 0xaa, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0xaa, 0xaa, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0xaa, 0xaa, - 0x55, 0xa0, 0x00, 0x00, 0x2a, 0x95, 0xaa, - 0x55, 0xa0, 0x00, 0x00, 0xaa, 0x55, 0xaa, - 0x55, 0xa0, 0x00, 0x02, 0xa9, 0x55, 0xaa, - 0x55, 0xa0, 0x00, 0x0a, 0xa5, 0x56, 0xaa, - 0x55, 0xa0, 0x00, 0x2a, 0x95, 0x56, 0xaa, - 0x55, 0xa0, 0x00, 0xaa, 0x55, 0x5a, 0xaa, - 0x55, 0xa0, 0x00, 0xa9, 0x55, 0x55, 0x55, - 0x55, 0xa0, 0x00, 0xa5, 0x55, 0x55, 0x55, - 0x55, 0xa0, 0x00, 0xa5, 0x55, 0x55, 0x55, - 0x55, 0xa0, 0x00, 0xa5, 0x55, 0x55, 0x56, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x5a, - 0x55, 0xaa, 0xaa, 0xaa, 0xa9, 0x55, 0x6a, - 0x55, 0x55, 0x55, 0x55, 0xa5, 0x55, 0xaa, - 0x55, 0x55, 0x55, 0x55, 0xa5, 0x56, 0xaa, - 0x55, 0x55, 0x55, 0x55, 0xa5, 0x5a, 0xaa, - 0x55, 0x55, 0x55, 0x55, 0xa5, 0x6a, 0xaa, -}; - -const lv_img_dsc_t ck_os_batterycharging_080 = { - .header.always_zero = 0, - .header.w = 28, - .header.h = 32, - .data_size = 240, - .header.cf = LV_IMG_CF_INDEXED_2BIT, - .data = ck_os_batterycharging_080_map, -}; diff --git a/src/displayapp/icons/battery/os_batterycharging_080.png b/src/displayapp/icons/battery/os_batterycharging_080.png Binary files differdeleted file mode 100644 index cce5052..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_080.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_batterycharging_090.c b/src/displayapp/icons/battery/os_batterycharging_090.c deleted file mode 100644 index 85e1c26..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_090.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_090 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_090 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_090 uint8_t ck_os_batterycharging_090_map[] = { - 0x7c, 0xd2, 0x34, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 2*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 3*/ - - 0xaa, 0xa5, 0x55, 0x55, 0x5a, 0xaa, 0xaa, - 0xaa, 0x95, 0x55, 0x55, 0x56, 0xaa, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, - 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, - 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, - 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, - 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, - 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0xaa, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0xaa, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, 0xaa, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, 0xaa, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, 0xaa, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0x55, 0xaa, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0xaa, 0xaa, - 0x55, 0xa0, 0x00, 0x00, 0x0a, 0xaa, 0xaa, - 0x55, 0xa0, 0x00, 0x00, 0x2a, 0x95, 0xaa, - 0x55, 0xa0, 0x00, 0x00, 0xaa, 0x55, 0xaa, - 0x55, 0xa0, 0x00, 0x02, 0xa9, 0x55, 0xaa, - 0x55, 0xa0, 0x00, 0x0a, 0xa5, 0x56, 0xaa, - 0x55, 0xa0, 0x00, 0x2a, 0x95, 0x56, 0xaa, - 0x55, 0xa0, 0x00, 0xaa, 0x55, 0x5a, 0xaa, - 0x55, 0xa0, 0x00, 0xa9, 0x55, 0x55, 0x55, - 0x55, 0xa0, 0x00, 0xa5, 0x55, 0x55, 0x55, - 0x55, 0xa0, 0x00, 0xa5, 0x55, 0x55, 0x55, - 0x55, 0xa0, 0x00, 0xa5, 0x55, 0x55, 0x56, - 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x5a, - 0x55, 0xaa, 0xaa, 0xaa, 0xa9, 0x55, 0x6a, - 0x55, 0x55, 0x55, 0x55, 0xa5, 0x55, 0xaa, - 0x55, 0x55, 0x55, 0x55, 0xa5, 0x56, 0xaa, - 0x55, 0x55, 0x55, 0x55, 0xa5, 0x5a, 0xaa, - 0x55, 0x55, 0x55, 0x55, 0xa5, 0x6a, 0xaa, -}; - -const lv_img_dsc_t ck_os_batterycharging_090 = { - .header.always_zero = 0, - .header.w = 28, - .header.h = 32, - .data_size = 240, - .header.cf = LV_IMG_CF_INDEXED_2BIT, - .data = ck_os_batterycharging_090_map, -}; diff --git a/src/displayapp/icons/battery/os_batterycharging_090.png b/src/displayapp/icons/battery/os_batterycharging_090.png Binary files differdeleted file mode 100644 index fc7b443..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_090.png +++ /dev/null diff --git a/src/displayapp/icons/battery/os_batterycharging_100.c b/src/displayapp/icons/battery/os_batterycharging_100.c deleted file mode 100644 index 8dec0cb..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_100.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_100 -#define LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_100 -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BATTERYCHARGING_100 uint8_t ck_os_batterycharging_100_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - - 0x03, 0xff, 0xc0, - 0x07, 0xff, 0xe0, - 0x0f, 0xff, 0xf0, - 0x0f, 0xff, 0xf0, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x07, 0x0f, - 0xf0, 0x0f, 0x0f, - 0xf0, 0x1f, 0x0f, - 0xf0, 0x3e, 0x0f, - 0xf0, 0x7e, 0x0f, - 0xf0, 0xfc, 0x0f, - 0xf1, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0xcf, - 0xf3, 0xff, 0x8f, - 0xf0, 0x3f, 0x0f, - 0xf0, 0x7e, 0x0f, - 0xf0, 0x7c, 0x0f, - 0xf0, 0xf8, 0x0f, - 0xf0, 0xf0, 0x0f, - 0xf0, 0xe0, 0x0f, - 0xf0, 0x00, 0x0f, - 0xf0, 0x00, 0x0f, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, -}; - -const lv_img_dsc_t ck_os_batterycharging_100 = { - .header.always_zero = 0, - .header.w = 24, - .header.h = 32, - .data_size = 104, - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .data = ck_os_batterycharging_100_map, -}; diff --git a/src/displayapp/icons/battery/os_batterycharging_100.png b/src/displayapp/icons/battery/os_batterycharging_100.png Binary files differdeleted file mode 100644 index 7c8ce0c..0000000 --- a/src/displayapp/icons/battery/os_batterycharging_100.png +++ /dev/null diff --git a/src/displayapp/icons/bluetooth/ck_os_bt_connected.png b/src/displayapp/icons/bluetooth/ck_os_bt_connected.png Binary files differdeleted file mode 100644 index 5371611..0000000 --- a/src/displayapp/icons/bluetooth/ck_os_bt_connected.png +++ /dev/null diff --git a/src/displayapp/icons/bluetooth/ck_os_bt_disconnected.png b/src/displayapp/icons/bluetooth/ck_os_bt_disconnected.png Binary files differdeleted file mode 100644 index 3275895..0000000 --- a/src/displayapp/icons/bluetooth/ck_os_bt_disconnected.png +++ /dev/null diff --git a/src/displayapp/icons/bluetooth/os_bt_connected.c b/src/displayapp/icons/bluetooth/os_bt_connected.c deleted file mode 100644 index d30dc9d..0000000 --- a/src/displayapp/icons/bluetooth/os_bt_connected.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BT_CONNECTED -#define LV_ATTRIBUTE_IMG_CK_OS_BT_CONNECTED -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BT_CONNECTED uint8_t ck_os_bt_connected_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 1*/ - - 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x0f, 0x00, 0x00, - 0x00, 0x0f, 0x80, 0x00, - 0x00, 0x0f, 0xc0, 0x00, - 0x00, 0x0f, 0xe0, 0x00, - 0x00, 0x0f, 0xf0, 0x00, - 0x03, 0x8f, 0xf8, 0x00, - 0x03, 0xcf, 0x7c, 0x00, - 0x03, 0xef, 0x3e, 0x00, - 0x01, 0xff, 0x1f, 0x00, - 0x00, 0xff, 0x1f, 0x00, - 0x00, 0x7f, 0x3e, 0x00, - 0x00, 0x3f, 0x7c, 0x00, - 0x00, 0x1f, 0xf8, 0x00, - 0x00, 0x0f, 0xf0, 0x00, - 0x00, 0x0f, 0xe0, 0x00, - 0x00, 0x0f, 0xe0, 0x00, - 0x00, 0x0f, 0xf0, 0x00, - 0x00, 0x1f, 0xf8, 0x00, - 0x00, 0x3f, 0x7c, 0x00, - 0x00, 0x7f, 0x3e, 0x00, - 0x00, 0xff, 0x1f, 0x00, - 0x01, 0xff, 0x1f, 0x00, - 0x03, 0xef, 0x3e, 0x00, - 0x03, 0xcf, 0x7c, 0x00, - 0x03, 0x8f, 0xf8, 0x00, - 0x00, 0x0f, 0xf0, 0x00, - 0x00, 0x0f, 0xe0, 0x00, - 0x00, 0x0f, 0xc0, 0x00, - 0x00, 0x0f, 0x80, 0x00, - 0x00, 0x0f, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, -}; - -const lv_img_dsc_t ck_os_bt_connected = { - .header.always_zero = 0, - .header.w = 32, - .header.h = 32, - .data_size = 136, - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .data = ck_os_bt_connected_map, -}; diff --git a/src/displayapp/icons/bluetooth/os_bt_connected.png b/src/displayapp/icons/bluetooth/os_bt_connected.png Binary files differdeleted file mode 100644 index 5371611..0000000 --- a/src/displayapp/icons/bluetooth/os_bt_connected.png +++ /dev/null diff --git a/src/displayapp/icons/bluetooth/os_bt_disconnected.c b/src/displayapp/icons/bluetooth/os_bt_disconnected.c deleted file mode 100644 index 930179b..0000000 --- a/src/displayapp/icons/bluetooth/os_bt_disconnected.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "lvgl/lvgl.h" - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_CK_OS_BT_DISCONNECTED -#define LV_ATTRIBUTE_IMG_CK_OS_BT_DISCONNECTED -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_CK_OS_BT_DISCONNECTED uint8_t ck_os_bt_disconnected_map[] = { - 0x6c, 0xfe, 0x6c, 0xff, /*Color of index 0*/ - 0xc4, 0xc2, 0xc4, 0xff, /*Color of index 1*/ - 0xe4, 0xe6, 0xe4, 0xff, /*Color of index 2*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 3*/ - - 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x80, 0x00, 0x55, 0x40, 0x00, 0x00, 0x00, - 0x2a, 0xa0, 0x00, 0x55, 0x50, 0x00, 0x00, 0x00, - 0x0a, 0xa8, 0x00, 0x55, 0x54, 0x00, 0x00, 0x00, - 0x02, 0xaa, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, - 0x00, 0xaa, 0x80, 0x55, 0x55, 0x40, 0x00, 0x00, - 0x00, 0x2a, 0xa0, 0x55, 0x15, 0x50, 0x00, 0x00, - 0x00, 0x0a, 0xa8, 0x15, 0x05, 0x54, 0x00, 0x00, - 0x00, 0x02, 0xaa, 0x05, 0x01, 0x55, 0x00, 0x00, - 0x00, 0x00, 0xaa, 0x81, 0x01, 0x55, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0xa0, 0x05, 0x54, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xa8, 0x15, 0x50, 0x00, 0x00, - 0x00, 0x00, 0x02, 0xaa, 0x05, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xaa, 0x81, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0xa0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0xa8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x42, 0xaa, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x50, 0xaa, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x05, 0x54, 0x2a, 0xa0, 0x00, 0x00, - 0x00, 0x00, 0x15, 0x55, 0x0a, 0xa8, 0x00, 0x00, - 0x00, 0x00, 0x55, 0x55, 0x02, 0xaa, 0x00, 0x00, - 0x00, 0x01, 0x55, 0x55, 0x00, 0xaa, 0x80, 0x00, - 0x00, 0x05, 0x54, 0x55, 0x04, 0x2a, 0xa0, 0x00, - 0x00, 0x05, 0x50, 0x55, 0x15, 0x0a, 0xa8, 0x00, - 0x00, 0x05, 0x40, 0x55, 0x55, 0x42, 0xaa, 0x00, - 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0xaa, 0x80, - 0x00, 0x00, 0x00, 0x55, 0x54, 0x00, 0x2a, 0xa0, - 0x00, 0x00, 0x00, 0x55, 0x50, 0x00, 0x0a, 0xa8, - 0x00, 0x00, 0x00, 0x55, 0x40, 0x00, 0x02, 0xa8, - 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0xa0, - 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, -}; - -const lv_img_dsc_t ck_os_bt_disconnected = { - .header.always_zero = 0, - .header.w = 32, - .header.h = 32, - .data_size = 272, - .header.cf = LV_IMG_CF_INDEXED_2BIT, - .data = ck_os_bt_disconnected_map, -}; diff --git a/src/displayapp/icons/bluetooth/os_bt_disconnected.png b/src/displayapp/icons/bluetooth/os_bt_disconnected.png Binary files differdeleted file mode 100644 index 3275895..0000000 --- a/src/displayapp/icons/bluetooth/os_bt_disconnected.png +++ /dev/null diff --git a/src/displayapp/icons/music/disc.cpp b/src/displayapp/icons/music/disc.c index 0957873..0957873 100644 --- a/src/displayapp/icons/music/disc.cpp +++ b/src/displayapp/icons/music/disc.c diff --git a/src/displayapp/icons/music/disc_f_1.cpp b/src/displayapp/icons/music/disc_f_1.c index 9b6b741..9b6b741 100644 --- a/src/displayapp/icons/music/disc_f_1.cpp +++ b/src/displayapp/icons/music/disc_f_1.c diff --git a/src/displayapp/icons/music/disc_f_2.cpp b/src/displayapp/icons/music/disc_f_2.c index 3d2331d..3d2331d 100644 --- a/src/displayapp/icons/music/disc_f_2.cpp +++ b/src/displayapp/icons/music/disc_f_2.c diff --git a/src/displayapp/lv_pinetime_theme.c b/src/displayapp/lv_pinetime_theme.c index 4fce5d6..e18742c 100644 --- a/src/displayapp/lv_pinetime_theme.c +++ b/src/displayapp/lv_pinetime_theme.c @@ -26,7 +26,6 @@ static void theme_apply(lv_obj_t* obj, lv_theme_style_t name); **********************/ static lv_theme_t theme; -static lv_style_t style_pad; static lv_style_t style_circle; static lv_style_t style_bg; @@ -77,12 +76,6 @@ static void style_init_reset(lv_style_t* style) { static void basic_init(void) { - style_init_reset(&style_pad); - lv_style_set_pad_top(&style_pad, LV_STATE_DEFAULT, LV_VER_RES / 30); - lv_style_set_pad_bottom(&style_pad, LV_STATE_DEFAULT, LV_VER_RES / 30); - lv_style_set_pad_left(&style_pad, LV_STATE_DEFAULT, LV_VER_RES / 40); - lv_style_set_pad_right(&style_pad, LV_STATE_DEFAULT, LV_VER_RES / 40); - style_init_reset(&style_circle); lv_style_set_radius(&style_circle, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); @@ -113,9 +106,9 @@ static void basic_init(void) { style_init_reset(&style_btn); lv_style_set_radius(&style_btn, LV_STATE_DEFAULT, 10); lv_style_set_bg_opa(&style_btn, LV_STATE_DEFAULT, LV_OPA_COVER); - lv_style_set_bg_color(&style_btn, LV_STATE_DEFAULT, lv_color_hex(0x2F3540)); - lv_style_set_bg_color(&style_btn, LV_STATE_CHECKED, LV_COLOR_GREEN); - lv_style_set_bg_color(&style_btn, LV_STATE_DISABLED, lv_color_hex(0x2F3540)); + lv_style_set_bg_color(&style_btn, LV_STATE_DEFAULT, LV_PINETIME_BLUE); + lv_style_set_bg_color(&style_btn, LV_STATE_CHECKED, LV_COLOR_MAKE(0x0, 0xb0, 0x0)); + lv_style_set_bg_color(&style_btn, LV_STATE_DISABLED, LV_PINETIME_BLUE); lv_style_set_bg_color(&style_btn, LV_STATE_DISABLED | LV_STATE_CHECKED, lv_color_hex3(0x888)); lv_style_set_border_color(&style_btn, LV_STATE_DEFAULT, theme.color_primary); lv_style_set_border_width(&style_btn, LV_STATE_DEFAULT, 0); @@ -166,7 +159,7 @@ static void basic_init(void) { style_init_reset(&style_scrollbar); lv_style_set_bg_opa(&style_scrollbar, LV_STATE_DEFAULT, LV_OPA_COVER); lv_style_set_radius(&style_scrollbar, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); - lv_style_set_bg_color(&style_scrollbar, LV_STATE_DEFAULT, LV_PINETIME_LIGHT_GRAY); + lv_style_set_bg_color(&style_scrollbar, LV_STATE_DEFAULT, LV_COLOR_WHITE); lv_style_set_size(&style_scrollbar, LV_STATE_DEFAULT, LV_HOR_RES / 80); lv_style_set_pad_right(&style_scrollbar, LV_STATE_DEFAULT, LV_HOR_RES / 60); @@ -188,10 +181,13 @@ static void basic_init(void) { lv_style_set_pad_inner(&style_list_btn, LV_STATE_DEFAULT, LV_HOR_RES / 50); style_init_reset(&style_ddlist_list); + // Causes lag unfortunately, so we'll have to live with the selected item overflowing the corner + //lv_style_set_clip_corner(&style_ddlist_list, LV_STATE_DEFAULT, true); lv_style_set_text_line_space(&style_ddlist_list, LV_STATE_DEFAULT, LV_VER_RES / 25); lv_style_set_shadow_width(&style_ddlist_list, LV_STATE_DEFAULT, LV_VER_RES / 20); - lv_style_set_shadow_color(&style_ddlist_list, LV_STATE_DEFAULT, LV_PINETIME_GRAY); - lv_style_set_bg_color(&style_ddlist_list, LV_STATE_DEFAULT, LV_PINETIME_GRAY); + lv_style_set_shadow_color(&style_ddlist_list, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); + lv_style_set_bg_color(&style_ddlist_list, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); + lv_style_set_pad_all(&style_ddlist_list, LV_STATE_DEFAULT, 20); style_init_reset(&style_ddlist_selected); lv_style_set_bg_opa(&style_ddlist_selected, LV_STATE_DEFAULT, LV_OPA_COVER); @@ -204,7 +200,7 @@ static void basic_init(void) { style_init_reset(&style_sw_indic); lv_style_set_bg_opa(&style_sw_indic, LV_STATE_DEFAULT, LV_OPA_COVER); - lv_style_set_bg_color(&style_sw_indic, LV_STATE_DEFAULT, LV_COLOR_GREEN); + lv_style_set_bg_color(&style_sw_indic, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x0, 0xb0, 0x0)); style_init_reset(&style_sw_knob); lv_style_set_bg_opa(&style_sw_knob, LV_STATE_DEFAULT, LV_OPA_COVER); @@ -237,7 +233,7 @@ static void basic_init(void) { lv_style_set_line_rounded(&style_arc_indic, LV_STATE_DEFAULT, true); style_init_reset(&style_arc_bg); - lv_style_set_line_color(&style_arc_bg, LV_STATE_DEFAULT, LV_PINETIME_GRAY); + lv_style_set_line_color(&style_arc_bg, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); lv_style_set_line_width(&style_arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); lv_style_set_line_rounded(&style_arc_bg, LV_STATE_DEFAULT, true); lv_style_set_pad_all(&style_arc_bg, LV_STATE_DEFAULT, LV_DPX(5)); @@ -245,7 +241,7 @@ static void basic_init(void) { lv_style_reset(&style_arc_knob); lv_style_set_radius(&style_arc_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); lv_style_set_bg_opa(&style_arc_knob, LV_STATE_DEFAULT, LV_OPA_COVER); - lv_style_set_bg_color(&style_arc_knob, LV_STATE_DEFAULT, LV_PINETIME_LIGHT_GRAY); + lv_style_set_bg_color(&style_arc_knob, LV_STATE_DEFAULT, LV_COLOR_WHITE); lv_style_set_pad_all(&style_arc_knob, LV_STATE_DEFAULT, LV_DPX(5)); style_init_reset(&style_table_cell); @@ -479,13 +475,11 @@ static void theme_apply(lv_obj_t* obj, lv_theme_style_t name) { lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_MAIN); list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN); _lv_style_list_add_style(list, &style_btn); - _lv_style_list_add_style(list, &style_pad); lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_LIST); list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_LIST); _lv_style_list_add_style(list, &style_box); _lv_style_list_add_style(list, &style_ddlist_list); - _lv_style_list_add_style(list, &style_pad); lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SELECTED); list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SELECTED); diff --git a/src/displayapp/lv_pinetime_theme.h b/src/displayapp/lv_pinetime_theme.h index 714c424..67cee0f 100644 --- a/src/displayapp/lv_pinetime_theme.h +++ b/src/displayapp/lv_pinetime_theme.h @@ -23,7 +23,7 @@ extern "C" { #define LV_PINETIME_LIGHT lv_color_hex(0xf3f8fe) #define LV_PINETIME_GRAY lv_color_hex(0x8a8a8a) #define LV_PINETIME_LIGHT_GRAY lv_color_hex(0xc4c4c4) -#define LV_PINETIME_BLUE lv_color_hex(0x2f3540) +#define LV_PINETIME_BLUE lv_color_hex(0x5d697e) #define LV_PINETIME_GREEN lv_color_hex(0x4cb242) #define LV_PINETIME_RED lv_color_hex(0xd51732) diff --git a/src/displayapp/screens/Alarm.cpp b/src/displayapp/screens/Alarm.cpp index 2557242..cfb151c 100644 --- a/src/displayapp/screens/Alarm.cpp +++ b/src/displayapp/screens/Alarm.cpp @@ -40,7 +40,7 @@ Alarm::Alarm(DisplayApp* app, time = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_font(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_76); - lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); alarmHours = alarmController.Hours(); alarmMinutes = alarmController.Minutes(); @@ -50,7 +50,7 @@ Alarm::Alarm(DisplayApp* app, lblampm = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_font(lblampm, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_bold_20); - lv_obj_set_style_local_text_color(lblampm, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_text_color(lblampm, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); lv_label_set_text_static(lblampm, " "); lv_label_set_align(lblampm, LV_LABEL_ALIGN_CENTER); lv_obj_align(lblampm, lv_scr_act(), LV_ALIGN_CENTER, 0, 30); @@ -300,8 +300,12 @@ void Alarm::ShowInfo() { auto minToAlarm = (timeToAlarm % 3600) / 60; auto secToAlarm = timeToAlarm % 60; - lv_label_set_text_fmt( - txtMessage, "Time to\nalarm:\n%2lu Days\n%2lu Hours\n%2lu Minutes\n%2lu Seconds", daysToAlarm, hrsToAlarm, minToAlarm, secToAlarm); + lv_label_set_text_fmt(txtMessage, + "Time to\nalarm:\n%2lu Days\n%2lu Hours\n%2lu Minutes\n%2lu Seconds", + daysToAlarm, + hrsToAlarm, + minToAlarm, + secToAlarm); } else { lv_label_set_text_static(txtMessage, "Alarm\nis not\nset."); } diff --git a/src/displayapp/screens/Alarm.h b/src/displayapp/screens/Alarm.h index f74dd68..80e446f 100644 --- a/src/displayapp/screens/Alarm.h +++ b/src/displayapp/screens/Alarm.h @@ -45,8 +45,8 @@ namespace Pinetime { Controllers::Settings& settingsController; System::SystemTask& systemTask; - lv_obj_t *time, *lblampm, *btnStop, *txtStop, *btnMinutesUp, *btnMinutesDown, *btnHoursUp, *btnHoursDown, *txtMinUp, - *txtMinDown, *txtHrUp, *txtHrDown, *btnRecur, *txtRecur, *btnInfo, *txtInfo, *enableSwitch; + lv_obj_t *time, *lblampm, *btnStop, *txtStop, *btnMinutesUp, *btnMinutesDown, *btnHoursUp, *btnHoursDown, *txtMinUp, *txtMinDown, + *txtHrUp, *txtHrDown, *btnRecur, *txtRecur, *btnInfo, *txtInfo, *enableSwitch; lv_obj_t* txtMessage = nullptr; lv_obj_t* btnMessage = nullptr; lv_task_t* taskStopAlarm = nullptr; diff --git a/src/displayapp/screens/BatteryIcon.cpp b/src/displayapp/screens/BatteryIcon.cpp index 08aaab7..2fe7c25 100644 --- a/src/displayapp/screens/BatteryIcon.cpp +++ b/src/displayapp/screens/BatteryIcon.cpp @@ -1,23 +1,34 @@ #include "displayapp/screens/BatteryIcon.h" #include <cstdint> #include "displayapp/screens/Symbols.h" +#include "displayapp/icons/battery/batteryicon.c" using namespace Pinetime::Applications::Screens; -const char* BatteryIcon::GetBatteryIcon(uint8_t batteryPercent) { - if (batteryPercent > 87) - return Symbols::batteryFull; - if (batteryPercent > 62) - return Symbols::batteryThreeQuarter; - if (batteryPercent > 37) - return Symbols::batteryHalf; - if (batteryPercent > 12) - return Symbols::batteryOneQuarter; - return Symbols::batteryEmpty; +void BatteryIcon::Create(lv_obj_t* parent) { + batteryImg = lv_img_create(parent, nullptr); + lv_img_set_src(batteryImg, &batteryicon); + lv_obj_set_style_local_image_recolor(batteryImg, LV_IMG_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + + batteryJuice = lv_obj_create(batteryImg, nullptr); + lv_obj_set_width(batteryJuice, 8); + lv_obj_align(batteryJuice, nullptr, LV_ALIGN_IN_BOTTOM_RIGHT, -2, -2); + lv_obj_set_style_local_radius(batteryJuice, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, 0); +} + +lv_obj_t* BatteryIcon::GetObject() { + return batteryImg; +} + +void BatteryIcon::SetBatteryPercentage(uint8_t percentage) { + lv_obj_set_height(batteryJuice, percentage * 14 / 100); + lv_obj_realign(batteryJuice); } -const char* BatteryIcon::GetUnknownIcon() { - return Symbols::batteryEmpty; +void BatteryIcon::SetColor(lv_color_t color) { + lv_obj_set_style_local_image_recolor(batteryImg, LV_IMG_PART_MAIN, LV_STATE_DEFAULT, color); + lv_obj_set_style_local_image_recolor_opa(batteryImg, LV_IMG_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_obj_set_style_local_bg_color(batteryJuice, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, color); } const char* BatteryIcon::GetPlugIcon(bool isCharging) { diff --git a/src/displayapp/screens/BatteryIcon.h b/src/displayapp/screens/BatteryIcon.h index bec2e4e..45d8f0e 100644 --- a/src/displayapp/screens/BatteryIcon.h +++ b/src/displayapp/screens/BatteryIcon.h @@ -1,15 +1,25 @@ #pragma once #include <cstdint> +#include <lvgl/src/lv_core/lv_obj.h> namespace Pinetime { namespace Applications { namespace Screens { class BatteryIcon { public: + void Create(lv_obj_t* parent); + + void SetColor(lv_color_t); + void SetBatteryPercentage(uint8_t percentage); + lv_obj_t* GetObject(); + static const char* GetUnknownIcon(); - static const char* GetBatteryIcon(uint8_t batteryPercent); static const char* GetPlugIcon(bool isCharging); + + private: + lv_obj_t* batteryImg; + lv_obj_t* batteryJuice; }; } } -}
\ No newline at end of file +} diff --git a/src/displayapp/screens/BatteryInfo.cpp b/src/displayapp/screens/BatteryInfo.cpp index e17de9a..d9d479f 100644 --- a/src/displayapp/screens/BatteryInfo.cpp +++ b/src/displayapp/screens/BatteryInfo.cpp @@ -33,17 +33,11 @@ BatteryInfo::BatteryInfo(Pinetime::Applications::DisplayApp* app, Pinetime::Cont lv_obj_align(percent, nullptr, LV_ALIGN_CENTER, 0, -60); voltage = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_text_color(voltage, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xC6A600)); + lv_obj_set_style_local_text_color(voltage, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xff, 0xb0, 0x0)); lv_label_set_text_fmt(voltage, "%1i.%02i volts", batteryVoltage / 1000, batteryVoltage % 1000 / 10); lv_label_set_align(voltage, LV_LABEL_ALIGN_CENTER); lv_obj_align(voltage, nullptr, LV_ALIGN_CENTER, 0, 95); - lv_obj_t* backgroundLabel = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP); - lv_obj_set_size(backgroundLabel, 240, 240); - lv_obj_set_pos(backgroundLabel, 0, 0); - lv_label_set_text_static(backgroundLabel, ""); - taskRefresh = lv_task_create(RefreshTaskCallback, 5000, LV_TASK_PRIO_MID, this); Refresh(); } @@ -68,7 +62,7 @@ void BatteryInfo::Refresh() { lv_obj_set_style_local_bg_color(charging_bar, LV_BAR_PART_INDIC, LV_STATE_DEFAULT, LV_COLOR_YELLOW); lv_label_set_text_static(status, "Battery low"); } else { - lv_obj_set_style_local_bg_color(charging_bar, LV_BAR_PART_INDIC, LV_STATE_DEFAULT, LV_COLOR_GREEN); + lv_obj_set_style_local_bg_color(charging_bar, LV_BAR_PART_INDIC, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x0, 0xb0, 0x0)); lv_label_set_text_static(status, "Discharging"); } diff --git a/src/displayapp/screens/Brightness.cpp b/src/displayapp/screens/Brightness.cpp deleted file mode 100644 index d9901ae..0000000 --- a/src/displayapp/screens/Brightness.cpp +++ /dev/null @@ -1,103 +0,0 @@ -#include "displayapp/screens/Brightness.h" -#include <lvgl/lvgl.h> - -using namespace Pinetime::Applications::Screens; - -void slider_event_cb(lv_obj_t* slider, lv_event_t event) { - if (event == LV_EVENT_VALUE_CHANGED) { - auto* brightnessSlider = static_cast<Brightness*>(slider->user_data); - brightnessSlider->OnValueChanged(); - } -} - -Brightness::Brightness(Pinetime::Applications::DisplayApp* app, Controllers::BrightnessController& brightness) - : Screen(app), brightness {brightness} { - slider = lv_slider_create(lv_scr_act(), nullptr); - lv_obj_set_user_data(slider, this); - lv_obj_set_width(slider, LV_DPI * 2); - lv_obj_align(slider, nullptr, LV_ALIGN_CENTER, 0, 0); - lv_obj_set_event_cb(slider, slider_event_cb); - lv_slider_set_range(slider, 0, 2); - lv_slider_set_value(slider, LevelToInt(brightness.Level()), LV_ANIM_OFF); - - slider_label = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text(slider_label, LevelToString(brightness.Level())); - lv_obj_set_auto_realign(slider_label, true); - lv_obj_align(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 30); -} - -Brightness::~Brightness() { - lv_obj_clean(lv_scr_act()); -} - -const char* Brightness::LevelToString(Pinetime::Controllers::BrightnessController::Levels level) { - switch (level) { - case Pinetime::Controllers::BrightnessController::Levels::Off: - return "Off"; - case Pinetime::Controllers::BrightnessController::Levels::Low: - return "Low"; - case Pinetime::Controllers::BrightnessController::Levels::Medium: - return "Medium"; - case Pinetime::Controllers::BrightnessController::Levels::High: - return "High"; - default: - return "???"; - } -} - -void Brightness::OnValueChanged() { - SetValue(lv_slider_get_value(slider)); -} - -void Brightness::SetValue(uint8_t value) { - switch (value) { - case 0: - brightness.Set(Controllers::BrightnessController::Levels::Low); - break; - case 1: - brightness.Set(Controllers::BrightnessController::Levels::Medium); - break; - case 2: - brightness.Set(Controllers::BrightnessController::Levels::High); - break; - } - lv_label_set_text(slider_label, LevelToString(brightness.Level())); -} - -uint8_t Brightness::LevelToInt(Pinetime::Controllers::BrightnessController::Levels level) { - switch (level) { - case Pinetime::Controllers::BrightnessController::Levels::Off: - return 0; - case Pinetime::Controllers::BrightnessController::Levels::Low: - return 0; - case Pinetime::Controllers::BrightnessController::Levels::Medium: - return 1; - case Pinetime::Controllers::BrightnessController::Levels::High: - return 2; - default: - return 0; - } -} - -bool Brightness::OnTouchEvent(Pinetime::Applications::TouchEvents event) { - switch (event) { - case TouchEvents::SwipeLeft: - brightness.Lower(); - if (brightness.Level() == Pinetime::Controllers::BrightnessController::Levels::Off) { - brightness.Set(Controllers::BrightnessController::Levels::Low); - } - SetValue(); - return true; - case TouchEvents::SwipeRight: - brightness.Higher(); - SetValue(); - return true; - default: - return false; - } -} - -void Brightness::SetValue() { - lv_slider_set_value(slider, LevelToInt(brightness.Level()), LV_ANIM_OFF); - lv_label_set_text(slider_label, LevelToString(brightness.Level())); -} diff --git a/src/displayapp/screens/Brightness.h b/src/displayapp/screens/Brightness.h deleted file mode 100644 index 693570c..0000000 --- a/src/displayapp/screens/Brightness.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include <lvgl/src/lv_core/lv_obj.h> -#include <cstdint> -#include "displayapp/screens/Screen.h" -#include "components/brightness/BrightnessController.h" - -namespace Pinetime { - namespace Applications { - namespace Screens { - class Brightness : public Screen { - public: - Brightness(DisplayApp* app, Controllers::BrightnessController& brightness); - ~Brightness() override; - - bool OnTouchEvent(TouchEvents event) override; - - void OnValueChanged(); - - private: - Controllers::BrightnessController& brightness; - - lv_obj_t* slider_label; - lv_obj_t* slider; - - const char* LevelToString(Controllers::BrightnessController::Levels level); - uint8_t LevelToInt(Controllers::BrightnessController::Levels level); - void SetValue(uint8_t value); - void SetValue(); - }; - } - } -} diff --git a/src/displayapp/screens/Clock.cpp b/src/displayapp/screens/Clock.cpp index 67598c0..6e4e9af 100644 --- a/src/displayapp/screens/Clock.cpp +++ b/src/displayapp/screens/Clock.cpp @@ -12,7 +12,7 @@ #include "displayapp/screens/WatchFaceTerminal.h" #include "displayapp/screens/WatchFaceAnalog.h" #include "displayapp/screens/WatchFaceAnalog24.h" -#include "displayapp/screens/PineTimeStyle.h" +#include "displayapp/screens/WatchFacePineTimeStyle.h" using namespace Pinetime::Applications::Screens; @@ -44,7 +44,7 @@ Clock::Clock(DisplayApp* app, return WatchFaceAnalog24Screen(); break; case 3: - return PineTimeStyleScreen(); + return WatchFacePineTimeStyleScreen(); break; case 4: return WatchFaceTerminalScreen(); @@ -79,8 +79,12 @@ std::unique_ptr<Screen> Clock::WatchFaceDigitalScreen() { } std::unique_ptr<Screen> Clock::WatchFaceAnalogScreen() { - return std::make_unique<Screens::WatchFaceAnalog>( - app, dateTimeController, batteryController, bleController, notificatioManager, settingsController); + return std::make_unique<Screens::WatchFaceAnalog>(app, + dateTimeController, + batteryController, + bleController, + notificatioManager, + settingsController); } std::unique_ptr<Screen> Clock::WatchFaceAnalog24Screen() { @@ -94,9 +98,14 @@ std::unique_ptr<Screen> Clock::WatchFaceAnalog24Screen() { motionController); } -std::unique_ptr<Screen> Clock::PineTimeStyleScreen() { - return std::make_unique<Screens::PineTimeStyle>( - app, dateTimeController, batteryController, bleController, notificatioManager, settingsController, motionController); +std::unique_ptr<Screen> Clock::WatchFacePineTimeStyleScreen() { + return std::make_unique<Screens::WatchFacePineTimeStyle>(app, + dateTimeController, + batteryController, + bleController, + notificatioManager, + settingsController, + motionController); } std::unique_ptr<Screen> Clock::WatchFaceTerminalScreen() { diff --git a/src/displayapp/screens/Clock.h b/src/displayapp/screens/Clock.h index 2fcb1e6..3b5d896 100644 --- a/src/displayapp/screens/Clock.h +++ b/src/displayapp/screens/Clock.h @@ -47,7 +47,7 @@ namespace Pinetime { std::unique_ptr<Screen> WatchFaceDigitalScreen(); std::unique_ptr<Screen> WatchFaceAnalogScreen(); std::unique_ptr<Screen> WatchFaceAnalog24Screen(); - std::unique_ptr<Screen> PineTimeStyleScreen(); + std::unique_ptr<Screen> WatchFacePineTimeStyleScreen(); std::unique_ptr<Screen> WatchFaceTerminalScreen(); }; } diff --git a/src/displayapp/screens/Error.cpp b/src/displayapp/screens/Error.cpp index d546d61..82cb706 100644 --- a/src/displayapp/screens/Error.cpp +++ b/src/displayapp/screens/Error.cpp @@ -9,8 +9,7 @@ namespace { } } -Error::Error(Pinetime::Applications::DisplayApp* app, System::BootErrors error) - : Screen(app) { +Error::Error(Pinetime::Applications::DisplayApp* app, System::BootErrors error) : Screen(app) { lv_obj_t* warningLabel = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_color(warningLabel, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_ORANGE); diff --git a/src/displayapp/screens/Error.h b/src/displayapp/screens/Error.h index 2316754..6dbcc38 100644 --- a/src/displayapp/screens/Error.h +++ b/src/displayapp/screens/Error.h @@ -13,6 +13,7 @@ namespace Pinetime { ~Error() override; void ButtonEventHandler(); + private: lv_obj_t* btnOk; }; diff --git a/src/displayapp/screens/FirmwareUpdate.cpp b/src/displayapp/screens/FirmwareUpdate.cpp index 0a8544b..01530e1 100644 --- a/src/displayapp/screens/FirmwareUpdate.cpp +++ b/src/displayapp/screens/FirmwareUpdate.cpp @@ -8,26 +8,19 @@ using namespace Pinetime::Applications::Screens; FirmwareUpdate::FirmwareUpdate(Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::Ble& bleController) : Screen(app), bleController {bleController} { - lv_obj_t* backgroundLabel = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP); - lv_obj_set_size(backgroundLabel, 240, 240); - lv_obj_set_pos(backgroundLabel, 0, 0); - lv_label_set_text_static(backgroundLabel, ""); - titleLabel = lv_label_create(lv_scr_act(), nullptr); lv_label_set_text_static(titleLabel, "Firmware update"); - lv_obj_set_auto_realign(titleLabel, true); lv_obj_align(titleLabel, nullptr, LV_ALIGN_IN_TOP_MID, 0, 50); bar1 = lv_bar_create(lv_scr_act(), nullptr); lv_obj_set_size(bar1, 200, 30); lv_obj_align(bar1, nullptr, LV_ALIGN_CENTER, 0, 0); - lv_bar_set_anim_time(bar1, 10); - lv_bar_set_range(bar1, 0, 100); + lv_bar_set_range(bar1, 0, 1000); lv_bar_set_value(bar1, 0, LV_ANIM_OFF); percentLabel = lv_label_create(lv_scr_act(), nullptr); lv_label_set_text_static(percentLabel, "Waiting..."); + lv_label_set_recolor(percentLabel, true); lv_obj_set_auto_realign(percentLabel, true); lv_obj_align(percentLabel, bar1, LV_ALIGN_OUT_TOP_MID, 0, 60); taskRefresh = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this); @@ -55,8 +48,9 @@ void FirmwareUpdate::Refresh() { } break; case Pinetime::Controllers::Ble::FirmwareUpdateStates::Running: - if (state != States::Running) + if (state != States::Running) { state = States::Running; + } DisplayProgression(); break; case Pinetime::Controllers::Ble::FirmwareUpdateStates::Validated: @@ -78,21 +72,20 @@ void FirmwareUpdate::Refresh() { } void FirmwareUpdate::DisplayProgression() const { - float current = bleController.FirmwareUpdateCurrentBytes() / 1024.0f; - float total = bleController.FirmwareUpdateTotalBytes() / 1024.0f; - int16_t pc = (current / total) * 100.0f; - lv_label_set_text_fmt(percentLabel, "%d %%", pc); + const uint32_t current = bleController.FirmwareUpdateCurrentBytes(); + const uint32_t total = bleController.FirmwareUpdateTotalBytes(); + const int16_t permille = current / (total / 1000); - lv_bar_set_value(bar1, pc, LV_ANIM_OFF); + lv_label_set_text_fmt(percentLabel, "%d %%", permille / 10); + + lv_bar_set_value(bar1, permille, LV_ANIM_OFF); } void FirmwareUpdate::UpdateValidated() { - lv_label_set_recolor(percentLabel, true); lv_label_set_text_static(percentLabel, "#00ff00 Image Ok!#"); } void FirmwareUpdate::UpdateError() { - lv_label_set_recolor(percentLabel, true); lv_label_set_text_static(percentLabel, "#ff0000 Error!#"); startTime = xTaskGetTickCount(); } diff --git a/src/displayapp/screens/FirmwareValidation.cpp b/src/displayapp/screens/FirmwareValidation.cpp index 16244ad..a3c9761 100644 --- a/src/displayapp/screens/FirmwareValidation.cpp +++ b/src/displayapp/screens/FirmwareValidation.cpp @@ -7,11 +7,10 @@ using namespace Pinetime::Applications::Screens; namespace { - static void ButtonEventHandler(lv_obj_t* obj, lv_event_t event) { - FirmwareValidation* screen = static_cast<FirmwareValidation*>(obj->user_data); + void ButtonEventHandler(lv_obj_t* obj, lv_event_t event) { + auto* screen = static_cast<FirmwareValidation*>(obj->user_data); screen->OnButtonEvent(obj, event); } - } FirmwareValidation::FirmwareValidation(Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::FirmwareValidator& validator) @@ -35,14 +34,15 @@ FirmwareValidation::FirmwareValidation(Pinetime::Applications::DisplayApp* app, if (validator.IsValidated()) lv_label_set_text_static(labelIsValidated, "You have already\n#00ff00 validated# this firmware#"); else { - lv_label_set_text_static(labelIsValidated, "Please #00ff00 Validate# this version or\n#ff0000 Reset# to rollback to the previous version."); + lv_label_set_text_static(labelIsValidated, + "Please #00ff00 Validate# this version or\n#ff0000 Reset# to rollback to the previous version."); buttonValidate = lv_btn_create(lv_scr_act(), nullptr); buttonValidate->user_data = this; lv_obj_set_size(buttonValidate, 115, 50); lv_obj_align(buttonValidate, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); lv_obj_set_event_cb(buttonValidate, ButtonEventHandler); - lv_obj_set_style_local_bg_color(buttonValidate, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x009900)); + lv_obj_set_style_local_bg_color(buttonValidate, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x0, 0xb0, 0x0)); labelButtonValidate = lv_label_create(buttonValidate, nullptr); lv_label_set_text_static(labelButtonValidate, "Validate"); @@ -51,7 +51,7 @@ FirmwareValidation::FirmwareValidation(Pinetime::Applications::DisplayApp* app, buttonReset->user_data = this; lv_obj_set_size(buttonReset, 115, 50); lv_obj_align(buttonReset, nullptr, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); - lv_obj_set_style_local_bg_color(buttonReset, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x990000)); + lv_obj_set_style_local_bg_color(buttonReset, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0x0, 0x0)); lv_obj_set_event_cb(buttonReset, ButtonEventHandler); labelButtonReset = lv_label_create(buttonReset, nullptr); diff --git a/src/displayapp/screens/FlashLight.cpp b/src/displayapp/screens/FlashLight.cpp index 0634187..2a1884f 100644 --- a/src/displayapp/screens/FlashLight.cpp +++ b/src/displayapp/screens/FlashLight.cpp @@ -28,7 +28,7 @@ FlashLight::FlashLight(Pinetime::Applications::DisplayApp* app, lv_label_set_text_static(flashLight, Symbols::highlight); lv_obj_align(flashLight, nullptr, LV_ALIGN_CENTER, 0, 0); - for (auto & i : indicators) { + for (auto& i : indicators) { i = lv_obj_create(lv_scr_act(), nullptr); lv_obj_set_size(i, 15, 10); lv_obj_set_style_local_border_width(i, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, 2); @@ -63,16 +63,16 @@ FlashLight::~FlashLight() { void FlashLight::SetColors() { if (isOn) { lv_obj_set_style_local_bg_color(lv_scr_act(), LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE); - lv_obj_set_style_local_text_color(flashLight, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); - for (auto & i : indicators) { - lv_obj_set_style_local_bg_color(i, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_text_color(flashLight, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); + for (auto& i : indicators) { + lv_obj_set_style_local_bg_color(i, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); lv_obj_set_style_local_bg_color(i, LV_OBJ_PART_MAIN, LV_STATE_DISABLED, LV_COLOR_WHITE); - lv_obj_set_style_local_border_color(i, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_border_color(i, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); } } else { lv_obj_set_style_local_bg_color(lv_scr_act(), LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); lv_obj_set_style_local_text_color(flashLight, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE); - for (auto & i : indicators) { + for (auto& i : indicators) { lv_obj_set_style_local_bg_color(i, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE); lv_obj_set_style_local_bg_color(i, LV_OBJ_PART_MAIN, LV_STATE_DISABLED, LV_COLOR_BLACK); lv_obj_set_style_local_border_color(i, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE); diff --git a/src/displayapp/screens/HeartRate.cpp b/src/displayapp/screens/HeartRate.cpp index 89b43bb..35e06bb 100644 --- a/src/displayapp/screens/HeartRate.cpp +++ b/src/displayapp/screens/HeartRate.cpp @@ -21,8 +21,8 @@ namespace { return ""; } - static void btnStartStopEventHandler(lv_obj_t* obj, lv_event_t event) { - HeartRate* screen = static_cast<HeartRate*>(obj->user_data); + void btnStartStopEventHandler(lv_obj_t* obj, lv_event_t event) { + auto* screen = static_cast<HeartRate*>(obj->user_data); screen->OnStartStopEvent(event); } } @@ -37,9 +37,9 @@ HeartRate::HeartRate(Pinetime::Applications::DisplayApp* app, lv_obj_set_style_local_text_font(label_hr, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_76); if (isHrRunning) - lv_obj_set_style_local_text_color(label_hr, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GREEN); + lv_obj_set_style_local_text_color(label_hr, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x0, 0xb0, 0x0)); else - lv_obj_set_style_local_text_color(label_hr, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_text_color(label_hr, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); lv_label_set_text_static(label_hr, "000"); lv_obj_align(label_hr, nullptr, LV_ALIGN_CENTER, 0, -40); @@ -49,7 +49,7 @@ HeartRate::HeartRate(Pinetime::Applications::DisplayApp* app, lv_obj_align(label_bpm, label_hr, LV_ALIGN_OUT_TOP_MID, 0, -20); label_status = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_text_color(label_status, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x222222)); + lv_obj_set_style_local_text_color(label_status, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); lv_label_set_text_static(label_status, ToString(Pinetime::Controllers::HeartRateController::States::NotEnoughData)); lv_obj_align(label_status, label_hr, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); @@ -97,12 +97,12 @@ void HeartRate::OnStartStopEvent(lv_event_t event) { heartRateController.Start(); UpdateStartStopButton(heartRateController.State() != Controllers::HeartRateController::States::Stopped); systemTask.PushMessage(Pinetime::System::Messages::DisableSleeping); - lv_obj_set_style_local_text_color(label_hr, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GREEN); + lv_obj_set_style_local_text_color(label_hr, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x0, 0xb0, 0x0)); } else { heartRateController.Stop(); UpdateStartStopButton(heartRateController.State() != Controllers::HeartRateController::States::Stopped); systemTask.PushMessage(Pinetime::System::Messages::EnableSleeping); - lv_obj_set_style_local_text_color(label_hr, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_text_color(label_hr, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); } } } diff --git a/src/displayapp/screens/InfiniPaint.cpp b/src/displayapp/screens/InfiniPaint.cpp index d279faf..733b4e2 100644 --- a/src/displayapp/screens/InfiniPaint.cpp +++ b/src/displayapp/screens/InfiniPaint.cpp @@ -26,7 +26,7 @@ bool InfiniPaint::OnTouchEvent(Pinetime::Applications::TouchEvents event) { selectColor = LV_COLOR_MAGENTA; break; case 1: - selectColor = LV_COLOR_GREEN; + selectColor = LV_COLOR_MAKE(0x0, 0xb0, 0x0); break; case 2: selectColor = LV_COLOR_WHITE; diff --git a/src/displayapp/screens/Label.cpp b/src/displayapp/screens/Label.cpp index 62ec1f0..4486d6f 100644 --- a/src/displayapp/screens/Label.cpp +++ b/src/displayapp/screens/Label.cpp @@ -27,7 +27,7 @@ Label::Label(uint8_t screenID, uint8_t numScreens, Pinetime::Applications::Displ pageIndicator = lv_line_create(lv_scr_act(), NULL); lv_obj_set_style_local_line_width(pageIndicator, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, 3); - lv_obj_set_style_local_line_color(pageIndicator, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_line_color(pageIndicator, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); lv_obj_set_style_local_line_rounded(pageIndicator, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, true); lv_line_set_points(pageIndicator, pageIndicatorPoints, 2); } diff --git a/src/displayapp/screens/List.cpp b/src/displayapp/screens/List.cpp index af3f30f..0bc7da8 100644 --- a/src/displayapp/screens/List.cpp +++ b/src/displayapp/screens/List.cpp @@ -5,11 +5,10 @@ using namespace Pinetime::Applications::Screens; namespace { - static void ButtonEventHandler(lv_obj_t* obj, lv_event_t event) { - List* screen = static_cast<List*>(obj->user_data); + void ButtonEventHandler(lv_obj_t* obj, lv_event_t event) { + auto* screen = static_cast<List*>(obj->user_data); screen->OnButtonEvent(obj, event); } - } List::List(uint8_t screenID, @@ -45,7 +44,7 @@ List::List(uint8_t screenID, pageIndicator = lv_line_create(lv_scr_act(), NULL); lv_obj_set_style_local_line_width(pageIndicator, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, 3); - lv_obj_set_style_local_line_color(pageIndicator, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_line_color(pageIndicator, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); lv_line_set_points(pageIndicator, pageIndicatorPoints, 2); } @@ -68,7 +67,7 @@ List::List(uint8_t screenID, if (applications[i].application != Apps::None) { itemApps[i] = lv_btn_create(container1, nullptr); - lv_obj_set_style_local_bg_opa(itemApps[i], LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_20); + lv_obj_set_style_local_bg_opa(itemApps[i], LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_50); lv_obj_set_style_local_radius(itemApps[i], LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 57); lv_obj_set_style_local_bg_color(itemApps[i], LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_AQUA); @@ -86,12 +85,6 @@ List::List(uint8_t screenID, lv_label_set_text_fmt(labelBt, " %s", applications[i].name); } } - - lv_obj_t* backgroundLabel = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP); - lv_obj_set_size(backgroundLabel, LV_HOR_RES, LV_VER_RES); - lv_obj_set_pos(backgroundLabel, 0, 0); - lv_label_set_text_static(backgroundLabel, ""); } List::~List() { diff --git a/src/displayapp/screens/List.h b/src/displayapp/screens/List.h index 023de3a..88ef28e 100644 --- a/src/displayapp/screens/List.h +++ b/src/displayapp/screens/List.h @@ -2,7 +2,7 @@ #include <lvgl/lvgl.h> #include <cstdint> -#include <memory> +#include <array> #include "displayapp/screens/Screen.h" #include "displayapp/Apps.h" #include "components/settings/Settings.h" diff --git a/src/displayapp/screens/Meter.cpp b/src/displayapp/screens/Meter.cpp deleted file mode 100644 index 9c85310..0000000 --- a/src/displayapp/screens/Meter.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "displayapp/screens/Meter.h" -#include <lvgl/lvgl.h> -#include "displayapp/DisplayApp.h" - -using namespace Pinetime::Applications::Screens; - -Meter::Meter(Pinetime::Applications::DisplayApp* app) : Screen(app) { - - /*Create a line meter */ - lmeter = lv_linemeter_create(lv_scr_act(), nullptr); - lv_linemeter_set_range(lmeter, 0, 60); /*Set the range*/ - lv_linemeter_set_value(lmeter, value); /*Set the current value*/ - lv_linemeter_set_angle_offset(lmeter, 180); - lv_linemeter_set_scale(lmeter, 360, 60); /*Set the angle and number of lines*/ - - lv_obj_set_style_local_scale_end_color(lmeter, LV_LINEMETER_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(255, 0, 0)); - lv_obj_set_style_local_scale_grad_color(lmeter, LV_LINEMETER_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(160, 0, 0)); - lv_obj_set_style_local_line_width(lmeter, LV_LINEMETER_PART_MAIN, LV_STATE_DEFAULT, 2); - lv_obj_set_style_local_line_color(lmeter, LV_LINEMETER_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_SILVER); - - lv_obj_set_size(lmeter, 200, 200); - lv_obj_align(lmeter, nullptr, LV_ALIGN_CENTER, 0, 0); - - taskRefresh = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this); -} - -Meter::~Meter() { - lv_task_del(taskRefresh); - lv_obj_clean(lv_scr_act()); -} - -void Meter::Refresh() { - lv_linemeter_set_value(lmeter, value++); /*Set the current value*/ - if (value >= 60) - value = 0; -} diff --git a/src/displayapp/screens/Meter.h b/src/displayapp/screens/Meter.h deleted file mode 100644 index 50d9f83..0000000 --- a/src/displayapp/screens/Meter.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include <cstdint> -#include "displayapp/screens/Screen.h" -#include <lvgl/src/lv_core/lv_style.h> -#include <lvgl/src/lv_core/lv_obj.h> - -namespace Pinetime { - namespace Applications { - namespace Screens { - - class Meter : public Screen { - public: - Meter(DisplayApp* app); - ~Meter() override; - - void Refresh() override; - - private: - lv_style_t style_lmeter; - lv_obj_t* lmeter; - - uint32_t value = 0; - - lv_task_t* taskRefresh; - }; - } - } -} diff --git a/src/displayapp/screens/Metronome.cpp b/src/displayapp/screens/Metronome.cpp index 8b511ca..734910b 100644 --- a/src/displayapp/screens/Metronome.cpp +++ b/src/displayapp/screens/Metronome.cpp @@ -12,7 +12,7 @@ namespace { lv_obj_t* createLabel(const char* name, lv_obj_t* reference, lv_align_t align, lv_font_t* font, uint8_t x, uint8_t y) { lv_obj_t* label = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_font(label, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, font); - lv_obj_set_style_local_text_color(label, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_text_color(label, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); lv_label_set_text(label, name); lv_obj_align(label, reference, align, x, y); @@ -47,8 +47,6 @@ Metronome::Metronome(DisplayApp* app, Controllers::MotorController& motorControl bpbDropdown = lv_dropdown_create(lv_scr_act(), nullptr); bpbDropdown->user_data = this; lv_obj_set_event_cb(bpbDropdown, eventHandler); - lv_obj_set_style_local_pad_left(bpbDropdown, LV_DROPDOWN_PART_MAIN, LV_STATE_DEFAULT, 20); - lv_obj_set_style_local_pad_left(bpbDropdown, LV_DROPDOWN_PART_LIST, LV_STATE_DEFAULT, 20); lv_obj_set_size(bpbDropdown, 115, 50); lv_obj_align(bpbDropdown, nullptr, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); lv_dropdown_set_options(bpbDropdown, "1\n2\n3\n4\n5\n6\n7\n8\n9"); diff --git a/src/displayapp/screens/Metronome.h b/src/displayapp/screens/Metronome.h index 6e6589f..8933b17 100644 --- a/src/displayapp/screens/Metronome.h +++ b/src/displayapp/screens/Metronome.h @@ -30,7 +30,7 @@ namespace Pinetime { lv_obj_t *bpmArc, *bpmTap, *bpmValue; lv_obj_t *bpbDropdown, *currentBpbText; - lv_obj_t *playPause; + lv_obj_t* playPause; lv_task_t* taskRefresh; }; diff --git a/src/displayapp/screens/Motion.cpp b/src/displayapp/screens/Motion.cpp index 799dcb3..f7ffcc7 100644 --- a/src/displayapp/screens/Motion.cpp +++ b/src/displayapp/screens/Motion.cpp @@ -19,7 +19,7 @@ Motion::Motion(Pinetime::Applications::DisplayApp* app, Controllers::MotionContr /*Add 3 data series*/ ser1 = lv_chart_add_series(chart, LV_COLOR_RED); - ser2 = lv_chart_add_series(chart, LV_COLOR_GREEN); + ser2 = lv_chart_add_series(chart, LV_COLOR_MAKE(0x0, 0xb0, 0x0)); ser3 = lv_chart_add_series(chart, LV_COLOR_YELLOW); lv_chart_init_points(chart, ser1, 0); @@ -28,7 +28,7 @@ Motion::Motion(Pinetime::Applications::DisplayApp* app, Controllers::MotionContr lv_chart_refresh(chart); /*Required after direct set*/ label = lv_label_create(lv_scr_act(), NULL); - lv_label_set_text_fmt(label, "X #FF0000 %d# Y #008000 %d# Z #FFFF00 %d#", 0, 0, 0); + lv_label_set_text_fmt(label, "X #FF0000 %d# Y #00B000 %d# Z #FFFF00 %d#", 0, 0, 0); lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 10); lv_label_set_recolor(label, true); @@ -53,7 +53,7 @@ void Motion::Refresh() { lv_label_set_text_fmt(labelStep, "Steps %lu", motionController.NbSteps()); lv_label_set_text_fmt(label, - "X #FF0000 %d# Y #008000 %d# Z #FFFF00 %d#", + "X #FF0000 %d# Y #00B000 %d# Z #FFFF00 %d#", motionController.X() / 0x10, motionController.Y() / 0x10, motionController.Z() / 0x10); diff --git a/src/displayapp/screens/Music.cpp b/src/displayapp/screens/Music.cpp index d14ae3a..1abb16a 100644 --- a/src/displayapp/screens/Music.cpp +++ b/src/displayapp/screens/Music.cpp @@ -20,9 +20,9 @@ #include <cstdint> #include "displayapp/DisplayApp.h" #include "components/ble/MusicService.h" -#include "displayapp/icons/music/disc.cpp" -#include "displayapp/icons/music/disc_f_1.cpp" -#include "displayapp/icons/music/disc_f_2.cpp" +#include "displayapp/icons/music/disc.c" +#include "displayapp/icons/music/disc_f_1.c" +#include "displayapp/icons/music/disc_f_2.c" using namespace Pinetime::Applications::Screens; @@ -53,7 +53,7 @@ Music::Music(Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::Mus lv_style_init(&btn_style); lv_style_set_radius(&btn_style, LV_STATE_DEFAULT, 20); lv_style_set_bg_color(&btn_style, LV_STATE_DEFAULT, LV_COLOR_AQUA); - lv_style_set_bg_opa(&btn_style, LV_STATE_DEFAULT, LV_OPA_20); + lv_style_set_bg_opa(&btn_style, LV_STATE_DEFAULT, LV_OPA_50); btnVolDown = lv_btn_create(lv_scr_act(), nullptr); btnVolDown->user_data = this; @@ -152,32 +152,24 @@ Music::~Music() { void Music::Refresh() { if (artist != musicService.getArtist()) { artist = musicService.getArtist(); - currentLength = 0; lv_label_set_text(txtArtist, artist.data()); } if (track != musicService.getTrack()) { track = musicService.getTrack(); - currentLength = 0; lv_label_set_text(txtTrack, track.data()); } if (album != musicService.getAlbum()) { album = musicService.getAlbum(); - currentLength = 0; } if (playing != musicService.isPlaying()) { playing = musicService.isPlaying(); } - // Because we increment this ourselves, - // we can't compare with the old data directly - // have to update it when there's actually new data - // just to avoid unnecessary draws that make UI choppy - if (lastLength != musicService.getProgress()) { - currentLength = musicService.getProgress(); - lastLength = currentLength; + if (currentPosition != musicService.getProgress()) { + currentPosition = musicService.getProgress(); UpdateLength(); } @@ -186,7 +178,7 @@ void Music::Refresh() { UpdateLength(); } - if (playing == Pinetime::Controllers::MusicService::MusicStatus::Playing) { + if (playing) { lv_label_set_text_static(txtPlayPause, Symbols::pause); if (xTaskGetTickCount() - 1024 >= lastIncrement) { @@ -197,18 +189,12 @@ void Music::Refresh() { } frameB = !frameB; - if (currentLength < totalLength) { - currentLength += - static_cast<int>((static_cast<float>(xTaskGetTickCount() - lastIncrement) / 1024.0f) * musicService.getPlaybackSpeed()); - } else { + if (currentPosition >= totalLength) { // Let's assume the getTrack finished, paused when the timer ends // and there's no new getTrack being sent to us - // TODO: ideally this would be configurable playing = false; } lastIncrement = xTaskGetTickCount(); - - UpdateLength(); } } else { lv_label_set_text_static(txtPlayPause, Symbols::play); @@ -219,23 +205,19 @@ void Music::UpdateLength() { if (totalLength > (99 * 60 * 60)) { lv_label_set_text_static(txtTrackDuration, "Inf/Inf"); } else if (totalLength > (99 * 60)) { - char timer[12]; - sprintf(timer, - "%02d:%02d/%02d:%02d", - (currentLength / (60 * 60)) % 100, - ((currentLength % (60 * 60)) / 60) % 100, - (totalLength / (60 * 60)) % 100, - ((totalLength % (60 * 60)) / 60) % 100); - lv_label_set_text(txtTrackDuration, timer); + lv_label_set_text_fmt(txtTrackDuration, + "%02d:%02d/%02d:%02d", + (currentPosition / (60 * 60)) % 100, + ((currentPosition % (60 * 60)) / 60) % 100, + (totalLength / (60 * 60)) % 100, + ((totalLength % (60 * 60)) / 60) % 100); } else { - char timer[12]; - sprintf(timer, - "%02d:%02d/%02d:%02d", - (currentLength / 60) % 100, - (currentLength % 60) % 100, - (totalLength / 60) % 100, - (totalLength % 60) % 100); - lv_label_set_text(txtTrackDuration, timer); + lv_label_set_text_fmt(txtTrackDuration, + "%02d:%02d/%02d:%02d", + (currentPosition / 60) % 100, + (currentPosition % 60) % 100, + (totalLength / 60) % 100, + (totalLength % 60) % 100); } } diff --git a/src/displayapp/screens/Music.h b/src/displayapp/screens/Music.h index 27b2d3d..258a402 100644 --- a/src/displayapp/screens/Music.h +++ b/src/displayapp/screens/Music.h @@ -70,10 +70,8 @@ namespace Pinetime { /** Total length in seconds */ int totalLength = 0; - /** Current length in seconds */ - int currentLength; - /** Last length */ - int lastLength; + /** Current position in seconds */ + int currentPosition; /** Last time an animation update or timer was incremented */ TickType_t lastIncrement = 0; diff --git a/src/displayapp/screens/Navigation.cpp b/src/displayapp/screens/Navigation.cpp index 0dd0d30..5779df3 100644 --- a/src/displayapp/screens/Navigation.cpp +++ b/src/displayapp/screens/Navigation.cpp @@ -192,7 +192,7 @@ void Navigation::Refresh() { if (progress > 90) { lv_obj_set_style_local_bg_color(barProgress, LV_BAR_PART_INDIC, LV_STATE_DEFAULT, LV_COLOR_RED); } else { - lv_obj_set_style_local_bg_color(barProgress, LV_BAR_PART_INDIC, LV_STATE_DEFAULT, LV_COLOR_ORANGE); + lv_obj_set_style_local_bg_color(barProgress, LV_BAR_PART_INDIC, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xff, 0xb0, 0x0)); } } } diff --git a/src/displayapp/screens/Notifications.cpp b/src/displayapp/screens/Notifications.cpp index 600f748..d7fe93a 100644 --- a/src/displayapp/screens/Notifications.cpp +++ b/src/displayapp/screens/Notifications.cpp @@ -181,7 +181,7 @@ Notifications::NotificationItem::NotificationItem(const char* title, : mode {mode}, alertNotificationService {alertNotificationService}, motorController {motorController} { lv_obj_t* container1 = lv_cont_create(lv_scr_act(), NULL); - lv_obj_set_style_local_bg_color(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x222222)); + lv_obj_set_style_local_bg_color(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x38, 0x38, 0x38)); lv_obj_set_style_local_pad_all(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 10); lv_obj_set_style_local_pad_inner(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 5); lv_obj_set_style_local_border_width(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 0); @@ -197,13 +197,13 @@ Notifications::NotificationItem::NotificationItem(const char* title, lv_obj_align(alert_count, NULL, LV_ALIGN_IN_TOP_RIGHT, 0, 16); lv_obj_t* alert_type = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_text_color(alert_type, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x888888)); - if(title == nullptr) { + lv_obj_set_style_local_text_color(alert_type, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); + if (title == nullptr) { lv_label_set_text_static(alert_type, "Notification"); } else { // copy title to label and replace newlines with spaces lv_label_set_text(alert_type, title); - char *pchar = strchr(lv_label_get_text(alert_type), '\n'); + char* pchar = strchr(lv_label_get_text(alert_type), '\n'); while (pchar != nullptr) { *pchar = ' '; pchar = strchr(pchar + 1, '\n'); @@ -218,7 +218,7 @@ Notifications::NotificationItem::NotificationItem(const char* title, switch (category) { default: { lv_obj_t* alert_subject = lv_label_create(container1, nullptr); - lv_obj_set_style_local_text_color(alert_subject, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_ORANGE); + lv_obj_set_style_local_text_color(alert_subject, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xff, 0xb0, 0x0)); lv_label_set_long_mode(alert_subject, LV_LABEL_LONG_BREAK); lv_obj_set_width(alert_subject, LV_HOR_RES - 20); lv_label_set_text(alert_subject, msg); @@ -226,7 +226,7 @@ Notifications::NotificationItem::NotificationItem(const char* title, case Controllers::NotificationManager::Categories::IncomingCall: { lv_obj_set_height(container1, 108); lv_obj_t* alert_subject = lv_label_create(container1, nullptr); - lv_obj_set_style_local_text_color(alert_subject, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_ORANGE); + lv_obj_set_style_local_text_color(alert_subject, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xff, 0xb0, 0x0)); lv_label_set_long_mode(alert_subject, LV_LABEL_LONG_BREAK); lv_obj_set_width(alert_subject, LV_HOR_RES - 20); lv_label_set_text_static(alert_subject, "Incoming call from"); @@ -244,7 +244,7 @@ Notifications::NotificationItem::NotificationItem(const char* title, lv_obj_align(bt_accept, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); label_accept = lv_label_create(bt_accept, nullptr); lv_label_set_text_static(label_accept, Symbols::phone); - lv_obj_set_style_local_bg_color(bt_accept, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GREEN); + lv_obj_set_style_local_bg_color(bt_accept, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x0, 0xb0, 0x0)); bt_reject = lv_btn_create(lv_scr_act(), nullptr); bt_reject->user_data = this; @@ -262,15 +262,9 @@ Notifications::NotificationItem::NotificationItem(const char* title, lv_obj_align(bt_mute, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); label_mute = lv_label_create(bt_mute, nullptr); lv_label_set_text_static(label_mute, Symbols::volumMute); - lv_obj_set_style_local_bg_color(bt_mute, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_bg_color(bt_mute, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); } break; } - - lv_obj_t* backgroundLabel = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP); - lv_obj_set_size(backgroundLabel, 240, 240); - lv_obj_set_pos(backgroundLabel, 0, 0); - lv_label_set_text_static(backgroundLabel, ""); } void Notifications::NotificationItem::OnCallButtonEvent(lv_obj_t* obj, lv_event_t event) { diff --git a/src/displayapp/screens/Paddle.cpp b/src/displayapp/screens/Paddle.cpp index 79401ff..1fb2508 100644 --- a/src/displayapp/screens/Paddle.cpp +++ b/src/displayapp/screens/Paddle.cpp @@ -53,7 +53,7 @@ void Paddle::Refresh() { if (ballX >= LV_HOR_RES - ballSize - 1) { dx *= -1; dy += rand() % 3 - 1; // add a little randomization in wall bounce direction, one of [-1, 0, 1] - if (dy > 5) { // limit dy to be in range [-5 to 5] + if (dy > 5) { // limit dy to be in range [-5 to 5] dy = 5; } if (dy < -5) { @@ -85,7 +85,14 @@ bool Paddle::OnTouchEvent(Pinetime::Applications::TouchEvents event) { bool Paddle::OnTouchEvent(uint16_t x, uint16_t y) { // sets the center paddle pos. (30px offset) with the the y_coordinate of the finger - lv_obj_set_pos(paddle, 0, y - 30); + // but clamp it such that the paddle never clips off screen + if (y < 31) { + lv_obj_set_pos(paddle, 0, 1); + } else if (y > LV_VER_RES - 31) { + lv_obj_set_pos(paddle, 0, LV_VER_RES - 61); + } else { + lv_obj_set_pos(paddle, 0, y - 30); + } paddlePos = y; return true; } diff --git a/src/displayapp/screens/PassKey.cpp b/src/displayapp/screens/PassKey.cpp index e9715cd..4057a7e 100644 --- a/src/displayapp/screens/PassKey.cpp +++ b/src/displayapp/screens/PassKey.cpp @@ -9,16 +9,8 @@ PassKey::PassKey(Pinetime::Applications::DisplayApp* app, uint32_t key) : Screen lv_obj_set_style_local_text_font(passkeyLabel, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_42); lv_label_set_text_fmt(passkeyLabel, "%06u", key); lv_obj_align(passkeyLabel, nullptr, LV_ALIGN_CENTER, 0, -20); - - backgroundLabel = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_click(backgroundLabel, true); - lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP); - lv_obj_set_size(backgroundLabel, 240, 240); - lv_obj_set_pos(backgroundLabel, 0, 0); - lv_label_set_text_static(backgroundLabel, ""); } PassKey::~PassKey() { lv_obj_clean(lv_scr_act()); } - diff --git a/src/displayapp/screens/PassKey.h b/src/displayapp/screens/PassKey.h index 16e72a3..82735b5 100644 --- a/src/displayapp/screens/PassKey.h +++ b/src/displayapp/screens/PassKey.h @@ -14,7 +14,6 @@ namespace Pinetime { private: lv_obj_t* passkeyLabel; - lv_obj_t* backgroundLabel; }; } } diff --git a/src/displayapp/screens/Screen.h b/src/displayapp/screens/Screen.h index 04bb152..e72a236 100644 --- a/src/displayapp/screens/Screen.h +++ b/src/displayapp/screens/Screen.h @@ -35,7 +35,7 @@ namespace Pinetime { private: T value {}; // NSDMI - default initialise type - bool isUpdated {true}; // NSDMI - use brace initilisation + bool isUpdated {true}; // NSDMI - use brace initialisation }; class Screen { diff --git a/src/displayapp/screens/ScreenList.h b/src/displayapp/screens/ScreenList.h index e316e36..ad88294 100644 --- a/src/displayapp/screens/ScreenList.h +++ b/src/displayapp/screens/ScreenList.h @@ -17,8 +17,12 @@ namespace Pinetime { uint8_t initScreen, const std::array<std::function<std::unique_ptr<Screen>()>, N>&& screens, ScreenListModes mode) - : Screen(app), initScreen {initScreen}, screens {std::move(screens)}, mode {mode}, screenIndex{initScreen}, current {this->screens[initScreen]()} { - + : Screen(app), + initScreen {initScreen}, + screens {std::move(screens)}, + mode {mode}, + screenIndex {initScreen}, + current {this->screens[initScreen]()} { } ScreenList(const ScreenList&) = delete; diff --git a/src/displayapp/screens/Steps.cpp b/src/displayapp/screens/Steps.cpp index 411b73d..de24354 100644 --- a/src/displayapp/screens/Steps.cpp +++ b/src/displayapp/screens/Steps.cpp @@ -38,7 +38,7 @@ Steps::Steps(Pinetime::Applications::DisplayApp* app, lv_obj_align(lSteps, nullptr, LV_ALIGN_CENTER, 0, -40); lv_obj_t* lstepsL = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_text_color(lstepsL, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x111111)); + lv_obj_set_style_local_text_color(lstepsL, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); lv_label_set_text_static(lstepsL, "Steps"); lv_obj_align(lstepsL, lSteps, LV_ALIGN_OUT_BOTTOM_MID, 0, 5); @@ -48,12 +48,6 @@ Steps::Steps(Pinetime::Applications::DisplayApp* app, lv_label_set_align(lstepsGoal, LV_LABEL_ALIGN_CENTER); lv_obj_align(lstepsGoal, lSteps, LV_ALIGN_OUT_BOTTOM_MID, 0, 40); - lv_obj_t* backgroundLabel = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP); - lv_obj_set_size(backgroundLabel, 240, 240); - lv_obj_set_pos(backgroundLabel, 0, 0); - lv_label_set_text_static(backgroundLabel, ""); - resetBtn = lv_btn_create(lv_scr_act(), nullptr); resetBtn->user_data = this; lv_obj_set_event_cb(resetBtn, lap_event_handler); diff --git a/src/displayapp/screens/StopWatch.cpp b/src/displayapp/screens/StopWatch.cpp index ca479b5..10825ff 100644 --- a/src/displayapp/screens/StopWatch.cpp +++ b/src/displayapp/screens/StopWatch.cpp @@ -8,38 +8,26 @@ using namespace Pinetime::Applications::Screens; -// Anonymous namespace for local functions namespace { TimeSeparated_t convertTicksToTimeSegments(const TickType_t timeElapsed) { - const int timeElapsedMillis = (static_cast<float>(timeElapsed) / static_cast<float>(configTICK_RATE_HZ)) * 1000; + // Centiseconds + const int timeElapsedCentis = timeElapsed * 100 / configTICK_RATE_HZ; - const int hundredths = (timeElapsedMillis % 1000) / 10; // Get only the first two digits and ignore the last - const int secs = (timeElapsedMillis / 1000) % 60; - const int mins = (timeElapsedMillis / 1000) / 60; + const int hundredths = (timeElapsedCentis % 100); + const int secs = (timeElapsedCentis / 100) % 60; + const int mins = (timeElapsedCentis / 100) / 60; return TimeSeparated_t {mins, secs, hundredths}; } - TickType_t calculateDelta(const TickType_t startTime, const TickType_t currentTime) { - TickType_t delta = 0; - // Take care of overflow - if (startTime > currentTime) { - delta = 0xffffffff - startTime; - delta += (currentTime + 1); - } else { - delta = currentTime - startTime; - } - return delta; + void play_pause_event_handler(lv_obj_t* obj, lv_event_t event) { + auto* stopWatch = static_cast<StopWatch*>(obj->user_data); + stopWatch->playPauseBtnEventHandler(event); } -} -static void play_pause_event_handler(lv_obj_t* obj, lv_event_t event) { - auto stopWatch = static_cast<StopWatch*>(obj->user_data); - stopWatch->playPauseBtnEventHandler(event); -} - -static void stop_lap_event_handler(lv_obj_t* obj, lv_event_t event) { - auto stopWatch = static_cast<StopWatch*>(obj->user_data); - stopWatch->stopLapBtnEventHandler(event); + void stop_lap_event_handler(lv_obj_t* obj, lv_event_t event) { + auto* stopWatch = static_cast<StopWatch*>(obj->user_data); + stopWatch->stopLapBtnEventHandler(event); + } } StopWatch::StopWatch(DisplayApp* app, System::SystemTask& systemTask) @@ -54,21 +42,20 @@ StopWatch::StopWatch(DisplayApp* app, System::SystemTask& systemTask) time = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_font(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_76); - lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); lv_label_set_text_static(time, "00:00"); - lv_obj_align(time, nullptr, LV_ALIGN_CENTER, 0, -45); + lv_obj_align(time, lv_scr_act(), LV_ALIGN_CENTER, 0, -45); msecTime = lv_label_create(lv_scr_act(), nullptr); // lv_obj_set_style_local_text_font(msecTime, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_bold_20); - lv_obj_set_style_local_text_color(msecTime, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_text_color(msecTime, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); lv_label_set_text_static(msecTime, "00"); - lv_obj_align(msecTime, nullptr, LV_ALIGN_CENTER, 0, 3); + lv_obj_align(msecTime, lv_scr_act(), LV_ALIGN_CENTER, 0, 3); btnPlayPause = lv_btn_create(lv_scr_act(), nullptr); btnPlayPause->user_data = this; lv_obj_set_event_cb(btnPlayPause, play_pause_event_handler); - lv_obj_set_height(btnPlayPause, 50); - lv_obj_set_width(btnPlayPause, 115); + lv_obj_set_size(btnPlayPause, 115, 50); lv_obj_align(btnPlayPause, nullptr, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); txtPlayPause = lv_label_create(btnPlayPause, nullptr); lv_label_set_text_static(txtPlayPause, Symbols::play); @@ -76,12 +63,11 @@ StopWatch::StopWatch(DisplayApp* app, System::SystemTask& systemTask) btnStopLap = lv_btn_create(lv_scr_act(), nullptr); btnStopLap->user_data = this; lv_obj_set_event_cb(btnStopLap, stop_lap_event_handler); - lv_obj_set_height(btnStopLap, 50); - lv_obj_set_width(btnStopLap, 115); + lv_obj_set_size(btnStopLap, 115, 50); lv_obj_align(btnStopLap, nullptr, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); - lv_obj_set_style_local_bg_color(btnStopLap, LV_BTN_PART_MAIN, LV_STATE_DISABLED, lv_color_hex(0x080808)); + lv_obj_set_style_local_bg_color(btnStopLap, LV_BTN_PART_MAIN, LV_STATE_DISABLED, LV_COLOR_MAKE(0x18, 0x18, 0x18)); txtStopLap = lv_label_create(btnStopLap, nullptr); - lv_obj_set_style_local_text_color(txtStopLap, LV_BTN_PART_MAIN, LV_STATE_DISABLED, lv_color_hex(0x888888)); + lv_obj_set_style_local_text_color(txtStopLap, LV_BTN_PART_MAIN, LV_STATE_DISABLED, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); lv_label_set_text_static(txtStopLap, Symbols::stop); lv_obj_set_state(btnStopLap, LV_STATE_DISABLED); lv_obj_set_state(txtStopLap, LV_STATE_DISABLED); @@ -107,11 +93,11 @@ StopWatch::~StopWatch() { lv_obj_clean(lv_scr_act()); } -void StopWatch::reset() { +void StopWatch::Reset() { currentState = States::Init; oldTimeElapsed = 0; - lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); - lv_obj_set_style_local_text_color(msecTime, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); + lv_obj_set_style_local_text_color(msecTime, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); lv_label_set_text_static(time, "00:00"); lv_label_set_text_static(msecTime, "00"); @@ -124,11 +110,11 @@ void StopWatch::reset() { lv_obj_set_state(txtStopLap, LV_STATE_DISABLED); } -void StopWatch::start() { +void StopWatch::Start() { lv_obj_set_state(btnStopLap, LV_STATE_DEFAULT); lv_obj_set_state(txtStopLap, LV_STATE_DEFAULT); - lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GREEN); - lv_obj_set_style_local_text_color(msecTime, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GREEN); + lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x0, 0xb0, 0x0)); + lv_obj_set_style_local_text_color(msecTime, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x0, 0xb0, 0x0)); lv_label_set_text_static(txtPlayPause, Symbols::pause); lv_label_set_text_static(txtStopLap, Symbols::lapsFlag); startTime = xTaskGetTickCount(); @@ -136,7 +122,7 @@ void StopWatch::start() { systemTask.PushMessage(Pinetime::System::Messages::DisableSleeping); } -void StopWatch::pause() { +void StopWatch::Pause() { startTime = 0; // Store the current time elapsed in cache oldTimeElapsed += timeElapsed; @@ -150,7 +136,7 @@ void StopWatch::pause() { void StopWatch::Refresh() { if (currentState == States::Running) { - timeElapsed = calculateDelta(startTime, xTaskGetTickCount()); + timeElapsed = xTaskGetTickCount() - startTime; currentTimeSeparated = convertTicksToTimeSegments((oldTimeElapsed + timeElapsed)); lv_label_set_text_fmt(time, "%02d:%02d", currentTimeSeparated.mins, currentTimeSeparated.secs); @@ -163,11 +149,11 @@ void StopWatch::playPauseBtnEventHandler(lv_event_t event) { return; } if (currentState == States::Init) { - start(); + Start(); } else if (currentState == States::Running) { - pause(); + Pause(); } else if (currentState == States::Halted) { - start(); + Start(); } } @@ -180,20 +166,24 @@ void StopWatch::stopLapBtnEventHandler(lv_event_t event) { lapBuffer.addLaps(currentTimeSeparated); lapNr++; if (lapBuffer[1]) { - lv_label_set_text_fmt( - lapOneText, "#%2d %2d:%02d.%02d", (lapNr - 1), lapBuffer[1]->mins, lapBuffer[1]->secs, lapBuffer[1]->hundredths); + lv_label_set_text_fmt(lapOneText, + "#%2d %2d:%02d.%02d", + (lapNr - 1), + lapBuffer[1]->mins, + lapBuffer[1]->secs, + lapBuffer[1]->hundredths); } if (lapBuffer[0]) { lv_label_set_text_fmt(lapTwoText, "#%2d %2d:%02d.%02d", lapNr, lapBuffer[0]->mins, lapBuffer[0]->secs, lapBuffer[0]->hundredths); } } else if (currentState == States::Halted) { - reset(); + Reset(); } } bool StopWatch::OnButtonPushed() { if (currentState == States::Running) { - pause(); + Pause(); return true; } return false; diff --git a/src/displayapp/screens/StopWatch.h b/src/displayapp/screens/StopWatch.h index 06193f6..ef55e2d 100644 --- a/src/displayapp/screens/StopWatch.h +++ b/src/displayapp/screens/StopWatch.h @@ -70,9 +70,9 @@ namespace Pinetime::Applications::Screens { void stopLapBtnEventHandler(lv_event_t event); bool OnButtonPushed() override; - void reset(); - void start(); - void pause(); + void Reset(); + void Start(); + void Pause(); private: Pinetime::System::SystemTask& systemTask; diff --git a/src/displayapp/screens/Styles.cpp b/src/displayapp/screens/Styles.cpp index 7f43fb9..bcfd584 100644 --- a/src/displayapp/screens/Styles.cpp +++ b/src/displayapp/screens/Styles.cpp @@ -3,6 +3,6 @@ void Pinetime::Applications::Screens::SetRadioButtonStyle(lv_obj_t* checkbox) { lv_obj_set_style_local_radius(checkbox, LV_CHECKBOX_PART_BULLET, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); lv_obj_set_style_local_border_width(checkbox, LV_CHECKBOX_PART_BULLET, LV_STATE_CHECKED, 9); - lv_obj_set_style_local_border_color(checkbox, LV_CHECKBOX_PART_BULLET, LV_STATE_CHECKED, LV_COLOR_GREEN); + lv_obj_set_style_local_border_color(checkbox, LV_CHECKBOX_PART_BULLET, LV_STATE_CHECKED, LV_COLOR_MAKE(0x0, 0xb0, 0x0)); lv_obj_set_style_local_bg_color(checkbox, LV_CHECKBOX_PART_BULLET, LV_STATE_CHECKED, LV_COLOR_WHITE); } diff --git a/src/displayapp/screens/Symbols.h b/src/displayapp/screens/Symbols.h index e68a7af..f973181 100644 --- a/src/displayapp/screens/Symbols.h +++ b/src/displayapp/screens/Symbols.h @@ -5,13 +5,8 @@ namespace Pinetime { namespace Screens { namespace Symbols { static constexpr const char* none = ""; - static constexpr const char* batteryFull = "\xEF\x89\x80"; - static constexpr const char* batteryEmpty = "\xEF\x89\x84"; - static constexpr const char* batteryThreeQuarter = "\xEF\x89\x81"; static constexpr const char* batteryHalf = "\xEF\x89\x82"; - static constexpr const char* batteryOneQuarter = "\xEF\x89\x83"; static constexpr const char* heartBeat = "\xEF\x88\x9E"; - static constexpr const char* bluetoothFull = "\xEF\x8A\x93"; static constexpr const char* bluetooth = "\xEF\x8A\x94"; static constexpr const char* plug = "\xEF\x87\xA6"; static constexpr const char* shoe = "\xEF\x95\x8B"; @@ -22,11 +17,9 @@ namespace Pinetime { static constexpr const char* check = "\xEF\x95\xA0"; static constexpr const char* music = "\xEF\x80\x81"; static constexpr const char* tachometer = "\xEF\x8F\xBD"; - static constexpr const char* asterisk = "\xEF\x81\xA9"; static constexpr const char* paintbrush = "\xEF\x87\xBC"; static constexpr const char* paddle = "\xEF\x91\x9D"; static constexpr const char* map = "\xEF\x96\xa0"; - static constexpr const char* qrcode = "\xEF\x80\xa9"; static constexpr const char* phone = "\xEF\x82\x95"; static constexpr const char* phoneSlash = "\xEF\x8F\x9D"; static constexpr const char* volumMute = "\xEF\x9A\xA9"; diff --git a/src/displayapp/screens/SystemInfo.cpp b/src/displayapp/screens/SystemInfo.cpp index 0586877..65961d5 100644 --- a/src/displayapp/screens/SystemInfo.cpp +++ b/src/displayapp/screens/SystemInfo.cpp @@ -78,12 +78,12 @@ std::unique_ptr<Screen> SystemInfo::CreateScreen1() { lv_label_set_recolor(label, true); lv_label_set_text_fmt(label, "#FFFF00 InfiniTime#\n\n" - "#444444 Version# %ld.%ld.%ld\n" - "#444444 Short Ref# %s\n" - "#444444 Build date#\n" + "#808080 Version# %ld.%ld.%ld\n" + "#808080 Short Ref# %s\n" + "#808080 Build date#\n" "%s\n" "%s\n\n" - "#444444 Bootloader# %s", + "#808080 Bootloader# %s", Version::Major(), Version::Minor(), Version::Patch(), @@ -139,14 +139,14 @@ std::unique_ptr<Screen> SystemInfo::CreateScreen2() { lv_obj_t* label = lv_label_create(lv_scr_act(), nullptr); lv_label_set_recolor(label, true); lv_label_set_text_fmt(label, - "#444444 Date# %02d/%02d/%04d\n" - "#444444 Time# %02d:%02d:%02d\n" - "#444444 Uptime#\n %02lud %02lu:%02lu:%02lu\n" - "#444444 Battery# %d%%/%03imV\n" - "#444444 Backlight# %s\n" - "#444444 Last reset# %s\n" - "#444444 Accel.# %s\n" - "#444444 Touch.# %x.%x.%x\n", + "#808080 Date# %02d/%02d/%04d\n" + "#808080 Time# %02d:%02d:%02d\n" + "#808080 Uptime#\n %02lud %02lu:%02lu:%02lu\n" + "#808080 Battery# %d%%/%03imV\n" + "#808080 Backlight# %s\n" + "#808080 Last reset# %s\n" + "#808080 Accel.# %s\n" + "#808080 Touch.# %x.%x.%x\n", dateTimeController.Day(), static_cast<uint8_t>(dateTimeController.Month()), dateTimeController.Year(), @@ -177,14 +177,14 @@ std::unique_ptr<Screen> SystemInfo::CreateScreen3() { lv_label_set_recolor(label, true); auto& bleAddr = bleController.Address(); lv_label_set_text_fmt(label, - "#444444 BLE MAC#\n" + "#808080 BLE MAC#\n" " %02x:%02x:%02x:%02x:%02x:%02x" "\n" - "#444444 LVGL Memory#\n" - " #444444 used# %d (%d%%)\n" - " #444444 max used# %lu\n" - " #444444 frag# %d%%\n" - " #444444 free# %d", + "#808080 LVGL Memory#\n" + " #808080 used# %d (%d%%)\n" + " #808080 max used# %lu\n" + " #808080 frag# %d%%\n" + " #808080 free# %d", bleAddr[5], bleAddr[4], bleAddr[3], @@ -212,7 +212,7 @@ std::unique_ptr<Screen> SystemInfo::CreateScreen4() { lv_table_set_col_cnt(infoTask, 4); lv_table_set_row_cnt(infoTask, maxTaskCount + 1); lv_obj_set_style_local_pad_all(infoTask, LV_TABLE_PART_CELL1, LV_STATE_DEFAULT, 0); - lv_obj_set_style_local_border_color(infoTask, LV_TABLE_PART_CELL1, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_border_color(infoTask, LV_TABLE_PART_CELL1, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); lv_table_set_cell_value(infoTask, 0, 0, "#"); lv_table_set_col_width(infoTask, 0, 30); @@ -269,11 +269,11 @@ std::unique_ptr<Screen> SystemInfo::CreateScreen5() { "under the terms of\n" "the GNU General\n" "Public License v3\n" - "#444444 Source code#\n" + "#808080 Source code#\n" "#FFFF00 https://github.com/#\n" "#FFFF00 InfiniTimeOrg/#\n" "#FFFF00 InfiniTime#"); lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); lv_obj_align(label, nullptr, LV_ALIGN_CENTER, 0, 0); return std::make_unique<Screens::Label>(4, 5, app, label); -}
\ No newline at end of file +} diff --git a/src/displayapp/screens/Tile.cpp b/src/displayapp/screens/Tile.cpp index 4df69fe..cce1d2e 100644 --- a/src/displayapp/screens/Tile.cpp +++ b/src/displayapp/screens/Tile.cpp @@ -5,13 +5,15 @@ using namespace Pinetime::Applications::Screens; namespace { - static void lv_update_task(struct _lv_task_t* task) { + void lv_update_task(struct _lv_task_t* task) { auto* user_data = static_cast<Tile*>(task->user_data); user_data->UpdateScreen(); } - static void event_handler(lv_obj_t* obj, lv_event_t event) { - if (event != LV_EVENT_VALUE_CHANGED) return; + void event_handler(lv_obj_t* obj, lv_event_t event) { + if (event != LV_EVENT_VALUE_CHANGED) { + return; + } Tile* screen = static_cast<Tile*>(obj->user_data); auto* eventDataPtr = (uint32_t*) lv_event_get_data(); @@ -33,14 +35,12 @@ Tile::Tile(uint8_t screenID, // Time label_time = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text(label_time, dateTimeController.FormattedTime().c_str()); lv_label_set_align(label_time, LV_LABEL_ALIGN_CENTER); lv_obj_align(label_time, nullptr, LV_ALIGN_IN_TOP_LEFT, 0, 0); // Battery - batteryIcon = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text_static(batteryIcon, BatteryIcon::GetBatteryIcon(batteryController.PercentRemaining())); - lv_obj_align(batteryIcon, nullptr, LV_ALIGN_IN_TOP_RIGHT, -8, 0); + batteryIcon.Create(lv_scr_act()); + lv_obj_align(batteryIcon.GetObject(), nullptr, LV_ALIGN_IN_TOP_RIGHT, -8, 0); if (numScreens > 1) { pageIndicatorBasePoints[0].x = LV_HOR_RES - 1; @@ -63,7 +63,7 @@ Tile::Tile(uint8_t screenID, pageIndicator = lv_line_create(lv_scr_act(), nullptr); lv_obj_set_style_local_line_width(pageIndicator, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, 3); - lv_obj_set_style_local_line_color(pageIndicator, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_line_color(pageIndicator, LV_LINE_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); lv_line_set_points(pageIndicator, pageIndicatorPoints, 2); } @@ -87,9 +87,9 @@ Tile::Tile(uint8_t screenID, lv_obj_align(btnm1, NULL, LV_ALIGN_CENTER, 0, 10); lv_obj_set_style_local_radius(btnm1, LV_BTNMATRIX_PART_BTN, LV_STATE_DEFAULT, 20); - lv_obj_set_style_local_bg_opa(btnm1, LV_BTNMATRIX_PART_BTN, LV_STATE_DEFAULT, LV_OPA_20); + lv_obj_set_style_local_bg_opa(btnm1, LV_BTNMATRIX_PART_BTN, LV_STATE_DEFAULT, LV_OPA_50); lv_obj_set_style_local_bg_color(btnm1, LV_BTNMATRIX_PART_BTN, LV_STATE_DEFAULT, LV_COLOR_AQUA); - lv_obj_set_style_local_bg_opa(btnm1, LV_BTNMATRIX_PART_BTN, LV_STATE_DISABLED, LV_OPA_20); + lv_obj_set_style_local_bg_opa(btnm1, LV_BTNMATRIX_PART_BTN, LV_STATE_DISABLED, LV_OPA_50); lv_obj_set_style_local_bg_color(btnm1, LV_BTNMATRIX_PART_BTN, LV_STATE_DISABLED, lv_color_hex(0x111111)); lv_obj_set_style_local_pad_all(btnm1, LV_BTNMATRIX_PART_BG, LV_STATE_DEFAULT, 0); lv_obj_set_style_local_pad_inner(btnm1, LV_BTNMATRIX_PART_BG, LV_STATE_DEFAULT, 10); @@ -104,13 +104,9 @@ Tile::Tile(uint8_t screenID, btnm1->user_data = this; lv_obj_set_event_cb(btnm1, event_handler); - lv_obj_t* backgroundLabel = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP); - lv_obj_set_size(backgroundLabel, 240, 240); - lv_obj_set_pos(backgroundLabel, 0, 0); - lv_label_set_text_static(backgroundLabel, ""); - taskUpdate = lv_task_create(lv_update_task, 5000, LV_TASK_PRIO_MID, this); + + UpdateScreen(); } Tile::~Tile() { @@ -120,11 +116,12 @@ Tile::~Tile() { void Tile::UpdateScreen() { lv_label_set_text(label_time, dateTimeController.FormattedTime().c_str()); - lv_label_set_text_static(batteryIcon, BatteryIcon::GetBatteryIcon(batteryController.PercentRemaining())); + batteryIcon.SetBatteryPercentage(batteryController.PercentRemaining()); } void Tile::OnValueChangedEvent(lv_obj_t* obj, uint32_t buttonId) { - if(obj != btnm1) return; + if (obj != btnm1) + return; app->StartApp(apps[buttonId], DisplayApp::FullRefreshDirections::Up); running = false; diff --git a/src/displayapp/screens/Tile.h b/src/displayapp/screens/Tile.h index 4869fef..4874714 100644 --- a/src/displayapp/screens/Tile.h +++ b/src/displayapp/screens/Tile.h @@ -9,6 +9,7 @@ #include "components/settings/Settings.h" #include "components/datetime/DateTimeController.h" #include "components/battery/BatteryController.h" +#include <displayapp/screens/BatteryIcon.h> namespace Pinetime { namespace Applications { @@ -40,13 +41,14 @@ namespace Pinetime { lv_task_t* taskUpdate; lv_obj_t* label_time; - lv_obj_t* batteryIcon; lv_point_t pageIndicatorBasePoints[2]; lv_point_t pageIndicatorPoints[2]; lv_obj_t* pageIndicatorBase; lv_obj_t* pageIndicator; lv_obj_t* btnm1; + BatteryIcon batteryIcon; + const char* btnmMap[8]; Pinetime::Applications::Apps apps[6]; }; diff --git a/src/displayapp/screens/Timer.cpp b/src/displayapp/screens/Timer.cpp index 3b41446..9ef620a 100644 --- a/src/displayapp/screens/Timer.cpp +++ b/src/displayapp/screens/Timer.cpp @@ -14,68 +14,57 @@ void Timer::CreateButtons() { btnMinutesUp = lv_btn_create(lv_scr_act(), nullptr); btnMinutesUp->user_data = this; lv_obj_set_event_cb(btnMinutesUp, btnEventHandler); - lv_obj_align(btnMinutesUp, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 20, -80); - lv_obj_set_height(btnMinutesUp, 40); - lv_obj_set_width(btnMinutesUp, 60); + lv_obj_set_size(btnMinutesUp, 60, 40); + lv_obj_align(btnMinutesUp, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 20, -85); txtMUp = lv_label_create(btnMinutesUp, nullptr); - lv_label_set_text(txtMUp, "+"); + lv_label_set_text_static(txtMUp, "+"); btnMinutesDown = lv_btn_create(lv_scr_act(), nullptr); btnMinutesDown->user_data = this; lv_obj_set_event_cb(btnMinutesDown, btnEventHandler); - lv_obj_align(btnMinutesDown, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 20, +40); - lv_obj_set_height(btnMinutesDown, 40); - lv_obj_set_width(btnMinutesDown, 60); + lv_obj_set_size(btnMinutesDown, 60, 40); + lv_obj_align(btnMinutesDown, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 20, 35); txtMDown = lv_label_create(btnMinutesDown, nullptr); - lv_label_set_text(txtMDown, "-"); + lv_label_set_text_static(txtMDown, "-"); btnSecondsUp = lv_btn_create(lv_scr_act(), nullptr); btnSecondsUp->user_data = this; lv_obj_set_event_cb(btnSecondsUp, btnEventHandler); - lv_obj_align(btnSecondsUp, lv_scr_act(), LV_ALIGN_IN_RIGHT_MID, 10, -80); - lv_obj_set_height(btnSecondsUp, 40); - lv_obj_set_width(btnSecondsUp, 60); + lv_obj_set_size(btnSecondsUp, 60, 40); + lv_obj_align(btnSecondsUp, lv_scr_act(), LV_ALIGN_IN_RIGHT_MID, -20, -85); txtSUp = lv_label_create(btnSecondsUp, nullptr); - lv_label_set_text(txtSUp, "+"); + lv_label_set_text_static(txtSUp, "+"); btnSecondsDown = lv_btn_create(lv_scr_act(), nullptr); btnSecondsDown->user_data = this; lv_obj_set_event_cb(btnSecondsDown, btnEventHandler); - lv_obj_align(btnSecondsDown, lv_scr_act(), LV_ALIGN_IN_RIGHT_MID, 10, +40); - lv_obj_set_height(btnSecondsDown, 40); - lv_obj_set_width(btnSecondsDown, 60); + lv_obj_set_size(btnSecondsDown, 60, 40); + lv_obj_align(btnSecondsDown, lv_scr_act(), LV_ALIGN_IN_RIGHT_MID, -20, 35); txtSDown = lv_label_create(btnSecondsDown, nullptr); - lv_label_set_text(txtSDown, "-"); + lv_label_set_text_static(txtSDown, "-"); } Timer::Timer(DisplayApp* app, Controllers::TimerController& timerController) : Screen(app), running {true}, timerController {timerController} { - backgroundLabel = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_click(backgroundLabel, true); - lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP); - lv_obj_set_size(backgroundLabel, 240, 240); - lv_obj_set_pos(backgroundLabel, 0, 0); - lv_label_set_text_static(backgroundLabel, ""); time = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_font(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_76); - lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_obj_set_style_local_text_color(time, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0)); uint32_t seconds = timerController.GetTimeRemaining() / 1000; lv_label_set_text_fmt(time, "%02lu:%02lu", seconds / 60, seconds % 60); - - lv_obj_align(time, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, -20); + lv_obj_align(time, lv_scr_act(), LV_ALIGN_CENTER, 0, -25); btnPlayPause = lv_btn_create(lv_scr_act(), nullptr); btnPlayPause->user_data = this; lv_obj_set_event_cb(btnPlayPause, btnEventHandler); - lv_obj_align(btnPlayPause, nullptr, LV_ALIGN_IN_BOTTOM_MID, 0, -10); - lv_obj_set_height(btnPlayPause, 40); + lv_obj_set_size(btnPlayPause, 120, 50); + lv_obj_align(btnPlayPause, nullptr, LV_ALIGN_IN_BOTTOM_MID, 0, 0); txtPlayPause = lv_label_create(btnPlayPause, nullptr); if (timerController.IsRunning()) { - lv_label_set_text(txtPlayPause, Symbols::pause); + lv_label_set_text_static(txtPlayPause, Symbols::pause); } else { - lv_label_set_text(txtPlayPause, Symbols::play); + lv_label_set_text_static(txtPlayPause, Symbols::play); CreateButtons(); } @@ -98,7 +87,7 @@ void Timer::OnButtonEvent(lv_obj_t* obj, lv_event_t event) { if (event == LV_EVENT_CLICKED) { if (obj == btnPlayPause) { if (timerController.IsRunning()) { - lv_label_set_text(txtPlayPause, Symbols::play); + lv_label_set_text_static(txtPlayPause, Symbols::play); uint32_t seconds = timerController.GetTimeRemaining() / 1000; minutesToSet = seconds / 60; secondsToSet = seconds % 60; @@ -106,7 +95,7 @@ void Timer::OnButtonEvent(lv_obj_t* obj, lv_event_t event) { CreateButtons(); } else if (secondsToSet + minutesToSet > 0) { - lv_label_set_text(txtPlayPause, Symbols::pause); + lv_label_set_text_static(txtPlayPause, Symbols::pause); timerController.StartTimer((secondsToSet + minutesToSet * 60) * 1000); lv_obj_del(btnSecondsDown); @@ -158,8 +147,8 @@ void Timer::OnButtonEvent(lv_obj_t* obj, lv_event_t event) { } void Timer::SetDone() { - lv_label_set_text(time, "00:00"); - lv_label_set_text(txtPlayPause, Symbols::play); + lv_label_set_text_static(time, "00:00"); + lv_label_set_text_static(txtPlayPause, Symbols::play); secondsToSet = 0; minutesToSet = 0; CreateButtons(); diff --git a/src/displayapp/screens/Timer.h b/src/displayapp/screens/Timer.h index 93e84c8..c1f7f9e 100644 --- a/src/displayapp/screens/Timer.h +++ b/src/displayapp/screens/Timer.h @@ -24,7 +24,6 @@ namespace Pinetime::Applications::Screens { uint8_t secondsToSet = 0; uint8_t minutesToSet = 0; Controllers::TimerController& timerController; - lv_obj_t* backgroundLabel; lv_obj_t* time; lv_obj_t* msecTime; lv_obj_t* btnPlayPause; diff --git a/src/displayapp/screens/Twos.cpp b/src/displayapp/screens/Twos.cpp index ca9295d..7e465fc 100644 --- a/src/displayapp/screens/Twos.cpp +++ b/src/displayapp/screens/Twos.cpp @@ -85,12 +85,6 @@ Twos::Twos(Pinetime::Applications::DisplayApp* app) : Screen(app) { lv_obj_align(scoreText, nullptr, LV_ALIGN_IN_TOP_LEFT, 0, 10); lv_label_set_recolor(scoreText, true); lv_label_set_text_fmt(scoreText, "Score #FFFF00 %i#", score); - - lv_obj_t* backgroundLabel = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP); - lv_obj_set_size(backgroundLabel, 240, 240); - lv_obj_set_pos(backgroundLabel, 0, 0); - lv_label_set_text_static(backgroundLabel, ""); } Twos::~Twos() { diff --git a/src/displayapp/screens/WatchFaceAnalog.cpp b/src/displayapp/screens/WatchFaceAnalog.cpp index 4cfc969..251a560 100644 --- a/src/displayapp/screens/WatchFaceAnalog.cpp +++ b/src/displayapp/screens/WatchFaceAnalog.cpp @@ -12,35 +12,33 @@ LV_IMG_DECLARE(bg_clock); using namespace Pinetime::Applications::Screens; namespace { -constexpr int16_t HourLength = 70; -constexpr int16_t MinuteLength = 90; -constexpr int16_t SecondLength = 110; + constexpr int16_t HourLength = 70; + constexpr int16_t MinuteLength = 90; + constexpr int16_t SecondLength = 110; -// sin(90) = 1 so the value of _lv_trigo_sin(90) is the scaling factor -const auto LV_TRIG_SCALE = _lv_trigo_sin(90); + // sin(90) = 1 so the value of _lv_trigo_sin(90) is the scaling factor + const auto LV_TRIG_SCALE = _lv_trigo_sin(90); -int16_t Cosine(int16_t angle) { - return _lv_trigo_sin(angle + 90); -} + int16_t Cosine(int16_t angle) { + return _lv_trigo_sin(angle + 90); + } -int16_t Sine(int16_t angle) { - return _lv_trigo_sin(angle); -} + int16_t Sine(int16_t angle) { + return _lv_trigo_sin(angle); + } -int16_t CoordinateXRelocate(int16_t x) { - return (x + LV_HOR_RES / 2); -} + int16_t CoordinateXRelocate(int16_t x) { + return (x + LV_HOR_RES / 2); + } -int16_t CoordinateYRelocate(int16_t y) { - return std::abs(y - LV_HOR_RES / 2); -} + int16_t CoordinateYRelocate(int16_t y) { + return std::abs(y - LV_HOR_RES / 2); + } -lv_point_t CoordinateRelocate(int16_t radius, int16_t angle) { - return lv_point_t{ - .x = CoordinateXRelocate(radius * static_cast<int32_t>(Sine(angle)) / LV_TRIG_SCALE), - .y = CoordinateYRelocate(radius * static_cast<int32_t>(Cosine(angle)) / LV_TRIG_SCALE) - }; -} + lv_point_t CoordinateRelocate(int16_t radius, int16_t angle) { + return lv_point_t {.x = CoordinateXRelocate(radius * static_cast<int32_t>(Sine(angle)) / LV_TRIG_SCALE), + .y = CoordinateYRelocate(radius * static_cast<int32_t>(Cosine(angle)) / LV_TRIG_SCALE)}; + } } @@ -66,10 +64,13 @@ WatchFaceAnalog::WatchFaceAnalog(Pinetime::Applications::DisplayApp* app, lv_img_set_src(bg_clock_img, &bg_clock); lv_obj_align(bg_clock_img, NULL, LV_ALIGN_CENTER, 0, 0); - batteryIcon = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text_static(batteryIcon, Symbols::batteryHalf); - lv_obj_align(batteryIcon, NULL, LV_ALIGN_IN_TOP_RIGHT, 0, 0); - lv_obj_set_auto_realign(batteryIcon, true); + batteryIcon.Create(lv_scr_act()); + lv_obj_align(batteryIcon.GetObject(), nullptr, LV_ALIGN_IN_TOP_RIGHT, 0, 0); + + plugIcon = lv_label_create(lv_scr_act(), nullptr); + lv_label_set_text_static(plugIcon, Symbols::plug); + lv_obj_set_style_local_text_color(plugIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED); + lv_obj_align(plugIcon, nullptr, LV_ALIGN_IN_TOP_RIGHT, 0, 0); notificationIcon = lv_label_create(lv_scr_act(), NULL); lv_obj_set_style_local_text_color(notificationIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x00FF00)); @@ -79,7 +80,7 @@ WatchFaceAnalog::WatchFaceAnalog(Pinetime::Applications::DisplayApp* app, // Date - Day / Week day label_date_day = lv_label_create(lv_scr_act(), NULL); - lv_obj_set_style_local_text_color(label_date_day, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xf0a500)); + lv_obj_set_style_local_text_color(label_date_day, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xff, 0xb0, 0x0)); lv_label_set_text_fmt(label_date_day, "%s\n%02i", dateTimeController.DayOfWeekShortToString(), dateTimeController.Day()); lv_label_set_align(label_date_day, LV_LABEL_ALIGN_CENTER); lv_obj_align(label_date_day, NULL, LV_ALIGN_CENTER, 50, 0); @@ -121,7 +122,8 @@ WatchFaceAnalog::WatchFaceAnalog(Pinetime::Applications::DisplayApp* app, lv_obj_add_style(hour_body_trace, LV_LINE_PART_MAIN, &hour_line_style_trace); taskRefresh = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this); - UpdateClock(); + + Refresh(); } WatchFaceAnalog::~WatchFaceAnalog() { @@ -180,21 +182,18 @@ void WatchFaceAnalog::UpdateClock() { void WatchFaceAnalog::SetBatteryIcon() { auto batteryPercent = batteryPercentRemaining.Get(); - if (batteryPercent == 100) { - lv_obj_set_style_local_text_color(batteryIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GREEN); - } else { - lv_obj_set_style_local_text_color(batteryIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE); - } - lv_label_set_text_static(batteryIcon, BatteryIcon::GetBatteryIcon(batteryPercent)); + batteryIcon.SetBatteryPercentage(batteryPercent); } void WatchFaceAnalog::Refresh() { isCharging = batteryController.IsCharging(); if (isCharging.IsUpdated()) { if (isCharging.Get()) { - lv_obj_set_style_local_text_color(batteryIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED); - lv_label_set_text_static(batteryIcon, Symbols::plug); + lv_obj_set_hidden(batteryIcon.GetObject(), true); + lv_obj_set_hidden(plugIcon, false); } else { + lv_obj_set_hidden(batteryIcon.GetObject(), false); + lv_obj_set_hidden(plugIcon, true); SetBatteryIcon(); } } diff --git a/src/displayapp/screens/WatchFaceAnalog.h b/src/displayapp/screens/WatchFaceAnalog.h index 4d76298..04d9e71 100644 --- a/src/displayapp/screens/WatchFaceAnalog.h +++ b/src/displayapp/screens/WatchFaceAnalog.h @@ -9,6 +9,7 @@ #include "components/battery/BatteryController.h" #include "components/ble/BleController.h" #include "components/ble/NotificationManager.h" +#include <displayapp/screens/BatteryIcon.h> namespace Pinetime { namespace Controllers { @@ -64,9 +65,11 @@ namespace Pinetime { lv_style_t second_line_style; lv_obj_t* label_date_day; - lv_obj_t* batteryIcon; + lv_obj_t* plugIcon; lv_obj_t* notificationIcon; + BatteryIcon batteryIcon; + const Controllers::DateTime& dateTimeController; Controllers::Battery& batteryController; Controllers::Ble& bleController; diff --git a/src/displayapp/screens/WatchFaceDigital.cpp b/src/displayapp/screens/WatchFaceDigital.cpp index 34a73c3..fb88f60 100644 --- a/src/displayapp/screens/WatchFaceDigital.cpp +++ b/src/displayapp/screens/WatchFaceDigital.cpp @@ -33,14 +33,13 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, heartRateController {heartRateController}, motionController {motionController} { - batteryIcon = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text_static(batteryIcon, Symbols::batteryFull); - lv_obj_align(batteryIcon, nullptr, LV_ALIGN_IN_TOP_RIGHT, 0, 0); + batteryIcon.Create(lv_scr_act()); + lv_obj_align(batteryIcon.GetObject(), nullptr, LV_ALIGN_IN_TOP_RIGHT, 0, 0); batteryPlug = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_color(batteryPlug, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xFF0000)); lv_label_set_text_static(batteryPlug, Symbols::plug); - lv_obj_align(batteryPlug, batteryIcon, LV_ALIGN_OUT_LEFT_MID, -5, 0); + lv_obj_align(batteryPlug, batteryIcon.GetObject(), LV_ALIGN_OUT_LEFT_MID, -5, 0); bleIcon = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_color(bleIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x0082FC)); @@ -65,13 +64,6 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, lv_label_set_text_static(label_time_ampm, ""); lv_obj_align(label_time_ampm, lv_scr_act(), LV_ALIGN_IN_RIGHT_MID, -30, -55); - backgroundLabel = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_click(backgroundLabel, true); - lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP); - lv_obj_set_size(backgroundLabel, 240, 240); - lv_obj_set_pos(backgroundLabel, 0, 0); - lv_label_set_text_static(backgroundLabel, ""); - heartbeatIcon = lv_label_create(lv_scr_act(), nullptr); lv_label_set_text_static(heartbeatIcon, Symbols::heartBeat); lv_obj_set_style_local_text_color(heartbeatIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xCE1B1B)); @@ -110,19 +102,13 @@ void WatchFaceDigital::Refresh() { batteryPercentRemaining = batteryController.PercentRemaining(); if (batteryPercentRemaining.IsUpdated()) { auto batteryPercent = batteryPercentRemaining.Get(); - if (batteryPercent == 100) { - lv_obj_set_style_local_text_color(batteryIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_GREEN); - } else { - lv_obj_set_style_local_text_color(batteryIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE); - } - lv_label_set_text_static(batteryIcon, BatteryIcon::GetBatteryIcon(batteryPercent)); + batteryIcon.SetBatteryPercentage(batteryPercent); } bleState = bleController.IsConnected(); if (bleState.IsUpdated()) { lv_label_set_text_static(bleIcon, BleIcon::GetIcon(bleState.Get())); } - lv_obj_realign(batteryIcon); lv_obj_realign(batteryPlug); lv_obj_realign(bleIcon); @@ -173,11 +159,19 @@ void WatchFaceDigital::Refresh() { if ((year != currentYear) || (month != currentMonth) || (dayOfWeek != currentDayOfWeek) || (day != currentDay)) { if (settingsController.GetClockType() == Controllers::Settings::ClockType::H24) { - lv_label_set_text_fmt( - label_date, "%s %d %s %d", dateTimeController.DayOfWeekShortToString(), day, dateTimeController.MonthShortToString(), year); + lv_label_set_text_fmt(label_date, + "%s %d %s %d", + dateTimeController.DayOfWeekShortToString(), + day, + dateTimeController.MonthShortToString(), + year); } else { - lv_label_set_text_fmt( - label_date, "%s %s %d %d", dateTimeController.DayOfWeekShortToString(), dateTimeController.MonthShortToString(), day, year); + lv_label_set_text_fmt(label_date, + "%s %s %d %d", + dateTimeController.DayOfWeekShortToString(), + dateTimeController.MonthShortToString(), + day, + year); } lv_obj_realign(label_date); diff --git a/src/displayapp/screens/WatchFaceDigital.h b/src/displayapp/screens/WatchFaceDigital.h index 3b436c3..71602fc 100644 --- a/src/displayapp/screens/WatchFaceDigital.h +++ b/src/displayapp/screens/WatchFaceDigital.h @@ -1,5 +1,6 @@ #pragma once +#include <displayapp/screens/BatteryIcon.h> #include <lvgl/src/lv_core/lv_obj.h> #include <chrono> #include <cstdint> @@ -57,8 +58,6 @@ namespace Pinetime { lv_obj_t* label_time; lv_obj_t* label_time_ampm; lv_obj_t* label_date; - lv_obj_t* backgroundLabel; - lv_obj_t* batteryIcon; lv_obj_t* bleIcon; lv_obj_t* batteryPlug; lv_obj_t* heartbeatIcon; @@ -67,6 +66,8 @@ namespace Pinetime { lv_obj_t* stepValue; lv_obj_t* notificationIcon; + BatteryIcon batteryIcon; + Controllers::DateTime& dateTimeController; Controllers::Battery& batteryController; Controllers::Ble& bleController; diff --git a/src/displayapp/screens/PineTimeStyle.cpp b/src/displayapp/screens/WatchFacePineTimeStyle.cpp index c82ef80..0343c0a 100644 --- a/src/displayapp/screens/PineTimeStyle.cpp +++ b/src/displayapp/screens/WatchFacePineTimeStyle.cpp @@ -19,7 +19,7 @@ * Style/layout copied from TimeStyle for Pebble by Dan Tilden (github.com/tilden) */ -#include "displayapp/screens/PineTimeStyle.h" +#include "displayapp/screens/WatchFacePineTimeStyle.h" #include <date/date.h> #include <lvgl/lvgl.h> #include <cstdio> @@ -39,25 +39,25 @@ using namespace Pinetime::Applications::Screens; namespace { void event_handler(lv_obj_t* obj, lv_event_t event) { - auto* screen = static_cast<PineTimeStyle*>(obj->user_data); + auto* screen = static_cast<WatchFacePineTimeStyle*>(obj->user_data); screen->UpdateSelected(obj, event); } bool IsBleIconVisible(bool isRadioEnabled, bool isConnected) { - if(!isRadioEnabled) { + if (!isRadioEnabled) { return true; } return isConnected; } } -PineTimeStyle::PineTimeStyle(DisplayApp* app, - Controllers::DateTime& dateTimeController, - Controllers::Battery& batteryController, - Controllers::Ble& bleController, - Controllers::NotificationManager& notificatioManager, - Controllers::Settings& settingsController, - Controllers::MotionController& motionController) +WatchFacePineTimeStyle::WatchFacePineTimeStyle(DisplayApp* app, + Controllers::DateTime& dateTimeController, + Controllers::Battery& batteryController, + Controllers::Ble& bleController, + Controllers::NotificationManager& notificatioManager, + Controllers::Settings& settingsController, + Controllers::MotionController& motionController) : Screen(app), currentDateTime {{}}, dateTimeController {dateTimeController}, @@ -101,11 +101,14 @@ PineTimeStyle::PineTimeStyle(DisplayApp* app, lv_obj_align(sidebar, lv_scr_act(), LV_ALIGN_IN_TOP_RIGHT, 0, 0); // Display icons - batteryIcon = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_text_color(batteryIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); - lv_label_set_text_static(batteryIcon, Symbols::batteryFull); - lv_obj_align(batteryIcon, sidebar, LV_ALIGN_IN_TOP_MID, 0, 2); - lv_obj_set_auto_realign(batteryIcon, true); + batteryIcon.Create(sidebar); + batteryIcon.SetColor(LV_COLOR_BLACK); + lv_obj_align(batteryIcon.GetObject(), nullptr, LV_ALIGN_IN_TOP_MID, 0, 2); + + plugIcon = lv_label_create(lv_scr_act(), nullptr); + lv_label_set_text_static(plugIcon, Symbols::plug); + lv_obj_set_style_local_text_color(plugIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_obj_align(plugIcon, sidebar, LV_ALIGN_IN_TOP_MID, 0, 2); bleIcon = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_color(bleIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000000)); @@ -195,13 +198,6 @@ PineTimeStyle::PineTimeStyle(DisplayApp* app, lv_obj_set_style_local_line_width(stepGauge, LV_GAUGE_PART_NEEDLE, LV_STATE_DEFAULT, 3); lv_obj_set_style_local_pad_inner(stepGauge, LV_GAUGE_PART_NEEDLE, LV_STATE_DEFAULT, 4); - backgroundLabel = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_click(backgroundLabel, true); - lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP); - lv_obj_set_size(backgroundLabel, 240, 240); - lv_obj_set_pos(backgroundLabel, 0, 0); - lv_label_set_text_static(backgroundLabel, ""); - btnNextTime = lv_btn_create(lv_scr_act(), nullptr); btnNextTime->user_data = this; lv_obj_set_size(btnNextTime, 60, 60); @@ -300,12 +296,12 @@ PineTimeStyle::PineTimeStyle(DisplayApp* app, Refresh(); } -PineTimeStyle::~PineTimeStyle() { +WatchFacePineTimeStyle::~WatchFacePineTimeStyle() { lv_task_del(taskRefresh); lv_obj_clean(lv_scr_act()); } -bool PineTimeStyle::OnTouchEvent(Pinetime::Applications::TouchEvents event) { +bool WatchFacePineTimeStyle::OnTouchEvent(Pinetime::Applications::TouchEvents event) { if ((event == Pinetime::Applications::TouchEvents::LongTap) && lv_obj_get_hidden(btnRandom)) { lv_obj_set_hidden(btnSet, false); savedTick = lv_tick_get(); @@ -317,7 +313,7 @@ bool PineTimeStyle::OnTouchEvent(Pinetime::Applications::TouchEvents event) { return false; } -void PineTimeStyle::CloseMenu() { +void WatchFacePineTimeStyle::CloseMenu() { settingsController.SaveSettings(); lv_obj_set_hidden(btnNextTime, true); lv_obj_set_hidden(btnPrevTime, true); @@ -330,7 +326,7 @@ void PineTimeStyle::CloseMenu() { lv_obj_set_hidden(btnClose, true); } -bool PineTimeStyle::OnButtonPushed() { +bool WatchFacePineTimeStyle::OnButtonPushed() { if (!lv_obj_get_hidden(btnClose)) { CloseMenu(); return true; @@ -338,13 +334,12 @@ bool PineTimeStyle::OnButtonPushed() { return false; } -void PineTimeStyle::SetBatteryIcon() { +void WatchFacePineTimeStyle::SetBatteryIcon() { auto batteryPercent = batteryPercentRemaining.Get(); - lv_label_set_text_static(batteryIcon, BatteryIcon::GetBatteryIcon(batteryPercent)); + batteryIcon.SetBatteryPercentage(batteryPercent); } - -void PineTimeStyle::AlignIcons() { +void WatchFacePineTimeStyle::AlignIcons() { if (notificationState.Get() && bleState.Get()) { lv_obj_align(bleIcon, sidebar, LV_ALIGN_IN_TOP_MID, 8, 25); lv_obj_align(notificationIcon, sidebar, LV_ALIGN_IN_TOP_MID, -8, 25); @@ -355,12 +350,15 @@ void PineTimeStyle::AlignIcons() { } } -void PineTimeStyle::Refresh() { +void WatchFacePineTimeStyle::Refresh() { isCharging = batteryController.IsCharging(); if (isCharging.IsUpdated()) { if (isCharging.Get()) { - lv_label_set_text_static(batteryIcon, Symbols::plug); + lv_obj_set_hidden(batteryIcon.GetObject(), true); + lv_obj_set_hidden(plugIcon, false); } else { + lv_obj_set_hidden(batteryIcon.GetObject(), false); + lv_obj_set_hidden(plugIcon, true); SetBatteryIcon(); } } @@ -373,7 +371,7 @@ void PineTimeStyle::Refresh() { bleState = bleController.IsConnected(); if (bleState.IsUpdated()) { - lv_label_set_text(bleIcon, BleIcon::GetIcon(bleState.Get())); + lv_label_set_text_static(bleIcon, BleIcon::GetIcon(bleState.Get())); AlignIcons(); } @@ -424,10 +422,10 @@ void PineTimeStyle::Refresh() { } if ((year != currentYear) || (month != currentMonth) || (dayOfWeek != currentDayOfWeek) || (day != currentDay)) { - lv_label_set_text_fmt(dateDayOfWeek, "%s", dateTimeController.DayOfWeekShortToString()); + lv_label_set_text_static(dateDayOfWeek, dateTimeController.DayOfWeekShortToString()); lv_label_set_text_fmt(dateDay, "%d", day); lv_obj_realign(dateDay); - lv_label_set_text_fmt(dateMonth, "%s", dateTimeController.MonthShortToString()); + lv_label_set_text_static(dateMonth, dateTimeController.MonthShortToString()); currentYear = year; currentMonth = month; @@ -454,7 +452,7 @@ void PineTimeStyle::Refresh() { } } -void PineTimeStyle::UpdateSelected(lv_obj_t* object, lv_event_t event) { +void WatchFacePineTimeStyle::UpdateSelected(lv_obj_t* object, lv_event_t event) { auto valueTime = settingsController.GetPTSColorTime(); auto valueBar = settingsController.GetPTSColorBar(); auto valueBG = settingsController.GetPTSColorBG(); @@ -575,7 +573,7 @@ void PineTimeStyle::UpdateSelected(lv_obj_t* object, lv_event_t event) { } } -Pinetime::Controllers::Settings::Colors PineTimeStyle::GetNext(Pinetime::Controllers::Settings::Colors color) { +Pinetime::Controllers::Settings::Colors WatchFacePineTimeStyle::GetNext(Pinetime::Controllers::Settings::Colors color) { auto colorAsInt = static_cast<uint8_t>(color); Pinetime::Controllers::Settings::Colors nextColor; if (colorAsInt < 16) { @@ -586,7 +584,7 @@ Pinetime::Controllers::Settings::Colors PineTimeStyle::GetNext(Pinetime::Control return nextColor; } -Pinetime::Controllers::Settings::Colors PineTimeStyle::GetPrevious(Pinetime::Controllers::Settings::Colors color) { +Pinetime::Controllers::Settings::Colors WatchFacePineTimeStyle::GetPrevious(Pinetime::Controllers::Settings::Colors color) { auto colorAsInt = static_cast<uint8_t>(color); Pinetime::Controllers::Settings::Colors prevColor; diff --git a/src/displayapp/screens/PineTimeStyle.h b/src/displayapp/screens/WatchFacePineTimeStyle.h index 9e52844..217b92b 100644 --- a/src/displayapp/screens/PineTimeStyle.h +++ b/src/displayapp/screens/WatchFacePineTimeStyle.h @@ -8,6 +8,7 @@ #include "displayapp/Colors.h" #include "components/datetime/DateTimeController.h" #include "components/ble/BleController.h" +#include <displayapp/screens/BatteryIcon.h> namespace Pinetime { namespace Controllers { @@ -21,23 +22,23 @@ namespace Pinetime { namespace Applications { namespace Screens { - class PineTimeStyle : public Screen { + class WatchFacePineTimeStyle : public Screen { public: - PineTimeStyle(DisplayApp* app, - Controllers::DateTime& dateTimeController, - Controllers::Battery& batteryController, - Controllers::Ble& bleController, - Controllers::NotificationManager& notificatioManager, - Controllers::Settings& settingsController, - Controllers::MotionController& motionController); - ~PineTimeStyle() override; + WatchFacePineTimeStyle(DisplayApp* app, + Controllers::DateTime& dateTimeController, + Controllers::Battery& batteryController, + Controllers::Ble& bleController, + Controllers::NotificationManager& notificatioManager, + Controllers::Settings& settingsController, + Controllers::MotionController& motionController); + ~WatchFacePineTimeStyle() override; bool OnTouchEvent(TouchEvents event) override; bool OnButtonPushed() override; void Refresh() override; - void UpdateSelected(lv_obj_t *object, lv_event_t event); + void UpdateSelected(lv_obj_t* object, lv_event_t event); private: uint8_t displayedHour = -1; @@ -77,8 +78,7 @@ namespace Pinetime { lv_obj_t* dateDayOfWeek; lv_obj_t* dateDay; lv_obj_t* dateMonth; - lv_obj_t* backgroundLabel; - lv_obj_t* batteryIcon; + lv_obj_t* plugIcon; lv_obj_t* bleIcon; lv_obj_t* calendarOuter; lv_obj_t* calendarInner; @@ -92,6 +92,8 @@ namespace Pinetime { lv_obj_t* lbl_btnSet; lv_color_t needle_colors[1]; + BatteryIcon batteryIcon; + Controllers::DateTime& dateTimeController; Controllers::Battery& batteryController; Controllers::Ble& bleController; diff --git a/src/displayapp/screens/WatchFaceTerminal.cpp b/src/displayapp/screens/WatchFaceTerminal.cpp index 57395b7..63ea2e7 100644 --- a/src/displayapp/screens/WatchFaceTerminal.cpp +++ b/src/displayapp/screens/WatchFaceTerminal.cpp @@ -31,13 +31,6 @@ WatchFaceTerminal::WatchFaceTerminal(DisplayApp* app, heartRateController {heartRateController}, motionController {motionController} { - backgroundLabel = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_click(backgroundLabel, true); - lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP); - lv_obj_set_size(backgroundLabel, 240, 240); - lv_obj_set_pos(backgroundLabel, 0, 0); - lv_label_set_text_static(backgroundLabel, ""); - uint16_t y = -100; for (auto& line : lines) { line = lv_label_create(lv_scr_act(), nullptr); @@ -76,7 +69,7 @@ void WatchFaceTerminal::Refresh() { bleState = bleController.IsConnected(); bleRadioEnabled = bleController.IsRadioEnabled(); if (bleState.IsUpdated() || bleRadioEnabled.IsUpdated()) { - if(!bleRadioEnabled.Get()) { + if (!bleRadioEnabled.Get()) { lv_label_set_text_static(connectState, "[STAT]#0082fc Disabled#"); } else { if (bleState.Get()) { diff --git a/src/displayapp/screens/WatchFaceTerminal.h b/src/displayapp/screens/WatchFaceTerminal.h index d01e50f..056b51e 100644 --- a/src/displayapp/screens/WatchFaceTerminal.h +++ b/src/displayapp/screens/WatchFaceTerminal.h @@ -70,7 +70,6 @@ namespace Pinetime { }; lv_obj_t *lines[9]; // This should match exactly the number of labels in the struct above! }; - lv_obj_t* backgroundLabel; Controllers::DateTime& dateTimeController; Controllers::Battery& batteryController; diff --git a/src/displayapp/screens/settings/QuickSettings.cpp b/src/displayapp/screens/settings/QuickSettings.cpp index 388525b..708d510 100644 --- a/src/displayapp/screens/settings/QuickSettings.cpp +++ b/src/displayapp/screens/settings/QuickSettings.cpp @@ -6,12 +6,12 @@ using namespace Pinetime::Applications::Screens; namespace { - static void ButtonEventHandler(lv_obj_t* obj, lv_event_t event) { + void ButtonEventHandler(lv_obj_t* obj, lv_event_t event) { auto* screen = static_cast<QuickSettings*>(obj->user_data); screen->OnButtonEvent(obj, event); } - static void lv_update_task(struct _lv_task_t* task) { + void lv_update_task(struct _lv_task_t* task) { auto* user_data = static_cast<QuickSettings*>(task->user_data); user_data->UpdateScreen(); } @@ -35,23 +35,21 @@ QuickSettings::QuickSettings(Pinetime::Applications::DisplayApp* app, // Time label_time = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text(label_time, dateTimeController.FormattedTime().c_str()); lv_label_set_align(label_time, LV_LABEL_ALIGN_CENTER); lv_obj_align(label_time, lv_scr_act(), LV_ALIGN_IN_TOP_LEFT, 0, 0); - batteryIcon = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text_static(batteryIcon, BatteryIcon::GetBatteryIcon(batteryController.PercentRemaining())); - lv_obj_align(batteryIcon, nullptr, LV_ALIGN_IN_TOP_RIGHT, 0, 0); + batteryIcon.Create(lv_scr_act()); + lv_obj_align(batteryIcon.GetObject(), nullptr, LV_ALIGN_IN_TOP_RIGHT, 0, 0); static constexpr uint8_t barHeight = 20 + innerDistance; static constexpr uint8_t buttonHeight = (LV_VER_RES_MAX - barHeight - innerDistance) / 2; static constexpr uint8_t buttonWidth = (LV_HOR_RES_MAX - innerDistance) / 2; // wide buttons - //static constexpr uint8_t buttonWidth = buttonHeight; // square buttons + // static constexpr uint8_t buttonWidth = buttonHeight; // square buttons static constexpr uint8_t buttonXOffset = (LV_HOR_RES_MAX - buttonWidth * 2 - innerDistance) / 2; lv_style_init(&btn_style); lv_style_set_radius(&btn_style, LV_STATE_DEFAULT, buttonHeight / 4); - lv_style_set_bg_color(&btn_style, LV_STATE_DEFAULT, lv_color_hex(0x111111)); + lv_style_set_bg_color(&btn_style, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x38, 0x38, 0x38)); btn1 = lv_btn_create(lv_scr_act(), nullptr); btn1->user_data = this; @@ -69,7 +67,7 @@ QuickSettings::QuickSettings(Pinetime::Applications::DisplayApp* app, lv_obj_set_event_cb(btn2, ButtonEventHandler); lv_obj_add_style(btn2, LV_BTN_PART_MAIN, &btn_style); lv_obj_set_size(btn2, buttonWidth, buttonHeight); - lv_obj_align(btn2, nullptr, LV_ALIGN_IN_TOP_RIGHT, - buttonXOffset, barHeight); + lv_obj_align(btn2, nullptr, LV_ALIGN_IN_TOP_RIGHT, -buttonXOffset, barHeight); lv_obj_t* lbl_btn; lbl_btn = lv_label_create(btn2, nullptr); @@ -81,7 +79,7 @@ QuickSettings::QuickSettings(Pinetime::Applications::DisplayApp* app, lv_obj_set_event_cb(btn3, ButtonEventHandler); lv_btn_set_checkable(btn3, true); lv_obj_add_style(btn3, LV_BTN_PART_MAIN, &btn_style); - lv_obj_set_style_local_bg_color(btn3, LV_BTN_PART_MAIN, LV_STATE_CHECKED, LV_COLOR_GREEN); + lv_obj_set_style_local_bg_color(btn3, LV_BTN_PART_MAIN, LV_STATE_CHECKED, LV_COLOR_MAKE(0x0, 0xb0, 0x0)); lv_obj_set_size(btn3, buttonWidth, buttonHeight); lv_obj_align(btn3, nullptr, LV_ALIGN_IN_BOTTOM_LEFT, buttonXOffset, 0); @@ -100,19 +98,15 @@ QuickSettings::QuickSettings(Pinetime::Applications::DisplayApp* app, lv_obj_set_event_cb(btn4, ButtonEventHandler); lv_obj_add_style(btn4, LV_BTN_PART_MAIN, &btn_style); lv_obj_set_size(btn4, buttonWidth, buttonHeight); - lv_obj_align(btn4, nullptr, LV_ALIGN_IN_BOTTOM_RIGHT, - buttonXOffset, 0); + lv_obj_align(btn4, nullptr, LV_ALIGN_IN_BOTTOM_RIGHT, -buttonXOffset, 0); lbl_btn = lv_label_create(btn4, nullptr); lv_obj_set_style_local_text_font(lbl_btn, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &lv_font_sys_48); lv_label_set_text_static(lbl_btn, Symbols::settings); - lv_obj_t* backgroundLabel = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP); - lv_obj_set_size(backgroundLabel, 240, 240); - lv_obj_set_pos(backgroundLabel, 0, 0); - lv_label_set_text_static(backgroundLabel, ""); - taskUpdate = lv_task_create(lv_update_task, 5000, LV_TASK_PRIO_MID, this); + + UpdateScreen(); } QuickSettings::~QuickSettings() { @@ -124,7 +118,7 @@ QuickSettings::~QuickSettings() { void QuickSettings::UpdateScreen() { lv_label_set_text(label_time, dateTimeController.FormattedTime().c_str()); - lv_label_set_text(batteryIcon, BatteryIcon::GetBatteryIcon(batteryController.PercentRemaining())); + batteryIcon.SetBatteryPercentage(batteryController.PercentRemaining()); } void QuickSettings::OnButtonEvent(lv_obj_t* object, lv_event_t event) { diff --git a/src/displayapp/screens/settings/QuickSettings.h b/src/displayapp/screens/settings/QuickSettings.h index 7913898..40a2a2e 100644 --- a/src/displayapp/screens/settings/QuickSettings.h +++ b/src/displayapp/screens/settings/QuickSettings.h @@ -8,6 +8,7 @@ #include "components/motor/MotorController.h" #include "components/settings/Settings.h" #include "components/battery/BatteryController.h" +#include <displayapp/screens/BatteryIcon.h> namespace Pinetime { @@ -37,7 +38,6 @@ namespace Pinetime { Controllers::Settings& settingsController; lv_task_t* taskUpdate; - lv_obj_t* batteryIcon; lv_obj_t* label_time; lv_style_t btn_style; @@ -48,6 +48,8 @@ namespace Pinetime { lv_obj_t* btn3; lv_obj_t* btn3_lvl; lv_obj_t* btn4; + + BatteryIcon batteryIcon; }; } } diff --git a/src/displayapp/screens/settings/SettingBluetooth.cpp b/src/displayapp/screens/settings/SettingBluetooth.cpp index ed7fbee..09556c4 100644 --- a/src/displayapp/screens/settings/SettingBluetooth.cpp +++ b/src/displayapp/screens/settings/SettingBluetooth.cpp @@ -9,12 +9,12 @@ using namespace Pinetime::Applications::Screens; namespace { - static void OnBluetoothDisabledEvent(lv_obj_t* obj, lv_event_t event) { + void OnBluetoothDisabledEvent(lv_obj_t* obj, lv_event_t event) { auto* screen = static_cast<SettingBluetooth*>(obj->user_data); screen->OnBluetoothDisabled(obj, event); } - static void OnBluetoothEnabledEvent(lv_obj_t* obj, lv_event_t event) { + void OnBluetoothEnabledEvent(lv_obj_t* obj, lv_event_t event) { auto* screen = static_cast<SettingBluetooth*>(obj->user_data); screen->OnBluetoothEnabled(obj, event); } @@ -108,4 +108,3 @@ void SettingBluetooth::OnBluetoothPasskeyEnableToggle(lv_obj_t* object, lv_event lv_checkbox_set_checked(cbPasskey, enabled); } } - diff --git a/src/displayapp/screens/settings/SettingChimes.cpp b/src/displayapp/screens/settings/SettingChimes.cpp index ae89a49..d07b0d4 100644 --- a/src/displayapp/screens/settings/SettingChimes.cpp +++ b/src/displayapp/screens/settings/SettingChimes.cpp @@ -8,8 +8,8 @@ using namespace Pinetime::Applications::Screens; namespace { - static void event_handler(lv_obj_t* obj, lv_event_t event) { - SettingChimes* screen = static_cast<SettingChimes*>(obj->user_data); + void event_handler(lv_obj_t* obj, lv_event_t event) { + auto* screen = static_cast<SettingChimes*>(obj->user_data); screen->UpdateSelected(obj, event); } } diff --git a/src/displayapp/screens/settings/SettingDisplay.cpp b/src/displayapp/screens/settings/SettingDisplay.cpp index 9e972af..bf2087a 100644 --- a/src/displayapp/screens/settings/SettingDisplay.cpp +++ b/src/displayapp/screens/settings/SettingDisplay.cpp @@ -9,8 +9,8 @@ using namespace Pinetime::Applications::Screens; namespace { - static void event_handler(lv_obj_t* obj, lv_event_t event) { - SettingDisplay* screen = static_cast<SettingDisplay*>(obj->user_data); + void event_handler(lv_obj_t* obj, lv_event_t event) { + auto* screen = static_cast<SettingDisplay*>(obj->user_data); screen->UpdateSelected(obj, event); } } @@ -46,7 +46,7 @@ SettingDisplay::SettingDisplay(Pinetime::Applications::DisplayApp* app, Pinetime char buffer[12]; for (unsigned int i = 0; i < options.size(); i++) { cbOption[i] = lv_checkbox_create(container1, nullptr); - sprintf(buffer, "%3d seconds", options[i] / 1000); + sprintf(buffer, "%3d seconds", options[i] / 1000); lv_checkbox_set_text(cbOption[i], buffer); cbOption[i]->user_data = this; lv_obj_set_event_cb(cbOption[i], event_handler); diff --git a/src/displayapp/screens/settings/SettingSetDate.cpp b/src/displayapp/screens/settings/SettingSetDate.cpp index 8bfded3..7acf0c1 100644 --- a/src/displayapp/screens/settings/SettingSetDate.cpp +++ b/src/displayapp/screens/settings/SettingSetDate.cpp @@ -15,23 +15,22 @@ namespace { constexpr int16_t POS_Y_TEXT = -6; constexpr int16_t POS_Y_MINUS = 40; - void event_handler(lv_obj_t * obj, lv_event_t event) { - auto* screen = static_cast<SettingSetDate *>(obj->user_data); + void event_handler(lv_obj_t* obj, lv_event_t event) { + auto* screen = static_cast<SettingSetDate*>(obj->user_data); screen->HandleButtonPress(obj, event); } } -SettingSetDate::SettingSetDate(Pinetime::Applications::DisplayApp *app, Pinetime::Controllers::DateTime &dateTimeController) : - Screen(app), - dateTimeController {dateTimeController} { - lv_obj_t * title = lv_label_create(lv_scr_act(), nullptr); +SettingSetDate::SettingSetDate(Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::DateTime& dateTimeController) + : Screen(app), dateTimeController {dateTimeController} { + lv_obj_t* title = lv_label_create(lv_scr_act(), nullptr); lv_label_set_text_static(title, "Set current date"); lv_label_set_align(title, LV_LABEL_ALIGN_CENTER); lv_obj_align(title, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 15, 15); - lv_obj_t * icon = lv_label_create(lv_scr_act(), nullptr); + lv_obj_t* icon = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_color(icon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_ORANGE); - + lv_label_set_text_static(icon, Symbols::clock); lv_label_set_align(icon, LV_LABEL_ALIGN_CENTER); lv_obj_align(icon, title, LV_ALIGN_OUT_LEFT_MID, -10, 0); @@ -113,7 +112,7 @@ SettingSetDate::~SettingSetDate() { lv_obj_clean(lv_scr_act()); } -void SettingSetDate::HandleButtonPress(lv_obj_t *object, lv_event_t event) { +void SettingSetDate::HandleButtonPress(lv_obj_t* object, lv_event_t event) { if (event != LV_EVENT_CLICKED) return; @@ -194,5 +193,6 @@ void SettingSetDate::CheckDay() { void SettingSetDate::UpdateMonthLabel() { lv_label_set_text_static( - lblMonth, Pinetime::Controllers::DateTime::MonthShortToStringLow(static_cast<Pinetime::Controllers::DateTime::Months>(monthValue))); + lblMonth, + Pinetime::Controllers::DateTime::MonthShortToStringLow(static_cast<Pinetime::Controllers::DateTime::Months>(monthValue))); } diff --git a/src/displayapp/screens/settings/SettingSetDate.h b/src/displayapp/screens/settings/SettingSetDate.h index 477337f..a179594 100644 --- a/src/displayapp/screens/settings/SettingSetDate.h +++ b/src/displayapp/screens/settings/SettingSetDate.h @@ -8,33 +8,33 @@ namespace Pinetime { namespace Applications { namespace Screens { - class SettingSetDate : public Screen{ - public: - SettingSetDate(DisplayApp* app, Pinetime::Controllers::DateTime &dateTimeController); - ~SettingSetDate() override; + class SettingSetDate : public Screen { + public: + SettingSetDate(DisplayApp* app, Pinetime::Controllers::DateTime& dateTimeController); + ~SettingSetDate() override; - void HandleButtonPress(lv_obj_t *object, lv_event_t event); - - private: - Controllers::DateTime& dateTimeController; + void HandleButtonPress(lv_obj_t* object, lv_event_t event); - int dayValue; - int monthValue; - int yearValue; - lv_obj_t * lblDay; - lv_obj_t * lblMonth; - lv_obj_t * lblYear; - lv_obj_t * btnDayPlus; - lv_obj_t * btnDayMinus; - lv_obj_t * btnMonthPlus; - lv_obj_t * btnMonthMinus; - lv_obj_t * btnYearPlus; - lv_obj_t * btnYearMinus; - lv_obj_t * btnSetTime; + private: + Controllers::DateTime& dateTimeController; - int MaximumDayOfMonth() const; - void CheckDay(); - void UpdateMonthLabel(); + int dayValue; + int monthValue; + int yearValue; + lv_obj_t* lblDay; + lv_obj_t* lblMonth; + lv_obj_t* lblYear; + lv_obj_t* btnDayPlus; + lv_obj_t* btnDayMinus; + lv_obj_t* btnMonthPlus; + lv_obj_t* btnMonthMinus; + lv_obj_t* btnYearPlus; + lv_obj_t* btnYearMinus; + lv_obj_t* btnSetTime; + + int MaximumDayOfMonth() const; + void CheckDay(); + void UpdateMonthLabel(); }; } } diff --git a/src/displayapp/screens/settings/SettingShakeThreshold.cpp b/src/displayapp/screens/settings/SettingShakeThreshold.cpp index c354bdc..aac1eaf 100644 --- a/src/displayapp/screens/settings/SettingShakeThreshold.cpp +++ b/src/displayapp/screens/settings/SettingShakeThreshold.cpp @@ -64,9 +64,9 @@ SettingShakeThreshold::SettingShakeThreshold(DisplayApp* app, vDecay = xTaskGetTickCount(); calibrating = false; EnableForCal = false; - if(!settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake)){ + if (!settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake)) { EnableForCal = true; - settingsController.setWakeUpMode(Pinetime::Controllers::Settings::WakeUpMode::Shake,true); + settingsController.setWakeUpMode(Pinetime::Controllers::Settings::WakeUpMode::Shake, true); } refreshTask = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this); } @@ -74,8 +74,8 @@ SettingShakeThreshold::SettingShakeThreshold(DisplayApp* app, SettingShakeThreshold::~SettingShakeThreshold() { settingsController.SetShakeThreshold(lv_arc_get_value(positionArc)); - if(EnableForCal){ - settingsController.setWakeUpMode(Pinetime::Controllers::Settings::WakeUpMode::Shake,false); + if (EnableForCal) { + settingsController.setWakeUpMode(Pinetime::Controllers::Settings::WakeUpMode::Shake, false); EnableForCal = false; } lv_task_del(refreshTask); @@ -123,8 +123,8 @@ void SettingShakeThreshold::UpdateSelected(lv_obj_t* object, lv_event_t event) { vCalTime = xTaskGetTickCount(); lv_label_set_text_static(calLabel, "Ready!"); lv_obj_set_click(positionArc, false); - lv_obj_set_style_local_bg_color(calButton, LV_BTN_PART_MAIN, LV_STATE_CHECKED, LV_COLOR_GREEN); - lv_obj_set_style_local_bg_color(calButton, LV_BTN_PART_MAIN, LV_STATE_CHECKED, LV_COLOR_GREEN); + lv_obj_set_style_local_bg_color(calButton, LV_BTN_PART_MAIN, LV_STATE_CHECKED, LV_COLOR_MAKE(0x0, 0xb0, 0x0)); + lv_obj_set_style_local_bg_color(calButton, LV_BTN_PART_MAIN, LV_STATE_CHECKED, LV_COLOR_MAKE(0x0, 0xb0, 0x0)); } else if (lv_btn_get_state(calButton) == LV_BTN_STATE_RELEASED) { calibrating = 0; lv_obj_set_click(positionArc, true); diff --git a/src/displayapp/screens/settings/SettingShakeThreshold.h b/src/displayapp/screens/settings/SettingShakeThreshold.h index 37f4a65..4331946 100644 --- a/src/displayapp/screens/settings/SettingShakeThreshold.h +++ b/src/displayapp/screens/settings/SettingShakeThreshold.h @@ -28,8 +28,8 @@ namespace Pinetime { System::SystemTask& systemTask; uint8_t calibrating; bool EnableForCal; - uint32_t vDecay,vCalTime; - lv_obj_t *positionArc, *animArc,*calButton, *calLabel; + uint32_t vDecay, vCalTime; + lv_obj_t *positionArc, *animArc, *calButton, *calLabel; lv_task_t* refreshTask; }; } diff --git a/src/displayapp/screens/settings/SettingSteps.cpp b/src/displayapp/screens/settings/SettingSteps.cpp index 5ca3eec..e92600c 100644 --- a/src/displayapp/screens/settings/SettingSteps.cpp +++ b/src/displayapp/screens/settings/SettingSteps.cpp @@ -12,15 +12,12 @@ namespace { } } -SettingSteps::SettingSteps( - Pinetime::Applications::DisplayApp *app, Pinetime::Controllers::Settings &settingsController) : - Screen(app), - settingsController{settingsController} -{ +SettingSteps::SettingSteps(Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::Settings& settingsController) + : Screen(app), settingsController {settingsController} { - lv_obj_t * container1 = lv_cont_create(lv_scr_act(), nullptr); + lv_obj_t* container1 = lv_cont_create(lv_scr_act(), nullptr); - //lv_obj_set_style_local_bg_color(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x111111)); + // lv_obj_set_style_local_bg_color(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x111111)); lv_obj_set_style_local_bg_opa(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP); lv_obj_set_style_local_pad_all(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 10); lv_obj_set_style_local_pad_inner(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 5); @@ -31,13 +28,13 @@ SettingSteps::SettingSteps( lv_cont_set_layout(container1, LV_LAYOUT_COLUMN_LEFT); lv_obj_t* title = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text_static(title,"Daily steps goal"); + lv_label_set_text_static(title, "Daily steps goal"); lv_label_set_align(title, LV_LABEL_ALIGN_CENTER); lv_obj_align(title, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 15, 15); lv_obj_t* icon = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_color(icon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_ORANGE); - + lv_label_set_text_static(icon, Symbols::shoe); lv_label_set_align(icon, LV_LABEL_ALIGN_CENTER); lv_obj_align(icon, title, LV_ALIGN_OUT_LEFT_MID, -10, 0); @@ -61,7 +58,6 @@ SettingSteps::SettingSteps( lv_obj_set_event_cb(btnMinus, event_handler); lv_obj_align(btnMinus, lv_scr_act(), LV_ALIGN_CENTER, -55, 80); lv_obj_set_style_local_value_str(btnMinus, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, "-"); - } SettingSteps::~SettingSteps() { @@ -69,24 +65,23 @@ SettingSteps::~SettingSteps() { settingsController.SaveSettings(); } -void SettingSteps::UpdateSelected(lv_obj_t *object, lv_event_t event) { +void SettingSteps::UpdateSelected(lv_obj_t* object, lv_event_t event) { uint32_t value = settingsController.GetStepsGoal(); - if(object == btnPlus && (event == LV_EVENT_PRESSED)) { + if (object == btnPlus && (event == LV_EVENT_PRESSED)) { value += 1000; - if ( value <= 500000 ) { + if (value <= 500000) { settingsController.SetStepsGoal(value); lv_label_set_text_fmt(stepValue, "%lu", settingsController.GetStepsGoal()); lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_CENTER, 0, -10); } } - if(object == btnMinus && (event == LV_EVENT_PRESSED)) { + if (object == btnMinus && (event == LV_EVENT_PRESSED)) { value -= 1000; - if ( value >= 1000 ) { + if (value >= 1000) { settingsController.SetStepsGoal(value); lv_label_set_text_fmt(stepValue, "%lu", settingsController.GetStepsGoal()); lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_CENTER, 0, -10); } } - } diff --git a/src/displayapp/screens/settings/SettingTimeFormat.cpp b/src/displayapp/screens/settings/SettingTimeFormat.cpp index bd9af15..5502794 100644 --- a/src/displayapp/screens/settings/SettingTimeFormat.cpp +++ b/src/displayapp/screens/settings/SettingTimeFormat.cpp @@ -8,8 +8,8 @@ using namespace Pinetime::Applications::Screens; namespace { - static void event_handler(lv_obj_t* obj, lv_event_t event) { - SettingTimeFormat* screen = static_cast<SettingTimeFormat*>(obj->user_data); + void event_handler(lv_obj_t* obj, lv_event_t event) { + auto* screen = static_cast<SettingTimeFormat*>(obj->user_data); screen->UpdateSelected(obj, event); } } diff --git a/src/displayapp/screens/settings/SettingWakeUp.cpp b/src/displayapp/screens/settings/SettingWakeUp.cpp index e1b6e36..4a4b60f 100644 --- a/src/displayapp/screens/settings/SettingWakeUp.cpp +++ b/src/displayapp/screens/settings/SettingWakeUp.cpp @@ -8,8 +8,8 @@ using namespace Pinetime::Applications::Screens; namespace { - static void event_handler(lv_obj_t* obj, lv_event_t event) { - SettingWakeUp* screen = static_cast<SettingWakeUp*>(obj->user_data); + void event_handler(lv_obj_t* obj, lv_event_t event) { + auto* screen = static_cast<SettingWakeUp*>(obj->user_data); screen->UpdateSelected(obj, event); } } diff --git a/src/displayapp/screens/settings/SettingWatchFace.cpp b/src/displayapp/screens/settings/SettingWatchFace.cpp index 9e2748c..e6f940a 100644 --- a/src/displayapp/screens/settings/SettingWatchFace.cpp +++ b/src/displayapp/screens/settings/SettingWatchFace.cpp @@ -8,8 +8,8 @@ using namespace Pinetime::Applications::Screens; namespace { - static void event_handler(lv_obj_t* obj, lv_event_t event) { - SettingWatchFace* screen = static_cast<SettingWatchFace*>(obj->user_data); + void event_handler(lv_obj_t* obj, lv_event_t event) { + auto* screen = static_cast<SettingWatchFace*>(obj->user_data); screen->UpdateSelected(obj, event); } } diff --git a/src/displayapp/screens/settings/Settings.cpp b/src/displayapp/screens/settings/Settings.cpp index bc7efcc..a91b8f7 100644 --- a/src/displayapp/screens/settings/Settings.cpp +++ b/src/displayapp/screens/settings/Settings.cpp @@ -13,18 +13,19 @@ Settings::Settings(Pinetime::Applications::DisplayApp* app, Pinetime::Controller settingsController {settingsController}, screens {app, settingsController.GetSettingsMenu(), - {[this]() -> std::unique_ptr<Screen> { - return CreateScreen1(); - }, - [this]() -> std::unique_ptr<Screen> { - return CreateScreen2(); - }, - [this]() -> std::unique_ptr<Screen> { - return CreateScreen3(); - }, - [this]() -> std::unique_ptr<Screen> { - return CreateScreen4(); - }, + { + [this]() -> std::unique_ptr<Screen> { + return CreateScreen1(); + }, + [this]() -> std::unique_ptr<Screen> { + return CreateScreen2(); + }, + [this]() -> std::unique_ptr<Screen> { + return CreateScreen3(); + }, + [this]() -> std::unique_ptr<Screen> { + return CreateScreen4(); + }, }, Screens::ScreenListModes::UpDown} { } @@ -53,7 +54,8 @@ std::unique_ptr<Screen> Settings::CreateScreen2() { {Symbols::shoe, "Steps", Apps::SettingSteps}, {Symbols::clock, "Set date", Apps::SettingSetDate}, {Symbols::clock, "Set time", Apps::SettingSetTime}, - {Symbols::batteryHalf, "Battery", Apps::BatteryInfo}}}; + {Symbols::batteryHalf, "Battery", Apps::BatteryInfo}, + }}; return std::make_unique<Screens::List>(1, 4, app, settingsController, applications); } @@ -64,7 +66,7 @@ std::unique_ptr<Screen> Settings::CreateScreen3() { {Symbols::clock, "Chimes", Apps::SettingChimes}, {Symbols::tachometer, "Shake Calib.", Apps::SettingShakeThreshold}, {Symbols::check, "Firmware", Apps::FirmwareValidation}, - {Symbols::bluetooth, "Bluetooth", Apps::SettingBluetooth} + {Symbols::bluetooth, "Bluetooth", Apps::SettingBluetooth}, }}; return std::make_unique<Screens::List>(2, 4, app, settingsController, applications); @@ -76,7 +78,7 @@ std::unique_ptr<Screen> Settings::CreateScreen4() { {Symbols::list, "About", Apps::SysInfo}, {Symbols::none, "None", Apps::None}, {Symbols::none, "None", Apps::None}, - {Symbols::none, "None", Apps::None} + {Symbols::none, "None", Apps::None}, }}; return std::make_unique<Screens::List>(3, 4, app, settingsController, applications); diff --git a/src/drivers/Bma421.cpp b/src/drivers/Bma421.cpp index 2f60f42..539cc8d 100644 --- a/src/drivers/Bma421.cpp +++ b/src/drivers/Bma421.cpp @@ -42,10 +42,16 @@ void Bma421::Init() { if (ret != BMA4_OK) return; - switch(bma.chip_id) { - case BMA423_CHIP_ID: deviceType = DeviceTypes::BMA421; break; - case BMA425_CHIP_ID: deviceType = DeviceTypes::BMA425; break; - default: deviceType = DeviceTypes::Unknown; break; + switch (bma.chip_id) { + case BMA423_CHIP_ID: + deviceType = DeviceTypes::BMA421; + break; + case BMA425_CHIP_ID: + deviceType = DeviceTypes::BMA425; + break; + default: + deviceType = DeviceTypes::Unknown; + break; } ret = bma423_write_config_file(&bma); diff --git a/src/drivers/Bma421.h b/src/drivers/Bma421.h index 2e40883..fef4dc0 100644 --- a/src/drivers/Bma421.h +++ b/src/drivers/Bma421.h @@ -10,11 +10,7 @@ namespace Pinetime { class TwiMaster; class Bma421 { public: - enum class DeviceTypes : uint8_t { - Unknown, - BMA421, - BMA425 - }; + enum class DeviceTypes : uint8_t { Unknown, BMA421, BMA425 }; struct Values { uint32_t steps; int16_t x; diff --git a/src/drivers/Bma421_C/bma4.c b/src/drivers/Bma421_C/bma4.c index 59e2a72..8472147 100644 --- a/src/drivers/Bma421_C/bma4.c +++ b/src/drivers/Bma421_C/bma4.c @@ -621,7 +621,7 @@ static int8_t get_average_of_sensor_data(uint8_t accel_en, * * @param[in] accel_en : Variable to store status of accel * @param[in] accel_g_axis : Accel axis to FOC - * @param[in] avg_foc_data : Average value of sensor sample datas + * @param[in] avg_foc_data : Average value of sensor sample data * @param[in] dev : Structure instance of bma4_dev. * * @return Result of API execution status @@ -637,7 +637,7 @@ static int8_t validate_foc_position(uint8_t accel_en, /*! * @brief This internal API validates accel FOC axis given as input * - * @param[in] avg_foc_data : Average value of sensor sample datas + * @param[in] avg_foc_data : Average value of sensor sample data * @param[in] dev : Structure instance of bma4_dev. * * @return Result of API execution status diff --git a/src/drivers/Bma421_C/bma4_defs.h b/src/drivers/Bma421_C/bma4_defs.h index 2db99c0..45e4920 100644 --- a/src/drivers/Bma421_C/bma4_defs.h +++ b/src/drivers/Bma421_C/bma4_defs.h @@ -259,7 +259,7 @@ #define BMA4_ACCEL_RANGE_8G UINT8_C(2) #define BMA4_ACCEL_RANGE_16G UINT8_C(3) -/**\name CONDITION CHECK FOR READING AND WRTING DATA*/ +/**\name CONDITION CHECK FOR READING AND WRITING DATA*/ #define BMA4_MAX_VALUE_FIFO_FILTER UINT8_C(1) #define BMA4_MAX_VALUE_SPI3 UINT8_C(1) #define BMA4_MAX_VALUE_SELFTEST_AMP UINT8_C(1) diff --git a/src/drivers/Cst816s.cpp b/src/drivers/Cst816s.cpp index e9573df..cf10c89 100644 --- a/src/drivers/Cst816s.cpp +++ b/src/drivers/Cst816s.cpp @@ -80,14 +80,9 @@ Cst816S::TouchInfos Cst816S::GetTouchInfo() { Gestures gesture = static_cast<Gestures>(touchData[gestureIndex]); // Validity check - if(x >= maxX || y >= maxY || - (gesture != Gestures::None && - gesture != Gestures::SlideDown && - gesture != Gestures::SlideUp && - gesture != Gestures::SlideLeft && - gesture != Gestures::SlideRight && - gesture != Gestures::SingleTap && - gesture != Gestures::DoubleTap && + if (x >= maxX || y >= maxY || + (gesture != Gestures::None && gesture != Gestures::SlideDown && gesture != Gestures::SlideUp && gesture != Gestures::SlideLeft && + gesture != Gestures::SlideRight && gesture != Gestures::SingleTap && gesture != Gestures::DoubleTap && gesture != Gestures::LongPress)) { info.isValid = false; return info; diff --git a/src/drivers/Cst816s.h b/src/drivers/Cst816s.h index 4a548d4..9d426c9 100644 --- a/src/drivers/Cst816s.h +++ b/src/drivers/Cst816s.h @@ -44,21 +44,22 @@ namespace Pinetime { uint8_t GetFwVersion() const { return fwVersion; } + private: bool CheckDeviceIds(); // Unused/Unavailable commented out static constexpr uint8_t gestureIndex = 1; static constexpr uint8_t touchPointNumIndex = 2; - //static constexpr uint8_t touchEventIndex = 3; + // static constexpr uint8_t touchEventIndex = 3; static constexpr uint8_t touchXHighIndex = 3; static constexpr uint8_t touchXLowIndex = 4; - //static constexpr uint8_t touchIdIndex = 5; + // static constexpr uint8_t touchIdIndex = 5; static constexpr uint8_t touchYHighIndex = 5; static constexpr uint8_t touchYLowIndex = 6; - //static constexpr uint8_t touchStep = 6; - //static constexpr uint8_t touchXYIndex = 7; - //static constexpr uint8_t touchMiscIndex = 8; + // static constexpr uint8_t touchStep = 6; + // static constexpr uint8_t touchXYIndex = 7; + // static constexpr uint8_t touchMiscIndex = 8; static constexpr uint8_t maxX = 240; static constexpr uint8_t maxY = 240; diff --git a/src/drivers/DebugPins.cpp b/src/drivers/DebugPins.cpp index 9209128..4b2f0f1 100644 --- a/src/drivers/DebugPins.cpp +++ b/src/drivers/DebugPins.cpp @@ -19,16 +19,16 @@ void debugpins_init() { nrf_gpio_pin_clear(DebugPin4); } void debugpins_set(debugpins_pins pin) { - nrf_gpio_pin_set((uint32_t) (pin)); + nrf_gpio_pin_set(static_cast<uint32_t>(pin)); } void debugpins_clear(debugpins_pins pin) { - nrf_gpio_pin_clear((uint32_t) (pin)); + nrf_gpio_pin_clear(static_cast<uint32_t>(pin)); } void debugpins_pulse(debugpins_pins pin) { - nrf_gpio_pin_set((uint32_t) (pin)); - nrf_gpio_pin_clear((uint32_t) (pin)); + nrf_gpio_pin_set(static_cast<uint32_t>(pin)); + nrf_gpio_pin_clear(static_cast<uint32_t>(pin)); } #else void debugpins_init() { @@ -42,4 +42,4 @@ void debugpins_clear(debugpins_pins pin) { void debugpins_pulse(debugpins_pins pin) { } -#endif
\ No newline at end of file +#endif diff --git a/src/drivers/PinMap.h b/src/drivers/PinMap.h index 579bf38..833c647 100644 --- a/src/drivers/PinMap.h +++ b/src/drivers/PinMap.h @@ -3,21 +3,23 @@ namespace Pinetime { namespace PinMap { - - #ifdef WATCH_P8 - // COLMI P8 - static constexpr uint8_t Charging = 19; - static constexpr uint8_t Cst816sReset = 13; - static constexpr uint8_t Button = 17; - #else - // Pinetime - static constexpr uint8_t Charging = 12; - static constexpr uint8_t Cst816sReset = 10; - static constexpr uint8_t Button = 13; - #endif +#ifdef WATCH_P8 + // COLMI P8 + static constexpr uint8_t Charging = 19; + static constexpr uint8_t Cst816sReset = 13; + static constexpr uint8_t Button = 17; +#else + // Pinetime + static constexpr uint8_t Charging = 12; + static constexpr uint8_t Cst816sReset = 10; + static constexpr uint8_t Button = 13; +#endif + + static constexpr uint8_t ButtonEnable = 15; static constexpr uint8_t Cst816sIrq = 28; static constexpr uint8_t PowerPresent = 19; + static constexpr uint8_t Bma421Irq = 8; static constexpr uint8_t Motor = 16; diff --git a/src/drivers/SpiMaster.cpp b/src/drivers/SpiMaster.cpp index 747dbc8..38f72fe 100644 --- a/src/drivers/SpiMaster.cpp +++ b/src/drivers/SpiMaster.cpp @@ -10,7 +10,7 @@ SpiMaster::SpiMaster(const SpiMaster::SpiModule spi, const SpiMaster::Parameters } bool SpiMaster::Init() { - if(mutex == nullptr) { + if (mutex == nullptr) { mutex = xSemaphoreCreateBinary(); ASSERT(mutex != nullptr); } diff --git a/src/drivers/SpiNorFlash.cpp b/src/drivers/SpiNorFlash.cpp index ebe3174..28f82fe 100644 --- a/src/drivers/SpiNorFlash.cpp +++ b/src/drivers/SpiNorFlash.cpp @@ -11,8 +11,10 @@ SpiNorFlash::SpiNorFlash(Spi& spi) : spi {spi} { void SpiNorFlash::Init() { device_id = ReadIdentificaion(); - NRF_LOG_INFO( - "[SpiNorFlash] Manufacturer : %d, Memory type : %d, memory density : %d", device_id.manufacturer, device_id.type, device_id.density); + NRF_LOG_INFO("[SpiNorFlash] Manufacturer : %d, Memory type : %d, memory density : %d", + device_id.manufacturer, + device_id.type, + device_id.density); } void SpiNorFlash::Uninit() { @@ -70,7 +72,10 @@ uint8_t SpiNorFlash::ReadConfigurationRegister() { void SpiNorFlash::Read(uint32_t address, uint8_t* buffer, size_t size) { static constexpr uint8_t cmdSize = 4; - uint8_t cmd[cmdSize] = {static_cast<uint8_t>(Commands::Read), (uint8_t) (address >> 16U), (uint8_t) (address >> 8U), (uint8_t) address}; + uint8_t cmd[cmdSize] = {static_cast<uint8_t>(Commands::Read), + static_cast<uint8_t>(address >> 16U), + static_cast<uint8_t>(address >> 8U), + static_cast<uint8_t>(address)}; spi.Read(reinterpret_cast<uint8_t*>(&cmd), cmdSize, buffer, size); } @@ -82,9 +87,9 @@ void SpiNorFlash::WriteEnable() { void SpiNorFlash::SectorErase(uint32_t sectorAddress) { static constexpr uint8_t cmdSize = 4; uint8_t cmd[cmdSize] = {static_cast<uint8_t>(Commands::SectorErase), - (uint8_t) (sectorAddress >> 16U), - (uint8_t) (sectorAddress >> 8U), - (uint8_t) sectorAddress}; + static_cast<uint8_t>(sectorAddress >> 16U), + static_cast<uint8_t>(sectorAddress >> 8U), + static_cast<uint8_t>(sectorAddress)}; WriteEnable(); while (!WriteEnabled()) @@ -121,7 +126,10 @@ void SpiNorFlash::Write(uint32_t address, const uint8_t* buffer, size_t size) { uint32_t pageLimit = (addr & ~(pageSize - 1u)) + pageSize; uint32_t toWrite = pageLimit - addr > len ? len : pageLimit - addr; - uint8_t cmd[cmdSize] = {static_cast<uint8_t>(Commands::PageProgram), (uint8_t) (addr >> 16U), (uint8_t) (addr >> 8U), (uint8_t) addr}; + uint8_t cmd[cmdSize] = {static_cast<uint8_t>(Commands::PageProgram), + static_cast<uint8_t>(addr >> 16U), + static_cast<uint8_t>(addr >> 8U), + static_cast<uint8_t>(addr)}; WriteEnable(); while (!WriteEnabled()) diff --git a/src/drivers/SpiNorFlash.h b/src/drivers/SpiNorFlash.h index ed6ab31..ad4d090 100644 --- a/src/drivers/SpiNorFlash.h +++ b/src/drivers/SpiNorFlash.h @@ -13,11 +13,11 @@ namespace Pinetime { SpiNorFlash(SpiNorFlash&&) = delete; SpiNorFlash& operator=(SpiNorFlash&&) = delete; - typedef struct __attribute__((packed)) { + struct __attribute__((packed)) Identification { uint8_t manufacturer = 0; uint8_t type = 0; uint8_t density = 0; - } Identification; + }; Identification ReadIdentificaion(); uint8_t ReadStatusRegister(); diff --git a/src/drivers/St7789.cpp b/src/drivers/St7789.cpp index fd1366f..3ed1beb 100644 --- a/src/drivers/St7789.cpp +++ b/src/drivers/St7789.cpp @@ -23,6 +23,7 @@ void St7789::Init() { RowAddressSet(); DisplayInversionOn(); NormalModeOn(); + SetVdv(); DisplayOn(); } @@ -114,6 +115,13 @@ void St7789::WriteToRam() { WriteCommand(static_cast<uint8_t>(Commands::WriteToRam)); } +void St7789::SetVdv() { + // By default there is a large step from pixel brightness zero to one. + // After experimenting with VCOMS, VRH and VDV, this was found to produce good results. + WriteCommand(static_cast<uint8_t>(Commands::VdvSet)); + WriteData(0x10); +} + void St7789::DisplayOff() { WriteCommand(static_cast<uint8_t>(Commands::DisplayOff)); nrf_delay_ms(500); diff --git a/src/drivers/St7789.h b/src/drivers/St7789.h index 4fbccbe..8c2ac09 100644 --- a/src/drivers/St7789.h +++ b/src/drivers/St7789.h @@ -22,9 +22,6 @@ namespace Pinetime { void DrawBuffer(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint8_t* data, size_t size); - void DisplayOn(); - void DisplayOff(); - void Sleep(); void Wakeup(); @@ -42,7 +39,11 @@ namespace Pinetime { void DisplayInversionOn(); void NormalModeOn(); void WriteToRam(); + void DisplayOn(); + void DisplayOff(); + void SetAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1); + void SetVdv(); void WriteCommand(uint8_t cmd); void WriteSpi(const uint8_t* data, size_t size); @@ -61,6 +62,7 @@ namespace Pinetime { VerticalScrollDefinition = 0x33, VerticalScrollStartAddress = 0x37, ColMod = 0x3a, + VdvSet = 0xc4, }; void WriteData(uint8_t data); void ColumnAddressSet(); diff --git a/src/drivers/TwiMaster.cpp b/src/drivers/TwiMaster.cpp index 9b456d5..25d23c2 100644 --- a/src/drivers/TwiMaster.cpp +++ b/src/drivers/TwiMaster.cpp @@ -13,19 +13,13 @@ TwiMaster::TwiMaster(NRF_TWIM_Type* module, uint32_t frequency, uint8_t pinSda, } void TwiMaster::ConfigurePins() const { - NRF_GPIO->PIN_CNF[pinScl] = - (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos) | - (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) | - (GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) | - (GPIO_PIN_CNF_DRIVE_S0D1 << GPIO_PIN_CNF_DRIVE_Pos) | - (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos); - - NRF_GPIO->PIN_CNF[pinSda] = - (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos) | - (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) | - (GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) | - (GPIO_PIN_CNF_DRIVE_S0D1 << GPIO_PIN_CNF_DRIVE_Pos) | - (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos); + NRF_GPIO->PIN_CNF[pinScl] = (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos) | (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) | + (GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) | (GPIO_PIN_CNF_DRIVE_S0D1 << GPIO_PIN_CNF_DRIVE_Pos) | + (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos); + + NRF_GPIO->PIN_CNF[pinSda] = (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos) | (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) | + (GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) | (GPIO_PIN_CNF_DRIVE_S0D1 << GPIO_PIN_CNF_DRIVE_Pos) | + (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos); } void TwiMaster::Init() { diff --git a/src/heartratetask/HeartRateTask.cpp b/src/heartratetask/HeartRateTask.cpp index 2f689b9..bc22762 100644 --- a/src/heartratetask/HeartRateTask.cpp +++ b/src/heartratetask/HeartRateTask.cpp @@ -6,7 +6,7 @@ using namespace Pinetime::Applications; HeartRateTask::HeartRateTask(Drivers::Hrs3300& heartRateSensor, Controllers::HeartRateController& controller) - : heartRateSensor {heartRateSensor}, controller {controller}, ppg{} { + : heartRateSensor {heartRateSensor}, controller {controller}, ppg {} { } void HeartRateTask::Start() { diff --git a/src/libs/lvgl b/src/libs/lvgl -Subproject e100d920f823e4308b8b43d7eb4130afa74f272 +Subproject 23430cf20e32294549fff9b2879a9466dacc19b diff --git a/src/main.cpp b/src/main.cpp index fa492d0..3d70af4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,7 +3,6 @@ #include <hal/nrf_wdt.h> #include <legacy/nrf_drv_clock.h> #include <libraries/gpiote/app_gpiote.h> -#include <libraries/timer/app_timer.h> #include <softdevice/common/nrf_sdh.h> #include <nrf_delay.h> @@ -159,7 +158,7 @@ Pinetime::System::SystemTask systemTask(spi, touchHandler, buttonHandler); -/* Variable Declarations for variables in noinit SRAM +/* Variable Declarations for variables in noinit SRAM Increment NoInit_MagicValue upon adding variables to this area */ extern uint32_t __start_noinit_data; @@ -168,7 +167,6 @@ static constexpr uint32_t NoInit_MagicValue = 0xDEAD0000; uint32_t NoInit_MagicWord __attribute__((section(".noinit"))); std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> NoInit_BackUpTime __attribute__((section(".noinit"))); - void nrfx_gpiote_evt_handler(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action) { if (pin == Pinetime::PinMap::Cst816sIrq) { systemTask.OnTouchEvent(); @@ -327,12 +325,11 @@ int main(void) { // retrieve version stored by bootloader Pinetime::BootloaderVersion::SetVersion(NRF_TIMER2->CC[0]); - if (NoInit_MagicWord == NoInit_MagicValue) { dateTimeController.SetCurrentTime(NoInit_BackUpTime); } else { - //Clear Memory to known state - memset(&__start_noinit_data,0,(uintptr_t)&__stop_noinit_data-(uintptr_t)&__start_noinit_data); + // Clear Memory to known state + memset(&__start_noinit_data, 0, (uintptr_t) &__stop_noinit_data - (uintptr_t) &__start_noinit_data); NoInit_MagicWord = NoInit_MagicValue; } diff --git a/src/recoveryLoader.cpp b/src/recoveryLoader.cpp index acec14c..27a79d9 100644 --- a/src/recoveryLoader.cpp +++ b/src/recoveryLoader.cpp @@ -28,7 +28,6 @@ Pinetime::Logging::NrfLogger logger; Pinetime::Logging::DummyLogger logger; #endif - static constexpr uint8_t displayWidth = 240; static constexpr uint8_t displayHeight = 240; static constexpr uint8_t bytesPerPixel = 2; diff --git a/src/sdk_config.h b/src/sdk_config.h index fa9d630..b42b392 100644 --- a/src/sdk_config.h +++ b/src/sdk_config.h @@ -1224,7 +1224,7 @@ // <q> PM_SERVICE_CHANGED_ENABLED - Enable/disable the service changed management for GATT server in Peer Manager. -// <i> If not using a GATT server, or using a server wihout a service changed characteristic, +// <i> If not using a GATT server, or using a server without a service changed characteristic, // <i> disable this to save code space. #ifndef PM_SERVICE_CHANGED_ENABLED @@ -7667,7 +7667,7 @@ #endif // <e> USE_COMP - Use the comparator to implement the capacitive sensor driver. -// <i> Due to Anomaly 84, COMP I_SOURCE is not functional. It has too high a varation. +// <i> Due to Anomaly 84, COMP I_SOURCE is not functional. It has too high a variation. //========================================================== #ifndef USE_COMP #define USE_COMP 0 @@ -8200,7 +8200,7 @@ #define NRF_LOG_DEFAULT_LEVEL 3 #endif -// <q> NRF_LOG_DEFERRED - Enable deffered logger. +// <q> NRF_LOG_DEFERRED - Enable deferred logger. // <i> Log data is buffered and can be processed in idle. @@ -11620,7 +11620,7 @@ #define NRF_SDH_ANT_OBSERVER_PRIO_LEVELS 2 #endif -// <h> ANT Observers priorities - Invididual priorities +// <h> ANT Observers priorities - Individual priorities //========================================================== // <o> ANT_BPWR_ANT_OBSERVER_PRIO @@ -11696,7 +11696,7 @@ // <h> BLE Stack configuration - Stack configuration parameters // <i> The SoftDevice handler will configure the stack with these parameters when calling @ref nrf_sdh_ble_default_cfg_set. -// <i> Other libraries might depend on these values; keep them up-to-date even if you are not explicitely calling @ref +// <i> Other libraries might depend on these values; keep them up-to-date even if you are not explicitly calling @ref // nrf_sdh_ble_default_cfg_set. //========================================================== // <o> NRF_SDH_BLE_GAP_DATA_LENGTH <27-251> @@ -11766,7 +11766,7 @@ #define NRF_SDH_BLE_OBSERVER_PRIO_LEVELS 4 #endif -// <h> BLE Observers priorities - Invididual priorities +// <h> BLE Observers priorities - Individual priorities //========================================================== // <o> BLE_ADV_BLE_OBSERVER_PRIO @@ -12302,7 +12302,7 @@ #define NRF_SDH_STACK_OBSERVER_PRIO_LEVELS 2 #endif -// <h> State Observers priorities - Invididual priorities +// <h> State Observers priorities - Individual priorities //========================================================== // <o> CLOCK_CONFIG_STATE_OBSERVER_PRIO @@ -12329,7 +12329,7 @@ // </h> //========================================================== -// <h> Stack Event Observers priorities - Invididual priorities +// <h> Stack Event Observers priorities - Individual priorities //========================================================== // <o> NRF_SDH_ANT_STACK_OBSERVER_PRIO @@ -12383,7 +12383,7 @@ #define NRF_SDH_SOC_OBSERVER_PRIO_LEVELS 2 #endif -// <h> SoC Observers priorities - Invididual priorities +// <h> SoC Observers priorities - Individual priorities //========================================================== // <o> BLE_ADV_SOC_OBSERVER_PRIO diff --git a/src/systemtask/Messages.h b/src/systemtask/Messages.h index 716aeef..f939900 100644 --- a/src/systemtask/Messages.h +++ b/src/systemtask/Messages.h @@ -33,7 +33,7 @@ namespace Pinetime { StartFileTransfer, StopFileTransfer, BleRadioEnableToggle, - BluetoothPasskeyEnableToggle + BluetoothPasskeyEnableToggle, }; } } diff --git a/src/systemtask/SystemMonitor.cpp b/src/systemtask/SystemMonitor.cpp index 90765e3..2edee7b 100644 --- a/src/systemtask/SystemMonitor.cpp +++ b/src/systemtask/SystemMonitor.cpp @@ -1,9 +1,9 @@ #include "systemtask/SystemTask.h" #if configUSE_TRACE_FACILITY == 1 -// FreeRtosMonitor -#include <FreeRTOS.h> -#include <task.h> -#include <nrf_log.h> + // FreeRtosMonitor + #include <FreeRTOS.h> + #include <task.h> + #include <nrf_log.h> void Pinetime::System::SystemMonitor::Process() { if (xTaskGetTickCount() - lastTick > 10000) { @@ -14,13 +14,14 @@ void Pinetime::System::SystemMonitor::Process() { NRF_LOG_INFO("Task [%s] - %d", tasksStatus[i].pcTaskName, tasksStatus[i].usStackHighWaterMark); if (tasksStatus[i].usStackHighWaterMark < 20) NRF_LOG_INFO("WARNING!!! Task %s task is nearly full, only %dB available", - tasksStatus[i].pcTaskName, - tasksStatus[i].usStackHighWaterMark * 4); + tasksStatus[i].pcTaskName, + tasksStatus[i].usStackHighWaterMark * 4); } lastTick = xTaskGetTickCount(); } } #else // DummyMonitor -void Pinetime::System::SystemMonitor::Process() {} +void Pinetime::System::SystemMonitor::Process() { +} #endif diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp index 6f6d474..3353a45 100644 --- a/src/systemtask/SystemTask.cpp +++ b/src/systemtask/SystemTask.cpp @@ -2,7 +2,6 @@ #include <hal/nrf_rtc.h> #include <libraries/gpiote/app_gpiote.h> #include <libraries/log/nrf_log.h> - #include "BootloaderVersion.h" #include "components/battery/BatteryController.h" #include "components/ble/BleController.h" @@ -176,39 +175,29 @@ void SystemTask::Work() { buttonHandler.Init(this); - // Button - nrf_gpio_cfg_output(15); - nrf_gpio_pin_set(15); - + // Setup Interrupts nrfx_gpiote_in_config_t pinConfig; pinConfig.skip_gpio_setup = false; pinConfig.hi_accuracy = false; pinConfig.is_watcher = false; - pinConfig.sense = static_cast<nrf_gpiote_polarity_t>(NRF_GPIOTE_POLARITY_TOGGLE); - pinConfig.pull = static_cast<nrf_gpio_pin_pull_t>(GPIO_PIN_CNF_PULL_Pulldown); + // Button + nrf_gpio_cfg_output(PinMap::ButtonEnable); + nrf_gpio_pin_set(PinMap::ButtonEnable); + pinConfig.sense = NRF_GPIOTE_POLARITY_TOGGLE; + pinConfig.pull = NRF_GPIO_PIN_PULLDOWN; nrfx_gpiote_in_init(PinMap::Button, &pinConfig, nrfx_gpiote_evt_handler); nrfx_gpiote_in_event_enable(PinMap::Button, true); // Touchscreen - nrf_gpio_cfg_sense_input(PinMap::Cst816sIrq, - static_cast<nrf_gpio_pin_pull_t>(GPIO_PIN_CNF_PULL_Pullup), - static_cast<nrf_gpio_pin_sense_t>(GPIO_PIN_CNF_SENSE_Low)); - - pinConfig.skip_gpio_setup = true; - pinConfig.hi_accuracy = false; - pinConfig.is_watcher = false; - pinConfig.sense = static_cast<nrf_gpiote_polarity_t>(NRF_GPIOTE_POLARITY_HITOLO); - pinConfig.pull = static_cast<nrf_gpio_pin_pull_t>(GPIO_PIN_CNF_PULL_Pullup); - + pinConfig.sense = NRF_GPIOTE_POLARITY_HITOLO; + pinConfig.pull = NRF_GPIO_PIN_PULLUP; nrfx_gpiote_in_init(PinMap::Cst816sIrq, &pinConfig, nrfx_gpiote_evt_handler); + nrfx_gpiote_in_event_enable(PinMap::Cst816sIrq, true); // Power present pinConfig.sense = NRF_GPIOTE_POLARITY_TOGGLE; pinConfig.pull = NRF_GPIO_PIN_NOPULL; - pinConfig.is_watcher = false; - pinConfig.hi_accuracy = false; - pinConfig.skip_gpio_setup = false; nrfx_gpiote_in_init(PinMap::PowerPresent, &pinConfig, nrfx_gpiote_evt_handler); nrfx_gpiote_in_event_enable(PinMap::PowerPresent, true); @@ -262,27 +251,27 @@ void SystemTask::Work() { nimbleController.RestartFastAdv(); } - isSleeping = false; - isWakingUp = false; + state = SystemTaskState::Running; isDimmed = false; break; case Messages::TouchWakeUp: { if (touchHandler.GetNewTouchInfo()) { auto gesture = touchHandler.GestureGet(); - if (gesture != Pinetime::Applications::TouchEvents::None and - ((gesture == Pinetime::Applications::TouchEvents::DoubleTap and - settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::DoubleTap)) or - (gesture == Pinetime::Applications::TouchEvents::Tap and + if (gesture != Pinetime::Applications::TouchEvents::None && + ((gesture == Pinetime::Applications::TouchEvents::DoubleTap && + settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::DoubleTap)) || + (gesture == Pinetime::Applications::TouchEvents::Tap && settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::SingleTap)))) { GoToRunning(); } } - } break; + break; + } case Messages::GoToSleep: if (doNotGoToSleep) { break; } - isGoingToSleep = true; + state = SystemTaskState::GoingToSleep; // Already set in PushMessage() NRF_LOG_INFO("[systemtask] Going to sleep"); xTimerStop(idleTimer, 0); xTimerStop(dimTimer, 0); @@ -304,7 +293,7 @@ void SystemTask::Work() { break; case Messages::OnNewNotification: if (settingsController.GetNotificationStatus() == Pinetime::Controllers::Settings::Notification::ON) { - if (isSleeping && !isWakingUp) { + if (state == SystemTaskState::Sleeping) { GoToRunning(); } else { ReloadIdleTimer(); @@ -313,14 +302,14 @@ void SystemTask::Work() { } break; case Messages::OnTimerDone: - if (isSleeping && !isWakingUp) { + if (state == SystemTaskState::Sleeping) { GoToRunning(); } motorController.RunForDuration(35); displayApp.PushMessage(Pinetime::Applications::Display::Messages::TimerDone); break; case Messages::SetOffAlarm: - if (isSleeping && !isWakingUp) { + if (state == SystemTaskState::Sleeping) { GoToRunning(); } motorController.StartRinging(); @@ -328,7 +317,6 @@ void SystemTask::Work() { break; case Messages::StopRinging: motorController.StopRinging(); - alarmController.OnStopRinging(); break; case Messages::BleConnected: ReloadIdleTimer(); @@ -337,7 +325,7 @@ void SystemTask::Work() { break; case Messages::BleFirmwareUpdateStarted: doNotGoToSleep = true; - if (isSleeping && !isWakingUp) { + if (state == SystemTaskState::Sleeping) { GoToRunning(); } displayApp.PushMessage(Pinetime::Applications::Display::Messages::BleFirmwareUpdateStarted); @@ -352,8 +340,9 @@ void SystemTask::Work() { case Messages::StartFileTransfer: NRF_LOG_INFO("[systemtask] FS Started"); doNotGoToSleep = true; - if (isSleeping && !isWakingUp) + if (state == SystemTaskState::Sleeping) { GoToRunning(); + } // TODO add intent of fs access icon or something break; case Messages::StopFileTransfer: @@ -402,8 +391,7 @@ void SystemTask::Work() { touchPanel.Sleep(); } - isSleeping = true; - isGoingToSleep = false; + state = SystemTaskState::Sleeping; break; case Messages::OnNewDay: // We might be sleeping (with TWI device disabled. @@ -422,14 +410,15 @@ void SystemTask::Work() { if (message == Messages::OnNewHour) { chimeDuration = 22; chimeWakeup = true; - } else if (chimeOption >= Controllers::Settings::ChimesOption::HalfHours && (minute = dateTimeController.Minutes()) == 30) { + } else if (chimeOption >= Controllers::Settings::ChimesOption::HalfHours && + (minute = dateTimeController.Minutes()) == 30) { chimeDuration = 18; } else if (chimeOption > Controllers::Settings::ChimesOption::HalfHours) { chimeDuration = 11; } else { break; } - if (chimeWakeup && isSleeping && !isWakingUp) { + if (chimeWakeup && state == SystemTaskState::Sleeping) { GoToRunning(); displayApp.PushMessage(Pinetime::Applications::Display::Messages::Clock); } @@ -441,7 +430,7 @@ void SystemTask::Work() { batteryController.ReadPowerState(); motorController.RunForDuration(15); ReloadIdleTimer(); - if (isSleeping && !isWakingUp) { + if (state == SystemTaskState::Sleeping) { GoToRunning(); } break; @@ -452,7 +441,7 @@ void SystemTask::Work() { nimbleController.NotifyBatteryLevel(batteryController.PercentRemaining()); break; case Messages::OnPairing: - if (isSleeping && !isWakingUp) { + if (state == SystemTaskState::Sleeping) { GoToRunning(); } motorController.RunForDuration(35); @@ -480,7 +469,7 @@ void SystemTask::Work() { if (isBleDiscoveryTimerRunning) { if (bleDiscoveryTimer == 0) { isBleDiscoveryTimerRunning = false; - // Services discovery is deffered from 3 seconds to avoid the conflicts between the host communicating with the + // Services discovery is deferred from 3 seconds to avoid the conflicts between the host communicating with the // target and vice-versa. I'm not sure if this is the right way to handle this... nimbleController.StartDiscovery(); } else { @@ -500,14 +489,15 @@ void SystemTask::Work() { } void SystemTask::UpdateMotion() { - if (isGoingToSleep or isWakingUp) { + if (state == SystemTaskState::GoingToSleep || state == SystemTaskState::WakingUp) { return; } - if (isSleeping && !(settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::RaiseWrist) || - settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake))) { + if (state == SystemTaskState::Sleeping && !(settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::RaiseWrist) || + settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake))) { return; } + if (stepCounterMustBeReset) { motionSensor.ResetStepCounter(); stepCounterMustBeReset = false; @@ -519,7 +509,7 @@ void SystemTask::UpdateMotion() { motionController.Update(motionValues.x, motionValues.y, motionValues.z, motionValues.steps); if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::RaiseWrist) && - motionController.Should_RaiseWake(isSleeping)) { + motionController.Should_RaiseWake(state == SystemTaskState::Sleeping)) { GoToRunning(); } if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake) && @@ -540,7 +530,7 @@ void SystemTask::HandleButtonAction(Controllers::ButtonActions action) { switch (action) { case Actions::Click: // If the first action after fast wakeup is a click, it should be ignored. - if (!fastWakeUpDone && !isGoingToSleep) { + if (!fastWakeUpDone && state != SystemTaskState::GoingToSleep) { displayApp.PushMessage(Applications::Display::Messages::ButtonPushed); } break; @@ -561,20 +551,16 @@ void SystemTask::HandleButtonAction(Controllers::ButtonActions action) { } void SystemTask::GoToRunning() { - if (isGoingToSleep or (not isSleeping) or isWakingUp) { - return; + if (state == SystemTaskState::Sleeping) { + state = SystemTaskState::WakingUp; + PushMessage(Messages::GoToRunning); } - isWakingUp = true; - PushMessage(Messages::GoToRunning); } void SystemTask::OnTouchEvent() { - if (isGoingToSleep) { - return; - } - if (!isSleeping) { + if (state == SystemTaskState::Running) { PushMessage(Messages::OnTouchEvent); - } else if (!isWakingUp) { + } else if (state == SystemTaskState::Sleeping) { if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::SingleTap) or settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::DoubleTap)) { PushMessage(Messages::TouchWakeUp); @@ -584,7 +570,7 @@ void SystemTask::OnTouchEvent() { void SystemTask::PushMessage(System::Messages msg) { if (msg == Messages::GoToSleep && !doNotGoToSleep) { - isGoingToSleep = true; + state = SystemTaskState::GoingToSleep; } if (in_isr()) { @@ -619,7 +605,7 @@ void SystemTask::OnIdle() { } void SystemTask::ReloadIdleTimer() { - if (isSleeping || isGoingToSleep) { + if (state != SystemTaskState::Running) { return; } if (isDimmed) { diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h index f59b2af..e884ca3 100644 --- a/src/systemtask/SystemTask.h +++ b/src/systemtask/SystemTask.h @@ -53,6 +53,7 @@ namespace Pinetime { namespace System { class SystemTask { public: + enum class SystemTaskState { Sleeping, Running, GoingToSleep, WakingUp }; SystemTask(Drivers::SpiMaster& spi, Drivers::St7789& lcd, Pinetime::Drivers::SpiNorFlash& spiNorFlash, @@ -91,7 +92,7 @@ namespace Pinetime { }; bool IsSleeping() const { - return isSleeping; + return state == SystemTaskState::Sleeping || state == SystemTaskState::WakingUp; } // For accelerator-based games @@ -119,10 +120,6 @@ namespace Pinetime { Pinetime::Controllers::TimerController& timerController; Pinetime::Controllers::AlarmController& alarmController; QueueHandle_t systemTasksMsgQueue; - std::atomic<bool> isSleeping {false}; - std::atomic<bool> isGoingToSleep {false}; - std::atomic<bool> isWakingUp {false}; - std::atomic<bool> isDimmed {false}; Pinetime::Drivers::Watchdog& watchdog; Pinetime::Controllers::NotificationManager& notificationManager; Pinetime::Controllers::MotorController& motorController; @@ -148,6 +145,8 @@ namespace Pinetime { TimerHandle_t idleTimer; TimerHandle_t measureBatteryTimer; bool doNotGoToSleep = false; + bool isDimmed = false; + SystemTaskState state = SystemTaskState::Running; void HandleButtonAction(Controllers::ButtonActions action); bool fastWakeUpDone = false; diff --git a/src/touchhandler/TouchHandler.h b/src/touchhandler/TouchHandler.h index fb3d265..332041e 100644 --- a/src/touchhandler/TouchHandler.h +++ b/src/touchhandler/TouchHandler.h @@ -11,30 +11,30 @@ namespace Pinetime { } namespace Controllers { class TouchHandler { - public: - explicit TouchHandler(Drivers::Cst816S&, Components::LittleVgl&); - void CancelTap(); - bool GetNewTouchInfo(); - void UpdateLvglTouchPoint(); + public: + explicit TouchHandler(Drivers::Cst816S&, Components::LittleVgl&); + void CancelTap(); + bool GetNewTouchInfo(); + void UpdateLvglTouchPoint(); - bool IsTouching() const { - return info.touching; - } - uint8_t GetX() const { - return info.x; - } - uint8_t GetY() const { - return info.y; - } - Pinetime::Applications::TouchEvents GestureGet(); - private: + bool IsTouching() const { + return info.touching; + } + uint8_t GetX() const { + return info.x; + } + uint8_t GetY() const { + return info.y; + } + Pinetime::Applications::TouchEvents GestureGet(); - Pinetime::Drivers::Cst816S::TouchInfos info; - Pinetime::Drivers::Cst816S& touchPanel; - Pinetime::Components::LittleVgl& lvgl; - Pinetime::Applications::TouchEvents gesture; - bool isCancelled = false; - bool gestureReleased = true; + private: + Pinetime::Drivers::Cst816S::TouchInfos info; + Pinetime::Drivers::Cst816S& touchPanel; + Pinetime::Components::LittleVgl& lvgl; + Pinetime::Applications::TouchEvents gesture; + bool isCancelled = false; + bool gestureReleased = true; }; } } |
