Merge branch 'develop' into upstream-dev

This commit is contained in:
The King 2021-01-24 16:01:14 -05:00 committed by GitHub
commit 8c3df5f021
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
321 changed files with 12197 additions and 478 deletions

1
.github/FUNDING.yml vendored Normal file
View file

@ -0,0 +1 @@
liberapay: JF002

18
.gitpod.yml Normal file
View file

@ -0,0 +1,18 @@
image:
file: docker/.gitpod.Dockerfile
github:
prebuilds:
# enable for the master/default branch (defaults to true)
master: true
# enable for all branches in this repo (defaults to false)
branches: false
# enable for pull requests coming from this repo (defaults to true)
pullRequests: false
# enable for pull requests coming from forks (defaults to false)
pullRequestsFromForks: false
# add a "Review in Gitpod" button as a comment to pull requests (defaults to true)
addComment: true
# add a "Review in Gitpod" button to pull requests (defaults to false)
addBadge: false
# add a label once the prebuild is ready to pull requests (defaults to false)
addLabel: false #prebuilt-in-gitpod

View file

@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.10) cmake_minimum_required(VERSION 3.10)
project(pinetime VERSION 0.10.0 LANGUAGES C CXX ASM) project(pinetime VERSION 0.11.0 LANGUAGES C CXX ASM)
set(NRF_TARGET "nrf52") set(NRF_TARGET "nrf52")

View file

