Merge branch 'develop' into app/workout

This commit is contained in:
Aleksandr Anisimov 2022-05-19 09:28:13 +03:00
commit b1700aa09b
167 changed files with 1156 additions and 9086 deletions

38
.github/workflows/format.yml vendored Normal file
View File

@ -0,0 +1,38 @@
name: Code formatting
on:
pull_request:
branches: [ master, develop ]
paths:
- '**.cpp'
- '**.h'
- '!src/libs/**'
jobs:
test-format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1000
- name: Configure git
run: |
git config --global user.email "-"
git config --global user.name "Autoformatter"
git fetch origin "$GITHUB_BASE_REF":"$GITHUB_BASE_REF" --depth=1000
- name: Install clang-format
run: |
sudo apt-get update
sudo apt-get -y install clang-format-12
- name: Check formatting
run: tests/test-format.sh
- name: Upload patches
uses: actions/upload-artifact@v3
if: failure()
with:
name: Patches
path: ./*.patch

78
.github/workflows/lv_sim.yml vendored Normal file
View File

@ -0,0 +1,78 @@
# GitHub Actions Workflow to build Simulator for PineTime Smart Watch LVGL Interface
# Name of this Workflow
name: Build PineTime LVGL Simulator
# When to run this Workflow...
on:
# Run this Workflow when files are updated (Pushed) in the "master" and "develop" Branch
push:
branches: [ master, develop ]
# Also run this Workflow when a Pull Request is created or updated in the "master" and "develop" Branch
pull_request:
branches: [ master, develop ]
# Steps to run for the Workflow
jobs:
build:
# Run these steps on Ubuntu
runs-on: ubuntu-latest
steps:
#########################################################################################
# Download and Install Dependencies
- name: Install cmake
uses: lukka/get-cmake@v3.18.3
- name: Install SDL2 development package
run: |
sudo apt-get update
sudo apt-get -y install libsdl2-dev
- name: Install lv_font_conv
run:
npm i -g lv_font_conv@1.5.2
#########################################################################################
# Checkout
- name: Checkout source files
uses: actions/checkout@v2
with:
submodules: recursive
#########################################################################################
# get InfiniSim repo
- name: Get InfiniSim repo
run: |
git clone https://github.com/InfiniTimeOrg/InfiniSim.git --depth 1 --branch main
git -C InfiniSim submodule update --init lv_drivers libpng
#########################################################################################
# CMake
- name: CMake
run: |
cmake -G Ninja -S InfiniSim -B build_lv_sim -DInfiniTime_DIR="${PWD}"
#########################################################################################
# Build and Upload simulator
# For Debugging Builds: Remove "make" option "-j" for clearer output. Add "--trace" to see details.
# For Faster Builds: Add "make" option "-j"
- name: Build simulator executable
run: |
cmake --build build_lv_sim
- name: Upload simulator executable
uses: actions/upload-artifact@v2
with:
name: infinisim
path: build_lv_sim/infinisim

View File

@ -95,6 +95,10 @@ jobs:
pip3 install --user setuptools pip3 install --user setuptools
pip3 install --user adafruit-nrfutil pip3 install --user adafruit-nrfutil
- name: Install lv_font_conv
run:
npm i -g lv_font_conv@1.5.2
######################################################################################### #########################################################################################
# Checkout # Checkout

View File

@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.10) cmake_minimum_required(VERSION 3.10)
project(pinetime VERSION 1.8.0 LANGUAGES C CXX ASM) project(pinetime VERSION 1.9.0 LANGUAGES C CXX ASM)
set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD 14)

View File

@ -15,7 +15,8 @@ Fast open-source firmware for the [PineTime smartwatch](https://www.pine64.org/p
- [Gadgetbridge](https://gadgetbridge.org/) (Android) - [Gadgetbridge](https://gadgetbridge.org/) (Android)
- [AmazFish](https://openrepos.net/content/piggz/amazfish/) (SailfishOS) - [AmazFish](https://openrepos.net/content/piggz/amazfish/) (SailfishOS)
- [Siglo](https://github.com/alexr4535/siglo) (Linux) - [Siglo](https://github.com/alexr4535/siglo) (Linux)
- [InfiniLink](https://github.com/xan-m/InfiniLink) **[Experimental]** (iOS) - [InfiniLink](https://github.com/InfiniTimeOrg/InfiniLink) **[Experimental]** **[Unmaintained, looking for developers/maintainers]** (iOS)
- [ITD](https://gitea.arsenm.dev/Arsen6331/itd) (Linux)
## Development ## Development
@ -25,6 +26,10 @@ Fast open-source firmware for the [PineTime smartwatch](https://www.pine64.org/p
- [Creating a stopwatch in Pinetime(article)](https://pankajraghav.com/2021/04/03/PINETIME-STOPCLOCK.html) - [Creating a stopwatch in Pinetime(article)](https://pankajraghav.com/2021/04/03/PINETIME-STOPCLOCK.html)
- [Tips on designing an app UI](doc/ui_guidelines.md) - [Tips on designing an app UI](doc/ui_guidelines.md)
### InfiniSim Simulator
Use the [InfiniSim Simulator](https://github.com/InfiniTimeOrg/InfiniSim) to experience the `InfiniTime` user interface directly on your PC, to shorten the time until you get your hands on a real [PineTime smartwatch](https://www.pine64.org/pinetime/).
Or use it to develop new Watchfaces, new Screens, or quickly iterate on the user interface.
### Contributing ### Contributing
- [How to contribute?](/doc/contribute.md) - [How to contribute?](/doc/contribute.md)
- [Coding conventions](/doc/coding-convention.md) - [Coding conventions](/doc/coding-convention.md)

View File

@ -12,6 +12,10 @@ To build this project, you'll need:
python -m pip install -r tools/mcuboot/requirements.txt python -m pip install -r tools/mcuboot/requirements.txt
``` ```
- A reasonably recent version of CMake (I use 3.16.5) - A reasonably recent version of CMake (I use 3.16.5)
- lv_font_conv, to generate the font .c files
- see [lv_font_conv](https://github.com/lvgl/lv_font_conv#install-the-script)
- install npm (commonly done via the package manager, ensure node's version is at least 12)
- install lv_font_conv: `npm install lv_font_conv`
## Build steps ## Build steps
### Clone the repo ### Clone the repo

View File

@ -1,4 +1,4 @@
FROM ubuntu:18.04 FROM ubuntu:22.04
ARG DEBIAN_FRONTEND=noninteractive ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update -qq \ RUN apt-get update -qq \
@ -11,21 +11,27 @@ RUN apt-get update -qq \
make \ make \
python3 \ python3 \
python3-pip \ python3-pip \
python-is-python3 \
tar \ tar \
unzip \ unzip \
wget \ wget \
# aarch64 packages curl \
# aarch64 packages
libffi-dev \ libffi-dev \
libssl-dev \ libssl-dev \
python3-dev \ python3-dev \
python \
git \ git \
apt-utils \
&& curl -sL https://deb.nodesource.com/setup_18.x | bash - \
&& apt-get install -y nodejs \
&& rm -rf /var/cache/apt/* /var/lib/apt/lists/*; && rm -rf /var/cache/apt/* /var/lib/apt/lists/*;
# Git needed for PROJECT_GIT_COMMIT_HASH variable setting # Git needed for PROJECT_GIT_COMMIT_HASH variable setting
RUN pip3 install adafruit-nrfutil RUN pip3 install adafruit-nrfutil
RUN pip3 install -Iv cryptography==3.3 RUN pip3 install -Iv cryptography==3.3
RUN pip3 install cbor
RUN npm i lv_font_conv@1.5.2 -g
# build.sh knows how to compile # build.sh knows how to compile
COPY build.sh /opt/ COPY build.sh /opt/

View File

@ -367,36 +367,12 @@ set(QCBOR_SRC
) )
list(APPEND IMAGE_FILES list(APPEND IMAGE_FILES
displayapp/icons/battery/os_battery_error.c displayapp/icons/battery/batteryicon.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_connected.c
displayapp/icons/bluetooth/os_bt_disconnected.c displayapp/icons/bluetooth/os_bt_disconnected.c
) )
list(APPEND SOURCE_FILES list(APPEND SOURCE_FILES
BootloaderVersion.cpp BootloaderVersion.cpp
logging/NrfLogger.cpp logging/NrfLogger.cpp
@ -450,14 +426,14 @@ list(APPEND SOURCE_FILES
displayapp/screens/settings/SettingSetTime.cpp displayapp/screens/settings/SettingSetTime.cpp
displayapp/screens/settings/SettingChimes.cpp displayapp/screens/settings/SettingChimes.cpp
displayapp/screens/settings/SettingShakeThreshold.cpp displayapp/screens/settings/SettingShakeThreshold.cpp
displayapp/screens/settings/SettingAirplaneMode.cpp displayapp/screens/settings/SettingBluetooth.cpp
## Watch faces ## Watch faces
displayapp/icons/bg_clock.c displayapp/icons/bg_clock.c
displayapp/screens/WatchFaceAnalog.cpp displayapp/screens/WatchFaceAnalog.cpp
displayapp/screens/WatchFaceDigital.cpp displayapp/screens/WatchFaceDigital.cpp
displayapp/screens/WatchFaceTerminal.cpp displayapp/screens/WatchFaceTerminal.cpp
displayapp/screens/PineTimeStyle.cpp displayapp/screens/WatchFacePineTimeStyle.cpp
## ##
@ -489,7 +465,6 @@ list(APPEND SOURCE_FILES
components/ble/MusicService.cpp components/ble/MusicService.cpp
components/ble/weather/WeatherService.cpp components/ble/weather/WeatherService.cpp
components/ble/NavigationService.cpp components/ble/NavigationService.cpp
displayapp/fonts/lv_font_navi_80.c
components/ble/BatteryInformationService.cpp components/ble/BatteryInformationService.cpp
components/ble/FSService.cpp components/ble/FSService.cpp
components/ble/ImmediateAlertService.cpp components/ble/ImmediateAlertService.cpp
@ -508,15 +483,10 @@ list(APPEND SOURCE_FILES
FreeRTOS/port_cmsis.c FreeRTOS/port_cmsis.c
displayapp/LittleVgl.cpp 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 displayapp/lv_pinetime_theme.c
systemtask/SystemTask.cpp systemtask/SystemTask.cpp
systemtask/SystemMonitor.cpp
drivers/TwiMaster.cpp drivers/TwiMaster.cpp
heartratetask/HeartRateTask.cpp heartratetask/HeartRateTask.cpp
@ -578,6 +548,7 @@ list(APPEND RECOVERY_SOURCE_FILES
FreeRTOS/port_cmsis.c FreeRTOS/port_cmsis.c
systemtask/SystemTask.cpp systemtask/SystemTask.cpp
systemtask/SystemMonitor.cpp
drivers/TwiMaster.cpp drivers/TwiMaster.cpp
components/gfx/Gfx.cpp components/gfx/Gfx.cpp
components/rle/RleDecoder.cpp components/rle/RleDecoder.cpp
@ -825,6 +796,15 @@ if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release") set(CMAKE_BUILD_TYPE "Release")
endif () 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 # NRF SDK
add_library(nrf-sdk STATIC ${SDK_SOURCE_FILES}) add_library(nrf-sdk STATIC ${SDK_SOURCE_FILES})
target_include_directories(nrf-sdk SYSTEM PUBLIC . ../) target_include_directories(nrf-sdk SYSTEM PUBLIC . ../)
@ -898,7 +878,7 @@ set(EXECUTABLE_FILE_NAME ${EXECUTABLE_NAME}-${pinetime_VERSION_MAJOR}.${pinetime
set(NRF5_LINKER_SCRIPT "${CMAKE_SOURCE_DIR}/gcc_nrf52.ld") set(NRF5_LINKER_SCRIPT "${CMAKE_SOURCE_DIR}/gcc_nrf52.ld")
add_executable(${EXECUTABLE_NAME} ${SOURCE_FILES}) add_executable(${EXECUTABLE_NAME} ${SOURCE_FILES})
set_target_properties(${EXECUTABLE_NAME} PROPERTIES OUTPUT_NAME ${EXECUTABLE_FILE_NAME}) 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 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: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> $<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:RELEASE>>: ${COMMON_FLAGS} -Wextra -Wformat -Wno-missing-field-initializers -Wno-unused-parameter -Os>
@ -919,7 +899,6 @@ add_custom_command(TARGET ${EXECUTABLE_NAME}
COMMAND ${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE_FILE_NAME}.out "${EXECUTABLE_FILE_NAME}.hex" COMMAND ${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE_FILE_NAME}.out "${EXECUTABLE_FILE_NAME}.hex"
COMMENT "post build steps for ${EXECUTABLE_FILE_NAME}") COMMENT "post build steps for ${EXECUTABLE_FILE_NAME}")
# Build binary intended to be used by bootloader # Build binary intended to be used by bootloader
set(EXECUTABLE_MCUBOOT_NAME "pinetime-mcuboot-app") set(EXECUTABLE_MCUBOOT_NAME "pinetime-mcuboot-app")
set(EXECUTABLE_MCUBOOT_FILE_NAME ${EXECUTABLE_MCUBOOT_NAME}-${pinetime_VERSION_MAJOR}.${pinetime_VERSION_MINOR}.${pinetime_VERSION_PATCH}) set(EXECUTABLE_MCUBOOT_FILE_NAME ${EXECUTABLE_MCUBOOT_NAME}-${pinetime_VERSION_MAJOR}.${pinetime_VERSION_MINOR}.${pinetime_VERSION_PATCH})
@ -927,7 +906,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(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") set(NRF5_LINKER_SCRIPT_MCUBOOT "${CMAKE_SOURCE_DIR}/gcc_nrf52-mcuboot.ld")
add_executable(${EXECUTABLE_MCUBOOT_NAME} ${SOURCE_FILES}) 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}) set_target_properties(${EXECUTABLE_MCUBOOT_NAME} PROPERTIES OUTPUT_NAME ${EXECUTABLE_MCUBOOT_FILE_NAME})
target_compile_options(${EXECUTABLE_MCUBOOT_NAME} PUBLIC target_compile_options(${EXECUTABLE_MCUBOOT_NAME} PUBLIC
$<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:DEBUG>>: ${COMMON_FLAGS} -Og -g3> $<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:DEBUG>>: ${COMMON_FLAGS} -Og -g3>
@ -963,7 +942,7 @@ endif()
set(EXECUTABLE_RECOVERY_NAME "pinetime-recovery") set(EXECUTABLE_RECOVERY_NAME "pinetime-recovery")
set(EXECUTABLE_RECOVERY_FILE_NAME ${EXECUTABLE_RECOVERY_NAME}-${pinetime_VERSION_MAJOR}.${pinetime_VERSION_MINOR}.${pinetime_VERSION_PATCH}) 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}) 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}) 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_definitions(${EXECUTABLE_RECOVERY_NAME} PUBLIC "PINETIME_IS_RECOVERY")
target_compile_options(${EXECUTABLE_RECOVERY_NAME} PUBLIC target_compile_options(${EXECUTABLE_RECOVERY_NAME} PUBLIC
@ -993,7 +972,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(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) 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}) 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}) 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_definitions(${EXECUTABLE_RECOVERY_MCUBOOT_NAME} PUBLIC "PINETIME_IS_RECOVERY")
target_compile_options(${EXECUTABLE_RECOVERY_MCUBOOT_NAME} PUBLIC target_compile_options(${EXECUTABLE_RECOVERY_MCUBOOT_NAME} PUBLIC
@ -1031,7 +1010,7 @@ endif()
set(EXECUTABLE_RECOVERYLOADER_NAME "pinetime-recovery-loader") set(EXECUTABLE_RECOVERYLOADER_NAME "pinetime-recovery-loader")
set(EXECUTABLE_RECOVERYLOADER_FILE_NAME ${EXECUTABLE_RECOVERYLOADER_NAME}-${pinetime_VERSION_MAJOR}.${pinetime_VERSION_MINOR}.${pinetime_VERSION_PATCH}) 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}) 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}) set_target_properties(${EXECUTABLE_RECOVERYLOADER_NAME} PROPERTIES OUTPUT_NAME ${EXECUTABLE_RECOVERYLOADER_FILE_NAME})
target_compile_options(${EXECUTABLE_RECOVERYLOADER_NAME} PUBLIC target_compile_options(${EXECUTABLE_RECOVERYLOADER_NAME} PUBLIC
$<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:DEBUG>>: ${COMMON_FLAGS} -Og -g3> $<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:DEBUG>>: ${COMMON_FLAGS} -Og -g3>
@ -1064,7 +1043,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(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) 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}) 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}) set_target_properties(${EXECUTABLE_MCUBOOT_RECOVERYLOADER_NAME} PROPERTIES OUTPUT_NAME ${EXECUTABLE_MCUBOOT_RECOVERYLOADER_FILE_NAME})
target_compile_options(${EXECUTABLE_MCUBOOT_RECOVERYLOADER_NAME} PUBLIC target_compile_options(${EXECUTABLE_MCUBOOT_RECOVERYLOADER_NAME} PUBLIC
$<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:DEBUG>>: ${COMMON_FLAGS} -Og -g3> $<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:DEBUG>>: ${COMMON_FLAGS} -Og -g3>

View File

@ -93,7 +93,7 @@
/* Software timer definitions. */ /* Software timer definitions. */
#define configUSE_TIMERS 1 #define configUSE_TIMERS 1
#define configTIMER_TASK_PRIORITY (0) #define configTIMER_TASK_PRIORITY (1)
#define configTIMER_QUEUE_LENGTH 32 #define configTIMER_QUEUE_LENGTH 32
#define configTIMER_TASK_STACK_DEPTH (300) #define configTIMER_TASK_STACK_DEPTH (300)

View File

@ -54,7 +54,8 @@ void AlarmController::ScheduleAlarm() {
auto now = dateTimeController.CurrentDateTime(); auto now = dateTimeController.CurrentDateTime();
alarmTime = now; 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); tm* tmAlarmTime = std::localtime(&ttAlarmTime);
// If the time being set has already passed today,the alarm should be set for tomorrow // If the time being set has already passed today,the alarm should be set for tomorrow

View File

@ -2,6 +2,7 @@
#include <algorithm> #include <algorithm>
#include "components/ble/NotificationManager.h" #include "components/ble/NotificationManager.h"
#include "systemtask/SystemTask.h" #include "systemtask/SystemTask.h"
#include <nrf_log.h>
using namespace Pinetime::Controllers; using namespace Pinetime::Controllers;
constexpr ble_uuid16_t AlertNotificationClient::ansServiceUuid; constexpr ble_uuid16_t AlertNotificationClient::ansServiceUuid;

View File

@ -3,6 +3,7 @@
#include "components/ble/BleController.h" #include "components/ble/BleController.h"
#include "drivers/SpiNorFlash.h" #include "drivers/SpiNorFlash.h"
#include "systemtask/SystemTask.h" #include "systemtask/SystemTask.h"
#include <nrf_log.h>
using namespace Pinetime::Controllers; using namespace Pinetime::Controllers;

View File

@ -1,6 +1,7 @@
#include "components/ble/HeartRateService.h" #include "components/ble/HeartRateService.h"
#include "components/heartrate/HeartRateController.h" #include "components/heartrate/HeartRateController.h"
#include "systemtask/SystemTask.h" #include "systemtask/SystemTask.h"
#include <nrf_log.h>
using namespace Pinetime::Controllers; using namespace Pinetime::Controllers;

View File

@ -1,6 +1,7 @@
#include "components/ble/MotionService.h" #include "components/ble/MotionService.h"
#include "components/motion/MotionController.h" #include "components/motion/MotionController.h"
#include "systemtask/SystemTask.h" #include "systemtask/SystemTask.h"
#include <nrf_log.h>
using namespace Pinetime::Controllers; using namespace Pinetime::Controllers;

View File