@ -34,14 +34,18 @@ As of now, here is the list of achievements of this project:
- Time synchronization via BLE - Time synchronization via BLE
- Notification via BLE - Notification via BLE
- Multiple 'apps' : - Multiple 'apps' :
* Clock (displays the date, time, battery level, BLE connection status, heart rate and step count) * Clock (displays the date, time, battery level, ble connection status, heart rate)
* Heart rate * System info (displays various info : BLE MAC, build date/time, uptime, version,...)
* Motion * Brightess (allows the user to configure the brightness of the display)
* System info (displays various info : BLE MAC, build date/time, uptime, version, ...) * Music (control the playback of the music on your phone)
* Brightness (allows the user to configure the brightness of the display) * Heart rate (controls the heart rate sensor and display current heartbeat)
* Navigation (displays navigation instructions coming from the companion app)
* Notification (displays the last notification received)
* Paddle (single player pong-like game)
* Two (2048 clone game)
- Supported by 2 companion apps (development is in progress): - Supported by 2 companion apps (development is in progress):
* [Gadgetbridge](https://codeberg.org/Freeyourgadget/Gadgetbridge/) (on Android) * [Gadgetbridge](https://codeberg.org/Freeyourgadget/Gadgetbridge/) (on Android)
* [Amazfish](https://openrepos.net/content/piggz/amazfish) (on SailfishOS) * [Amazfish](https://openrepos.net/content/piggz/amazfish) (on SailfishOS and Linux)
- **[Experimental]** OTA (Over-the-air) update via BLE - **[Experimental]** OTA (Over-the-air) update via BLE
- **[Experimental]** Bootloader based on [MCUBoot](https://juullabs-oss.github.io/mcuboot/) - **[Experimental]** Bootloader based on [MCUBoot](https://juullabs-oss.github.io/mcuboot/)

118
doc/NavigationService.md Normal file
View file

@ -0,0 +1,118 @@
# Navigation Service
## Introduction
The navigation ble service provides 4 characteristics to allow the the watch to display navigation instructions from a companion application. The intended purpose is when performing some outdoor activities, for example running or cycling.
The 4 characteristics are:
flag (string) - Upcoming icon name
narrative (string) - Textual description of instruction
manDist (string) - Manouvre Distance, the distance to the upcoming change
progress (uint8) - Percent complete of total route, value 0-100
## Service
The service UUID is c7e60001-78fc-48fe-8e23-433b3a1942d0
## Characteristics
## Flags (UUID c7e60002-78fc-48fe-8e23-433b3a1942d0)
All included icons are from pure-maps, which provides the actual routing from the client. The icon names ultimately come from the mapbox project "direction-icons", See https://github.com/rinigus/pure-maps/tree/master/qml/icons/navigation See the end of this document for the full lsit of supported icon names.
## Narrative (UUID c7e60003-78fc-48fe-8e23-433b3a1942d0)
This is a client supplied string describing the upcoming instruction such as "At the roundabout take the first exit".
## Man Dist (UUID c7e60004-78fc-48fe-8e23-433b3a1942d0)
This is a short string describing the distance to the upcoming instruction such as "50 m".
## Progress (UUID c7e60001=5-78fc-48fe-8e23-433b3a1942d0)
The percent complete in a uint8. The watch displays this as an overall progress in a progress bar.
## Full icon list
* arrive
* arrive-left
* arrive-right
* arrive-straight
* close
* continue
* continue-left
* continue-right
* continue-slight-left
* continue-slight-right
* continue-straight
* continue-uturn
* depart
* depart-left
* depart-right
* depart-straight
* end-of-road-left
* end-of-road-right
* ferry
* flag
* fork
* fork-left
* fork-right
* fork-slight-left
* fork-slight-right
* fork-straight
* invalid
* invalid-left
* invalid-right
* invalid-slight-left
* invalid-slight-right
* invalid-straight
* invalid-uturn
* merge-left
* merge-right
* merge-slight-left
* merge-slight-right
* merge-straight
* new-name-left
* new-name-right
* new-name-sharp-left
* new-name-sharp-right
* new-name-slight-left
* new-name-slight-right
* new-name-straight
* notification-left
* notification-right
* notification-sharp-left
* notification-sharp-right
* notification-slight-left
* notification-slight-right
* notification-straight
* off-ramp-left
* off-ramp-right
* off-ramp-sharp-left
* off-ramp-sharp-right
* off-ramp-slight-left
* off-ramp-slight-right
* off-ramp-straight
* on-ramp-left
* on-ramp-right
* on-ramp-sharp-left
* on-ramp-sharp-right
* on-ramp-slight-left
* on-ramp-slight-right
* on-ramp-straight
* rotary
* rotary-left
* rotary-right
* rotary-sharp-left
* rotary-sharp-right
* rotary-slight-left
* rotary-slight-right
* rotary-straight
* roundabout
* roundabout-left
* roundabout-right
* roundabout-sharp-left
* roundabout-sharp-right
* roundabout-slight-left
* roundabout-slight-right
* roundabout-straight
* turn-left
* turn-right
* turn-sharp-left
* turn-sharp-right
* turn-slight-left
* turn-slight-right
* turn-stright
* updown
* uturn

View file

@ -15,6 +15,29 @@ If **CTS** is detected, it'll request the current time to the companion applicat
![BLE connection sequence diagram](ble/connection_sequence.png "BLE connection sequence diagram") ![BLE connection sequence diagram](ble/connection_sequence.png "BLE connection sequence diagram")
## BLE UUIDs
When possible, InfiniTime tries to implement BLE services defined by the BLE specification.
When the service does not exist in the BLE specification, InfiniTime implement custom services. As all BLE services, custom services are identified by a UUID. Here is how to define the UUID of custom services in InfiniTime:
```
- Base UUID : xxxxxxxx-78fc-48fe-8e23-433b3a1942d0
- Service UUID : SSSS0000-78fc-48fe-8e23-433b3a1942d0 where SSSS is the service ID
- Characteristic UUID : SSSSCCCC-78fc-48fe-8e23-433b3a1942d0 where CCCC is the characteristic ID for the service SSSS and is different than 0
```
The following custom services are implemented in InfiniTime:
- Since InfiniTime 0.8:
```
* Music Service : 00000000-78fc-48fe-8e23-433b3a1942d0
```
- Since InfiniTime 0.11:
```
* Navigation Service : 00010000-78fc-48fe-8e23-433b3a1942d0
```
## BLE services ## BLE services
[List of standard BLE services](https://www.bluetooth.com/specifications/gatt/services/) [List of standard BLE services](https://www.bluetooth.com/specifications/gatt/services/)

View file

@ -89,12 +89,12 @@ reset
## Examples ## Examples
### Flash bootloader and application ### Flash bootloader and application
``` ```
openocd -f ./openocd-stlink.cfg -f ./flash_bootloader_app.ocd openocd -f ./openocd-stlink.ocd -f ./flash_bootloader_app.ocd
``` ```
### Flash graphics flasher ### Flash graphics flasher
``` ```
openocd -f ./openocd-stlink.cfg -f ./flash_graphics.ocd openocd -f ./openocd-stlink.ocd -f ./flash_graphics.ocd
``` ```
## Connect the STLinkV2 to the PineTime ## Connect the STLinkV2 to the PineTime
@ -102,4 +102,4 @@ Here is an example using the pogo pins:
![SWD pinout](../images/swd_pinout.jpg) ![SWD pinout](../images/swd_pinout.jpg)
![Pogo pins](../images/pogopins.jpg) ![Pogo pins](../images/pogopins.jpg)
You can find more information about the SWD wiring [on the wiki](https://wiki.pine64.org/index.php?title=PineTime_devkit_wiring). You can find more information about the SWD wiring [on the wiki](https://wiki.pine64.org/index.php?title=PineTime_devkit_wiring).

39
docker/.gitpod.Dockerfile vendored Normal file
View file

@ -0,0 +1,39 @@
FROM gitpod/workspace-full
USER root
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update -qq \
&& apt-get install -y \
# x86_64 / generic packages
bash \
build-essential \
cmake \
git \
make \
python3 \
python3-pip \
tar \
unzip \
wget \
# aarch64 packages
libffi-dev \
libssl-dev \
python3-dev \
&& rm -rf /var/cache/apt/* /var/lib/apt/lists/*;
# Needs to be installed as root
RUN pip3 install adafruit-nrfutil
COPY docker/build.sh /opt/
# Lets get each in a separate docker layer for better downloads
# GCC
RUN bash -c "source /opt/build.sh; GetGcc;"
# NrfSdk
RUN bash -c "source /opt/build.sh; GetNrfSdk;"
# McuBoot
RUN bash -c "source /opt/build.sh; GetMcuBoot;"
# Link the default checkout workspace in to the default $SOURCES_DIR
RUN ln -s /workspace/Pinetime /sources
USER gitpod

View file

@ -31,8 +31,8 @@ main() {
CmakeGenerate CmakeGenerate
CmakeBuild $target CmakeBuild $target
BUILD_RESULT=$?
if [[ "$DISABLE_POSTBUILD" != "true" ]]; then if [ "$DISABLE_POSTBUILD" != "true" -a "$BUILD_RESULT" == 0 ]; then
source "$BUILD_DIR/post_build.sh" source "$BUILD_DIR/post_build.sh"
fi fi
} }
@ -70,7 +70,9 @@ CmakeGenerate() {
CmakeBuild() { CmakeBuild() {
local target="$1" local target="$1"
[[ -n "$target" ]] && target="--target $target" [[ -n "$target" ]] && target="--target $target"
cmake --build "$BUILD_DIR" --config $BUILD_TYPE $target -- -j$(nproc) if cmake --build "$BUILD_DIR" --config $BUILD_TYPE $target -- -j$(nproc)
then return 0; else return 1;
fi
} }
[[ $SOURCED == "false" ]] && main "$@" || echo "Sourced!" [[ $SOURCED == "false" ]] && main "$@" || echo "Sourced!"

View file

@ -324,6 +324,96 @@ list(APPEND IMAGE_FILES
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
displayapp/icons/navigation/arrive-left.c
displayapp/icons/navigation/arrive-right.c
displayapp/icons/navigation/arrive-straight.c
displayapp/icons/navigation/arrive.c
displayapp/icons/navigation/close.c
displayapp/icons/navigation/continue-left.c
displayapp/icons/navigation/continue-right.c
displayapp/icons/navigation/continue-slight-left.c
displayapp/icons/navigation/continue-slight-right.c
displayapp/icons/navigation/continue-straight.c
displayapp/icons/navigation/continue-uturn.c
displayapp/icons/navigation/continue.c
displayapp/icons/navigation/depart-left.c
displayapp/icons/navigation/depart-right.c
displayapp/icons/navigation/depart-straight.c
displayapp/icons/navigation/end-of-road-left.c
displayapp/icons/navigation/end-of-road-right.c
displayapp/icons/navigation/ferry.c
displayapp/icons/navigation/flag.c
displayapp/icons/navigation/fork-left.c
displayapp/icons/navigation/fork-right.c
displayapp/icons/navigation/fork-slight-left.c
displayapp/icons/navigation/fork-slight-right.c
displayapp/icons/navigation/fork-straight.c
displayapp/icons/navigation/invalid.c
displayapp/icons/navigation/invalid-left.c
displayapp/icons/navigation/invalid-right.c
displayapp/icons/navigation/invalid-slight-left.c
displayapp/icons/navigation/invalid-slight-right.c
displayapp/icons/navigation/invalid-straight.c
displayapp/icons/navigation/invalid-uturn.c
displayapp/icons/navigation/merge-left.c
displayapp/icons/navigation/merge-right.c
displayapp/icons/navigation/merge-slight-left.c
displayapp/icons/navigation/merge-slight-right.c
displayapp/icons/navigation/merge-straight.c
displayapp/icons/navigation/new-name-left.c
displayapp/icons/navigation/new-name-right.c
displayapp/icons/navigation/new-name-sharp-left.c
displayapp/icons/navigation/new-name-sharp-right.c
displayapp/icons/navigation/new-name-slight-left.c
displayapp/icons/navigation/new-name-slight-right.c
displayapp/icons/navigation/new-name-straight.c
displayapp/icons/navigation/notification-left.c
displayapp/icons/navigation/notification-right.c
displayapp/icons/navigation/notification-sharp-left.c
displayapp/icons/navigation/notification-sharp-right.c
displayapp/icons/navigation/notification-slight-left.c
displayapp/icons/navigation/notification-slight-right.c
displayapp/icons/navigation/notification-straight.c
displayapp/icons/navigation/off-ramp-left.c
displayapp/icons/navigation/off-ramp-right.c
displayapp/icons/navigation/off-ramp-sharp-left.c
displayapp/icons/navigation/off-ramp-sharp-right.c
displayapp/icons/navigation/off-ramp-slight-left.c
displayapp/icons/navigation/off-ramp-slight-right.c
displayapp/icons/navigation/off-ramp-straight.c
displayapp/icons/navigation/on-ramp-left.c
displayapp/icons/navigation/on-ramp-right.c
displayapp/icons/navigation/on-ramp-sharp-left.c
displayapp/icons/navigation/on-ramp-sharp-right.c
displayapp/icons/navigation/on-ramp-slight-left.c
displayapp/icons/navigation/on-ramp-slight-right.c
displayapp/icons/navigation/on-ramp-straight.c
displayapp/icons/navigation/rotary.c
displayapp/icons/navigation/rotary-left.c
displayapp/icons/navigation/rotary-right.c
displayapp/icons/navigation/rotary-sharp-left.c
displayapp/icons/navigation/rotary-sharp-right.c
displayapp/icons/navigation/rotary-slight-left.c
displayapp/icons/navigation/rotary-slight-right.c
displayapp/icons/navigation/rotary-straight.c
displayapp/icons/navigation/roundabout.c
displayapp/icons/navigation/roundabout-left.c
displayapp/icons/navigation/roundabout-right.c
displayapp/icons/navigation/roundabout-sharp-left.c
displayapp/icons/navigation/roundabout-sharp-right.c
displayapp/icons/navigation/roundabout-slight-left.c
displayapp/icons/navigation/roundabout-slight-right.c
displayapp/icons/navigation/roundabout-straight.c
displayapp/icons/navigation/turn-left.c
displayapp/icons/navigation/turn-right.c
displayapp/icons/navigation/turn-sharp-left.c
displayapp/icons/navigation/turn-sharp-right.c
displayapp/icons/navigation/turn-slight-left.c
displayapp/icons/navigation/turn-slight-right.c
displayapp/icons/navigation/turn-stright.c
displayapp/icons/navigation/updown.c
displayapp/icons/navigation/uturn.c
) )
list(APPEND SOURCE_FILES list(APPEND SOURCE_FILES
@ -347,10 +437,12 @@ list(APPEND SOURCE_FILES
displayapp/screens/Label.cpp displayapp/screens/Label.cpp
displayapp/screens/FirmwareUpdate.cpp displayapp/screens/FirmwareUpdate.cpp
displayapp/screens/Music.cpp displayapp/screens/Music.cpp
displayapp/screens/Navigation.cpp
displayapp/screens/FirmwareValidation.cpp displayapp/screens/FirmwareValidation.cpp
displayapp/screens/ApplicationList.cpp displayapp/screens/ApplicationList.cpp
displayapp/screens/Notifications.cpp displayapp/screens/Notifications.cpp
displayapp/screens/Twos.cpp displayapp/screens/Twos.cpp
displayapp/screens/HeartRate.cpp
main.cpp main.cpp
drivers/St7789.cpp drivers/St7789.cpp
drivers/SpiNorFlash.cpp drivers/SpiNorFlash.cpp
@ -359,6 +451,7 @@ list(APPEND SOURCE_FILES
drivers/Watchdog.cpp drivers/Watchdog.cpp
drivers/DebugPins.cpp drivers/DebugPins.cpp
drivers/InternalFlash.cpp drivers/InternalFlash.cpp
drivers/Hrs3300.cpp
components/battery/BatteryController.cpp components/battery/BatteryController.cpp
components/ble/BleController.cpp components/ble/BleController.cpp
components/ble/NotificationManager.cpp components/ble/NotificationManager.cpp
@ -372,9 +465,11 @@ list(APPEND SOURCE_FILES
components/ble/CurrentTimeService.cpp components/ble/CurrentTimeService.cpp
components/ble/AlertNotificationService.cpp components/ble/AlertNotificationService.cpp
components/ble/MusicService.cpp components/ble/MusicService.cpp
components/ble/NavigationService.cpp
components/ble/BatteryInformationService.cpp components/ble/BatteryInformationService.cpp
components/ble/ImmediateAlertService.cpp components/ble/ImmediateAlertService.cpp
components/ble/ServiceDiscovery.cpp components/ble/ServiceDiscovery.cpp
components/ble/HeartRateService.cpp
components/firmwarevalidator/FirmwareValidator.cpp components/firmwarevalidator/FirmwareValidator.cpp
components/motor/MotorController.cpp components/motor/MotorController.cpp
drivers/Cst816s.cpp drivers/Cst816s.cpp
@ -388,6 +483,12 @@ list(APPEND SOURCE_FILES
systemtask/SystemTask.cpp systemtask/SystemTask.cpp
drivers/TwiMaster.cpp drivers/TwiMaster.cpp
heartratetask/HeartRateTask.cpp
components/heartrate/Ppg.cpp
components/heartrate/Biquad.cpp
components/heartrate/Ptagc.cpp
components/heartrate/HeartRateController.cpp
) )
list(APPEND GRAPHICS_SOURCE_FILES list(APPEND GRAPHICS_SOURCE_FILES
@ -435,6 +536,7 @@ set(INCLUDE_FILES
displayapp/screens/ApplicationList.h displayapp/screens/ApplicationList.h
displayapp/Apps.h displayapp/Apps.h
displayapp/screens/Notifications.h displayapp/screens/Notifications.h
displayapp/screens/HeartRate.h
drivers/St7789.h drivers/St7789.h
drivers/SpiNorFlash.h drivers/SpiNorFlash.h
drivers/SpiMaster.h drivers/SpiMaster.h
@ -442,6 +544,7 @@ set(INCLUDE_FILES
drivers/Watchdog.h drivers/Watchdog.h
drivers/DebugPins.h drivers/DebugPins.h
drivers/InternalFlash.h drivers/InternalFlash.h
drivers/Hrs3300.h
components/battery/BatteryController.h components/battery/BatteryController.h
components/ble/BleController.h components/ble/BleController.h
components/ble/NotificationManager.h components/ble/NotificationManager.h
@ -457,6 +560,7 @@ set(INCLUDE_FILES
components/ble/ImmediateAlertService.h components/ble/ImmediateAlertService.h
components/ble/ServiceDiscovery.h components/ble/ServiceDiscovery.h
components/ble/BleClient.h components/ble/BleClient.h
components/ble/HeartRateService.h.h
drivers/Cst816s.h drivers/Cst816s.h
FreeRTOS/portmacro.h FreeRTOS/portmacro.h
FreeRTOS/portmacro_cmsis.h FreeRTOS/portmacro_cmsis.h

View file

@ -63,7 +63,7 @@
#define configTICK_RATE_HZ 1024 #define configTICK_RATE_HZ 1024
#define configMAX_PRIORITIES ( 3 ) #define configMAX_PRIORITIES ( 3 )
#define configMINIMAL_STACK_SIZE ( 120 ) #define configMINIMAL_STACK_SIZE ( 120 )
#define configTOTAL_HEAP_SIZE ( 1024*11 ) #define configTOTAL_HEAP_SIZE ( 1024*14 )
#define configMAX_TASK_NAME_LEN ( 4 ) #define configMAX_TASK_NAME_LEN ( 4 )
#define configUSE_16_BIT_TICKS 0 #define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1 #define configIDLE_SHOULD_YIELD 1

View file

@ -34,9 +34,11 @@ void Battery::Update() {
// see https://forum.pine64.org/showthread.php?tid=8147 // see https://forum.pine64.org/showthread.php?tid=8147
voltage = (value * 2.0f) / (1024/3.0f); voltage = (value * 2.0f) / (1024/3.0f);
percentRemaining = ((voltage - 3.55f)*100.0f)*3.9f; int percentRemaining = ((voltage - 3.55f)*100.0f)*3.9f;
percentRemaining = std::max(percentRemaining, 0.0f); percentRemaining = std::max(percentRemaining, 0);
percentRemaining = std::min(percentRemaining, 100.0f); percentRemaining = std::min(percentRemaining, 100);
percentRemainingBuffer.insert(percentRemaining);
// NRF_LOG_INFO("BATTERY " NRF_LOG_FLOAT_MARKER " %% - " NRF_LOG_FLOAT_MARKER " v", NRF_LOG_FLOAT(percentRemaining), NRF_LOG_FLOAT(voltage)); // NRF_LOG_INFO("BATTERY " NRF_LOG_FLOAT_MARKER " %% - " NRF_LOG_FLOAT_MARKER " v", NRF_LOG_FLOAT(percentRemaining), NRF_LOG_FLOAT(voltage));
// NRF_LOG_INFO("POWER Charging : %d - Power : %d", isCharging, isPowerPresent); // NRF_LOG_INFO("POWER Charging : %d - Power : %d", isCharging, isPowerPresent);

View file

@ -1,14 +1,48 @@
#pragma once #pragma once
#include <cstdint> #include <cstdint>
#include <drivers/include/nrfx_saadc.h> #include <drivers/include/nrfx_saadc.h>
#include <array>
#include <numeric>
namespace Pinetime { namespace Pinetime {
namespace Controllers { namespace Controllers {
/** A simple circular buffer that can be used to average
out the sensor values. The total capacity of the CircBuffer
is given as the template parameter N.
*/
template <int N>
class CircBuffer {
public:
CircBuffer() : arr{}, sz{}, cap{N}, head{} {}
/**
insert member function overwrites the next data to the current
HEAD and moves the HEAD to the newly inserted value.
*/
void insert(const int num) {
head %= cap;
arr[head++] = num;
if (sz != cap) {
sz++;
}
}
int GetAverage() const {
int sum = std::accumulate(arr.begin(), arr.end(), 0);
return (sum / sz);
}
private:
std::array<int, N> arr; /**< internal array used to store the values*/
uint8_t sz; /**< The current size of the array.*/
uint8_t cap; /**< Total capacity of the CircBuffer.*/
uint8_t head; /**< The current head of the CircBuffer*/
};
class Battery { class Battery {
public: public:
void Init(); void Init();
void Update(); void Update();
float PercentRemaining() const { return percentRemaining; } int PercentRemaining() const { return percentRemainingBuffer.GetAverage(); }
float Voltage() const { return voltage; } float Voltage() const { return voltage; }
bool IsCharging() const { return isCharging; } bool IsCharging() const { return isCharging; }
bool IsPowerPresent() const { return isPowerPresent; } bool IsPowerPresent() const { return isPowerPresent; }
@ -17,8 +51,9 @@ namespace Pinetime {
static constexpr uint32_t chargingPin = 12; static constexpr uint32_t chargingPin = 12;
static constexpr uint32_t powerPresentPin = 19; static constexpr uint32_t powerPresentPin = 19;
static constexpr nrf_saadc_input_t batteryVoltageAdcInput = NRF_SAADC_INPUT_AIN7; static constexpr nrf_saadc_input_t batteryVoltageAdcInput = NRF_SAADC_INPUT_AIN7;
static constexpr uint8_t percentRemainingSamples = 10;
static void SaadcEventHandler(nrfx_saadc_evt_t const * p_event); static void SaadcEventHandler(nrfx_saadc_evt_t const * p_event);
float percentRemaining = 0.0f; CircBuffer<percentRemainingSamples> percentRemainingBuffer {};
float voltage = 0.0f; float voltage = 0.0f;
bool isCharging = false; bool isCharging = false;
bool isPowerPresent = false; bool isPowerPresent = false;

View file

@ -0,0 +1,82 @@
#include "HeartRateService.h"
#include "components/heartrate/HeartRateController.h"
#include "systemtask/SystemTask.h"
using namespace Pinetime::Controllers;
constexpr ble_uuid16_t HeartRateService::heartRateServiceUuid;
constexpr ble_uuid16_t HeartRateService::heartRateMeasurementUuid;
namespace {
int HeartRateServiceServiceCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg) {
auto* heartRateService = static_cast<HeartRateService*>(arg);
return heartRateService->OnHeartRateRequested(conn_handle, attr_handle, ctxt);
}
}
// TODO Refactoring - remove dependency to SystemTask
HeartRateService::HeartRateService(Pinetime::System::SystemTask &system, Controllers::HeartRateController& heartRateController) :
system{system},
heartRateController{heartRateController},
characteristicDefinition{
{
.uuid = (ble_uuid_t *) &heartRateMeasurementUuid,
.access_cb = HeartRateServiceServiceCallback,
.arg = this,
.flags = BLE_GATT_CHR_F_READ | BLE_GATT_CHR_F_NOTIFY,
.val_handle = &heartRateMeasurementHandle
},
{
0
}
},
serviceDefinition{
{
/* Device Information Service */
.type = BLE_GATT_SVC_TYPE_PRIMARY,
.uuid = (ble_uuid_t *) &heartRateServiceUuid,
.characteristics = characteristicDefinition
},
{
0
},
}{
// TODO refactor to prevent this loop dependency (service depends on controller and controller depends on service)
heartRateController.SetService(this);
}
void HeartRateService::Init() {
int res = 0;
res = ble_gatts_count_cfg(serviceDefinition);
ASSERT(res == 0);
res = ble_gatts_add_svcs(serviceDefinition);
ASSERT(res == 0);
}
int HeartRateService::OnHeartRateRequested(uint16_t connectionHandle, uint16_t attributeHandle,
ble_gatt_access_ctxt *context) {
if(attributeHandle == heartRateMeasurementHandle) {
NRF_LOG_INFO("BATTERY : handle = %d", heartRateMeasurementHandle);
static uint8_t batteryValue = heartRateController.HeartRate();
uint8_t buffer[2] = {0, heartRateController.HeartRate()}; // [0] = flags, [1] = hr value
int res = os_mbuf_append(context->om, buffer, 2);
return (res == 0) ? 0 : BLE_ATT_ERR_INSUFFICIENT_RES;
}
return 0;
}
void HeartRateService::OnNewHeartRateValue(uint8_t heartRateValue) {
uint8_t buffer[2] = {0, heartRateController.HeartRate()}; // [0] = flags, [1] = hr value
auto *om = ble_hs_mbuf_from_flat(buffer, 2);
uint16_t connectionHandle = system.nimble().connHandle();
if (connectionHandle == 0 || connectionHandle == BLE_HS_CONN_HANDLE_NONE) {
return;
}
ble_gattc_notify_custom(connectionHandle, heartRateMeasurementHandle, om);
}

View file

@ -0,0 +1,44 @@
#pragma once
#define min // workaround: nimble's min/max macros conflict with libstdc++
#define max
#include <host/ble_gap.h>
#undef max
#undef min
namespace Pinetime {
namespace System {
class SystemTask;
}
namespace Controllers {
class HeartRateController;
class HeartRateService {
public:
HeartRateService(Pinetime::System::SystemTask &system, Controllers::HeartRateController& heartRateController);
void Init();
int OnHeartRateRequested(uint16_t connectionHandle, uint16_t attributeHandle, ble_gatt_access_ctxt *context);
void OnNewHeartRateValue(uint8_t hearRateValue);
private:
Pinetime::System::SystemTask &system;
Controllers::HeartRateController& heartRateController;
static constexpr uint16_t heartRateServiceId {0x180D};
static constexpr uint16_t heartRateMeasurementId {0x2A37};
static constexpr ble_uuid16_t heartRateServiceUuid {
.u {.type = BLE_UUID_TYPE_16},
.value = heartRateServiceId
};
static constexpr ble_uuid16_t heartRateMeasurementUuid {
.u {.type = BLE_UUID_TYPE_16},
.value = heartRateMeasurementId
};
struct ble_gatt_chr_def characteristicDefinition[3];
struct ble_gatt_svc_def serviceDefinition[2];
uint16_t heartRateMeasurementHandle;
};
}
}

View file

@ -24,32 +24,68 @@ int MSCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_acces
} }
Pinetime::Controllers::MusicService::MusicService(Pinetime::System::SystemTask &system) : m_system(system) { Pinetime::Controllers::MusicService::MusicService(Pinetime::System::SystemTask &system) : m_system(system) {
msUuid.value[11] = msId[0]; msUuid.value[14] = msId[0];
msUuid.value[12] = msId[1]; msUuid.value[15] = msId[1];
msEventCharUuid.value[11] = msEventCharId[0];
msEventCharUuid.value[12] = msEventCharId[1]; msEventCharUuid.value[12] = msEventCharId[0];
msStatusCharUuid.value[11] = msStatusCharId[0]; msEventCharUuid.value[13] = msEventCharId[1];
msStatusCharUuid.value[12] = msStatusCharId[1]; msEventCharUuid.value[14] = msId[0];
msTrackCharUuid.value[11] = msTrackCharId[0]; msEventCharUuid.value[15] = msId[1];
msTrackCharUuid.value[12] = msTrackCharId[1];
msArtistCharUuid.value[11] = msArtistCharId[0]; msStatusCharUuid.value[12] = msStatusCharId[0];
msArtistCharUuid.value[12] = msArtistCharId[1]; msStatusCharUuid.value[13] = msStatusCharId[1];
msAlbumCharUuid.value[11] = msAlbumCharId[0]; msStatusCharUuid.value[14] = msId[0];
msAlbumCharUuid.value[12] = msAlbumCharId[1]; msStatusCharUuid.value[15] = msId[1];
msPositionCharUuid.value[11] = msPositionCharId[0];
msPositionCharUuid.value[12] = msPositionCharId[1]; msTrackCharUuid.value[12] = msTrackCharId[0];
msTotalLengthCharUuid.value[11] = msTotalLengthCharId[0]; msTrackCharUuid.value[13] = msTrackCharId[1];
msTotalLengthCharUuid.value[12] = msTotalLengthCharId[1]; msTrackCharUuid.value[14] = msId[0];
msTrackNumberCharUuid.value[11] = msTrackNumberCharId[0]; msTrackCharUuid.value[15] = msId[1];
msTrackNumberCharUuid.value[12] = msTrackNumberCharId[1];
msTrackTotalCharUuid.value[11] = msTrackTotalCharId[0]; msArtistCharUuid.value[12] = msArtistCharId[0];
msTrackTotalCharUuid.value[12] = msTrackTotalCharId[1]; msArtistCharUuid.value[13] = msArtistCharId[1];
msPlaybackSpeedCharUuid.value[11] = msPlaybackSpeedCharId[0]; msArtistCharUuid.value[14] = msId[0];
msPlaybackSpeedCharUuid.value[12] = msPlaybackSpeedCharId[1]; msArtistCharUuid.value[15] = msId[1];
msRepeatCharUuid.value[11] = msRepeatCharId[0];
msRepeatCharUuid.value[12] = msRepeatCharId[1]; msAlbumCharUuid.value[12] = msAlbumCharId[0];
msShuffleCharUuid.value[11] = msShuffleCharId[0]; msAlbumCharUuid.value[13] = msAlbumCharId[1];
msShuffleCharUuid.value[12] = msShuffleCharId[1]; msAlbumCharUuid.value[14] = msId[0];
msAlbumCharUuid.value[15] = msId[1];
msPositionCharUuid.value[12] = msPositionCharId[0];
msPositionCharUuid.value[13] = msPositionCharId[1];
msPositionCharUuid.value[14] = msId[0];
msPositionCharUuid.value[15] = msId[1];
msTotalLengthCharUuid.value[12] = msTotalLengthCharId[0];
msTotalLengthCharUuid.value[13] = msTotalLengthCharId[1];
msTotalLengthCharUuid.value[14] = msId[0];
msTotalLengthCharUuid.value[15] = msId[1];
msTrackNumberCharUuid.value[12] = msTrackNumberCharId[0];
msTrackNumberCharUuid.value[13] = msTrackNumberCharId[1];
msTrackNumberCharUuid.value[14] = msId[0];
msTrackNumberCharUuid.value[15] = msId[1];
msTrackTotalCharUuid.value[12] = msTrackTotalCharId[0];
msTrackTotalCharUuid.value[13] = msTrackTotalCharId[1];
msTrackTotalCharUuid.value[14] = msId[0];
msTrackTotalCharUuid.value[15] = msId[1];
msPlaybackSpeedCharUuid.value[12] = msPlaybackSpeedCharId[0];
msPlaybackSpeedCharUuid.value[13] = msPlaybackSpeedCharId[1];
msPlaybackSpeedCharUuid.value[14] = msId[0];
msPlaybackSpeedCharUuid.value[15] = msId[1];
msRepeatCharUuid.value[12] = msRepeatCharId[0];
msRepeatCharUuid.value[13] = msRepeatCharId[1];
msRepeatCharUuid.value[14] = msId[0];
msRepeatCharUuid.value[15] = msId[1];
msShuffleCharUuid.value[12] = msShuffleCharId[0];
msShuffleCharUuid.value[13] = msShuffleCharId[1];
msShuffleCharUuid.value[14] = msId[0];
msShuffleCharUuid.value[15] = msId[1];
characteristicDefinition[0] = {.uuid = (ble_uuid_t *) (&msEventCharUuid), characteristicDefinition[0] = {.uuid = (ble_uuid_t *) (&msEventCharUuid),
.access_cb = MSCallback, .access_cb = MSCallback,

View file

@ -26,8 +26,8 @@
#undef max #undef max
#undef min #undef min
//c7e50000-78fc-48fe-8e23-43b37a1942d0 //00000000-78fc-48fe-8e23-433b3a1942d0
#define MUSIC_SERVICE_UUID_BASE {0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, 0x00, 0x00, 0xe5, 0xc7} #define MUSIC_SERVICE_UUID_BASE {0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, 0x00, 0x00, 0x00, 0x00}
namespace Pinetime { namespace Pinetime {
namespace System { namespace System {
@ -73,19 +73,19 @@ namespace Pinetime {
Playing = 0x01 Playing = 0x01
}; };
private: private:
static constexpr uint8_t msId[2] = {0x00, 0x01}; static constexpr uint8_t msId[2] = {0x00, 0x00};
static constexpr uint8_t msEventCharId[2] = {0x00, 0x02}; static constexpr uint8_t msEventCharId[2] = {0x01, 0x00};
static constexpr uint8_t msStatusCharId[2] = {0x00, 0x03}; static constexpr uint8_t msStatusCharId[2] = {0x02, 0x00};
static constexpr uint8_t msArtistCharId[2] = {0x00, 0x04}; static constexpr uint8_t msArtistCharId[2] = {0x03, 0x00};
static constexpr uint8_t msTrackCharId[2] = {0x00, 0x05}; static constexpr uint8_t msTrackCharId[2] = {0x04, 0x00};
static constexpr uint8_t msAlbumCharId[2] = {0x00, 0x06}; static constexpr uint8_t msAlbumCharId[2] = {0x05, 0x00};
static constexpr uint8_t msPositionCharId[2] = {0x00, 0x07}; static constexpr uint8_t msPositionCharId[2] = {0x06, 0x00};
static constexpr uint8_t msTotalLengthCharId[2] = {0x00, 0x08}; static constexpr uint8_t msTotalLengthCharId[2] = {0x07, 0x00};
static constexpr uint8_t msTrackNumberCharId[2] = {0x00, 0x09}; static constexpr uint8_t msTrackNumberCharId[2] = {0x08, 0x00};
static constexpr uint8_t msTrackTotalCharId[2] = {0x00, 0x0a}; static constexpr uint8_t msTrackTotalCharId[2] = {0x09, 0x00};
static constexpr uint8_t msPlaybackSpeedCharId[2] = {0x00, 0x0b}; static constexpr uint8_t msPlaybackSpeedCharId[2] = {0x0a, 0x00};
static constexpr uint8_t msRepeatCharId[2] = {0x00, 0x0c}; static constexpr uint8_t msRepeatCharId[2] = {0x0b, 0x00};
static constexpr uint8_t msShuffleCharId[2] = {0x00, 0x0d}; static constexpr uint8_t msShuffleCharId[2] = {0x0c, 0x00};
ble_uuid128_t msUuid{ ble_uuid128_t msUuid{
.u = {.type = BLE_UUID_TYPE_128}, .u = {.type = BLE_UUID_TYPE_128},

View file

@ -0,0 +1,137 @@
/* Copyright (C) 2021 Adam Pigg
This file is part of InfiniTime.
InfiniTime is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
InfiniTime is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "NavigationService.h"
#include "systemtask/SystemTask.h"
int NAVCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg) {
auto navService = static_cast<Pinetime::Controllers::NavigationService *>(arg);
return navService->OnCommand(conn_handle, attr_handle, ctxt);
}
Pinetime::Controllers::NavigationService::NavigationService(Pinetime::System::SystemTask &system) : m_system(system) {
navUuid.value[14] = navId[0];
navUuid.value[15] = navId[1];
navFlagCharUuid.value[12] = navFlagCharId[0];
navFlagCharUuid.value[13] = navFlagCharId[1];
navFlagCharUuid.value[14] = navId[0];
navFlagCharUuid.value[15] = navId[1];
navNarrativeCharUuid.value[12] = navNarrativeCharId[0];
navNarrativeCharUuid.value[13] = navNarrativeCharId[1];
navNarrativeCharUuid.value[14] = navId[0];
navNarrativeCharUuid.value[15] = navId[1];
navManDistCharUuid.value[12] = navManDistCharId[0];
navManDistCharUuid.value[13] = navManDistCharId[1];
navManDistCharUuid.value[14] = navId[0];
navManDistCharUuid.value[15] = navId[1];
navProgressCharUuid.value[12] = navProgressCharId[0];
navProgressCharUuid.value[13] = navProgressCharId[1];
navProgressCharUuid.value[14] = navId[0];
navProgressCharUuid.value[15] = navId[1];
characteristicDefinition[0] = {.uuid = (ble_uuid_t *) (&navFlagCharUuid),
.access_cb = NAVCallback,
.arg = this,
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ
};
characteristicDefinition[1] = {.uuid = (ble_uuid_t *) (&navNarrativeCharUuid),
.access_cb = NAVCallback,
.arg = this,
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ
};
characteristicDefinition[2] = {.uuid = (ble_uuid_t *) (&navManDistCharUuid),
.access_cb = NAVCallback,
.arg = this,
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ
};
characteristicDefinition[3] = {.uuid = (ble_uuid_t *) (&navProgressCharUuid),
.access_cb = NAVCallback,
.arg = this,
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ
};
characteristicDefinition[4] = {0};
serviceDefinition[0] = {
.type = BLE_GATT_SVC_TYPE_PRIMARY,
.uuid = (ble_uuid_t *) &navUuid,
.characteristics = characteristicDefinition
};
serviceDefinition[1] = {0};
m_progress = 0;
}
void Pinetime::Controllers::NavigationService::Init() {
int res = 0;
res = ble_gatts_count_cfg(serviceDefinition);
ASSERT(res == 0);
res = ble_gatts_add_svcs(serviceDefinition);
ASSERT(res == 0);
}
int Pinetime::Controllers::NavigationService::OnCommand(uint16_t conn_handle, uint16_t attr_handle,
struct ble_gatt_access_ctxt *ctxt) {
if (ctxt->op == BLE_GATT_ACCESS_OP_WRITE_CHR) {
size_t notifSize = OS_MBUF_PKTLEN(ctxt->om);
uint8_t data[notifSize + 1];
data[notifSize] = '\0';
os_mbuf_copydata(ctxt->om, 0, notifSize, data);
char *s = (char *) &data[0];
NRF_LOG_INFO("DATA : %s", s);
if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t *) &navFlagCharUuid) == 0) {
m_flag = s;
} else if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t *) &navNarrativeCharUuid) == 0) {
m_narrative = s;
} else if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t *) &navManDistCharUuid) == 0) {
m_manDist = s;
} else if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t *) &navProgressCharUuid) == 0) {
m_progress = data[0];
}
}
return 0;
}
std::string Pinetime::Controllers::NavigationService::getFlag()
{
return m_flag;
}
std::string Pinetime::Controllers::NavigationService::getNarrative()
{
return m_narrative;
}
std::string Pinetime::Controllers::NavigationService::getManDist()
{
return m_manDist;
}
int Pinetime::Controllers::NavigationService::getProgress()
{
return m_progress;
}

View file

@ -0,0 +1,96 @@
/* Copyright (C) 2021 Adam Pigg
This file is part of InfiniTime.
InfiniTime is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
InfiniTime is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#pragma once
#include <cstdint>
#include <string>
#define min // workaround: nimble's min/max macros conflict with libstdc++
#define max
#include <host/ble_gap.h>
#include <host/ble_uuid.h>
#undef max
#undef min
//c7e60000-78fc-48fe-8e23-433b3a1942d0
#define NAVIGATION_SERVICE_UUID_BASE {0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, 0x00, 0x00, 0x00, 0x00}
namespace Pinetime {
namespace System {
class SystemTask;
}
namespace Controllers {
class NavigationService {
public:
explicit NavigationService(Pinetime::System::SystemTask &system);
void Init();
int OnCommand(uint16_t conn_handle, uint16_t attr_handle,
struct ble_gatt_access_ctxt *ctxt);
std::string getFlag();
std::string getNarrative();
std::string getManDist();
int getProgress();
private:
static constexpr uint8_t navId[2] = {0x01, 0x00};
static constexpr uint8_t navFlagCharId[2] = {0x01, 0x00};
static constexpr uint8_t navNarrativeCharId[2] = {0x02, 0x00};
static constexpr uint8_t navManDistCharId[2] = {0x03, 0x00};
static constexpr uint8_t navProgressCharId[2] = {0x04, 0x00};
ble_uuid128_t navUuid{
.u = {.type = BLE_UUID_TYPE_128},
.value = NAVIGATION_SERVICE_UUID_BASE
};
ble_uuid128_t navFlagCharUuid{
.u = {.type = BLE_UUID_TYPE_128},
.value = NAVIGATION_SERVICE_UUID_BASE
};
ble_uuid128_t navNarrativeCharUuid{
.u = {.type = BLE_UUID_TYPE_128},
.value = NAVIGATION_SERVICE_UUID_BASE
};
ble_uuid128_t navManDistCharUuid{
.u = {.type = BLE_UUID_TYPE_128},
.value = NAVIGATION_SERVICE_UUID_BASE
};
ble_uuid128_t navProgressCharUuid{
.u = {.type = BLE_UUID_TYPE_128},
.value = NAVIGATION_SERVICE_UUID_BASE
};
struct ble_gatt_chr_def characteristicDefinition[5];
struct ble_gatt_svc_def serviceDefinition[2];
std::string m_flag;
std::string m_narrative;
std::string m_manDist;
int m_progress;
Pinetime::System::SystemTask &m_system;
};
}
}

View file

@ -22,7 +22,8 @@ NimbleController::NimbleController(Pinetime::System::SystemTask& systemTask,
DateTime& dateTimeController, DateTime& dateTimeController,
Pinetime::Controllers::NotificationManager& notificationManager, Pinetime::Controllers::NotificationManager& notificationManager,
Controllers::Battery& batteryController, Controllers::Battery& batteryController,
Pinetime::Drivers::SpiNorFlash& spiNorFlash) : Pinetime::Drivers::SpiNorFlash& spiNorFlash,
Controllers::HeartRateController& heartRateController) :
systemTask{systemTask}, systemTask{systemTask},
bleController{bleController}, bleController{bleController},
dateTimeController{dateTimeController}, dateTimeController{dateTimeController},
@ -34,9 +35,11 @@ NimbleController::NimbleController(Pinetime::System::SystemTask& systemTask,
alertNotificationClient{systemTask, notificationManager}, alertNotificationClient{systemTask, notificationManager},
currentTimeService{dateTimeController}, currentTimeService{dateTimeController},
musicService{systemTask}, musicService{systemTask},
navService{systemTask},
batteryInformationService{batteryController}, batteryInformationService{batteryController},
immediateAlertService{systemTask, notificationManager}, immediateAlertService{systemTask, notificationManager},
serviceDiscovery({&currentTimeClient, &alertNotificationClient}) { serviceDiscovery({&currentTimeClient, &alertNotificationClient}),
heartRateService{systemTask, heartRateController} {
} }
int GAPEventCallback(struct ble_gap_event *event, void *arg) { int GAPEventCallback(struct ble_gap_event *event, void *arg) {
@ -54,10 +57,12 @@ void NimbleController::Init() {
currentTimeClient.Init(); currentTimeClient.Init();
currentTimeService.Init(); currentTimeService.Init();
musicService.Init(); musicService.Init();
navService.Init();
anService.Init(); anService.Init();
dfuService.Init(); dfuService.Init();
batteryInformationService.Init(); batteryInformationService.Init();
immediateAlertService.Init(); immediateAlertService.Init();
heartRateService.Init();
int res; int res;
res = ble_hs_util_ensure_addr(0); res = ble_hs_util_ensure_addr(0);
ASSERT(res == 0); ASSERT(res == 0);

View file

@ -16,7 +16,9 @@
#include "DfuService.h" #include "DfuService.h"
#include "ImmediateAlertService.h" #include "ImmediateAlertService.h"
#include "MusicService.h" #include "MusicService.h"
#include "NavigationService.h"
#include "ServiceDiscovery.h" #include "ServiceDiscovery.h"
#include "HeartRateService.h"
namespace Pinetime { namespace Pinetime {
namespace Drivers { namespace Drivers {
@ -37,7 +39,8 @@ namespace Pinetime {
public: public:
NimbleController(Pinetime::System::SystemTask& systemTask, Pinetime::Controllers::Ble& bleController, NimbleController(Pinetime::System::SystemTask& systemTask, Pinetime::Controllers::Ble& bleController,
DateTime& dateTimeController, Pinetime::Controllers::NotificationManager& notificationManager, DateTime& dateTimeController, Pinetime::Controllers::NotificationManager& notificationManager,
Controllers::Battery& batteryController, Pinetime::Drivers::SpiNorFlash& spiNorFlash); Controllers::Battery& batteryController, Pinetime::Drivers::SpiNorFlash& spiNorFlash,
Controllers::HeartRateController& heartRateController);
void Init(); void Init();
void StartAdvertising(); void StartAdvertising();
int OnGAPEvent(ble_gap_event *event); int OnGAPEvent(ble_gap_event *event);
@ -54,6 +57,7 @@ namespace Pinetime {
void StartDiscovery(); void StartDiscovery();
Pinetime::Controllers::MusicService& music() {return musicService;}; Pinetime::Controllers::MusicService& music() {return musicService;};
Pinetime::Controllers::NavigationService& navigation() {return navService;};
uint16_t connHandle(); uint16_t connHandle();
@ -72,8 +76,10 @@ namespace Pinetime {
AlertNotificationClient alertNotificationClient; AlertNotificationClient alertNotificationClient;
CurrentTimeService currentTimeService; CurrentTimeService currentTimeService;
MusicService musicService; MusicService musicService;
NavigationService navService;
BatteryInformationService batteryInformationService; BatteryInformationService batteryInformationService;
ImmediateAlertService immediateAlertService; ImmediateAlertService immediateAlertService;
HeartRateService heartRateService;
uint8_t addrType; // 1 = Random, 0 = PUBLIC uint8_t addrType; // 1 = Random, 0 = PUBLIC
uint16_t connectionHandle = 0; uint16_t connectionHandle = 0;

View file

@ -0,0 +1,27 @@
/*
SPDX-License-Identifier: LGPL-3.0-or-later
Original work Copyright (C) 2020 Daniel Thompson
C++ port Copyright (C) 2021 Jean-François Milants
*/
#include "Biquad.h"
using namespace Pinetime::Controllers;
/** Original implementation from wasp-os : https://github.com/daniel-thompson/wasp-os/blob/master/wasp/ppg.py */
Biquad::Biquad(float b0, float b1, float b2, float a1, float a2) : b0{b0}, b1{b1}, b2{b2}, a1{a1}, a2{a2} {
}
float Biquad::Step(float x) {
auto v1 = this->v1;
auto v2 = this->v2;
auto v = x - (a1 * v1) - (a2 * v2);
auto y = (b0 * v) + (b1 * v1) + (b2 * v2);
this->v2 = v1;
this->v1 = v;
return y;
}

View file

@ -0,0 +1,22 @@
#pragma once
namespace Pinetime {
namespace Controllers {
/// Direct Form II Biquad Filter
class Biquad {
public:
Biquad(float b0, float b1, float b2, float a1, float a2);
float Step(float x);
private:
float b0;
float b1;
float b2;
float a1;
float a2;
float v1 = 0.0f;
float v2 = 0.0f;
};
}
}

View file

@ -0,0 +1,41 @@
#include "HeartRateController.h"
#include <heartratetask/HeartRateTask.h>
#include <systemtask/SystemTask.h>
using namespace Pinetime::Controllers;
HeartRateController::HeartRateController(Pinetime::System::SystemTask &systemTask) : systemTask{systemTask} {
}
void HeartRateController::Update(HeartRateController::States newState, uint8_t heartRate) {
this->state = newState;
if(this->heartRate != heartRate) {
this->heartRate = heartRate;
service->OnNewHeartRateValue(heartRate);
}
}
void HeartRateController::Start() {
if(task != nullptr) {
state = States::NotEnoughData;
task->PushMessage(Pinetime::Applications::HeartRateTask::Messages::StartMeasurement);
}
}
void HeartRateController::Stop() {
if(task != nullptr) {
state = States::Stopped;
task->PushMessage(Pinetime::Applications::HeartRateTask::Messages::StopMeasurement);
}
}
void HeartRateController::SetHeartRateTask(Pinetime::Applications::HeartRateTask *task) {
this->task = task;
}
void HeartRateController::SetService(Pinetime::Controllers::HeartRateService *service) {
this->service = service;
}

View file

@ -0,0 +1,38 @@
#pragma once
#include <cstdint>
#include <components/ble/HeartRateService.h>
namespace Pinetime {
namespace Applications {
class HeartRateTask;
}
namespace System {
class SystemTask;
}
namespace Controllers {
class HeartRateController {
public:
enum class States { Stopped, NotEnoughData, NoTouch, Running};
explicit HeartRateController(System::SystemTask& systemTask);
void Start();
void Stop();
void Update(States newState, uint8_t heartRate);
void SetHeartRateTask(Applications::HeartRateTask* task);
States State() const { return state; }
uint8_t HeartRate() const { return heartRate; }
void SetService(Pinetime::Controllers::HeartRateService *service);
private:
System::SystemTask& systemTask;
Applications::HeartRateTask* task = nullptr;
States state = States::Stopped;
uint8_t heartRate = 0;
Pinetime::Controllers::HeartRateService* service = nullptr;
};
}
}

View file

@ -0,0 +1,106 @@
/*
SPDX-License-Identifier: LGPL-3.0-or-later
Original work Copyright (C) 2020 Daniel Thompson
C++ port Copyright (C) 2021 Jean-François Milants
*/
#include <vector>
#include <nrf_log.h>
#include "Ppg.h"
using namespace Pinetime::Controllers;
/** Original implementation from wasp-os : https://github.com/daniel-thompson/wasp-os/blob/master/wasp/ppg.py */
namespace {
int Compare(int* d1, int* d2, size_t count) {
int e = 0;
for(int i = 0; i < count; i++) {
auto d = d1[i] - d2[i];
e += d * d;
}
return e;
}
int CompareShift(int* d, int shift, size_t count) {
return Compare(d +shift, d, count - shift);
}
int Trough(int* d, size_t size, float mn, float mx) {
auto z2 = CompareShift(d, mn-2, size);
auto z1 = CompareShift(d, mn-1, size);
for(int i = mn; i < mx + 1; i++) {
auto z = CompareShift(d, i, size);
if(z2 > z1 && z1 < z)
return i;
z2 = z1;
z1 = z;
}
return -1;
}
}
Ppg::Ppg(float spl) : offset{spl},
hpf{0.87033078, -1.74066156, 0.87033078,-1.72377617, 0.75754694},
agc{20, 0.971, 2},
lpf{0.11595249, 0.23190498, 0.11595249,-0.72168143, 0.18549138} {
}
int Ppg::Preprocess(float spl) {
spl -= offset;
spl = hpf.Step(spl);
spl = agc.Step(spl);
spl = lpf.Step(spl);
auto spl_int = static_cast<int>(spl);
if(dataIndex < 200)
data[dataIndex++] = spl_int;
return spl_int;
}
float Ppg::HeartRate() {
if(dataIndex < 200)
return 0;
NRF_LOG_INFO("PREPROCESS, offset = %d", offset);
auto hr = ProcessHeartRate();
dataIndex = 0;
return hr;
}
int cccount = 0;
float Ppg::ProcessHeartRate() {
if(cccount > 2)
asm("nop");
cccount ++;
auto t0 = Trough(data.data(), dataIndex, 7, 48);
if(t0 < 0)
return 0;
float t1 = t0 * 2;
t1 = Trough(data.data(), dataIndex, t1-5, t1+5);
if(t1 < 0)
return 0;
float t2 = static_cast<int>(t1 * 3) / 2;
t2 = Trough(data.data(), dataIndex, t2 - 5, t2 + 5);
if(t2 < 0)
return 0;
float t3 = static_cast<int>(t2 * 4) / 3;
t3 = Trough(data.data(), dataIndex, t3 - 4, t3 + 4);
if(t3 < 0)
return static_cast<int>(60 * 24 * 3) / static_cast<int>(t2);
return static_cast<int>(60 * 24 * 4) / static_cast<int>(t3);
}
void Ppg::SetOffset(uint16_t offset) {
this->offset = offset;
dataIndex = 0;
}
void Ppg::Reset() {
dataIndex = 0;
}

View file

@ -0,0 +1,31 @@
#pragma once
#include <array>
#include "Biquad.h"
#include "Ptagc.h"
namespace Pinetime {
namespace Controllers {
class Ppg {
public:
explicit Ppg(float spl);
int Preprocess(float spl);
float HeartRate();
void SetOffset(uint16_t i);
void Reset();
private:
std::array<int, 200> data;
size_t dataIndex = 0;
float offset;
Biquad hpf;
Ptagc agc;
Biquad lpf;
float ProcessHeartRate();
};
}
}

View file

@ -0,0 +1,28 @@
/*
SPDX-License-Identifier: LGPL-3.0-or-later
Original work Copyright (C) 2020 Daniel Thompson
C++ port Copyright (C) 2021 Jean-François Milants
*/
#include <cmath>
#include "Ptagc.h"
using namespace Pinetime::Controllers;
/** Original implementation from wasp-os : https://github.com/daniel-thompson/wasp-os/blob/master/wasp/ppg.py */
Ptagc::Ptagc(float start, float decay, float threshold) : peak{start}, decay{decay}, boost{1.0f/decay}, threshold{threshold} {
}
float Ptagc::Step(float spl) {
if(std::abs(spl) > peak)
peak *= boost;
else
peak *= decay;
if((spl > (peak * threshold)) || (spl < (peak * -threshold)))
return 0.0f;
spl = 100.0f * spl / (2.0f * peak);
return spl;
}

View file

@ -0,0 +1,18 @@
#pragma once
namespace Pinetime {
namespace Controllers {
class Ptagc {
public:
Ptagc(float start, float decay, float threshold);
float Step(float spl);
private:
float peak;
float decay;
float boost;
float threshold;
};
}
}

View file

@ -2,6 +2,6 @@
namespace Pinetime { namespace Pinetime {
namespace Applications { namespace Applications {
enum class Apps {None, Launcher, Clock, SysInfo, Meter, Gauge, Brightness, Music, FirmwareValidation, Paint, Paddle, Notifications, Twos}; enum class Apps {None, Launcher, Clock, SysInfo, Meter, Gauge, Brightness, Music, FirmwareValidation, Paint, Paddle, Notifications, Twos, HeartRate, Navigation};
} }
} }

View file

@ -1,5 +1,6 @@
#include "DisplayApp.h" #include "DisplayApp.h"
#include <libraries/log/nrf_log.h> #include <libraries/log/nrf_log.h>
#include <displayapp/screens/HeartRate.h>
#include "components/battery/BatteryController.h" #include "components/battery/BatteryController.h"
#include "components/ble/BleController.h" #include "components/ble/BleController.h"
#include "components/datetime/DateTimeController.h" #include "components/datetime/DateTimeController.h"
@ -14,6 +15,7 @@
#include "displayapp/screens/Paddle.h" #include "displayapp/screens/Paddle.h"
#include "displayapp/screens/Meter.h" #include "displayapp/screens/Meter.h"
#include "displayapp/screens/Music.h" #include "displayapp/screens/Music.h"
#include "displayapp/screens/Navigation.h"
#include "displayapp/screens/Notifications.h" #include "displayapp/screens/Notifications.h"
#include "displayapp/screens/SystemInfo.h" #include "displayapp/screens/SystemInfo.h"
#include "displayapp/screens/Tile.h" #include "displayapp/screens/Tile.h"
@ -29,7 +31,8 @@ DisplayApp::DisplayApp(Drivers::St7789 &lcd, Components::LittleVgl &lvgl, Driver
Controllers::Battery &batteryController, Controllers::Ble &bleController, Controllers::Battery &batteryController, Controllers::Ble &bleController,
Controllers::DateTime &dateTimeController, Drivers::WatchdogView &watchdog, Controllers::DateTime &dateTimeController, Drivers::WatchdogView &watchdog,
System::SystemTask &systemTask, System::SystemTask &systemTask,
Pinetime::Controllers::NotificationManager& notificationManager) : Pinetime::Controllers::NotificationManager& notificationManager,
Pinetime::Controllers::HeartRateController& heartRateController) :
lcd{lcd}, lcd{lcd},
lvgl{lvgl}, lvgl{lvgl},
batteryController{batteryController}, batteryController{batteryController},
@ -37,9 +40,10 @@ DisplayApp::DisplayApp(Drivers::St7789 &lcd, Components::LittleVgl &lvgl, Driver
dateTimeController{dateTimeController}, dateTimeController{dateTimeController},
watchdog{watchdog}, watchdog{watchdog},
touchPanel{touchPanel}, touchPanel{touchPanel},
currentScreen{new Screens::Clock(this, dateTimeController, batteryController, bleController, notificationManager) }, currentScreen{new Screens::Clock(this, dateTimeController, batteryController, bleController, notificationManager, heartRateController) },
systemTask{systemTask}, systemTask{systemTask},
notificationManager{notificationManager} { notificationManager{notificationManager},
heartRateController{heartRateController} {
msgQueue = xQueueCreate(queueSize, itemSize); msgQueue = xQueueCreate(queueSize, itemSize);
onClockApp = true; onClockApp = true;
modal.reset(new Screens::Modal(this)); modal.reset(new Screens::Modal(this));
@ -197,7 +201,7 @@ void DisplayApp::RunningState() {
case Apps::None: case Apps::None:
case Apps::Launcher: currentScreen.reset(new Screens::ApplicationList(this)); break; case Apps::Launcher: currentScreen.reset(new Screens::ApplicationList(this)); break;
case Apps::Clock: case Apps::Clock:
currentScreen.reset(new Screens::Clock(this, dateTimeController, batteryController, bleController, notificationManager)); currentScreen.reset(new Screens::Clock(this, dateTimeController, batteryController, bleController, notificationManager, heartRateController));
onClockApp = true; onClockApp = true;
break; break;
// case Apps::Test: currentScreen.reset(new Screens::Message(this)); break; // case Apps::Test: currentScreen.reset(new Screens::Message(this)); break;
@ -209,8 +213,10 @@ void DisplayApp::RunningState() {
case Apps::Paddle: currentScreen.reset(new Screens::Paddle(this, lvgl)); break; case Apps::Paddle: currentScreen.reset(new Screens::Paddle(this, lvgl)); break;
case Apps::Brightness : currentScreen.reset(new Screens::Brightness(this, brightnessController)); break; case Apps::Brightness : currentScreen.reset(new Screens::Brightness(this, brightnessController)); break;
case Apps::Music : currentScreen.reset(new Screens::Music(this, systemTask.nimble().music())); break; case Apps::Music : currentScreen.reset(new Screens::Music(this, systemTask.nimble().music())); break;
case Apps::Navigation : currentScreen.reset(new Screens::Navigation(this, systemTask.nimble().navigation())); break;
case Apps::FirmwareValidation: currentScreen.reset(new Screens::FirmwareValidation(this, validator)); break; case Apps::FirmwareValidation: currentScreen.reset(new Screens::FirmwareValidation(this, validator)); break;
case Apps::Notifications: currentScreen.reset(new Screens::Notifications(this, notificationManager, Screens::Notifications::Modes::Normal)); break; case Apps::Notifications: currentScreen.reset(new Screens::Notifications(this, notificationManager, Screens::Notifications::Modes::Normal)); break;
case Apps::HeartRate: currentScreen.reset(new Screens::HeartRate(this, heartRateController)); break;
} }
nextApp = Apps::None; nextApp = Apps::None;
} }

View file

@ -23,6 +23,7 @@ namespace Pinetime {
class Ble; class Ble;
class DateTime; class DateTime;
class NotificationManager; class NotificationManager;
class HeartRateController;
} }
namespace System { namespace System {
@ -42,7 +43,8 @@ namespace Pinetime {
Controllers::Battery &batteryController, Controllers::Ble &bleController, Controllers::Battery &batteryController, Controllers::Ble &bleController,
Controllers::DateTime &dateTimeController, Drivers::WatchdogView &watchdog, Controllers::DateTime &dateTimeController, Drivers::WatchdogView &watchdog,
System::SystemTask &systemTask, System::SystemTask &systemTask,
Pinetime::Controllers::NotificationManager& notificationManager); Pinetime::Controllers::NotificationManager& notificationManager,
Pinetime::Controllers::HeartRateController& heartRateController);
void Start(); void Start();
void PushMessage(Messages msg); void PushMessage(Messages msg);
@ -87,6 +89,7 @@ namespace Pinetime {
Pinetime::Controllers::NotificationManager& notificationManager; Pinetime::Controllers::NotificationManager& notificationManager;
Pinetime::Controllers::FirmwareValidator validator; Pinetime::Controllers::FirmwareValidator validator;
TouchModes touchMode = TouchModes::Gestures; TouchModes touchMode = TouchModes::Gestures;
Pinetime::Controllers::HeartRateController& heartRateController;
}; };
} }
} }

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,93 @@
#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_
#define LV_ATTRIBUTE_IMG_
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_ uint8_t _map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0x80,
0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf8,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x00, 0x00, 0x3f, 0xff, 0xff, 0x7f, 0xff, 0xfe,
0x00, 0x00, 0x3f, 0xff, 0xf0, 0x0f, 0xff, 0xfe,
0x00, 0x00, 0x7f, 0xff, 0xe0, 0x03, 0xff, 0xfe,
0x00, 0x00, 0x7f, 0xff, 0x80, 0x01, 0xff, 0xfe,
0x00, 0x00, 0x7f, 0xff, 0x00, 0x00, 0xff, 0xfe,
0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x7f, 0xfe,
0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x3f, 0xfe,
0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x1f, 0xfe,
0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x1f, 0xfe,
0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x0f, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x7c, 0x00, 0xff, 0xf0, 0x03, 0xf0, 0x07, 0xfe,
0x7f, 0x00, 0xff, 0xf0, 0x1f, 0xf0, 0x07, 0xfe,
0x7f, 0xc0, 0xff, 0xf0, 0x7f, 0xf0, 0x07, 0xfe,
0x7f, 0xf8, 0xff, 0xf1, 0xff, 0xf0, 0x07, 0xfe,
0x7f, 0xfe, 0xff, 0xf7, 0xff, 0xf0, 0x07, 0xfe,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x07, 0xfe,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x07, 0xfe,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x07, 0xfe,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x07, 0xfe,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0xfe,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x07, 0xfe,
0x1f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x07, 0xfe,
0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x07, 0xfe,
0x07, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xfe,
0x03, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x07, 0xfe,
0x03, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x07, 0xfe,
0x01, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x07, 0xfe,
0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x07, 0xfe,
0x00, 0x7f, 0xff, 0xff, 0xe0, 0x00, 0x07, 0xfe,
0x00, 0x7f, 0xff, 0xff, 0xc0, 0x00, 0x07, 0xfe,
0x00, 0x3f, 0xff, 0xff, 0x80, 0x00, 0x07, 0xfe,
0x00, 0x1f, 0xff, 0xff, 0x80, 0x00, 0x07, 0xfe,
0x00, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x07, 0xff, 0xfe, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x07, 0xff, 0xfc, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x03, 0xff, 0xfc, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xe0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x07, 0xfe,
};
const lv_img_dsc_t = {
.header.always_zero = 0,
.header.w = 64,
.header.h = 64,
.data_size = 520,
.header.cf = LV_IMG_CF_INDEXED_1BIT,
.data = _map,
};

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M3,12a2,2,0,1,1,2-2A2,2,0,0,1,3,12Zm10.00293-.96332a4.05782,4.05782,0,0,1,3.98877,4.07324H17v1.37775A0.51232,0.51232,0,0,0,17.51233,17h0.97534A0.51232,0.51232,0,0,0,19,16.48767V15H18.98615a6.05607,6.05607,0,0,0-5.9834-5.96332l-0.011-.00183,0.00012,0.02008H12V9.04584a0.35757,0.35757,0,0,1-.37738-0.54242l1.34375-2.95184a0.38659,0.38659,0,0,0-.62354-0.40942L6,10.04584l6.34283,4.90369a0.3866,0.3866,0,0,0,.62354-0.40942l-1.34375-2.95184A0.35757,0.35757,0,0,1,12,11.04584v0.00909h1"/>
</svg>

After

Width:  |  Height:  |  Size: 672 B

View file

@ -0,0 +1,96 @@
#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_ARRIVE_LEFT
#define LV_ATTRIBUTE_IMG_ARRIVE_LEFT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_ARRIVE_LEFT uint8_t arrive_left_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00,
0x3f, 0xf8, 0x00, 0xff, 0xff, 0xc0, 0x00, 0x00,
0xff, 0xfc, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00,
0xff, 0xfe, 0x07, 0xff, 0xff, 0x80, 0x00, 0x00,
0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x80, 0x00,
0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xf0, 0x00,
0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8,
0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xfc,
0xff, 0xfe, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xfe,
0xff, 0xfe, 0x07, 0xff, 0xff, 0x8f, 0xff, 0xfe,
0xff, 0xfc, 0x03, 0xff, 0xff, 0xc1, 0xff, 0xff,
0x3f, 0xf8, 0x00, 0xff, 0xff, 0xc0, 0x7f, 0xff,
0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x3f, 0xff,
0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0, 0x1f, 0xff,
0x00, 0x00, 0x00, 0x0f, 0xff, 0xe0, 0x0f, 0xff,
0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x07, 0xff,
0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x07, 0xff,
0x00, 0x00, 0x00, 0x01, 0xff, 0xf8, 0x07, 0xff,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x03, 0xff,
0x00, 0x00, 0x00, 0x00, 0x3f, 0xf8, 0x03, 0xff,
0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x03, 0xff,
0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x01, 0xff,
0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x01, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t arrive_left = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
arrive_left_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M15,10a2,2,0,1,1,2,2A2,2,0,0,1,15,10ZM7,11.05493H8V11.04584a0.35757,0.35757,0,0,1,.37738.54242L7.03363,14.5401a0.3866,0.3866,0,0,0,.62354.40942L14,10.04584,7.65717,5.14215a0.38659,0.38659,0,0,0-.62354.40942L8.37738,8.50342A0.35757,0.35757,0,0,1,8,9.04584V9.05493H7.00818L7.0083,9.03485l-0.011.00183A6.05607,6.05607,0,0,0,1.01385,15H1v1.48767A0.51232,0.51232,0,0,0,1.51233,17H2.48767A0.51232,0.51232,0,0,0,3,16.48767V15.10992H3.0083a4.05782,4.05782,0,0,1,3.98877-4.07324"/>
</svg>

After

Width:  |  Height:  |  Size: 662 B

View file

@ -0,0 +1,96 @@
#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_ARRIVE_RIGHT
#define LV_ATTRIBUTE_IMG_ARRIVE_RIGHT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_ARRIVE_RIGHT uint8_t arrive_right_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x1f, 0xfc,
0x00, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x3f, 0xff,
0x00, 0x00, 0x01, 0xff, 0xff, 0xe0, 0x7f, 0xff,
0x00, 0x01, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff,
0x00, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x7f, 0xff,
0x7f, 0xff, 0xf1, 0xff, 0xff, 0xe0, 0x7f, 0xff,
0xff, 0xff, 0x83, 0xff, 0xff, 0xc0, 0x3f, 0xff,
0xff, 0xfe, 0x03, 0xff, 0xff, 0x00, 0x1f, 0xfc,
0xff, 0xfc, 0x03, 0xff, 0xfe, 0x00, 0x00, 0x00,
0xff, 0xf8, 0x07, 0xff, 0xfc, 0x00, 0x00, 0x00,
0xff, 0xf0, 0x07, 0xff, 0xf0, 0x00, 0x00, 0x00,
0xff, 0xe0, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00,
0xff, 0xe0, 0x0f, 0xff, 0xc0, 0x00, 0x00, 0x00,
0xff, 0xc0, 0x1f, 0xff, 0x80, 0x00, 0x00, 0x00,
0xff, 0xc0, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00,
0xff, 0xc0, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00,
0xff, 0xc0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00,
0xff, 0x80, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00,
0xff, 0x80, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00,
0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t arrive_right = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
arrive_right_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M10,5a2,2,0,1,1,2-2A2,2,0,0,1,10,5Zm4.91284,8.35114L10.00916,7.0083,5.10547,13.35114a0.38659,0.38659,0,0,0,.40942.62354l2.95184-1.34375A0.35542,0.35542,0,0,1,9.00769,13H9v5.50006A0.49992,0.49992,0,0,0,9.49994,19h1.00012A0.49992,0.49992,0,0,0,11,18.50006V13.0083h0.00916a0.35757,0.35757,0,0,1,.54242-0.37738l2.95184,1.34375A0.3866,0.3866,0,0,0,14.91284,13.35114Z"/>
</svg>

After

Width:  |  Height:  |  Size: 554 B

View file

@ -0,0 +1,96 @@
#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_ARRIVE_STRAIGHT
#define LV_ATTRIBUTE_IMG_ARRIVE_STRAIGHT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_ARRIVE_STRAIGHT uint8_t arrive_straight_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xfe, 0x3f, 0xfc, 0x7f, 0xc0, 0x00,
0x00, 0x03, 0xfc, 0x3f, 0xfc, 0x3f, 0xc0, 0x00,
0x00, 0x03, 0xe0, 0x3f, 0xfc, 0x07, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t arrive_straight = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
arrive_straight_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M10,5a2,2,0,1,1,2-2A2,2,0,0,1,10,5Zm4.91284,8.35114L10.00916,7.0083,5.10547,13.35114a0.38659,0.38659,0,0,0,.40942.62354l2.95184-1.34375A0.35542,0.35542,0,0,1,9.00769,13H9v5.50006A0.49992,0.49992,0,0,0,9.49994,19h1.00012A0.49992,0.49992,0,0,0,11,18.50006V13.0083h0.00916a0.35757,0.35757,0,0,1,.54242-0.37738l2.95184,1.34375A0.3866,0.3866,0,0,0,14.91284,13.35114Z"/>
</svg>

After

Width:  |  Height:  |  Size: 554 B

View file

@ -0,0 +1,96 @@
#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_ARRIVE
#define LV_ATTRIBUTE_IMG_ARRIVE
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_ARRIVE uint8_t arrive_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xfe, 0x3f, 0xfc, 0x7f, 0xc0, 0x00,
0x00, 0x03, 0xfc, 0x3f, 0xfc, 0x3f, 0xc0, 0x00,
0x00, 0x03, 0xe0, 0x3f, 0xfc, 0x07, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t arrive = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
arrive_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M17.35551,4.05855L11.76558,9.64848a0.49713,0.49713,0,0,0,0,.703l5.58993,5.58993a0.49713,0.49713,0,0,1,0,.703l-0.711.711a0.49713,0.49713,0,0,1-.703,0l-5.58993-5.58993a0.49713,0.49713,0,0,0-.703,0L4.05855,17.35551a0.49713,0.49713,0,0,1-.703,0l-0.711-.711a0.49713,0.49713,0,0,1,0-.703l5.58993-5.58993a0.49713,0.49713,0,0,0,0-.703L2.64449,4.05855a0.49713,0.49713,0,0,1,0-.703l0.711-.711a0.49713,0.49713,0,0,1,.703,0L9.64848,8.23442a0.49713,0.49713,0,0,0,.703,0l5.58993-5.58993a0.49713,0.49713,0,0,1,.703,0l0.711,0.711A0.49713,0.49713,0,0,1,17.35551,4.05855Z"/>
</svg>

After

Width:  |  Height:  |  Size: 746 B

View file

@ -0,0 +1,96 @@
#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_CLOSE
#define LV_ATTRIBUTE_IMG_CLOSE
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CLOSE uint8_t close_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff,
0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff,
0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff,
0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff,
0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0x80, 0x00, 0x00, 0x01, 0xff, 0xff,
0xff, 0xff, 0xe0, 0x00, 0x00, 0x07, 0xff, 0xff,
0xff, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xff, 0xff,
0x7f, 0xff, 0xf8, 0x00, 0x00, 0x1f, 0xff, 0xfe,
0x3f, 0xff, 0xfc, 0x00, 0x00, 0x3f, 0xff, 0xfc,
0x1f, 0xff, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xf8,
0x0f, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xf0,
0x07, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xe0,
0x03, 0xff, 0xff, 0x80, 0x01, 0xff, 0xff, 0xc0,
0x01, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0x80,
0x00, 0xff, 0xff, 0xe0, 0x07, 0xff, 0xff, 0x00,
0x00, 0xff, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0x00,
0x00, 0x7f, 0xff, 0xf8, 0x1f, 0xff, 0xfe, 0x00,
0x00, 0x3f, 0xff, 0xfc, 0x3f, 0xff, 0xfc, 0x00,
0x00, 0x1f, 0xff, 0xfe, 0x7f, 0xff, 0xf8, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x1f, 0xff, 0xfe, 0x7f, 0xff, 0xf8, 0x00,
0x00, 0x3f, 0xff, 0xfc, 0x3f, 0xff, 0xfc, 0x00,
0x00, 0x7f, 0xff, 0xf8, 0x1f, 0xff, 0xfe, 0x00,
0x00, 0xff, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0x00,
0x00, 0xff, 0xff, 0xe0, 0x07, 0xff, 0xff, 0x00,
0x01, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0x80,
0x03, 0xff, 0xff, 0x80, 0x01, 0xff, 0xff, 0xc0,
0x07, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xe0,
0x0f, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xf0,
0x1f, 0xff, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xf8,
0x3f, 0xff, 0xfc, 0x00, 0x00, 0x3f, 0xff, 0xfc,
0x7f, 0xff, 0xf8, 0x00, 0x00, 0x1f, 0xff, 0xfe,
0xff, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xff, 0xff,
0xff, 0xff, 0xe0, 0x00, 0x00, 0x07, 0xff, 0xff,
0xff, 0xff, 0x80, 0x00, 0x00, 0x01, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff,
0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff,
0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff,
0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff,
0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff,
};
const lv_img_dsc_t close = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
close_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 B

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M10,5.97986l0.011,0.00183A6.06019,6.06019,0,0,1,16,12.05493V16H15.99689l0.002,1.50317A0.49614,0.49614,0,0,1,15.50269,18H14.49622A0.49622,0.49622,0,0,1,14,17.50378V12.05493a4.05782,4.05782,0,0,0-3.98877-4.07324H8.01245a0.3576,0.3576,0,0,0-.37738.54248L8.97882,11.476a0.38659,0.38659,0,0,1-.62354.40942L2.0083,7l6.347-4.922a0.38659,0.38659,0,0,1,.62354.40942L7.63507,5.43927a0.35757,0.35757,0,0,0,.37738.54242H10"/>
</svg>

After

Width:  |  Height:  |  Size: 603 B

View file

@ -0,0 +1,96 @@
#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_CONTINUE_LEFT
#define LV_ATTRIBUTE_IMG_CONTINUE_LEFT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CONTINUE_LEFT uint8_t continue_left_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xff, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x07, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00,
0x00, 0x7f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00,
0x01, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00,
0x03, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x00, 0xff, 0xff, 0xfc, 0x07, 0xff, 0xff, 0xe0,
0x00, 0x7f, 0xff, 0xfc, 0x00, 0xff, 0xff, 0xf0,
0x00, 0x3f, 0xff, 0xfc, 0x00, 0x3f, 0xff, 0xf0,
0x00, 0x1f, 0xff, 0xfe, 0x00, 0x1f, 0xff, 0xf0,
0x00, 0x07, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xf0,
0x00, 0x03, 0xff, 0xff, 0x00, 0x03, 0xff, 0xf0,
0x00, 0x00, 0xff, 0xff, 0x00, 0x01, 0xff, 0xf0,
0x00, 0x00, 0x7f, 0xff, 0x80, 0x01, 0xff, 0xf0,
0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x7f, 0xf0,
0x00, 0x00, 0x07, 0xff, 0xc0, 0x00, 0x7f, 0xf0,
0x00, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x7f, 0xf0,
0x00, 0x00, 0x00, 0xff, 0xc0, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
};
const lv_img_dsc_t continue_left = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
continue_left_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M9.98877,7.98169A4.05782,4.05782,0,0,0,6,12.05493v5.44885A0.49622,0.49622,0,0,1,5.50378,18H4.49731a0.49614,0.49614,0,0,1-.49615-0.49683L4.00311,16H4V12.05493A6.06019,6.06019,0,0,1,9.989,5.98169L10,5.97986V5.98169h1.98755a0.35757,0.35757,0,0,0,.37738-0.54242L11.02118,2.48743A0.38659,0.38659,0,0,1,11.64471,2.078L17.9917,7l-6.347,4.88544a0.38659,0.38659,0,0,1-.62354-0.40942l1.34375-2.95184a0.3576,0.3576,0,0,0-.37738-0.54248H9.98877Z"/>
</svg>

After

Width:  |  Height:  |  Size: 626 B

View file

@ -0,0 +1,96 @@
#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_CONTINUE_RIGHT
#define LV_ATTRIBUTE_IMG_CONTINUE_RIGHT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CONTINUE_RIGHT uint8_t continue_right_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xe0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0x00,
0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0x80,
0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x07, 0xff, 0xff, 0xe0, 0x3f, 0xff, 0xff, 0x00,
0x0f, 0xff, 0xff, 0x00, 0x3f, 0xff, 0xfe, 0x00,
0x0f, 0xff, 0xfc, 0x00, 0x3f, 0xff, 0xfc, 0x00,
0x0f, 0xff, 0xf8, 0x00, 0x7f, 0xff, 0xf8, 0x00,
0x0f, 0xff, 0xe0, 0x00, 0x7f, 0xff, 0xe0, 0x00,
0x0f, 0xff, 0xc0, 0x00, 0xff, 0xff, 0xc0, 0x00,
0x0f, 0xff, 0x80, 0x00, 0xff, 0xff, 0x00, 0x00,
0x0f, 0xff, 0x80, 0x01, 0xff, 0xfe, 0x00, 0x00,
0x0f, 0xff, 0x00, 0x01, 0xff, 0xfc, 0x00, 0x00,
0x0f, 0xfe, 0x00, 0x03, 0xff, 0xf8, 0x00, 0x00,
0x0f, 0xfe, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00,
0x0f, 0xfe, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x03, 0xfc, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t continue_right = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
continue_right_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M14.9859,14.043v3.46082A0.49621,0.49621,0,0,1,14.48974,18H13.48321a0.49614,0.49614,0,0,1-.49615-0.49683l0.0047-3.60767a5.21819,5.21819,0,0,0-1.665-4.144L8.87854,7.68585a0.35758,0.35758,0,0,0-.6405.16266l-0.91821,3.1106A0.38663,0.38663,0,0,1,6.58044,10.86L5,3l8.00476,0.44965a0.38658,0.38658,0,0,1,.20294.71777L10.25878,5.51758a0.3576,0.3576,0,0,0-.07019.6571l2.45746,2.07385A7.25158,7.25158,0,0,1,14.9859,14.043Z"/>
</svg>

After

Width:  |  Height:  |  Size: 605 B

View file

@ -0,0 +1,96 @@
#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_CONTINUE_SLIGHT_LEFT
#define LV_ATTRIBUTE_IMG_CONTINUE_SLIGHT_LEFT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CONTINUE_SLIGHT_LEFT uint8_t continue_slight_left_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x07, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x07, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x07, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x07, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x03, 0xff, 0xc7, 0xff, 0xff, 0x80, 0x00,
0x00, 0x03, 0xff, 0xc3, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xc1, 0xff, 0xff, 0xe0, 0x00,
0x00, 0x03, 0xff, 0x80, 0xff, 0xff, 0xe0, 0x00,
0x00, 0x01, 0xff, 0x80, 0x7f, 0xff, 0xf0, 0x00,
0x00, 0x01, 0xff, 0x80, 0x1f, 0xff, 0xf8, 0x00,
0x00, 0x01, 0xff, 0x80, 0x0f, 0xff, 0xf8, 0x00,
0x00, 0x01, 0xff, 0x00, 0x07, 0xff, 0xf8, 0x00,
0x00, 0x01, 0xff, 0x00, 0x03, 0xff, 0xfc, 0x00,
0x00, 0x00, 0xff, 0x00, 0x01, 0xff, 0xfc, 0x00,
0x00, 0x00, 0xfe, 0x00, 0x01, 0xff, 0xfc, 0x00,
0x00, 0x00, 0xfe, 0x00, 0x00, 0xff, 0xfc, 0x00,
0x00, 0x00, 0xfe, 0x00, 0x00, 0x7f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00,
};
const lv_img_dsc_t continue_slight_left = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
continue_slight_left_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M7.35395,8.24854L9.81141,6.17468a0.3576,0.3576,0,0,0-.07019-0.6571L6.7923,4.16742a0.38658,0.38658,0,0,1,.20294-0.71777L15,3l-1.58044,7.86a0.38663,0.38663,0,0,1-.73938.09912L11.762,7.84851a0.35758,0.35758,0,0,0-.6405-0.16266L8.67328,9.75146a5.21819,5.21819,0,0,0-1.665,4.144l0.0047,3.60767A0.49614,0.49614,0,0,1,6.51679,18H5.51026a0.49621,0.49621,0,0,1-.49615-0.49622V14.043A7.25157,7.25157,0,0,1,7.35395,8.24854Z"/>
</svg>

After

Width:  |  Height:  |  Size: 605 B

View file

@ -0,0 +1,96 @@
#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_CONTINUE_SLIGHT_RIGHT
#define LV_ATTRIBUTE_IMG_CONTINUE_SLIGHT_RIGHT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CONTINUE_SLIGHT_RIGHT uint8_t continue_slight_right_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,
0x00, 0x00, 0xff, 0xff, 0xf1, 0xff, 0xe0, 0x00,
0x00, 0x01, 0xff, 0xff, 0xe1, 0xff, 0xe0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xc1, 0xff, 0xe0, 0x00,
0x00, 0x03, 0xff, 0xff, 0x80, 0xff, 0xe0, 0x00,
0x00, 0x07, 0xff, 0xff, 0x00, 0xff, 0xc0, 0x00,
0x00, 0x0f, 0xff, 0xfc, 0x00, 0xff, 0xc0, 0x00,
0x00, 0x0f, 0xff, 0xf8, 0x00, 0xff, 0xc0, 0x00,
0x00, 0x0f, 0xff, 0xf0, 0x00, 0x7f, 0xc0, 0x00,
0x00, 0x1f, 0xff, 0xe0, 0x00, 0x7f, 0xc0, 0x00,
0x00, 0x1f, 0xff, 0xc0, 0x00, 0x7f, 0x80, 0x00,
0x00, 0x1f, 0xff, 0xc0, 0x00, 0x3f, 0x80, 0x00,
0x00, 0x1f, 0xff, 0x80, 0x00, 0x3f, 0x80, 0x00,
0x00, 0x1f, 0xff, 0x00, 0x00, 0x3f, 0x80, 0x00,
0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t continue_slight_right = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
continue_slight_right_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M14.50342,8.96637L11.55157,7.62262A0.35755,0.35755,0,0,0,11.00916,8v9.49652A0.50346,0.50346,0,0,1,10.50568,18h-0.993a0.50346,0.50346,0,0,1-.50348-0.50348V8a0.35756,0.35756,0,0,0-.54242-0.37738L5.51489,8.96637a0.38659,0.38659,0,0,1-.40942-0.62354L10.00916,2l4.90369,6.34283A0.3866,0.3866,0,0,1,14.50342,8.96637Z"/>
</svg>

After

Width:  |  Height:  |  Size: 503 B

View file

@ -0,0 +1,96 @@
#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_CONTINUE_STRAIGHT
#define LV_ATTRIBUTE_IMG_CONTINUE_STRAIGHT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CONTINUE_STRAIGHT uint8_t continue_straight_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x0f, 0xfe, 0x3f, 0xfc, 0x7f, 0xf0, 0x00,
0x00, 0x0f, 0xf8, 0x3f, 0xfc, 0x1f, 0xf0, 0x00,
0x00, 0x0f, 0xe0, 0x3f, 0xfc, 0x07, 0xf0, 0x00,
0x00, 0x0f, 0x80, 0x3f, 0xfc, 0x01, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t continue_straight = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
continue_straight_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 961 B

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M17.00909,8v9.49652A0.50346,0.50346,0,0,1,16.50562,18h-0.993a0.50346,0.50346,0,0,1-.50348-0.50348V8a3.5,3.5,0,1,0-7,0v4H8a0.35757,0.35757,0,0,0,.54242.37738l2.95184-1.34375a0.3866,0.3866,0,0,1,.40942.62354L7,18,2.09625,11.65717a0.3866,0.3866,0,0,1,.40942-0.62354l2.95184,1.34375A0.3576,0.3576,0,0,0,6,12H6.00909V8A5.5,5.5,0,1,1,17.00909,8Z"/>
</svg>

After

Width:  |  Height:  |  Size: 532 B

View file

@ -0,0 +1,96 @@
#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_CONTINUE_UTURN
#define LV_ATTRIBUTE_IMG_CONTINUE_UTURN
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CONTINUE_UTURN uint8_t continue_uturn_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0x80,
0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf8,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x00, 0x00, 0x3f, 0xff, 0xff, 0x7f, 0xff, 0xfe,
0x00, 0x00, 0x3f, 0xff, 0xf8, 0x0f, 0xff, 0xfe,
0x00, 0x00, 0x7f, 0xff, 0xe0, 0x03, 0xff, 0xfe,
0x00, 0x00, 0x7f, 0xff, 0x80, 0x01, 0xff, 0xfe,
0x00, 0x00, 0x7f, 0xff, 0x00, 0x00, 0xff, 0xfe,
0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xfe,
0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x3f, 0xfe,
0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x1f, 0xfe,
0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x1f, 0xfe,
0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x0f, 0xfe,
0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x0f, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x7c, 0x00, 0xff, 0xf0, 0x03, 0xf0, 0x07, 0xfe,
0x7f, 0x00, 0xff, 0xf0, 0x1f, 0xf0, 0x07, 0xfe,
0x7f, 0xc0, 0xff, 0xf0, 0x7f, 0xf0, 0x07, 0xfe,
0x7f, 0xf8, 0xff, 0xf1, 0xff, 0xf0, 0x07, 0xfe,
0x7f, 0xfe, 0xff, 0xf7, 0xff, 0xf0, 0x07, 0xfe,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x07, 0xfe,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x07, 0xfe,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x07, 0xfe,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x07, 0xfe,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0xfe,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x07, 0xfe,
0x1f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x07, 0xfe,
0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x07, 0xfe,
0x07, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xfe,
0x03, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x07, 0xfe,
0x03, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x07, 0xfe,
0x01, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x07, 0xfe,
0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x07, 0xfe,
0x00, 0x7f, 0xff, 0xff, 0xe0, 0x00, 0x07, 0xfe,
0x00, 0x7f, 0xff, 0xff, 0xc0, 0x00, 0x07, 0xfe,
0x00, 0x3f, 0xff, 0xff, 0x80, 0x00, 0x07, 0xfe,
0x00, 0x1f, 0xff, 0xff, 0x80, 0x00, 0x07, 0xfe,
0x00, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x07, 0xff, 0xfe, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x07, 0xff, 0xfc, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x03, 0xff, 0xfc, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0xff, 0xe0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x07, 0xfe,
0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x07, 0xfe,
};
const lv_img_dsc_t continue_uturn = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
continue_uturn_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M14.50342,8.96637L11.55157,7.62262A0.35755,0.35755,0,0,0,11.00916,8v9.49652A0.50346,0.50346,0,0,1,10.50568,18h-0.993a0.50346,0.50346,0,0,1-.50348-0.50348V8a0.35756,0.35756,0,0,0-.54242-0.37738L5.51489,8.96637a0.38659,0.38659,0,0,1-.40942-0.62354L10.00916,2l4.90369,6.34283A0.3866,0.3866,0,0,1,14.50342,8.96637Z"/>
</svg>

After

Width:  |  Height:  |  Size: 503 B

View file

@ -0,0 +1,96 @@
#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_CONTINUE
#define LV_ATTRIBUTE_IMG_CONTINUE
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CONTINUE uint8_t continue_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x0f, 0xfe, 0x3f, 0xfc, 0x7f, 0xf0, 0x00,
0x00, 0x0f, 0xf8, 0x3f, 0xfc, 0x1f, 0xf0, 0x00,
0x00, 0x0f, 0xe0, 0x3f, 0xfc, 0x07, 0xf0, 0x00,
0x00, 0x0f, 0x80, 0x3f, 0xfc, 0x01, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t continue_icon = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
continue_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 961 B

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M15,19a2,2,0,1,1,2-2A2,2,0,0,1,15,19ZM10.00293,8.03668a4.05782,4.05782,0,0,1,3.98877,4.07324H14v1.37775A0.51232,0.51232,0,0,0,14.51233,14h0.97534A0.51232,0.51232,0,0,0,16,13.48767V12H15.98615a6.05607,6.05607,0,0,0-5.9834-5.96332l-0.011-.00183L9.99182,6.05493H9V6.04584a0.35757,0.35757,0,0,1-.37738-0.54242L9.96637,2.55157a0.38659,0.38659,0,0,0-.62354-0.40942L3,7.04584l6.34283,4.90369a0.3866,0.3866,0,0,0,.62354-0.40942L8.62262,8.58826A0.35757,0.35757,0,0,1,9,8.04584V8.05493h1"/>
</svg>

After

Width:  |  Height:  |  Size: 670 B

View file

@ -0,0 +1,96 @@
#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_DEPART_LEFT
#define LV_ATTRIBUTE_IMG_DEPART_LEFT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_DEPART_LEFT uint8_t depart_left_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00,
0x00, 0x01, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00,
0x01, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00,
0x03, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x03, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x3f, 0xff, 0xfe, 0x1f, 0xff, 0xfe, 0x00,
0x00, 0x0f, 0xff, 0xfe, 0x03, 0xff, 0xfe, 0x00,
0x00, 0x07, 0xff, 0xfe, 0x01, 0xff, 0xfe, 0x00,
0x00, 0x03, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00,
0x00, 0x01, 0xff, 0xff, 0x80, 0x7f, 0xff, 0x00,
0x00, 0x00, 0xff, 0xff, 0x80, 0x3f, 0xff, 0x00,
0x00, 0x00, 0x3f, 0xff, 0x80, 0x1f, 0xff, 0x80,
0x00, 0x00, 0x1f, 0xff, 0xc0, 0x0f, 0xff, 0x80,
0x00, 0x00, 0x0f, 0xff, 0xc0, 0x0f, 0xff, 0x80,
0x00, 0x00, 0x03, 0xff, 0xc0, 0x07, 0xff, 0x80,
0x00, 0x00, 0x01, 0xff, 0xc0, 0x07, 0xff, 0x80,
0x00, 0x00, 0x00, 0xff, 0xc0, 0x07, 0xff, 0x80,
0x00, 0x00, 0x00, 0x3f, 0xc0, 0x07, 0xff, 0x80,
0x00, 0x00, 0x00, 0x1f, 0xc0, 0x07, 0xff, 0x80,
0x00, 0x00, 0x00, 0x0f, 0xc0, 0x07, 0xff, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xe0,
};
const lv_img_dsc_t depart_left = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
depart_left_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M3,17a2,2,0,1,1,2,2A2,2,0,0,1,3,17Zm7-8.94507h1V8.04584a0.35757,0.35757,0,0,1,.37738.54242L10.03363,11.5401a0.3866,0.3866,0,0,0,.62354.40942L17,7.04584,10.65717,2.14215a0.38659,0.38659,0,0,0-.62354.40942l1.34375,2.95184A0.35757,0.35757,0,0,1,11,6.04584V6.05493H10.00818l0.00012-.02008-0.011.00183A6.05607,6.05607,0,0,0,4.01385,12H4v1.48767A0.51232,0.51232,0,0,0,4.51233,14H5.48767A0.51232,0.51232,0,0,0,6,13.48767V12.10992H6.0083A4.05782,4.05782,0,0,1,9.99707,8.03668"/>
</svg>

After

Width:  |  Height:  |  Size: 660 B

View file

@ -0,0 +1,96 @@
#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_DEPART_RIGHT
#define LV_ATTRIBUTE_IMG_DEPART_RIGHT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_DEPART_RIGHT uint8_t depart_right_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xe0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0x80,
0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0x00, 0x3f, 0xff, 0xfc, 0x3f, 0xff, 0xfe, 0x00,
0x00, 0x3f, 0xff, 0xe0, 0x3f, 0xff, 0xf8, 0x00,
0x00, 0x3f, 0xff, 0xc0, 0x3f, 0xff, 0xf0, 0x00,
0x00, 0x7f, 0xff, 0x80, 0x7f, 0xff, 0xe0, 0x00,
0x00, 0x7f, 0xff, 0x00, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x7f, 0xfe, 0x00, 0xff, 0xff, 0x80, 0x00,
0x00, 0xff, 0xfc, 0x00, 0xff, 0xfe, 0x00, 0x00,
0x00, 0xff, 0xf8, 0x01, 0xff, 0xfc, 0x00, 0x00,
0x00, 0xff, 0xf8, 0x01, 0xff, 0xf8, 0x00, 0x00,
0x00, 0xff, 0xf0, 0x01, 0xff, 0xe0, 0x00, 0x00,
0x00, 0xff, 0xf0, 0x01, 0xff, 0xc0, 0x00, 0x00,
0x00, 0xff, 0xf0, 0x01, 0xff, 0x80, 0x00, 0x00,
0x00, 0xff, 0xf0, 0x01, 0xfe, 0x00, 0x00, 0x00,
0x00, 0xff, 0xf0, 0x01, 0xfc, 0x00, 0x00, 0x00,
0x00, 0xff, 0xf0, 0x01, 0xf8, 0x00, 0x00, 0x00,
0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t depart_right = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
depart_right_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M10,19a2,2,0,1,1,2-2A2,2,0,0,1,10,19ZM14.91284,7.34283L10.00916,1,5.10547,7.34283a0.38659,0.38659,0,0,0,.40942.62354L8.46674,6.62262a0.35542,0.35542,0,0,1,.541.36908H9v5.50006a0.49992,0.49992,0,0,0,.49994.49994h1.00012A0.49992,0.49992,0,0,0,11,12.49176V7h0.00916a0.35757,0.35757,0,0,1,.54242-0.37738l2.95184,1.34375A0.3866,0.3866,0,0,0,14.91284,7.34283Z"/>
</svg>

After

Width:  |  Height:  |  Size: 546 B

View file

@ -0,0 +1,96 @@
#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_DEPART_STRAIGHT
#define LV_ATTRIBUTE_IMG_DEPART_STRAIGHT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_DEPART_STRAIGHT uint8_t depart_straight_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xbf, 0xfd, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xfe, 0x3f, 0xfc, 0x7f, 0xc0, 0x00,
0x00, 0x03, 0xf8, 0x3f, 0xfc, 0x1f, 0xc0, 0x00,
0x00, 0x03, 0xc0, 0x3f, 0xfc, 0x03, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t depart_straight = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
depart_straight_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M9.98172,19a2,2,0,1,1,2-2A2,2,0,0,1,9.98172,19ZM14.89456,7.34283L9.99087,1,5.08719,7.34283a0.38659,0.38659,0,0,0,.40942.62354L8.44845,6.62262a0.35542,0.35542,0,0,1,.541.36908H8.98172v5.50006a0.49992,0.49992,0,0,0,.49994.49994h1.00012a0.49992,0.49992,0,0,0,.49994-0.49994V7h0.00916a0.35757,0.35757,0,0,1,.54242-0.37738l2.95184,1.34375A0.3866,0.3866,0,0,0,14.89456,7.34283Z"/>
</svg>

After

Width:  |  Height:  |  Size: 564 B

View file

@ -0,0 +1,96 @@
#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_DEPART
#define LV_ATTRIBUTE_IMG_DEPART
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_DEPART uint8_t depart_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xff, 0xbf, 0xfd, 0xff, 0xc0, 0x00,
0x00, 0x03, 0xfe, 0x3f, 0xfc, 0x7f, 0xc0, 0x00,
0x00, 0x03, 0xf8, 0x3f, 0xfc, 0x1f, 0xc0, 0x00,
0x00, 0x03, 0xc0, 0x3f, 0xfc, 0x03, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x01, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t depart = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
depart_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M16.50354,6.2A0.29678,0.29678,0,0,1,16.8,6.49646V7.50354A0.29678,0.29678,0,0,1,16.50354,7.8H7.2V6.2h9.30353m0-.2H7V8h9.50354A0.49645,0.49645,0,0,0,17,7.50354V6.49646A0.49645,0.49645,0,0,0,16.50354,6h0ZM10,5.98169H8.01245a0.35757,0.35757,0,0,1-.37738-0.54242L8.97882,2.48743A0.38659,0.38659,0,0,0,8.35529,2.078L2.0083,7l6.347,4.88544A0.38659,0.38659,0,0,0,8.97882,11.476L7.63507,8.52417a0.3576,0.3576,0,0,1,.37738-0.54248h1.99878A4.05782,4.05782,0,0,1,14,12.05493v5.44885A0.49622,0.49622,0,0,0,14.49622,18h1.00647a0.49614,0.49614,0,0,0,.49615-0.49683L15.99689,16H16V12.05493a6.06019,6.06019,0,0,0-5.989-6.07324L10,5.97986"/>
</svg>

After

Width:  |  Height:  |  Size: 813 B

View file

@ -0,0 +1,96 @@
#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_END_OF_ROAD_LEFT
#define LV_ATTRIBUTE_IMG_END_OF_ROAD_LEFT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_END_OF_ROAD_LEFT uint8_t end_of_road_left_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x03, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00,
0x00, 0x07, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3f, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00,
0x00, 0x7f, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00,
0x01, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00,
0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x1c,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x1c,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x03, 0xff, 0xff, 0xe0, 0x1f, 0xff, 0xff, 0x80,
0x01, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0x80,
0x00, 0xff, 0xff, 0xf0, 0x00, 0xff, 0xff, 0xc0,
0x00, 0x7f, 0xff, 0xf8, 0x00, 0x7f, 0xff, 0xc0,
0x00, 0x1f, 0xff, 0xf8, 0x00, 0x1f, 0xff, 0xc0,
0x00, 0x0f, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0xe0,
0x00, 0x03, 0xff, 0xfc, 0x00, 0x07, 0xff, 0xe0,
0x00, 0x01, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xe0,
0x00, 0x00, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xf0,
0x00, 0x00, 0x7f, 0xff, 0x00, 0x03, 0xff, 0xf0,
0x00, 0x00, 0x1f, 0xff, 0x00, 0x01, 0xff, 0xf0,
0x00, 0x00, 0x0f, 0xff, 0x00, 0x01, 0xff, 0xf0,
0x00, 0x00, 0x03, 0xff, 0x00, 0x01, 0xff, 0xf0,
0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0,
};
const lv_img_dsc_t end_of_road_left = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
end_of_road_left_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M12.8,6.2V7.8H2.50119A0.30152,0.30152,0,0,1,2.2,7.49882V6.50118A0.30152,0.30152,0,0,1,2.50119,6.2H12.8M13,6H2.50119A0.50119,0.50119,0,0,0,2,6.50118V7.49882A0.50119,0.50119,0,0,0,2.50119,8H13V6h0ZM10,7.98169h1.98755a0.3576,0.3576,0,0,1,.37738.54248L11.02118,11.476a0.38659,0.38659,0,0,0,.62354.40942L17.9917,7l-6.347-4.922a0.38659,0.38659,0,0,0-.62354.40942l1.34375,2.95184a0.35757,0.35757,0,0,1-.37738.54242H10V5.97986l-0.011.00183A6.06019,6.06019,0,0,0,4,12.05493V16H4.00311l-0.002,1.50317A0.49614,0.49614,0,0,0,4.49731,18H5.50378A0.49622,0.49622,0,0,0,6,17.50378V12.05493A4.05782,4.05782,0,0,1,9.98877,7.98169H10Z"/>
</svg>

After

Width:  |  Height:  |  Size: 808 B

View file

@ -0,0 +1,96 @@
#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_END_OF_ROAD_RIGHT
#define LV_ATTRIBUTE_IMG_END_OF_ROAD_RIGHT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_END_OF_ROAD_RIGHT uint8_t end_of_road_right_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xfe, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x80,
0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
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, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xe0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x00, 0x7f, 0xff, 0xfe, 0x03, 0xff, 0xff, 0xf0,
0x00, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xe0,
0x00, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0xc0,
0x00, 0xff, 0xff, 0x80, 0x07, 0xff, 0xff, 0x80,
0x01, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xfe, 0x00,
0x01, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0xfc, 0x00,
0x01, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xf0, 0x00,
0x03, 0xff, 0xf8, 0x00, 0x1f, 0xff, 0xe0, 0x00,
0x03, 0xff, 0xf0, 0x00, 0x1f, 0xff, 0xc0, 0x00,
0x03, 0xff, 0xe0, 0x00, 0x3f, 0xff, 0x80, 0x00,
0x03, 0xff, 0xe0, 0x00, 0x3f, 0xff, 0x00, 0x00,
0x03, 0xff, 0xe0, 0x00, 0x3f, 0xfc, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x3f, 0xf0, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x3f, 0xe0, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x3f, 0xc0, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x3f, 0x80, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t end_of_road_right = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
end_of_road_right_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>ferry</title>
<path fill="#ffffff" d="m 7.3995155,14.184682 c 0.8083073,0.01079 1.5892915,0.293603 2.2170029,0.802914 l 0.3115788,0.275628 0.059919,0 0.3714978,-0.335547 c 1.17645,-0.972485 2.850946,-1.060086 4.122427,-0.215708 l 2.708339,-5.3208066 -1.79757,-1.1983797 0,-4.2542487 C 15.336866,2.9798301 14.555162,2.2242515 13.59514,2.2008831 l -0.59919,0 c 0.0411,-0.6207608 -0.4289,-1.1572754 -1.049661,-1.1983799 -0.04949,-0.00324 -0.09923,-0.00324 -0.148719,0 l -3.5951399,0 c -0.6207608,-0.041104 -1.1572755,0.4289002 -1.1983799,1.049661 -0.00324,0.049493 -0.00324,0.099226 0,0.1487189 l -0.59919,0 C 5.4448381,2.2242511 4.6631348,2.9798301 4.6072903,3.938534 l 0,4.2542487 -1.7975698,1.1983797 2.6963548,5.4286606 C 6.0624831,14.429271 6.720154,14.208649 7.3995155,14.184682 Z M 5.8056702,3.938534 c 0.012583,-0.3108597 0.2747886,-0.552573 0.5855285,-0.53999 0.00455,2.397e-4 0.00911,4.794e-4 0.013661,7.19e-4 l 7.1902793,0 c 0.310381,-0.020492 0.578698,0.2143902 0.59919,0.5247706 0.0017,0.024807 0.0017,0.049613 0,0.074419 l 0,3.5951398 L 9.9999999,5.1968329 5.8056702,7.5336738 c 0,0 0,-3.5951398 0,-3.5951398 z m 11.9837988,12.642908 0,1.19838 c -0.314695,0.02325 -0.607459,0.16969 -0.814898,0.407449 -0.325599,0.345493 -0.74036,0.594276 -1.19838,0.719028 -0.736644,0.217506 -1.533326,0.05093 -2.121133,-0.443401 l -0.467367,-0.419433 c -0.364667,-0.36263 -0.953551,-0.36263 -1.318218,0 -0.167773,0.143806 -0.323562,0.299595 -0.503319,0.443401 -0.878174,0.701771 -2.1347949,0.666299 -2.9719831,-0.08389 l -0.4673682,-0.41943 c -0.343216,-0.299834 -0.8551639,-0.299834 -1.1983799,0 C 6.5007306,18.163303 6.297006,18.367028 6.0693138,18.546785 5.2252949,19.17174 4.0641846,19.14214 3.253121,18.474885 L 2.8816233,18.151319 C 2.7082177,17.952748 2.4708186,17.821286 2.2105305,17.779822 l 0,-1.19838 c 0.3097812,-0.03835 0.6237567,0.02025 0.8987849,0.167773 0.3333893,0.206361 0.6500013,0.438727 0.9467202,0.69506 0.2457877,0.267838 0.6168061,0.382283 0.9706877,0.299595 0.1348177,-0.03991 0.2608873,-0.104978 0.3714978,-0.191741 0.1917408,-0.143805 0.3475302,-0.311578 0.5392709,-0.467368 0.8515688,-0.705606 2.0844621,-0.705606 2.9360308,0 0.1917408,0.15579 0.3714978,0.335547 0.5632386,0.491336 0.343216,0.299835 0.8551636,0.299835 1.1983796,0 0.191741,-0.155789 0.371498,-0.335546 0.563239,-0.491336 0.853606,-0.712197 2.094409,-0.712197 2.948015,0 0.179757,0.15579 0.34753,0.323563 0.527287,0.467368 0.343216,0.299835 0.855164,0.299835 1.19838,0 L 16.4353,17.060794 c 0.382882,-0.31062 0.861155,-0.479951 1.354169,-0.479352 z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View file

@ -0,0 +1,96 @@
#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_FERRY
#define LV_ATTRIBUTE_IMG_FERRY
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_FERRY uint8_t ferry_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xff, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x1f, 0xe0, 0x00, 0x00, 0x07, 0xf8, 0x00,
0x00, 0x1f, 0xe0, 0x00, 0x00, 0x07, 0xf8, 0x00,
0x00, 0x1f, 0xe0, 0x07, 0xe0, 0x07, 0xf8, 0x00,
0x00, 0x1f, 0xe0, 0x0f, 0xf0, 0x07, 0xf8, 0x00,
0x00, 0x1f, 0xe0, 0x7f, 0xfc, 0x07, 0xf8, 0x00,
0x00, 0x1f, 0xe0, 0xff, 0xff, 0x07, 0xf8, 0x00,
0x00, 0x1f, 0xe3, 0xff, 0xff, 0xc7, 0xf8, 0x00,
0x00, 0x1f, 0xef, 0xff, 0xff, 0xf7, 0xf8, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,
0x00, 0x07, 0xf8, 0x7f, 0xfc, 0x0f, 0xc0, 0x00,
0x00, 0x03, 0xe0, 0x1f, 0xf8, 0x03, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00,
0x0f, 0x00, 0x1f, 0xe0, 0x07, 0xfc, 0x00, 0xf0,
0x0f, 0xc0, 0xff, 0xf8, 0x1f, 0xff, 0x03, 0xf0,
0x0f, 0xf1, 0xff, 0xfc, 0x3f, 0xff, 0x8f, 0xf0,
0x0f, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf0,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x0f, 0xff, 0xfd, 0xff, 0xff, 0x3f, 0xff, 0xe0,
0x07, 0xff, 0xf8, 0xff, 0xff, 0x3f, 0xff, 0xc0,
};
const lv_img_dsc_t ferry = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
ferry_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M3.5,18h0A0.5,0.5,0,0,1,3,17.5V3.5A0.5,0.5,0,0,1,3.5,3h0a0.5,0.5,0,0,1,.5.5v14A0.5,0.5,0,0,1,3.5,18ZM13.33333,7L17,3H6v8H17Z"/>
</svg>

After

Width:  |  Height:  |  Size: 317 B

View file

@ -0,0 +1,96 @@
#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_FLAG
#define LV_ATTRIBUTE_IMG_FLAG
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_FLAG uint8_t flag_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t flag = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
flag_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 815 B

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M17.73611,6.57682a0.30465,0.30465,0,0,1,.23032.10507l0.649,0.74859a0.30457,0.30457,0,0,1-.03369.43226L16.5213,9.60119a5.4089,5.4089,0,0,0-1.73306,4.29459l0.0047,3.60769A0.29612,0.29612,0,0,1,14.4968,17.8H13.49033a0.29657,0.29657,0,0,1-.29623-0.29622l-0.00058-3.47624A6.99129,6.99129,0,0,1,15.463,8.40138l2.077-1.75275a0.30475,0.30475,0,0,1,.1962-0.07182m0-.2a0.50269,0.50269,0,0,0-.32516.119L15.334,8.24854A7.25157,7.25157,0,0,0,12.99411,14.043v3.46082A0.49622,0.49622,0,0,0,13.49033,18H14.4968a0.49614,0.49614,0,0,0,.49615-0.49681l-0.0047-3.60767a5.2182,5.2182,0,0,1,1.665-4.14405L18.71066,8.0156a0.50455,0.50455,0,0,0,.05585-0.71613l-0.649-.74859a0.50345,0.50345,0,0,0-.38147-0.17406h0ZM9.00078,5.98169H7.01323a0.35757,0.35757,0,0,1-.37738-0.54242L7.9796,2.48743A0.38659,0.38659,0,0,0,7.35606,2.078L1.00908,7l6.347,4.88544A0.38659,0.38659,0,0,0,7.9796,11.476L6.63585,8.52417a0.3576,0.3576,0,0,1,.37738-0.54248H9.012a4.05782,4.05782,0,0,1,3.98877,4.07324v5.44885A0.49622,0.49622,0,0,0,13.497,18h1.00647a0.49614,0.49614,0,0,0,.49615-0.49683L14.99766,16h0.00311V12.05493a6.06019,6.06019,0,0,0-5.989-6.07324l-0.011-.00183"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,96 @@
#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_FORK_LEFT
#define LV_ATTRIBUTE_IMG_FORK_LEFT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_FORK_LEFT uint8_t fork_left_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3f, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00,
0x07, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
0x7f, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0xfe,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x03, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x0f, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0f, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
0x1f, 0xff, 0xfe, 0x0f, 0xff, 0xff, 0xff, 0xff,
0x0f, 0xff, 0xfe, 0x01, 0xff, 0xff, 0xff, 0xff,
0x03, 0xff, 0xff, 0x00, 0x3f, 0xff, 0xff, 0xfe,
0x03, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xfc,
0x00, 0xff, 0xff, 0x80, 0x07, 0xff, 0xff, 0xf0,
0x00, 0x7f, 0xff, 0x80, 0x07, 0xff, 0xff, 0xe0,
0x00, 0x1f, 0xff, 0xc0, 0x03, 0xff, 0xff, 0xc0,
0x00, 0x0f, 0xff, 0xc0, 0x01, 0xff, 0xff, 0x80,
0x00, 0x07, 0xff, 0xe0, 0x01, 0xff, 0xff, 0x00,
0x00, 0x01, 0xff, 0xe0, 0x00, 0xff, 0xfe, 0x00,
0x00, 0x00, 0xff, 0xe0, 0x00, 0xff, 0xfe, 0x00,
0x00, 0x00, 0x7f, 0xe0, 0x00, 0x7f, 0xfc, 0x00,
0x00, 0x00, 0x3f, 0xe0, 0x00, 0x7f, 0xfc, 0x00,
0x00, 0x00, 0x0f, 0xe0, 0x00, 0x7f, 0xf8, 0x00,
0x00, 0x00, 0x07, 0xc0, 0x00, 0x7f, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t fork_left = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
fork_left_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,4 @@
<svg id="WORKING_ICONS" data-name="WORKING ICONS" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<title>direction</title>
<path fill="#ffffff" d="M2.27386,6.57682A0.30457,0.30457,0,0,1,2.47,6.64864L4.544,8.39882A7.00218,7.00218,0,0,1,6.81586,14.043v3.46088A0.29651,0.29651,0,0,1,6.51968,17.8H5.51318A0.29613,0.29613,0,0,1,5.217,17.50343L5.22079,13.9146a5.42,5.42,0,0,0-1.73517-4.316L1.42825,7.86274a0.30461,0.30461,0,0,1-.03372-0.43226l0.649-.74859a0.30466,0.30466,0,0,1,.23035-0.10507m0-.2a0.50345,0.50345,0,0,0-.38147.17406l-0.649.74859a0.50458,0.50458,0,0,0,.05588.71613L3.35666,9.75146a5.2182,5.2182,0,0,1,1.665,4.14405L5.017,17.50317A0.49617,0.49617,0,0,0,5.51318,18h1.0065a0.49616,0.49616,0,0,0,.49615-0.49615V14.043A7.25157,7.25157,0,0,0,4.676,8.24854L2.599,6.49579a0.50264,0.50264,0,0,0-.32516-0.119h0ZM11.0083,7.98169h1.98755a0.3576,0.3576,0,0,1,.37738.54248L12.02948,11.476a0.38659,0.38659,0,0,0,.62354.40942L19,7,12.653,2.078a0.38659,0.38659,0,0,0-.62354.40942l1.34375,2.95184a0.35757,0.35757,0,0,1-.37738.54242H11.0083V5.97986l-0.011.00183a6.06019,6.06019,0,0,0-5.989,6.07324V16H5.01141l-0.002,1.50317A0.49614,0.49614,0,0,0,5.50562,18H6.51208a0.49622,0.49622,0,0,0,.49622-0.49622V12.05493a4.05782,4.05782,0,0,1,3.98877-4.07324H11.0083Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,96 @@
#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_FORK_RIGHT
#define LV_ATTRIBUTE_IMG_FORK_RIGHT
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_FORK_RIGHT uint8_t fork_right_map[] = {
0x04, 0x02, 0x04, 0xff, /*Color of index 0*/
0xfc, 0xfe, 0xfc, 0xff, /*Color of index 1*/
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xfe, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf0,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8,
0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xfe,
0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x80, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xc0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xf0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
0xff, 0xff, 0xff, 0xff, 0xf0, 0x7f, 0xff, 0xf8,
0xff, 0xbf, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf0,
0x7f, 0xff, 0xff, 0xfc, 0x00, 0xff, 0xff, 0xe0,
0x3f, 0xff, 0xff, 0xf8, 0x00, 0xff, 0xff, 0xc0,
0x1f, 0xf7, 0xff, 0xf0, 0x01, 0xff, 0xff, 0x00,
0x0f, 0xff, 0xff, 0xe0, 0x03, 0xff, 0xfe, 0x00,
0x03, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xf8, 0x00,
0x01, 0xff, 0xff, 0x80, 0x03, 0xff, 0xf0, 0x00,
0x00, 0xff, 0xff, 0x00, 0x07, 0xff, 0xe0, 0x00,
0x00, 0xff, 0xff, 0x00, 0x07, 0xff, 0x80, 0x00,
0x00, 0x7f, 0xff, 0x00, 0x07, 0xff, 0x00, 0x00,
0x00, 0x3f, 0xfe, 0x00, 0x07, 0xfe, 0x00, 0x00,
0x00, 0x3f, 0xfe, 0x00, 0x07, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xfe, 0x00, 0x07, 0xf0, 0x00, 0x00,
0x00, 0x1f, 0xfe, 0x00, 0x03, 0xe0, 0x00, 0x00,
0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t fork_right = {
{
LV_IMG_CF_INDEXED_1BIT,
0,
0,
64,
64
},
520,
fork_right_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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