@ -17,6 +17,7 @@
*/ */
#include "components/ble/MusicService.h" #include "components/ble/MusicService.h"
#include "systemtask/SystemTask.h" #include "systemtask/SystemTask.h"
#include <cstring>
namespace { namespace {
// 0000yyxx-78fc-48fe-8e23-433b3a1942d0 // 0000yyxx-78fc-48fe-8e23-433b3a1942d0
@ -47,6 +48,8 @@ namespace {
constexpr ble_uuid128_t msRepeatCharUuid {CharUuid(0x0b, 0x00)}; constexpr ble_uuid128_t msRepeatCharUuid {CharUuid(0x0b, 0x00)};
constexpr ble_uuid128_t msShuffleCharUuid {CharUuid(0x0c, 0x00)}; constexpr ble_uuid128_t msShuffleCharUuid {CharUuid(0x0c, 0x00)};
constexpr uint8_t MaxStringSize {40};
int MusicCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt, void* arg) { int MusicCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt, void* arg) {
return static_cast<Pinetime::Controllers::MusicService*>(arg)->OnCommand(conn_handle, attr_handle, ctxt); return static_cast<Pinetime::Controllers::MusicService*>(arg)->OnCommand(conn_handle, attr_handle, ctxt);
} }
@ -125,9 +128,21 @@ void Pinetime::Controllers::MusicService::Init() {
int Pinetime::Controllers::MusicService::OnCommand(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt) { int Pinetime::Controllers::MusicService::OnCommand(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt) {
if (ctxt->op == BLE_GATT_ACCESS_OP_WRITE_CHR) { if (ctxt->op == BLE_GATT_ACCESS_OP_WRITE_CHR) {
size_t notifSize = OS_MBUF_PKTLEN(ctxt->om); size_t notifSize = OS_MBUF_PKTLEN(ctxt->om);
char data[notifSize + 1]; size_t bufferSize = notifSize;
data[notifSize] = '\0'; if (notifSize > MaxStringSize) {
os_mbuf_copydata(ctxt->om, 0, notifSize, data); bufferSize = MaxStringSize;
}
char data[bufferSize + 1];
os_mbuf_copydata(ctxt->om, 0, bufferSize, data);
if (notifSize > bufferSize) {
data[bufferSize-1] = '.';
data[bufferSize-2] = '.';
data[bufferSize-3] = '.';
}
data[bufferSize] = '\0';
char* s = &data[0]; char* s = &data[0];
if (ble_uuid_cmp(ctxt->chr->uuid, &msArtistCharUuid.u) == 0) { if (ble_uuid_cmp(ctxt->chr->uuid, &msArtistCharUuid.u) == 0) {
artistName = s; artistName = s;
@ -137,12 +152,20 @@ int Pinetime::Controllers::MusicService::OnCommand(uint16_t conn_handle, uint16_
albumName = s; albumName = s;
} else if (ble_uuid_cmp(ctxt->chr->uuid, &msStatusCharUuid.u) == 0) { } else if (ble_uuid_cmp(ctxt->chr->uuid, &msStatusCharUuid.u) == 0) {
playing = s[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) { } else if (ble_uuid_cmp(ctxt->chr->uuid, &msRepeatCharUuid.u) == 0) {
repeat = s[0]; repeat = s[0];
} else if (ble_uuid_cmp(ctxt->chr->uuid, &msShuffleCharUuid.u) == 0) { } else if (ble_uuid_cmp(ctxt->chr->uuid, &msShuffleCharUuid.u) == 0) {
shuffle = s[0]; shuffle = s[0];
} else if (ble_uuid_cmp(ctxt->chr->uuid, &msPositionCharUuid.u) == 0) { } else if (ble_uuid_cmp(ctxt->chr->uuid, &msPositionCharUuid.u) == 0) {
trackProgress = (s[0] << 24) | (s[1] << 16) | (s[2] << 8) | s[3]; 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) { } else if (ble_uuid_cmp(ctxt->chr->uuid, &msTotalLengthCharUuid.u) == 0) {
trackLength = (s[0] << 24) | (s[1] << 16) | (s[2] << 8) | s[3]; trackLength = (s[0] << 24) | (s[1] << 16) | (s[2] << 8) | s[3];
} else if (ble_uuid_cmp(ctxt->chr->uuid, &msTrackNumberCharUuid.u) == 0) { } else if (ble_uuid_cmp(ctxt->chr->uuid, &msTrackNumberCharUuid.u) == 0) {
@ -177,6 +200,9 @@ float Pinetime::Controllers::MusicService::getPlaybackSpeed() const {
} }
int Pinetime::Controllers::MusicService::getProgress() const { int Pinetime::Controllers::MusicService::getProgress() const {
if (isPlaying()) {
return trackProgress + static_cast<int>((static_cast<float>(xTaskGetTickCount() - trackProgressUpdateTime) / 1024.0f) * getPlaybackSpeed());
}
return trackProgress; return trackProgress;
} }

View File

@ -81,6 +81,7 @@ namespace Pinetime {
int trackLength {0}; int trackLength {0};
int trackNumber {}; int trackNumber {};
int tracksTotal {}; int tracksTotal {};
TickType_t trackProgressUpdateTime {0};
float playbackSpeed {1.0f}; float playbackSpeed {1.0f};

View File

@ -2,6 +2,7 @@
#include <cstring> #include <cstring>
#include <hal/nrf_rtc.h> #include <hal/nrf_rtc.h>
#include <nrf_log.h>
#define min // workaround: nimble's min/max macros conflict with libstdc++ #define min // workaround: nimble's min/max macros conflict with libstdc++
#define max #define max
#include <host/ble_gap.h> #include <host/ble_gap.h>
@ -34,7 +35,6 @@ NimbleController::NimbleController(Pinetime::System::SystemTask& systemTask,
: systemTask {systemTask}, : systemTask {systemTask},
bleController {bleController}, bleController {bleController},
dateTimeController {dateTimeController}, dateTimeController {dateTimeController},
notificationManager {notificationManager},
spiNorFlash {spiNorFlash}, spiNorFlash {spiNorFlash},
fs {fs}, fs {fs},
dfuService {systemTask, bleController, spiNorFlash}, dfuService {systemTask, bleController, spiNorFlash},
@ -76,6 +76,7 @@ int GAPEventCallback(struct ble_gap_event* event, void* arg) {
void NimbleController::Init() { void NimbleController::Init() {
while (!ble_hs_synced()) { while (!ble_hs_synced()) {
vTaskDelay(10);
} }
nptr = this; nptr = this;

View File

@ -86,7 +86,6 @@ namespace Pinetime {
Pinetime::System::SystemTask& systemTask; Pinetime::System::SystemTask& systemTask;
Ble& bleController; Ble& bleController;
DateTime& dateTimeController; DateTime& dateTimeController;
NotificationManager& notificationManager;
Pinetime::Drivers::SpiNorFlash& spiNorFlash; Pinetime::Drivers::SpiNorFlash& spiNorFlash;
FS& fs; FS& fs;
DfuService dfuService; DfuService dfuService;

View File

@ -108,11 +108,11 @@ void DateTime::UpdateTime(uint32_t systickCounter) {
} }
} }
const char* DateTime::MonthShortToString() { const char* DateTime::MonthShortToString() const {
return MonthsString[static_cast<uint8_t>(month)]; return MonthsString[static_cast<uint8_t>(month)];
} }
const char* DateTime::DayOfWeekShortToString() { const char* DateTime::DayOfWeekShortToString() const {
return DaysStringShort[static_cast<uint8_t>(dayOfWeek)]; return DaysStringShort[static_cast<uint8_t>(dayOfWeek)];
} }

View File

@ -61,8 +61,8 @@ namespace Pinetime {
return second; return second;
} }
const char* MonthShortToString(); const char* MonthShortToString() const;
const char* DayOfWeekShortToString(); const char* DayOfWeekShortToString() const;
static const char* MonthShortToStringLow(Months month); static const char* MonthShortToStringLow(Months month);
std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> CurrentDateTime() const { std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> CurrentDateTime() const {

View File

@ -26,7 +26,7 @@ void Settings::LoadSettingsFromFile() {
SettingsData bufferSettings; SettingsData bufferSettings;
lfs_file_t settingsFile; lfs_file_t settingsFile;
if ( fs.FileOpen(&settingsFile, "/settings.dat", LFS_O_RDWR | LFS_O_CREAT) != LFS_ERR_OK) { if ( fs.FileOpen(&settingsFile, "/settings.dat", LFS_O_RDONLY) != LFS_ERR_OK) {
return; return;
} }
fs.FileRead(&settingsFile, reinterpret_cast<uint8_t*>(&bufferSettings), sizeof(settings)); fs.FileRead(&settingsFile, reinterpret_cast<uint8_t*>(&bufferSettings), sizeof(settings));
@ -39,7 +39,7 @@ void Settings::LoadSettingsFromFile() {
void Settings::SaveSettingsToFile() { void Settings::SaveSettingsToFile() {
lfs_file_t settingsFile; lfs_file_t settingsFile;
if ( fs.FileOpen(&settingsFile, "/settings.dat", LFS_O_RDWR | LFS_O_CREAT) != LFS_ERR_OK) { if ( fs.FileOpen(&settingsFile, "/settings.dat", LFS_O_WRONLY | LFS_O_CREAT) != LFS_ERR_OK) {
return; return;
} }
fs.FileWrite(&settingsFile, reinterpret_cast<uint8_t*>(&settings), sizeof(settings)); fs.FileWrite(&settingsFile, reinterpret_cast<uint8_t*>(&settings), sizeof(settings));

View File

@ -237,7 +237,7 @@ namespace Pinetime {
uint8_t appMenu = 0; uint8_t appMenu = 0;
uint8_t settingsMenu = 0; uint8_t settingsMenu = 0;
/* airplaneMode is intentionally not saved with the other watch settings and initialized /* ble state is intentionally not saved with the other watch settings and initialized
* to off (false) on every boot because we always want ble to be enabled on startup * to off (false) on every boot because we always want ble to be enabled on startup
*/ */
bool bleRadioEnabled = true; bool bleRadioEnabled = true;

View File

@ -1,69 +1,39 @@
//
// Created by florian on 16.05.21.
//
#include "components/timer/TimerController.h" #include "components/timer/TimerController.h"
#include "systemtask/SystemTask.h" #include "systemtask/SystemTask.h"
#include "app_timer.h"
#include "task.h"
using namespace Pinetime::Controllers; using namespace Pinetime::Controllers;
void TimerCallback(TimerHandle_t xTimer) {
APP_TIMER_DEF(timerAppTimer); auto* controller = static_cast<TimerController*>(pvTimerGetTimerID(xTimer));
controller->OnTimerEnd();
namespace {
void TimerEnd(void* p_context) {
auto* controller = static_cast<Pinetime::Controllers::TimerController*> (p_context);
if(controller != nullptr)
controller->OnTimerEnd();
}
} }
void TimerController::Init(Pinetime::System::SystemTask* systemTask) {
void TimerController::Init() { this->systemTask = systemTask;
app_timer_create(&timerAppTimer, APP_TIMER_MODE_SINGLE_SHOT, TimerEnd); timer = xTimerCreate("Timer", 0, pdFALSE, this, TimerCallback);
} }
void TimerController::StartTimer(uint32_t duration) { void TimerController::StartTimer(uint32_t duration) {
app_timer_stop(timerAppTimer); xTimerChangePeriod(timer, pdMS_TO_TICKS(duration), 0);
auto currentTicks = xTaskGetTickCount(); xTimerStart(timer, 0);
app_timer_start(timerAppTimer, APP_TIMER_TICKS(duration), this);
endTicks = currentTicks + APP_TIMER_TICKS(duration);
timerRunning = true;
} }
uint32_t TimerController::GetTimeRemaining() { uint32_t TimerController::GetTimeRemaining() {
if (!timerRunning) { if (IsRunning()) {
return 0; TickType_t remainingTime = xTimerGetExpiryTime(timer) - xTaskGetTickCount();
return (remainingTime * 1000 / configTICK_RATE_HZ);
} }
auto currentTicks = xTaskGetTickCount(); return 0;
TickType_t deltaTicks = 0;
if (currentTicks > endTicks) {
deltaTicks = 0xffffffff - currentTicks;
deltaTicks += (endTicks + 1);
} else {
deltaTicks = endTicks - currentTicks;
}
return (static_cast<TickType_t>(deltaTicks) / static_cast<TickType_t>(configTICK_RATE_HZ)) * 1000;
} }
void TimerController::StopTimer() { void TimerController::StopTimer() {
app_timer_stop(timerAppTimer); xTimerStop(timer, 0);
timerRunning = false;
} }
bool TimerController::IsRunning() { bool TimerController::IsRunning() {
return timerRunning; return (xTimerIsTimerActive(timer) == pdTRUE);
}
void TimerController::OnTimerEnd() {
timerRunning = false;
if(systemTask != nullptr)
systemTask->PushMessage(System::Messages::OnTimerDone);
} }
void TimerController::Register(Pinetime::System::SystemTask* systemTask) { void TimerController::OnTimerEnd() {
this->systemTask = systemTask; systemTask->PushMessage(System::Messages::OnTimerDone);
} }

View File

@ -1,37 +1,33 @@
#pragma once #pragma once
#include <cstdint> #include <FreeRTOS.h>
#include "app_timer.h" #include <timers.h>
#include "portmacro_cmsis.h"
namespace Pinetime { namespace Pinetime {
namespace System { namespace System {
class SystemTask; class SystemTask;
} }
namespace Controllers { namespace Controllers {
class TimerController { class TimerController {
public: public:
TimerController() = default; TimerController() = default;
void Init(); void Init(System::SystemTask* systemTask);
void StartTimer(uint32_t duration); void StartTimer(uint32_t duration);
void StopTimer(); void StopTimer();
uint32_t GetTimeRemaining(); uint32_t GetTimeRemaining();
bool IsRunning(); bool IsRunning();
void OnTimerEnd(); void OnTimerEnd();
void Register(System::SystemTask* systemTask);
private: private:
System::SystemTask* systemTask = nullptr; System::SystemTask* systemTask = nullptr;
TickType_t endTicks; TimerHandle_t timer;
bool timerRunning = false;
}; };
} }
} }

View File

@ -39,7 +39,7 @@ namespace Pinetime {
SettingSetTime, SettingSetTime,
SettingChimes, SettingChimes,
SettingShakeThreshold, SettingShakeThreshold,
SettingAirplaneMode, SettingBluetooth,
Error Error
}; };
} }

View File

@ -10,17 +10,17 @@ lv_color_t Pinetime::Applications::Convert(Pinetime::Controllers::Settings::Colo
case Pinetime::Controllers::Settings::Colors::Gray: return LV_COLOR_GRAY; 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::Black: return LV_COLOR_BLACK;
case Pinetime::Controllers::Settings::Colors::Red: return LV_COLOR_RED; 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::Maroon: return LV_COLOR_MAKE(0xb0, 0x0, 0x0);
case Pinetime::Controllers::Settings::Colors::Yellow: return LV_COLOR_YELLOW; 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::Olive: return LV_COLOR_MAKE(0xb0, 0xb0, 0x0);
case Pinetime::Controllers::Settings::Colors::Lime: return LV_COLOR_LIME; 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::Green: return LV_COLOR_MAKE(0x0, 0xb0, 0x0);
case Pinetime::Controllers::Settings::Colors::Cyan: return LV_COLOR_CYAN; 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::Teal: return LV_COLOR_MAKE(0x0, 0xb0, 0xb0);
case Pinetime::Controllers::Settings::Colors::Blue: return LV_COLOR_BLUE; 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::Navy: return LV_COLOR_MAKE(0x0, 0x0, 0xb0);
case Pinetime::Controllers::Settings::Colors::Magenta: return LV_COLOR_MAGENTA; 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::Purple: return LV_COLOR_MAKE(0xb0, 0x0, 0xb0);
case Pinetime::Controllers::Settings::Colors::Orange: return LV_COLOR_ORANGE; case Pinetime::Controllers::Settings::Colors::Orange: return LV_COLOR_ORANGE;
default: return LV_COLOR_WHITE; default: return LV_COLOR_WHITE;
} }

View File

@ -50,7 +50,7 @@
#include "displayapp/screens/settings/SettingSetTime.h" #include "displayapp/screens/settings/SettingSetTime.h"
#include "displayapp/screens/settings/SettingChimes.h" #include "displayapp/screens/settings/SettingChimes.h"
#include "displayapp/screens/settings/SettingShakeThreshold.h" #include "displayapp/screens/settings/SettingShakeThreshold.h"
#include "displayapp/screens/settings/SettingAirplaneMode.h" #include "displayapp/screens/settings/SettingBluetooth.h"
#include "libs/lv_conf.h" #include "libs/lv_conf.h"
@ -61,28 +61,6 @@ namespace {
static inline bool in_isr(void) { static inline bool in_isr(void) {
return (SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk) != 0; return (SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk) != 0;
} }
TouchEvents ConvertGesture(Pinetime::Drivers::Cst816S::Gestures gesture) {
switch (gesture) {
case Pinetime::Drivers::Cst816S::Gestures::SingleTap:
return TouchEvents::Tap;
case Pinetime::Drivers::Cst816S::Gestures::LongPress:
return TouchEvents::LongTap;
case Pinetime::Drivers::Cst816S::Gestures::DoubleTap:
return TouchEvents::DoubleTap;
case Pinetime::Drivers::Cst816S::Gestures::SlideRight:
return TouchEvents::SwipeRight;
case Pinetime::Drivers::Cst816S::Gestures::SlideLeft:
return TouchEvents::SwipeLeft;
case Pinetime::Drivers::Cst816S::Gestures::SlideDown:
return TouchEvents::SwipeDown;
case Pinetime::Drivers::Cst816S::Gestures::SlideUp:
return TouchEvents::SwipeUp;
case Pinetime::Drivers::Cst816S::Gestures::None:
default:
return TouchEvents::None;
}
}
} }
DisplayApp::DisplayApp(Drivers::St7789& lcd, DisplayApp::DisplayApp(Drivers::St7789& lcd,
@ -188,12 +166,10 @@ void DisplayApp::Refresh() {
brightnessController.Lower(); brightnessController.Lower();
vTaskDelay(100); vTaskDelay(100);
} }
lcd.DisplayOff();
PushMessageToSystemTask(Pinetime::System::Messages::OnDisplayTaskSleeping); PushMessageToSystemTask(Pinetime::System::Messages::OnDisplayTaskSleeping);
state = States::Idle; state = States::Idle;
break; break;
case Messages::GoToRunning: case Messages::GoToRunning:
lcd.DisplayOn();
brightnessController.Restore(); brightnessController.Restore();
state = States::Running; state = States::Running;
break; break;
@ -214,6 +190,8 @@ void DisplayApp::Refresh() {
} else if (currentApp == Apps::Workout) { } else if (currentApp == Apps::Workout) {
auto* workout = static_cast<Screens::Workout*>(currentScreen.get()); auto* workout = static_cast<Screens::Workout*>(currentScreen.get());
workout->OnTimerDone(); workout->OnTimerDone();
} else {
LoadApp(Apps::Timer, DisplayApp::FullRefreshDirections::Down);
} }
break; break;
case Messages::AlarmTriggered: case Messages::AlarmTriggered:
@ -231,7 +209,7 @@ void DisplayApp::Refresh() {
if (state != States::Running) { if (state != States::Running) {
break; break;
} }
auto gesture = ConvertGesture(touchHandler.GestureGet()); auto gesture = touchHandler.GestureGet();
if (gesture == TouchEvents::None) { if (gesture == TouchEvents::None) {
break; break;
} }
@ -310,14 +288,14 @@ void DisplayApp::Refresh() {
} }
} }
if (touchHandler.IsTouching()) {
currentScreen->OnTouchEvent(touchHandler.GetX(), touchHandler.GetY());
}
if (nextApp != Apps::None) { if (nextApp != Apps::None) {
LoadApp(nextApp, nextDirection); LoadApp(nextApp, nextDirection);
nextApp = Apps::None; nextApp = Apps::None;
} }
if (touchHandler.IsTouching()) {
currentScreen->OnTouchEvent(touchHandler.GetX(), touchHandler.GetY());
}
} }
void DisplayApp::StartApp(Apps app, DisplayApp::FullRefreshDirections direction) { void DisplayApp::StartApp(Apps app, DisplayApp::FullRefreshDirections direction) {
@ -438,8 +416,8 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction)
currentScreen = std::make_unique<Screens::SettingShakeThreshold>(this, settingsController, motionController, *systemTask); currentScreen = std::make_unique<Screens::SettingShakeThreshold>(this, settingsController, motionController, *systemTask);
ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown); ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown);
break; break;
case Apps::SettingAirplaneMode: case Apps::SettingBluetooth:
currentScreen = std::make_unique<Screens::SettingAirplaneMode>(this, settingsController); currentScreen = std::make_unique<Screens::SettingBluetooth>(this, settingsController);
ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown); ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown);
break; break;
case Apps::BatteryInfo: case Apps::BatteryInfo:

View File

@ -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); 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) { bool touchpad_read(lv_indev_drv_t* indev_drv, lv_indev_data_t* data) {
auto* lvgl = static_cast<LittleVgl*>(indev_drv->user_data); auto* lvgl = static_cast<LittleVgl*>(indev_drv->user_data);
return lvgl->GetTouchPadInfo(data); return lvgl->GetTouchPadInfo(data);
} }
LittleVgl::LittleVgl(Pinetime::Drivers::St7789& lcd, Pinetime::Drivers::Cst816S& touchPanel) LittleVgl::LittleVgl(Pinetime::Drivers::St7789& lcd, Pinetime::Drivers::Cst816S& touchPanel) : lcd {lcd}, touchPanel {touchPanel} {
: lcd {lcd}, touchPanel {touchPanel}, previousClick {0, 0} {
} }
void LittleVgl::Init() { void LittleVgl::Init() {
@ -48,6 +56,7 @@ void LittleVgl::InitDisplay() {
/*Set a display buffer*/ /*Set a display buffer*/
disp_drv.buffer = &disp_buf_2; disp_drv.buffer = &disp_buf_2;
disp_drv.user_data = this; disp_drv.user_data = this;
disp_drv.rounder_cb = rounder;
/*Finally register the driver*/ /*Finally register the driver*/
lv_disp_drv_register(&disp_drv); lv_disp_drv_register(&disp_drv);
@ -78,6 +87,7 @@ void LittleVgl::SetFullRefresh(FullRefreshDirections direction) {
lv_disp_set_direction(lv_disp_get_default(), 4); lv_disp_set_direction(lv_disp_get_default(), 4);
} }
} }
fullRefresh = true;
} }
void LittleVgl::FlushDisplay(const lv_area_t* area, lv_color_t* color_p) { void LittleVgl::FlushDisplay(const lv_area_t* area, lv_color_t* color_p) {

View File

@ -26,6 +26,14 @@ namespace Pinetime {
void SetFullRefresh(FullRefreshDirections direction); void SetFullRefresh(FullRefreshDirections direction);
void SetNewTouchPoint(uint16_t x, uint16_t y, bool contact); void SetNewTouchPoint(uint16_t x, uint16_t y, bool contact);
bool GetFullRefresh() {
bool returnValue = fullRefresh;
if (fullRefresh) {
fullRefresh = false;
}
return returnValue;
}
private: private:
void InitDisplay(); void InitDisplay();
void InitTouchpad(); void InitTouchpad();
@ -39,9 +47,8 @@ namespace Pinetime {
lv_color_t buf2_2[LV_HOR_RES_MAX * 4]; lv_color_t buf2_2[LV_HOR_RES_MAX * 4];
lv_disp_drv_t disp_drv; lv_disp_drv_t disp_drv;
lv_point_t previousClick;
bool firstTouch = true; bool fullRefresh = false;
static constexpr uint8_t nbWriteLines = 4; static constexpr uint8_t nbWriteLines = 4;
static constexpr uint16_t totalNbLines = 320; static constexpr uint16_t totalNbLines = 320;
static constexpr uint16_t visibleNbLines = 240; static constexpr uint16_t visibleNbLines = 240;

View File

@ -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()

Binary file not shown.

Binary file not shown.

View File

@ -4,25 +4,10 @@
* [Awesome font from LVGL](https://lvgl.io/assets/others/FontAwesome5-Solid+Brands+Regular.woff) * [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) * [Open Sans Light from Google](https://fonts.google.com/specimen/Open+Sans)
## Generate the fonts: ### How to add new symbols:
* Open the [LVGL font converter](https://lvgl.io/tools/fontconverter) * Browse [this cheatsheet](https://fontawesome.com/cheatsheet/free/solid) and pick symbols
* Name : jetbrains_mono_bold_20 * 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
* Size : 20
* Bpp : 1 bit-per-pixel
* Do not enable font compression and horizontal subpixel hinting
* Load the file `JetBrainsMono-Bold.tff` (use the file in this repo to ensure the version matches) and specify the following range : `0x20-0x7f, 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, 0xf072`
* Click on Convert, and download the file `jetbrains_mono_bold_20.c` and copy it in `src/DisplayApp/Fonts`
* Add the font .c file path to src/CMakeLists.txt
* Add an LV_FONT_DECLARE line in src/libs/lv_conf.h
Add new symbols:
* Browse the [cheatsheet](https://fontawesome.com/cheatsheet/free/solid) and find your new 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)
* Convert this hex value into a UTF-8 code * 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) 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`: * Define the new symbols in `src/displayapp/screens/Symbols.h`:
@ -31,32 +16,17 @@ Add new symbols:
static constexpr const char* newSymbol = "\xEF\x86\x85"; static constexpr const char* newSymbol = "\xEF\x86\x85";
``` ```
## Simple method to generate a font ### the config file format:
If you want to generate a basic font containing only numbers and letters, you can use the above settings but instead of specifying a range, simply list the characters you need in the Symbols field and leave the range blank. This is the approach used for the PineTimeStyle watchface. inside `fonts`, there is a dictionary of fonts,
This works well for fonts which will only be used to display numbers, but will fail if you try to add a colon or other punctuation. 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
* Open the [LVGL font converter](https://lvgl.io/tools/fontconverter) ### Navigation font
* Name : open_sans_light
* Size : 150
* Bpp : 1 bit-per-pixel
* Do not enable font compression and horizontal subpixel hinting
* Load the file `open_sans_light.tff` (use the file in this repo to ensure the version matches) and specify the following symbols : `0123456789`
* Click on Convert, and download the file `open_sans_light.c` and copy it in `src/DisplayApp/Fonts`
* Add the font .c file path to src/CMakeLists.txt (search for jetbrains to find the appropriate location/format)
* Add an LV_FONT_DECLARE line in src/libs/lv_conf.h (as above)
#### 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.
To create the navigtion.ttf I use the web app [icomoon](https://icomoon.io/app)
this app can import the svg files from the folder *src/displayapp/icons/navigation/unique* and creat a ttf file the
project for the site is *lv_font_navi_80.json* you can import it to add or remove icons
You can also use the online LVGL tool to create the .c
ttf file : navigation.ttf name : lv_font_navi_80 size : 80px Bpp : 2 bit-per-pixel range : 0xe900-0xe929
$lv_font_conv --font navigation.ttf -r '0xe900-0xe929' --size 80 --format lvgl --bpp 2 --no-prefilter -o
lv_font_navi_80.c
#### I use the method above to create the other ttf

View File

@ -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": "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"
}
],
"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
}
}

View File

@ -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 accessable (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()

View File

@ -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, 0x7f, 0xfe, 0x1f,
0x7, 0xc7, 0xc0, 0x3c, 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, 0x7e, 0x0,
0xf, 0x80, 0x3, 0xe0, 0x0, 0xf8, 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, 0xc0, 0x0, 0xf0, 0x0, 0x3e, 0x0,
0x7, 0x80, 0x1, 0xfe, 0x0, 0x3f, 0xf0, 0x7,
0xff, 0x0, 0x3, 0xf0, 0x0, 0x1e, 0x0, 0x3,
0xc0, 0x0, 0x3c, 0x0, 0x7, 0x80, 0x0, 0xf0,
0x0, 0x1e, 0x0, 0x3, 0xfc, 0x0, 0x7f, 0x80,
0xf, 0xf0, 0x1, 0xef, 0x0, 0x79, 0xf0, 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)
.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*/

View File

@ -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, 0x7, 0xfc, 0x0, 0x0, 0x1f, 0xff, 0xe0,
0x0, 0x1f, 0xff, 0xfe, 0x0, 0xf, 0xff, 0xff,
0xe0, 0x7, 0xff, 0xff, 0xfc, 0x3, 0xff, 0xff,
0xff, 0x81, 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, 0x1f, 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, 0xc0, 0x0, 0x0, 0xf, 0xe0, 0x0, 0x0,
0x7, 0xf8, 0x0, 0x0, 0x1, 0xfe, 0x0, 0x0,
0x0, 0xff, 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0,
0x0, 0x1f, 0xe0, 0x0, 0x0, 0xf, 0xf0, 0x0,
0x0, 0x7, 0xfc, 0x0, 0x0, 0x3, 0xfe, 0x0,
0x0, 0x0, 0xff, 0x0, 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, 0x1, 0xff,
0x0, 0x0, 0x0, 0xff, 0x80, 0x0, 0x0, 0x7f,
0xc0, 0x0, 0x0, 0x3f, 0xe0, 0x0, 0x0, 0x1f,
0xf8, 0x0, 0x0, 0xf, 0xfc, 0x0, 0x0, 0x7,
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,
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, 0x1f, 0xc0, 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, 0xff, 0x80, 0x0, 0x1, 0xff,
0xfc, 0x0, 0x0, 0x7f, 0xff, 0xc0, 0x0, 0x1f,
0xff, 0xf8, 0x0, 0x7, 0xff, 0xff, 0x0, 0x1,
0xff, 0xff, 0xe0, 0x0, 0x0, 0x1f, 0xfc, 0x0,
0x0, 0x1, 0xff, 0x0, 0x0, 0x0, 0x3f, 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, 0x0, 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 = 6, .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 = 5, .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)
.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*/

File diff suppressed because it is too large Load Diff

View File

@ -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,

View File

@ -1,507 +0,0 @@
#include "lvgl/lvgl.h"
/*******************************************************************************
* Size: 80 px
* Bpp: 1
* Opts:
******************************************************************************/
#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 gylph_bitmap[] = {
/* U+30 "0" */
0x0, 0x1, 0xff, 0xc0, 0x0, 0x0, 0xf, 0xff,
0xfe, 0x0, 0x0, 0x1f, 0xff, 0xff, 0xc0, 0x0,
0x3f, 0xff, 0xff, 0xf8, 0x0, 0x3f, 0xff, 0xff,
0xfe, 0x0, 0x3f, 0xff, 0xff, 0xff, 0x80, 0x3f,
0xff, 0xff, 0xff, 0xe0, 0x3f, 0xff, 0xff, 0xff,
0xf8, 0x1f, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xff,
0xff, 0xff, 0xff, 0x1f, 0xff, 0xe0, 0x3f, 0xff,
0xcf, 0xff, 0xc0, 0x7, 0xff, 0xe7, 0xff, 0xc0,
0x1, 0xff, 0xf7, 0xff, 0xc0, 0x0, 0x7f, 0xff,
0xff, 0xe0, 0x0, 0x3f, 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,
0x0, 0x0, 0x7f, 0xff, 0xff, 0x80, 0x0, 0x3f,
0xff, 0xff, 0xc0, 0x70, 0x1f, 0xff, 0xff, 0xe0,
0x7c, 0xf, 0xff, 0xff, 0xf0, 0x7f, 0x7, 0xff,
0xff, 0xf8, 0x3f, 0x83, 0xff, 0xff, 0xfc, 0x1f,
0xc1, 0xff, 0xff, 0xfe, 0xf, 0xe0, 0xff, 0xff,
0xff, 0x7, 0xf0, 0x7f, 0xff, 0xff, 0x83, 0xf8,
0x3f, 0xff, 0xff, 0xc1, 0xfc, 0x1f, 0xff, 0xff,
0xe0, 0xfe, 0xf, 0xff, 0xff, 0xf0, 0x7f, 0x7,
0xff, 0xff, 0xf8, 0x3f, 0x83, 0xff, 0xff, 0xfc,
0x1f, 0xc1, 0xff, 0xff, 0xfe, 0xf, 0xe0, 0xff,
0xff, 0xff, 0x3, 0xe0, 0x7f, 0xff, 0xff, 0x80,
0xe0, 0x3f, 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, 0xff, 0xff,
0xc0, 0x0, 0x7f, 0xf9, 0xff, 0xf0, 0x0, 0x7f,
0xfc, 0xff, 0xfc, 0x0, 0x7f, 0xfe, 0x7f, 0xff,
0x80, 0xff, 0xfe, 0x1f, 0xff, 0xff, 0xff, 0xff,
0x7, 0xff, 0xff, 0xff, 0xff, 0x3, 0xff, 0xff,
0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0xff, 0x80,
0x3f, 0xff, 0xff, 0xff, 0x80, 0xf, 0xff, 0xff,
0xff, 0x80, 0x3, 0xff, 0xff, 0xff, 0x0, 0x0,
0x7f, 0xff, 0xff, 0x0, 0x0, 0xf, 0xff, 0xfc,
0x0, 0x0, 0x0, 0x7f, 0xf0, 0x0, 0x0,
/* U+31 "1" */
0x0, 0x7, 0xff, 0xe0, 0x0, 0x0, 0xf, 0xff,
0xe0, 0x0, 0x0, 0x3f, 0xff, 0xe0, 0x0, 0x0,
0x7f, 0xff, 0xe0, 0x0, 0x1, 0xff, 0xff, 0xe0,
0x0, 0x3, 0xff, 0xff, 0xe0, 0x0, 0x7, 0xff,
0xff, 0xe0, 0x0, 0x1f, 0xff, 0xff, 0xe0, 0x0,
0x3f, 0xff, 0xff, 0xe0, 0x0, 0x7f, 0xff, 0xff,
0xe0, 0x0, 0x7f, 0xff, 0xff, 0xe0, 0x0, 0x7f,
0xfd, 0xff, 0xe0, 0x0, 0x7f, 0xf9, 0xff, 0xe0,
0x0, 0x7f, 0xf1, 0xff, 0xe0, 0x0, 0x7f, 0xe1,
0xff, 0xe0, 0x0, 0x7f, 0x81, 0xff, 0xe0, 0x0,
0x7f, 0x1, 0xff, 0xe0, 0x0, 0x7c, 0x1, 0xff,
0xe0, 0x0, 0x78, 0x1, 0xff, 0xe0, 0x0, 0x60,
0x1, 0xff, 0xe0, 0x0, 0x40, 0x1, 0xff, 0xe0,
0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x1,
0xff, 0xe0, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0,
0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x1, 0xff,
0xe0, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0,
0x1, 0xff, 0xe0, 0x0, 0x0, 0x1, 0xff, 0xe0,
0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x1,
0xff, 0xe0, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0,
0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x1, 0xff,
0xe0, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0,
0x1, 0xff, 0xe0, 0x0, 0x0, 0x1, 0xff, 0xe0,
0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x1,
0xff, 0xe0, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0,
0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x1, 0xff,
0xe0, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0,
0x1, 0xff, 0xe0, 0x0, 0x0, 0x1, 0xff, 0xe0,
0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x1,
0xff, 0xe0, 0x0, 0x0, 0x1, 0xff, 0xe0, 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,
/* U+32 "2" */
0x0, 0x1, 0xff, 0xc0, 0x0, 0x0, 0xf, 0xff,
0xfc, 0x0, 0x0, 0x1f, 0xff, 0xff, 0x80, 0x0,
0x3f, 0xff, 0xff, 0xf0, 0x0, 0x3f, 0xff, 0xff,
0xfc, 0x0, 0x3f, 0xff, 0xff, 0xff, 0x0, 0x3f,
0xff, 0xff, 0xff, 0xc0, 0x3f, 0xff, 0xff, 0xff,
0xf0, 0x3f, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xff,
0xff, 0xff, 0xfe, 0x1f, 0xff, 0xe0, 0x7f, 0xff,
0x8f, 0xff, 0xc0, 0xf, 0xff, 0xc7, 0xff, 0xc0,
0x3, 0xff, 0xe7, 0xff, 0xc0, 0x0, 0xff, 0xfb,
0xff, 0xc0, 0x0, 0x7f, 0xfd, 0xff, 0xe0, 0x0,
0x1f, 0xfe, 0xff, 0xf0, 0x0, 0xf, 0xff, 0x0,
0x0, 0x0, 0x7, 0xff, 0x80, 0x0, 0x0, 0x3,
0xff, 0xc0, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0,
0x0, 0x0, 0xff, 0xf0, 0x0, 0x0, 0x0, 0xff,
0xf8, 0x0, 0x0, 0x0, 0x7f, 0xf8, 0x0, 0x0,
0x0, 0x7f, 0xfc, 0x0, 0x0, 0x0, 0x3f, 0xfe,
0x0, 0x0, 0x0, 0x3f, 0xfe, 0x0, 0x0, 0x0,
0x3f, 0xff, 0x0, 0x0, 0x0, 0x3f, 0xff, 0x0,
0x0, 0x0, 0x3f, 0xff, 0x0, 0x0, 0x0, 0x3f,
0xff, 0x80, 0x0, 0x0, 0x7f, 0xff, 0x80, 0x0,
0x0, 0x7f, 0xff, 0x80, 0x0, 0x0, 0x7f, 0xff,
0x80, 0x0, 0x0, 0x7f, 0xff, 0x80, 0x0, 0x0,
0xff, 0xff, 0x80, 0x0, 0x0, 0xff, 0xff, 0x80,
0x0, 0x0, 0xff, 0xff, 0x80, 0x0, 0x0, 0xff,
0xff, 0x80, 0x0, 0x1, 0xff, 0xff, 0x0, 0x0,
0x1, 0xff, 0xff, 0x0, 0x0, 0x1, 0xff, 0xff,
0x0, 0x0, 0x1, 0xff, 0xfe, 0x0, 0x0, 0x3,
0xff, 0xfe, 0x0, 0x0, 0x3, 0xff, 0xfe, 0x0,
0x0, 0x3, 0xff, 0xfc, 0x0, 0x0, 0x3, 0xff,
0xfc, 0x0, 0x0, 0x1, 0xff, 0xf0, 0x0, 0x0,
0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff,
0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff,
0xdf, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff,
0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfb,
0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff,
0xff, 0xc0,
/* U+33 "3" */
0x1f, 0xff, 0xff, 0xff, 0xfe, 0xf, 0xff, 0xff,
0xff, 0xff, 0x7, 0xff, 0xff, 0xff, 0xff, 0x83,
0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff,
0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x7f,
0xff, 0xff, 0xff, 0xf8, 0x3f, 0xff, 0xff, 0xff,
0xfc, 0x1f, 0xff, 0xff, 0xff, 0xfe, 0xf, 0xff,
0xff, 0x8f, 0xff, 0x0, 0x0, 0x0, 0xf, 0xff,
0x80, 0x0, 0x0, 0x1f, 0xff, 0x80, 0x0, 0x0,
0x1f, 0xff, 0x80, 0x0, 0x0, 0x3f, 0xff, 0x80,
0x0, 0x0, 0x3f, 0xff, 0x0, 0x0, 0x0, 0x3f,
0xff, 0x0, 0x0, 0x0, 0x3f, 0xff, 0x0, 0x0,
0x0, 0x3f, 0xff, 0x0, 0x0, 0x0, 0x3f, 0xfe,
0x0, 0x0, 0x0, 0x3f, 0xfe, 0x0, 0x0, 0x0,
0x3f, 0xfe, 0x0, 0x0, 0x0, 0x3f, 0xfc, 0x0,
0x0, 0x0, 0x1f, 0xff, 0x80, 0x0, 0x0, 0xf,
0xff, 0xf8, 0x0, 0x0, 0x7, 0xff, 0xff, 0x0,
0x0, 0x3, 0xff, 0xff, 0xe0, 0x0, 0x1, 0xff,
0xff, 0xf8, 0x0, 0x0, 0xff, 0xff, 0xfe, 0x0,
0x0, 0x7f, 0xff, 0xff, 0x80, 0x0, 0x3f, 0xff,
0xff, 0xe0, 0x0, 0x1f, 0xff, 0xff, 0xf0, 0x0,
0xf, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x0, 0xff,
0xfe, 0x0, 0x0, 0x0, 0x1f, 0xff, 0x80, 0x0,
0x0, 0x7, 0xff, 0xc0, 0x0, 0x0, 0x1, 0xff,
0xe0, 0x0, 0x0, 0x0, 0xff, 0xf8, 0x0, 0x0,
0x0, 0x3f, 0xfc, 0x0, 0x0, 0x0, 0x1f, 0xfe,
0x0, 0x0, 0x0, 0xf, 0xff, 0x0, 0x0, 0x0,
0x7, 0xff, 0x80, 0x0, 0x0, 0x3, 0xff, 0xc0,
0x0, 0x0, 0x1, 0xff, 0xff, 0xfe, 0x0, 0x0,
0xff, 0xff, 0xff, 0x80, 0x0, 0xff, 0xff, 0xff,
0xc0, 0x0, 0x7f, 0xf9, 0xff, 0xf0, 0x0, 0x7f,
0xfc, 0xff, 0xfc, 0x0, 0x7f, 0xfe, 0x7f, 0xff,
0x80, 0xff, 0xfe, 0x1f, 0xff, 0xff, 0xff, 0xff,
0xf, 0xff, 0xff, 0xff, 0xff, 0x3, 0xff, 0xff,
0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0xff, 0x80,
0x3f, 0xff, 0xff, 0xff, 0x80, 0xf, 0xff, 0xff,
0xff, 0x80, 0x3, 0xff, 0xff, 0xff, 0x0, 0x0,
0x7f, 0xff, 0xff, 0x0, 0x0, 0xf, 0xff, 0xfc,
0x0, 0x0, 0x0, 0x7f, 0xf0, 0x0, 0x0,
/* U+34 "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, 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, 0xfc,
0x0, 0x0, 0x7, 0xff, 0xe0, 0x0, 0x0, 0x3f,
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, 0x0, 0x1,
0xff, 0xf8, 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0,
0x0, 0x3f, 0xfe, 0x0, 0x0, 0x1, 0xff, 0xf8,
0x0, 0x0, 0xf, 0xff, 0xc0, 0x0, 0x0, 0x3f,
0xfe, 0x0, 0xff, 0xf1, 0xff, 0xf0, 0x3, 0xff,
0xcf, 0xff, 0xc0, 0xf, 0xff, 0x7f, 0xfe, 0x0,
0x3f, 0xfd, 0xff, 0xf0, 0x0, 0xff, 0xff, 0xff,
0xc0, 0x3, 0xff, 0xff, 0xfe, 0x0, 0xf, 0xff,
0xff, 0xf0, 0x0, 0x3f, 0xff, 0xff, 0x80, 0x0,
0xff, 0xff, 0xfe, 0x0, 0x3, 0xff, 0xff, 0xf8,
0x0, 0xf, 0xff, 0xff, 0xe0, 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, 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, 0x0, 0x0, 0x0, 0x3f, 0xfc, 0x0,
0x0, 0x0, 0xff, 0xf0,
/* U+35 "5" */
0x3f, 0xff, 0xff, 0xff, 0xfe, 0x1f, 0xff, 0xff,
0xff, 0xff, 0xf, 0xff, 0xff, 0xff, 0xff, 0x87,
0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff,
0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff,
0xff, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff,
0xfc, 0x3f, 0xff, 0xff, 0xff, 0xfe, 0x1f, 0xff,
0xff, 0xff, 0xff, 0xf, 0xff, 0x0, 0x0, 0x0,
0x7, 0xff, 0x80, 0x0, 0x0, 0x3, 0xff, 0xc0,
0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x0,
0xff, 0xf0, 0x0, 0x0, 0x0, 0x7f, 0xf8, 0x0,
0x0, 0x0, 0x3f, 0xfc, 0x0, 0x0, 0x0, 0x1f,
0xfe, 0x0, 0x0, 0x0, 0xf, 0xff, 0x0, 0x0,
0x0, 0x7, 0xff, 0x80, 0x0, 0x0, 0x3, 0xff,
0xc0, 0x7f, 0x80, 0x1, 0xff, 0xe1, 0xff, 0xf8,
0x0, 0xff, 0xf1, 0xff, 0xff, 0x0, 0x7f, 0xf9,
0xff, 0xff, 0xc0, 0x3f, 0xfd, 0xff, 0xff, 0xf0,
0x1f, 0xff, 0xff, 0xff, 0xfc, 0xf, 0xff, 0xff,
0xff, 0xff, 0x7, 0xff, 0xff, 0xff, 0xff, 0xc3,
0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xfc, 0x7,
0xff, 0xf8, 0xff, 0xf8, 0x0, 0xff, 0xfc, 0x0,
0x0, 0x0, 0x3f, 0xfe, 0x0, 0x0, 0x0, 0xf,
0xff, 0x80, 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0,
0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x0, 0xff,
0xf0, 0x0, 0x0, 0x0, 0x7f, 0xf8, 0x0, 0x0,
0x0, 0x3f, 0xfc, 0x0, 0x0, 0x0, 0x1f, 0xfe,
0x0, 0x0, 0x0, 0xf, 0xff, 0x0, 0x0, 0x0,
0x7, 0xff, 0x80, 0x0, 0x0, 0x3, 0xff, 0xc0,
0x0, 0x0, 0x1, 0xff, 0xff, 0xff, 0x0, 0x1,
0xff, 0xff, 0xff, 0x80, 0x0, 0xff, 0xfb, 0xff,
0xe0, 0x0, 0xff, 0xf9, 0xff, 0xf8, 0x0, 0xff,
0xfc, 0xff, 0xff, 0x81, 0xff, 0xfe, 0x3f, 0xff,
0xff, 0xff, 0xfe, 0x1f, 0xff, 0xff, 0xff, 0xff,
0x7, 0xff, 0xff, 0xff, 0xff, 0x1, 0xff, 0xff,
0xff, 0xff, 0x0, 0x7f, 0xff, 0xff, 0xff, 0x0,
0x1f, 0xff, 0xff, 0xff, 0x0, 0x7, 0xff, 0xff,
0xff, 0x0, 0x0, 0xff, 0xff, 0xfe, 0x0, 0x0,
0x1f, 0xff, 0xfc, 0x0, 0x0, 0x0, 0xff, 0xe0,
0x0, 0x0,
/* U+36 "6" */
0x0, 0x0, 0xf, 0xff, 0x80, 0x0, 0x0, 0x7,
0xff, 0xe0, 0x0, 0x0, 0x3, 0xff, 0xf0, 0x0,
0x0, 0x0, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x7f,
0xfe, 0x0, 0x0, 0x0, 0x3f, 0xff, 0x0, 0x0,
0x0, 0xf, 0xff, 0x80, 0x0, 0x0, 0x7, 0xff,
0xc0, 0x0, 0x0, 0x3, 0xff, 0xf0, 0x0, 0x0,
0x0, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x7f, 0xfc,
0x0, 0x0, 0x0, 0x3f, 0xff, 0x0, 0x0, 0x0,
0xf, 0xff, 0x80, 0x0, 0x0, 0x7, 0xff, 0xc0,
0x0, 0x0, 0x3, 0xff, 0xf0, 0x0, 0x0, 0x1,
0xff, 0xf8, 0x0, 0x0, 0x0, 0x7f, 0xfc, 0x0,
0x0, 0x0, 0x3f, 0xfe, 0x0, 0x0, 0x0, 0xf,
0xff, 0x80, 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0,
0x0, 0x3, 0xff, 0xe0, 0x0, 0x0, 0x0, 0xff,
0xf8, 0x0, 0x0, 0x0, 0x7f, 0xfc, 0x3f, 0xc0,
0x0, 0x1f, 0xfe, 0x3f, 0xfe, 0x0, 0xf, 0xff,
0xbf, 0xff, 0xe0, 0x3, 0xff, 0xdf, 0xff, 0xfc,
0x1, 0xff, 0xef, 0xff, 0xff, 0x80, 0x7f, 0xff,
0xff, 0xff, 0xf0, 0x3f, 0xff, 0xff, 0xff, 0xfe,
0xf, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff,
0xff, 0xff, 0xf1, 0xff, 0xff, 0x3, 0xff, 0xfc,
0x7f, 0xff, 0x0, 0x3f, 0xff, 0x9f, 0xff, 0x0,
0x3, 0xff, 0xef, 0xff, 0xc0, 0x0, 0xff, 0xfb,
0xff, 0xe0, 0x0, 0x1f, 0xff, 0xff, 0xf8, 0x0,
0x7, 0xff, 0xff, 0xfc, 0x0, 0x0, 0xff, 0xff,
0xff, 0x0, 0x0, 0x3f, 0xff, 0xff, 0xc0, 0x0,
0xf, 0xff, 0xff, 0xf0, 0x0, 0x3, 0xff, 0xff,
0xfc, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0,
0x3f, 0xff, 0xff, 0xe0, 0x0, 0x1f, 0xff, 0x7f,
0xf8, 0x0, 0x7, 0xff, 0xdf, 0xfe, 0x0, 0x3,
0xff, 0xe7, 0xff, 0xc0, 0x0, 0xff, 0xf9, 0xff,
0xfc, 0x0, 0xff, 0xfe, 0x3f, 0xff, 0xc0, 0xff,
0xff, 0xf, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff,
0xff, 0xff, 0xff, 0xe0, 0x3f, 0xff, 0xff, 0xff,
0xf0, 0x7, 0xff, 0xff, 0xff, 0xf8, 0x0, 0xff,
0xff, 0xff, 0xfe, 0x0, 0x1f, 0xff, 0xff, 0xfe,
0x0, 0x3, 0xff, 0xff, 0xff, 0x0, 0x0, 0x3f,
0xff, 0xff, 0x0, 0x0, 0x3, 0xff, 0xff, 0x0,
0x0, 0x0, 0xf, 0xfc, 0x0, 0x0,
/* U+37 "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, 0xff, 0xff, 0xff, 0xff,
0xe0, 0x0, 0xf, 0xff, 0xff, 0xe0, 0x0, 0x1f,
0xfe, 0xff, 0xe0, 0x0, 0x1f, 0xfe, 0xff, 0xe0,
0x0, 0x3f, 0xfc, 0xff, 0xe0, 0x0, 0x3f, 0xfc,
0xff, 0xe0, 0x0, 0x7f, 0xf8, 0xff, 0xe0, 0x0,
0x7f, 0xf8, 0xff, 0xe0, 0x0, 0xff, 0xf8, 0xff,
0xe0, 0x0, 0xff, 0xf0, 0x0, 0x0, 0x1, 0xff,
0xf0, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0,
0x3, 0xff, 0xe0, 0x0, 0x0, 0x3, 0xff, 0xc0,
0x0, 0x0, 0x7, 0xff, 0xc0, 0x0, 0x0, 0x7,
0xff, 0x80, 0x0, 0x0, 0x7, 0xff, 0x80, 0x0,
0x0, 0xf, 0xff, 0x80, 0x0, 0x0, 0xf, 0xff,
0x0, 0x0, 0x0, 0x1f, 0xff, 0x0, 0x0, 0x0,
0x1f, 0xfe, 0x0, 0x0, 0x0, 0x3f, 0xfe, 0x0,
0x0, 0x0, 0x3f, 0xfc, 0x0, 0x0, 0x0, 0x7f,
0xfc, 0x0, 0x0, 0x0, 0x7f, 0xf8, 0x0, 0x0,
0x0, 0xff, 0xf8, 0x0, 0x0, 0x0, 0xff, 0xf8,
0x0, 0x0, 0x1, 0xff, 0xf0, 0x0, 0x0, 0x1,
0xff, 0xf0, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0,
0x0, 0x3, 0xff, 0xe0, 0x0, 0x0, 0x3, 0xff,
0xc0, 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0, 0x0,
0x7, 0xff, 0x80, 0x0, 0x0, 0xf, 0xff, 0x80,
0x0, 0x0, 0xf, 0xff, 0x80, 0x0, 0x0, 0x1f,
0xff, 0x0, 0x0, 0x0, 0x1f, 0xff, 0x0, 0x0,
0x0, 0x3f, 0xfe, 0x0, 0x0, 0x0, 0x3f, 0xfe,
0x0, 0x0, 0x0, 0x7f, 0xfc, 0x0, 0x0, 0x0,
0x7f, 0xfc, 0x0, 0x0, 0x0, 0x7f, 0xf8, 0x0,
0x0, 0x0, 0xff, 0xf8, 0x0, 0x0, 0x0, 0xff,
0xf8, 0x0, 0x0, 0x1, 0xff, 0xf0, 0x0, 0x0,
0x1, 0xff, 0xf0, 0x0, 0x0, 0x3, 0xff, 0xe0,
0x0, 0x0,
/* U+38 "8" */
0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x7, 0xff,
0xff, 0x80, 0x0, 0x7, 0xff, 0xff, 0xf8, 0x0,
0x7, 0xff, 0xff, 0xff, 0x80, 0x3, 0xff, 0xff,
0xff, 0xf0, 0x1, 0xff, 0xff, 0xff, 0xfe, 0x0,
0xff, 0xff, 0xff, 0xff, 0xc0, 0x7f, 0xff, 0xff,
0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xfe, 0xf,
0xff, 0xe0, 0x3f, 0xff, 0xc3, 0xff, 0xe0, 0x3,
0xff, 0xf0, 0xff, 0xf0, 0x0, 0x7f, 0xfc, 0x7f,
0xf8, 0x0, 0xf, 0xff, 0x9f, 0xfe, 0x0, 0x3,
0xff, 0xe7, 0xff, 0x0, 0x0, 0x7f, 0xf9, 0xff,
0xc0, 0x0, 0x1f, 0xfe, 0x7f, 0xf0, 0x0, 0x7,
0xff, 0x9f, 0xfc, 0x0, 0x1, 0xff, 0xe7, 0xff,
0x0, 0x0, 0x7f, 0xf9, 0xff, 0xc0, 0x0, 0x1f,
0xfe, 0x3f, 0xf8, 0x0, 0xf, 0xff, 0xf, 0xfe,
0x0, 0x3, 0xff, 0xc3, 0xff, 0xc0, 0x1, 0xff,
0xe0, 0x7f, 0xf8, 0x0, 0xff, 0xf8, 0xf, 0xff,
0x80, 0xff, 0xfc, 0x1, 0xff, 0xff, 0xff, 0xfe,
0x0, 0x3f, 0xff, 0xff, 0xff, 0x0, 0x7, 0xff,
0xff, 0xff, 0x0, 0x0, 0x7f, 0xff, 0xff, 0x0,
0x0, 0x3, 0xff, 0xfe, 0x0, 0x0, 0x7, 0xff,
0xff, 0xf0, 0x0, 0x7, 0xff, 0xff, 0xff, 0x80,
0x7, 0xff, 0xff, 0xff, 0xf0, 0x3, 0xff, 0xff,
0xff, 0xff, 0x1, 0xff, 0xf8, 0xf, 0xff, 0xe0,
0xff, 0xf8, 0x0, 0x7f, 0xf8, 0x3f, 0xfc, 0x0,
0xf, 0xff, 0x1f, 0xfe, 0x0, 0x1, 0xff, 0xe7,
0xff, 0x80, 0x0, 0x7f, 0xfb, 0xff, 0xc0, 0x0,
0xf, 0xfe, 0xff, 0xf0, 0x0, 0x3, 0xff, 0xff,
0xfc, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0,
0x3f, 0xff, 0xff, 0xc0, 0x0, 0xf, 0xff, 0xff,
0xf0, 0x0, 0x3, 0xff, 0xff, 0xfe, 0x0, 0x1,
0xff, 0xff, 0xff, 0x80, 0x0, 0x7f, 0xff, 0xff,
0xf0, 0x0, 0x3f, 0xff, 0x7f, 0xfe, 0x0, 0x1f,
0xff, 0x9f, 0xff, 0xe0, 0x3f, 0xff, 0xe3, 0xff,
0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff,
0xfc, 0x1f, 0xff, 0xff, 0xff, 0xfe, 0x3, 0xff,
0xff, 0xff, 0xff, 0x0, 0x7f, 0xff, 0xff, 0xff,
0x80, 0xf, 0xff, 0xff, 0xff, 0xc0, 0x1, 0xff,
0xff, 0xff, 0xe0, 0x0, 0x1f, 0xff, 0xff, 0xe0,
0x0, 0x1, 0xff, 0xff, 0xe0, 0x0, 0x0, 0x7,
0xff, 0x80, 0x0,
/* U+39 "9" */
0x0, 0x0, 0xff, 0xc0, 0x0, 0x0, 0x3, 0xff,
0xff, 0x0, 0x0, 0x3, 0xff, 0xff, 0xf0, 0x0,
0x3, 0xff, 0xff, 0xff, 0x0, 0x1, 0xff, 0xff,
0xff, 0xe0, 0x1, 0xff, 0xff, 0xff, 0xfc, 0x0,
0x7f, 0xff, 0xff, 0xff, 0x80, 0x3f, 0xff, 0xff,
0xff, 0xf0, 0x1f, 0xff, 0xff, 0xff, 0xfe, 0xf,
0xff, 0xff, 0xff, 0xff, 0x83, 0xff, 0xfc, 0xf,
0xff, 0xf1, 0xff, 0xf8, 0x0, 0xff, 0xfc, 0x7f,
0xfc, 0x0, 0xf, 0xff, 0x9f, 0xff, 0x0, 0x3,
0xff, 0xef, 0xff, 0x80, 0x0, 0x7f, 0xfb, 0xff,
0xe0, 0x0, 0x1f, 0xff, 0xff, 0xf0, 0x0, 0x3,
0xff, 0xff, 0xfc, 0x0, 0x0, 0xff, 0xff, 0xff,
0x0, 0x0, 0x3f, 0xff, 0xff, 0xc0, 0x0, 0xf,
0xff, 0xff, 0xf0, 0x0, 0x3, 0xff, 0xff, 0xfc,
0x0, 0x0, 0xff, 0xff, 0xff, 0x80, 0x0, 0x7f,
0xff, 0xff, 0xe0, 0x0, 0x1f, 0xff, 0x7f, 0xf8,
0x0, 0xf, 0xff, 0xdf, 0xff, 0x0, 0x3, 0xff,
0xe7, 0xff, 0xf0, 0x3, 0xff, 0xf8, 0xff, 0xff,
0x3, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff,
0x87, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff,
0xff, 0xff, 0xf0, 0x3f, 0xff, 0xff, 0xff, 0xf8,
0x7, 0xff, 0xff, 0xdf, 0xfe, 0x0, 0xff, 0xff,
0xef, 0xff, 0x80, 0x1f, 0xff, 0xf7, 0xff, 0xc0,
0x1, 0xff, 0xf1, 0xff, 0xf0, 0x0, 0xf, 0xf0,
0xff, 0xf8, 0x0, 0x0, 0x0, 0x7f, 0xfc, 0x0,
0x0, 0x0, 0x1f, 0xff, 0x0, 0x0, 0x0, 0xf,
0xff, 0x80, 0x0, 0x0, 0x7, 0xff, 0xe0, 0x0,
0x0, 0x1, 0xff, 0xf0, 0x0, 0x0, 0x0, 0xff,
0xf8, 0x0, 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0,
0x0, 0x1f, 0xff, 0x0, 0x0, 0x0, 0xf, 0xff,
0x80, 0x0, 0x0, 0x7, 0xff, 0xe0, 0x0, 0x0,
0x1, 0xff, 0xf0, 0x0, 0x0, 0x0, 0xff, 0xf8,
0x0, 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x0,
0x1f, 0xff, 0x0, 0x0, 0x0, 0xf, 0xff, 0x80,
0x0, 0x0, 0x7, 0xff, 0xe0, 0x0, 0x0, 0x3,
0xff, 0xf0, 0x0, 0x0, 0x0, 0xff, 0xf8, 0x0,
0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0, 0x0, 0x3f,
0xff, 0x0, 0x0, 0x0, 0xf, 0xff, 0x80, 0x0,
0x0, 0x7, 0xff, 0xe0, 0x0, 0x0,
/* U+3A ":" */
0x7, 0xe0, 0x1f, 0xf8, 0x3f, 0xfc, 0x7f, 0xfe,
0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe,
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, 0x7, 0xe0, 0x1f, 0xf8,
0x3f, 0xfc, 0x7f, 0xfe, 0x7f, 0xfe, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x7f, 0xfe, 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 = 41, .box_h = 59, .ofs_x = 4, .ofs_y = -1},
{.bitmap_index = 303, .adv_w = 768, .box_w = 40, .box_h = 58, .ofs_x = 6, .ofs_y = 0},
{.bitmap_index = 593, .adv_w = 768, .box_w = 41, .box_h = 58, .ofs_x = 4, .ofs_y = 0},
{.bitmap_index = 891, .adv_w = 768, .box_w = 41, .box_h = 59, .ofs_x = 3, .ofs_y = -1},
{.bitmap_index = 1194, .adv_w = 768, .box_w = 38, .box_h = 58, .ofs_x = 4, .ofs_y = 0},
{.bitmap_index = 1470, .adv_w = 768, .box_w = 41, .box_h = 58, .ofs_x = 4, .ofs_y = -1},
{.bitmap_index = 1768, .adv_w = 768, .box_w = 42, .box_h = 59, .ofs_x = 3, .ofs_y = -1},
{.bitmap_index = 2078, .adv_w = 768, .box_w = 40, .box_h = 58, .ofs_x = 4, .ofs_y = 0},
{.bitmap_index = 2368, .adv_w = 768, .box_w = 42, .box_h = 60, .ofs_x = 3, .ofs_y = -1},
{.bitmap_index = 2683, .adv_w = 768, .box_w = 42, .box_h = 59, .ofs_x = 3, .ofs_y = 0},
{.bitmap_index = 2993, .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
*--------------------*/
/*Store all the custom data of the font*/
static lv_font_fmt_txt_dsc_t font_dsc = {
.glyph_bitmap = gylph_bitmap,
.glyph_dsc = glyph_dsc,
.cmaps = cmaps,
.kern_dsc = NULL,
.kern_scale = 0,
.cmap_num = 1,
.bpp = 1,
.kern_classes = 0,
.bitmap_format = 0
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
lv_font_t jetbrains_mono_extrabold_compressed = {
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 60, /*The maximum line height required by the font*/
.base_line = 1, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if JETBRAINS_MONO_EXTRABOLD_COMPRESSED*/

File diff suppressed because it is too large Load Diff

View File

@ -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)
.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*/

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

View File

@ -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,
};

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -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,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -26,7 +26,6 @@ static void theme_apply(lv_obj_t* obj, lv_theme_style_t name);
**********************/ **********************/
static lv_theme_t theme; static lv_theme_t theme;
static lv_style_t style_pad;
static lv_style_t style_circle; static lv_style_t style_circle;
static lv_style_t style_bg; static lv_style_t style_bg;
@ -77,12 +76,6 @@ static void style_init_reset(lv_style_t* style) {
static void basic_init(void) { 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); style_init_reset(&style_circle);
lv_style_set_radius(&style_circle, LV_STATE_DEFAULT, LV_RADIUS_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); style_init_reset(&style_btn);
lv_style_set_radius(&style_btn, LV_STATE_DEFAULT, 10); 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_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_DEFAULT, LV_PINETIME_BLUE);
lv_style_set_bg_color(&style_btn, LV_STATE_CHECKED, LV_COLOR_GREEN); 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_color_hex(0x2F3540)); 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_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_color(&style_btn, LV_STATE_DEFAULT, theme.color_primary);
lv_style_set_border_width(&style_btn, LV_STATE_DEFAULT, 0); 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); style_init_reset(&style_scrollbar);
lv_style_set_bg_opa(&style_scrollbar, LV_STATE_DEFAULT, LV_OPA_COVER); 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_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_size(&style_scrollbar, LV_STATE_DEFAULT, LV_HOR_RES / 80);
lv_style_set_pad_right(&style_scrollbar, LV_STATE_DEFAULT, LV_HOR_RES / 60); 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); lv_style_set_pad_inner(&style_list_btn, LV_STATE_DEFAULT, LV_HOR_RES / 50);
style_init_reset(&style_ddlist_list); 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_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_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_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_PINETIME_GRAY); 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); style_init_reset(&style_ddlist_selected);
lv_style_set_bg_opa(&style_ddlist_selected, LV_STATE_DEFAULT, LV_OPA_COVER); 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); style_init_reset(&style_sw_indic);
lv_style_set_bg_opa(&style_sw_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 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); style_init_reset(&style_sw_knob);
lv_style_set_bg_opa(&style_sw_knob, LV_STATE_DEFAULT, LV_OPA_COVER); 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); lv_style_set_line_rounded(&style_arc_indic, LV_STATE_DEFAULT, true);
style_init_reset(&style_arc_bg); 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_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_line_rounded(&style_arc_bg, LV_STATE_DEFAULT, true);
lv_style_set_pad_all(&style_arc_bg, LV_STATE_DEFAULT, LV_DPX(5)); 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_reset(&style_arc_knob);
lv_style_set_radius(&style_arc_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 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_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)); lv_style_set_pad_all(&style_arc_knob, LV_STATE_DEFAULT, LV_DPX(5));
style_init_reset(&style_table_cell); 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); lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_MAIN);
list = lv_obj_get_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_btn);
_lv_style_list_add_style(list, &style_pad);
lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_LIST); lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_LIST);
list = lv_obj_get_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_box);
_lv_style_list_add_style(list, &style_ddlist_list); _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); lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SELECTED);
list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SELECTED); list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SELECTED);

View File

@ -23,7 +23,7 @@ extern "C" {
#define LV_PINETIME_LIGHT lv_color_hex(0xf3f8fe) #define LV_PINETIME_LIGHT lv_color_hex(0xf3f8fe)
#define LV_PINETIME_GRAY lv_color_hex(0x8a8a8a) #define LV_PINETIME_GRAY lv_color_hex(0x8a8a8a)
#define LV_PINETIME_LIGHT_GRAY lv_color_hex(0xc4c4c4) #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_GREEN lv_color_hex(0x4cb242)
#define LV_PINETIME_RED lv_color_hex(0xd51732) #define LV_PINETIME_RED lv_color_hex(0xd51732)

View File

@ -40,7 +40,7 @@ Alarm::Alarm(DisplayApp* app,
time = lv_label_create(lv_scr_act(), nullptr); 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_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(); alarmHours = alarmController.Hours();
alarmMinutes = alarmController.Minutes(); alarmMinutes = alarmController.Minutes();
@ -50,7 +50,7 @@ Alarm::Alarm(DisplayApp* app,
lblampm = lv_label_create(lv_scr_act(), nullptr); 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_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_text_static(lblampm, " ");
lv_label_set_align(lblampm, LV_LABEL_ALIGN_CENTER); lv_label_set_align(lblampm, LV_LABEL_ALIGN_CENTER);
lv_obj_align(lblampm, lv_scr_act(), LV_ALIGN_CENTER, 0, 30); lv_obj_align(lblampm, lv_scr_act(), LV_ALIGN_CENTER, 0, 30);
@ -303,7 +303,7 @@ void Alarm::ShowInfo() {
lv_label_set_text_fmt( 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); txtMessage, "Time to\nalarm:\n%2lu Days\n%2lu Hours\n%2lu Minutes\n%2lu Seconds", daysToAlarm, hrsToAlarm, minToAlarm, secToAlarm);
} else { } else {
lv_label_set_text(txtMessage, "Alarm\nis not\nset."); lv_label_set_text_static(txtMessage, "Alarm\nis not\nset.");
} }
} }
@ -317,13 +317,13 @@ void Alarm::SetRecurButtonState() {
using Pinetime::Controllers::AlarmController; using Pinetime::Controllers::AlarmController;
switch (alarmController.Recurrence()) { switch (alarmController.Recurrence()) {
case AlarmController::RecurType::None: case AlarmController::RecurType::None:
lv_label_set_text(txtRecur, "ONCE"); lv_label_set_text_static(txtRecur, "ONCE");
break; break;
case AlarmController::RecurType::Daily: case AlarmController::RecurType::Daily:
lv_label_set_text(txtRecur, "DAILY"); lv_label_set_text_static(txtRecur, "DAILY");
break; break;
case AlarmController::RecurType::Weekdays: case AlarmController::RecurType::Weekdays:
lv_label_set_text(txtRecur, "MON-FRI"); lv_label_set_text_static(txtRecur, "MON-FRI");
} }
} }

View File

@ -1,23 +1,34 @@
#include "displayapp/screens/BatteryIcon.h" #include "displayapp/screens/BatteryIcon.h"
#include <cstdint> #include <cstdint>
#include "displayapp/screens/Symbols.h" #include "displayapp/screens/Symbols.h"
#include "displayapp/icons/battery/batteryicon.c"
using namespace Pinetime::Applications::Screens; using namespace Pinetime::Applications::Screens;
const char* BatteryIcon::GetBatteryIcon(uint8_t batteryPercent) { void BatteryIcon::Create(lv_obj_t* parent) {
if (batteryPercent > 87) batteryImg = lv_img_create(parent, nullptr);
return Symbols::batteryFull; lv_img_set_src(batteryImg, &batteryicon);
if (batteryPercent > 62) lv_obj_set_style_local_image_recolor(batteryImg, LV_IMG_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
return Symbols::batteryThreeQuarter;
if (batteryPercent > 37) batteryJuice = lv_obj_create(batteryImg, nullptr);
return Symbols::batteryHalf; lv_obj_set_width(batteryJuice, 8);
if (batteryPercent > 12) lv_obj_align(batteryJuice, nullptr, LV_ALIGN_IN_BOTTOM_RIGHT, -2, -2);
return Symbols::batteryOneQuarter; lv_obj_set_style_local_radius(batteryJuice, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, 0);
return Symbols::batteryEmpty;
} }
const char* BatteryIcon::GetUnknownIcon() { lv_obj_t* BatteryIcon::GetObject() {
return Symbols::batteryEmpty; return batteryImg;
}
void BatteryIcon::SetBatteryPercentage(uint8_t percentage) {
lv_obj_set_height(batteryJuice, percentage * 14 / 100);
lv_obj_realign(batteryJuice);
}
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) { const char* BatteryIcon::GetPlugIcon(bool isCharging) {

View File

@ -1,15 +1,24 @@
#pragma once #pragma once
#include <cstdint> #include <cstdint>
#include <lvgl/src/lv_core/lv_obj.h>
namespace Pinetime { namespace Pinetime {
namespace Applications { namespace Applications {
namespace Screens { namespace Screens {
class BatteryIcon { class BatteryIcon {
public: 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* GetUnknownIcon();
static const char* GetBatteryIcon(uint8_t batteryPercent);
static const char* GetPlugIcon(bool isCharging); static const char* GetPlugIcon(bool isCharging);
private:
lv_obj_t* batteryImg;
lv_obj_t* batteryJuice;
}; };
} }
} }
} }

View File

@ -33,17 +33,11 @@ BatteryInfo::BatteryInfo(Pinetime::Applications::DisplayApp* app, Pinetime::Cont
lv_obj_align(percent, nullptr, LV_ALIGN_CENTER, 0, -60); lv_obj_align(percent, nullptr, LV_ALIGN_CENTER, 0, -60);
voltage = lv_label_create(lv_scr_act(), nullptr); 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_text_fmt(voltage, "%1i.%02i volts", batteryVoltage / 1000, batteryVoltage % 1000 / 10);
lv_label_set_align(voltage, LV_LABEL_ALIGN_CENTER); lv_label_set_align(voltage, LV_LABEL_ALIGN_CENTER);
lv_obj_align(voltage, nullptr, LV_ALIGN_CENTER, 0, 95); 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); taskRefresh = lv_task_create(RefreshTaskCallback, 5000, LV_TASK_PRIO_MID, this);
Refresh(); 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_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"); lv_label_set_text_static(status, "Battery low");
} else { } 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"); lv_label_set_text_static(status, "Discharging");
} }

View File

@ -2,11 +2,7 @@
#include "displayapp/screens/Symbols.h" #include "displayapp/screens/Symbols.h"
using namespace Pinetime::Applications::Screens; using namespace Pinetime::Applications::Screens;
const char* BleIcon::GetIcon(bool isRadioEnabled, bool isConnected) { const char* BleIcon::GetIcon(bool isConnected) {
if(!isRadioEnabled) {
return Symbols::airplane;
}
if (isConnected) { if (isConnected) {
return Symbols::bluetooth; return Symbols::bluetooth;
} }

Some files were not shown because too many files have changed in this diff Show More