├── card-ui.png ├── .gitignore ├── .vscode └── extensions.json ├── test └── README ├── README.md ├── src ├── ui_events.c ├── ui.h ├── ui_helpers.h ├── ui_img_wifi_png.c ├── ui_helpers.c ├── ui_img_web_png.c ├── ui_img_554157408.c ├── ui_img_email_png.c ├── ui_img_globe_png.c ├── ui_img_1127648905.c ├── ui_img_1276322231.c ├── ui_img_1668805065.c ├── ui_img_twitter_png.c ├── ui_img_led_control_png.c ├── main.cpp └── ui.c ├── LICENSE ├── lib ├── README ├── FT6336U │ ├── FT6336U.h │ └── FT6336U.cpp └── lv_conf.h ├── platformio.ini └── include └── README /card-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fbiego/digital_card/HEAD/card-ui.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .pio 2 | .vscode/.browse.c_cpp.db* 3 | .vscode/c_cpp_properties.json 4 | .vscode/launch.json 5 | .vscode/ipch 6 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "platformio.platformio-ide" 6 | ], 7 | "unwantedRecommendations": [ 8 | "ms-vscode.cpptools-extension-pack" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /test/README: -------------------------------------------------------------------------------- 1 | 2 | This directory is intended for PlatformIO Test Runner and project tests. 3 | 4 | Unit Testing is a software testing method by which individual units of 5 | source code, sets of one or more MCU program modules together with associated 6 | control data, usage procedures, and operating procedures, are tested to 7 | determine whether they are fit for use. Unit testing finds problems early 8 | in the development cycle. 9 | 10 | More information about PlatformIO Unit Testing: 11 | - https://docs.platformio.org/en/latest/advanced/unit-testing/index.html 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # digital_card 2 | A digital business card UI demo for the WT32-SC01 module 3 | 4 | ### Video 5 | [`Youtube`](https://youtu.be/I7Ylnpz09-c) 6 | 7 | ### BLE Launcher app 8 | 9 | Get it on Google Play 10 | 11 | 12 | ### Screenshot 13 | [![Card](card-ui.png?raw=true "Card")](https://youtu.be/I7Ylnpz09-c) 14 | -------------------------------------------------------------------------------- /src/ui_events.c: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #include "ui.h" 7 | 8 | // void onClickEmail(lv_event_t * e) 9 | // { 10 | // // Your code here 11 | // } 12 | 13 | // void onClickWebsite(lv_event_t * e) 14 | // { 15 | // // Your code here 16 | // } 17 | 18 | // void onClickTwitter(lv_event_t * e) 19 | // { 20 | // // Your code here 21 | // } 22 | 23 | // void onClickCall(lv_event_t * e) 24 | // { 25 | // // Your code here 26 | // } 27 | 28 | // void onBrightnessChange(lv_event_t * e) 29 | // { 30 | // // Your code here 31 | // } 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Felix Biego 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /lib/README: -------------------------------------------------------------------------------- 1 | 2 | This directory is intended for project specific (private) libraries. 3 | PlatformIO will compile them to static libraries and link into executable file. 4 | 5 | The source code of each library should be placed in a an own separate directory 6 | ("lib/your_library_name/[here are source files]"). 7 | 8 | For example, see a structure of the following two libraries `Foo` and `Bar`: 9 | 10 | |--lib 11 | | | 12 | | |--Bar 13 | | | |--docs 14 | | | |--examples 15 | | | |--src 16 | | | |- Bar.c 17 | | | |- Bar.h 18 | | | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html 19 | | | 20 | | |--Foo 21 | | | |- Foo.c 22 | | | |- Foo.h 23 | | | 24 | | |- README --> THIS FILE 25 | | 26 | |- platformio.ini 27 | |--src 28 | |- main.c 29 | 30 | and a contents of `src/main.c`: 31 | ``` 32 | #include 33 | #include 34 | 35 | int main (void) 36 | { 37 | ... 38 | } 39 | 40 | ``` 41 | 42 | PlatformIO Library Dependency Finder will find automatically dependent 43 | libraries scanning project source files. 44 | 45 | More information about PlatformIO Library Dependency Finder 46 | - https://docs.platformio.org/page/librarymanager/ldf.html 47 | -------------------------------------------------------------------------------- /platformio.ini: -------------------------------------------------------------------------------- 1 | ; PlatformIO Project Configuration File 2 | ; 3 | ; Build options: build flags, source filter 4 | ; Upload options: custom upload port, speed and extra flags 5 | ; Library options: dependencies, extra library storages 6 | ; Advanced options: extra scripting 7 | ; 8 | ; Please visit documentation for the other options and examples 9 | ; https://docs.platformio.org/page/projectconf.html 10 | 11 | [env:wt32-sc01] 12 | platform = espressif32 13 | board = esp-wrover-kit 14 | framework = arduino 15 | board_build.partitions = no_ota.csv 16 | lib_deps = 17 | fbiego/ESP32Time@^2.0.0 18 | bblanchon/ArduinoJson@^6.19.4 19 | lvgl/lvgl@^8.3.1 20 | lovyan03/LovyanGFX@^0.4.18 21 | build_flags = 22 | -DBOARD_HAS_PSRAM 23 | -mfix-esp32-psram-cache-issue 24 | -I lib 25 | -D LV_MEM_SIZE="(64U * 1024U)" 26 | 27 | [env:wt32-sc01-plus] 28 | platform = espressif32 29 | board = esp32-s3-devkitc-1 30 | framework = arduino 31 | board_build.partitions = default_8MB.csv 32 | board_build.mcu = esp32s3 33 | board_build.f_cpu = 240000000L 34 | lib_deps = 35 | fbiego/ESP32Time@^2.0.0 36 | bblanchon/ArduinoJson@^6.19.4 37 | lvgl/lvgl@^8.3.1 38 | lovyan03/LovyanGFX@^0.4.18 39 | build_flags = 40 | -DBOARD_HAS_PSRAM 41 | -mfix-esp32-psram-cache-issue 42 | -I lib 43 | -D PLUS=1 44 | -D LV_MEM_SIZE="(96U * 1024U)" -------------------------------------------------------------------------------- /include/README: -------------------------------------------------------------------------------- 1 | 2 | This directory is intended for project header files. 3 | 4 | A header file is a file containing C declarations and macro definitions 5 | to be shared between several project source files. You request the use of a 6 | header file in your project source file (C, C++, etc) located in `src` folder 7 | by including it, with the C preprocessing directive `#include'. 8 | 9 | ```src/main.c 10 | 11 | #include "header.h" 12 | 13 | int main (void) 14 | { 15 | ... 16 | } 17 | ``` 18 | 19 | Including a header file produces the same results as copying the header file 20 | into each source file that needs it. Such copying would be time-consuming 21 | and error-prone. With a header file, the related declarations appear 22 | in only one place. If they need to be changed, they can be changed in one 23 | place, and programs that include the header file will automatically use the 24 | new version when next recompiled. The header file eliminates the labor of 25 | finding and changing all the copies as well as the risk that a failure to 26 | find one copy will result in inconsistencies within a program. 27 | 28 | In C, the usual convention is to give header files names that end with `.h'. 29 | It is most portable to use only letters, digits, dashes, and underscores in 30 | header file names, and at most one dot. 31 | 32 | Read more about using header files in official GCC documentation: 33 | 34 | * Include Syntax 35 | * Include Operation 36 | * Once-Only Headers 37 | * Computed Includes 38 | 39 | https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html 40 | -------------------------------------------------------------------------------- /src/ui.h: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #ifndef _CARD_UI_H 7 | #define _CARD_UI_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | #if defined __has_include 14 | #if __has_include("lvgl.h") 15 | #include "lvgl.h" 16 | #elif __has_include("lvgl/lvgl.h") 17 | #include "lvgl/lvgl.h" 18 | #else 19 | #include "lvgl.h" 20 | #endif 21 | #else 22 | #include "lvgl.h" 23 | #endif 24 | 25 | void ui_event_mainScreen(lv_event_t * e); 26 | extern lv_obj_t * ui_mainScreen; 27 | extern lv_obj_t * ui_nameLabel; 28 | extern lv_obj_t * ui_aboutLabel; 29 | void ui_event_emailPanel(lv_event_t * e); 30 | extern lv_obj_t * ui_emailPanel; 31 | extern lv_obj_t * ui_emailIcon; 32 | extern lv_obj_t * ui_emailText; 33 | void ui_event_websitePanel(lv_event_t * e); 34 | extern lv_obj_t * ui_websitePanel; 35 | extern lv_obj_t * ui_websiteIcon; 36 | extern lv_obj_t * ui_websiteText; 37 | void ui_event_twitterPanel(lv_event_t * e); 38 | extern lv_obj_t * ui_twitterPanel; 39 | extern lv_obj_t * ui_twitterIcon; 40 | extern lv_obj_t * ui_twitterText; 41 | void ui_event_phonePanel(lv_event_t * e); 42 | extern lv_obj_t * ui_phonePanel; 43 | extern lv_obj_t * ui_phoneIcon; 44 | extern lv_obj_t * ui_phoneText; 45 | extern lv_obj_t * ui_alertPanel; 46 | extern lv_obj_t * ui_connectIcon; 47 | void ui_event_clockScreen(lv_event_t * e); 48 | extern lv_obj_t * ui_clockScreen; 49 | extern lv_obj_t * ui_clockPanel; 50 | extern lv_obj_t * ui_hour1; 51 | extern lv_obj_t * ui_hour2; 52 | extern lv_obj_t * ui_minute1; 53 | extern lv_obj_t * ui_minute2; 54 | extern lv_obj_t * ui_second1; 55 | extern lv_obj_t * ui_second2; 56 | extern lv_obj_t * ui_label1; 57 | extern lv_obj_t * ui_label2; 58 | extern lv_obj_t * ui_dateText; 59 | extern lv_obj_t * ui_weatherIcon; 60 | extern lv_obj_t * ui_weatherTemp; 61 | extern lv_obj_t * ui_weatherLocation; 62 | void ui_event_brightnessSlider(lv_event_t * e); 63 | extern lv_obj_t * ui_brightnessSlider; 64 | extern lv_obj_t * ui_brightnessIcon; 65 | 66 | void onClickEmail(lv_event_t * e); 67 | void onClickWebsite(lv_event_t * e); 68 | void onClickTwitter(lv_event_t * e); 69 | void onClickCall(lv_event_t * e); 70 | void onBrightnessChange(lv_event_t * e); 71 | 72 | LV_IMG_DECLARE(ui_img_236433794); // assets\flx-bg_480x320.png 73 | LV_IMG_DECLARE(ui_img_email_png); // assets\email.png 74 | LV_IMG_DECLARE(ui_img_web_png); // assets\web.png 75 | LV_IMG_DECLARE(ui_img_1668805065); // assets\twitter (1).png 76 | LV_IMG_DECLARE(ui_img_1276322231); // assets\phone-call.png 77 | LV_IMG_DECLARE(ui_img_wifi_png); // assets\wifi.png 78 | LV_IMG_DECLARE(ui_img_zero_64_png); // assets\zero_64.png 79 | LV_IMG_DECLARE(ui_img_one_64_png); // assets\one_64.png 80 | LV_IMG_DECLARE(ui_img_three_64_png); // assets\three_64.png 81 | LV_IMG_DECLARE(ui_img_seven_64_png); // assets\seven_64.png 82 | LV_IMG_DECLARE(ui_img_two_64_png); // assets\two_64.png 83 | LV_IMG_DECLARE(ui_img_five_64_png); // assets\five_64.png 84 | LV_IMG_DECLARE(ui_img_1127648905); // assets\cloudy-day.png 85 | LV_IMG_DECLARE(ui_img_led_control_png); // assets\led_control.png 86 | 87 | 88 | 89 | 90 | void ui_init(void); 91 | 92 | #ifdef __cplusplus 93 | } /*extern "C"*/ 94 | #endif 95 | 96 | #endif 97 | -------------------------------------------------------------------------------- /src/ui_helpers.h: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #ifndef _CARD_UI_HELPERS_H 7 | #define _CARD_UI_HELPERS_H 8 | 9 | #include "ui.h" 10 | 11 | #define _UI_TEMPORARY_STRING_BUFFER_SIZE 32 12 | #define _UI_BAR_PROPERTY_VALUE 0 13 | #define _UI_BAR_PROPERTY_VALUE_WITH_ANIM 1 14 | void _ui_bar_set_property(lv_obj_t * target, int id, int val); 15 | 16 | #define _UI_BASIC_PROPERTY_POSITION_X 0 17 | #define _UI_BASIC_PROPERTY_POSITION_Y 1 18 | #define _UI_BASIC_PROPERTY_WIDTH 2 19 | #define _UI_BASIC_PROPERTY_HEIGHT 3 20 | void _ui_basic_set_property(lv_obj_t * target, int id, int val); 21 | 22 | #define _UI_DROPDOWN_PROPERTY_SELECTED 0 23 | void _ui_dropdown_set_property(lv_obj_t * target, int id, int val); 24 | 25 | #define _UI_IMAGE_PROPERTY_IMAGE 0 26 | void _ui_image_set_property(lv_obj_t * target, int id, uint8_t * val); 27 | 28 | #define _UI_LABEL_PROPERTY_TEXT 0 29 | void _ui_label_set_property(lv_obj_t * target, int id, char * val); 30 | 31 | #define _UI_ROLLER_PROPERTY_SELECTED 0 32 | #define _UI_ROLLER_PROPERTY_SELECTED_WITH_ANIM 1 33 | void _ui_roller_set_property(lv_obj_t * target, int id, int val); 34 | 35 | #define _UI_SLIDER_PROPERTY_VALUE 0 36 | #define _UI_SLIDER_PROPERTY_VALUE_WITH_ANIM 1 37 | void _ui_slider_set_property(lv_obj_t * target, int id, int val); 38 | 39 | void _ui_screen_change(lv_obj_t * target, lv_scr_load_anim_t fademode, int spd, int delay); 40 | 41 | void _ui_arc_increment(lv_obj_t * target, int val); 42 | 43 | void _ui_bar_increment(lv_obj_t * target, int val, int anm); 44 | 45 | void _ui_slider_increment(lv_obj_t * target, int val, int anm); 46 | 47 | #define _UI_MODIFY_FLAG_ADD 0 48 | #define _UI_MODIFY_FLAG_REMOVE 1 49 | #define _UI_MODIFY_FLAG_TOGGLE 2 50 | void _ui_flag_modify(lv_obj_t * target, int32_t flag, int value); 51 | 52 | #define _UI_MODIFY_STATE_ADD 0 53 | #define _UI_MODIFY_STATE_REMOVE 1 54 | #define _UI_MODIFY_STATE_TOGGLE 2 55 | void _ui_state_modify(lv_obj_t * target, int32_t state, int value); 56 | 57 | void _ui_opacity_set(lv_obj_t * target, int val); 58 | 59 | void _ui_anim_callback_set_x(lv_anim_t * a, int32_t v); 60 | 61 | void _ui_anim_callback_set_y(lv_anim_t * a, int32_t v); 62 | 63 | void _ui_anim_callback_set_width(lv_anim_t * a, int32_t v); 64 | 65 | void _ui_anim_callback_set_height(lv_anim_t * a, int32_t v); 66 | 67 | void _ui_anim_callback_set_opacity(lv_anim_t * a, int32_t v); 68 | 69 | void _ui_anim_callback_set_image_zoom(lv_anim_t * a, int32_t v); 70 | 71 | void _ui_anim_callback_set_image_angle(lv_anim_t * a, int32_t v); 72 | 73 | int32_t _ui_anim_callback_get_x(lv_anim_t * a); 74 | 75 | int32_t _ui_anim_callback_get_y(lv_anim_t * a); 76 | 77 | int32_t _ui_anim_callback_get_width(lv_anim_t * a); 78 | 79 | int32_t _ui_anim_callback_get_height(lv_anim_t * a); 80 | 81 | int32_t _ui_anim_callback_get_opacity(lv_anim_t * a); 82 | 83 | int32_t _ui_anim_callback_get_image_zoom(lv_anim_t * a); 84 | 85 | int32_t _ui_anim_callback_get_image_angle(lv_anim_t * a); 86 | 87 | void _ui_arc_set_text_value(lv_obj_t * trg, lv_obj_t * src, char * prefix, char * postfix); 88 | 89 | void _ui_slider_set_text_value(lv_obj_t * trg, lv_obj_t * src, char * prefix, char * postfix); 90 | 91 | void _ui_checked_set_text_value(lv_obj_t * trg, lv_obj_t * src, char * txt_on, char * txt_off); 92 | 93 | 94 | #endif 95 | -------------------------------------------------------------------------------- /src/ui_img_wifi_png.c: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #include "ui.h" 7 | 8 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 9 | #define LV_ATTRIBUTE_MEM_ALIGN 10 | #endif 11 | 12 | // IMAGE DATA: assets\wifi.png 13 | const LV_ATTRIBUTE_MEM_ALIGN uint8_t ui_img_wifi_png_data[] = { 14 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1B, 0xFF, 0xFF, 0x65, 0xFF, 0xFF, 0x86, 0xFF, 0xFF, 0xA0, 0xFF, 0xFF, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0xFF, 0xFF, 0xC4, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xCE, 0xFF, 0xFF, 0xB4, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0xFF, 0xFF, 0xB3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0xFF, 0xFF, 0x4A, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 15 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0xFF, 0xFF, 0xD9, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0x40, 0xFF, 0xFF, 0x5B, 0xFF, 0xFF, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0xFF, 0xFF, 0xD9, 0xFF, 0xFF, 0xCA, 0xFF, 0xFF, 0x17, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x22, 0xFF, 0xFF, 0xA3, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB3, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x17, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0x65, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x8C, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x15, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 16 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0xFF, 0xFF, 0xB2, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x22, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x8C, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0x7B, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1B, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x49, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA3, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0x86, 0xFF, 0xFF, 0x40, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7B, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x16, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 17 | 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x16, 0xFF, 0xFF, 0xF4, 0xFF, 0xFF, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x41, 0xFF, 0xFF, 0x41, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0xFF, 0xFF, 0x65, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x76, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0D, 0xFF, 0xFF, 0xD9, 0xFF, 0xFF, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 18 | }; 19 | const lv_img_dsc_t ui_img_wifi_png = { 20 | .header.always_zero = 0, 21 | .header.w = 16, 22 | .header.h = 16, 23 | .data_size = sizeof(ui_img_wifi_png_data), 24 | .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA, 25 | .data = ui_img_wifi_png_data 26 | }; 27 | 28 | -------------------------------------------------------------------------------- /src/ui_helpers.c: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #include "ui_helpers.h" 7 | 8 | void _ui_bar_set_property(lv_obj_t * target, int id, int val) 9 | { 10 | if(id == _UI_BAR_PROPERTY_VALUE_WITH_ANIM) lv_bar_set_value(target, val, LV_ANIM_ON); 11 | if(id == _UI_BAR_PROPERTY_VALUE) lv_bar_set_value(target, val, LV_ANIM_OFF); 12 | } 13 | 14 | void _ui_basic_set_property(lv_obj_t * target, int id, int val) 15 | { 16 | if(id == _UI_BASIC_PROPERTY_POSITION_X) lv_obj_set_x(target, val); 17 | if(id == _UI_BASIC_PROPERTY_POSITION_Y) lv_obj_set_y(target, val); 18 | if(id == _UI_BASIC_PROPERTY_WIDTH) lv_obj_set_width(target, val); 19 | if(id == _UI_BASIC_PROPERTY_HEIGHT) lv_obj_set_height(target, val); 20 | } 21 | 22 | 23 | void _ui_dropdown_set_property(lv_obj_t * target, int id, int val) 24 | { 25 | if(id == _UI_DROPDOWN_PROPERTY_SELECTED) lv_dropdown_set_selected(target, val); 26 | } 27 | 28 | void _ui_image_set_property(lv_obj_t * target, int id, uint8_t * val) 29 | { 30 | if(id == _UI_IMAGE_PROPERTY_IMAGE) lv_img_set_src(target, val); 31 | } 32 | 33 | void _ui_label_set_property(lv_obj_t * target, int id, char * val) 34 | { 35 | if(id == _UI_LABEL_PROPERTY_TEXT) lv_label_set_text(target, val); 36 | } 37 | 38 | 39 | void _ui_roller_set_property(lv_obj_t * target, int id, int val) 40 | { 41 | if(id == _UI_ROLLER_PROPERTY_SELECTED_WITH_ANIM) lv_roller_set_selected(target, val, LV_ANIM_ON); 42 | if(id == _UI_ROLLER_PROPERTY_SELECTED) lv_roller_set_selected(target, val, LV_ANIM_OFF); 43 | } 44 | 45 | void _ui_slider_set_property(lv_obj_t * target, int id, int val) 46 | { 47 | if(id == _UI_SLIDER_PROPERTY_VALUE_WITH_ANIM) lv_slider_set_value(target, val, LV_ANIM_ON); 48 | if(id == _UI_SLIDER_PROPERTY_VALUE) lv_slider_set_value(target, val, LV_ANIM_OFF); 49 | } 50 | 51 | 52 | void _ui_screen_change(lv_obj_t * target, lv_scr_load_anim_t fademode, int spd, int delay) 53 | { 54 | lv_scr_load_anim(target, fademode, spd, delay, false); 55 | } 56 | 57 | void _ui_arc_increment(lv_obj_t * target, int val) 58 | { 59 | int old = lv_arc_get_value(target); 60 | lv_arc_set_value(target, old + val); 61 | } 62 | 63 | void _ui_bar_increment(lv_obj_t * target, int val, int anm) 64 | { 65 | int old = lv_bar_get_value(target); 66 | lv_bar_set_value(target, old + val, anm); 67 | } 68 | 69 | void _ui_slider_increment(lv_obj_t * target, int val, int anm) 70 | { 71 | int old = lv_slider_get_value(target); 72 | lv_slider_set_value(target, old + val, anm); 73 | } 74 | 75 | void _ui_flag_modify(lv_obj_t * target, int32_t flag, int value) 76 | { 77 | if(value == _UI_MODIFY_FLAG_TOGGLE) { 78 | if(lv_obj_has_flag(target, flag)) lv_obj_clear_flag(target, flag); 79 | else lv_obj_add_flag(target, flag); 80 | } 81 | else if(value == _UI_MODIFY_FLAG_ADD) lv_obj_add_flag(target, flag); 82 | else lv_obj_clear_flag(target, flag); 83 | } 84 | void _ui_state_modify(lv_obj_t * target, int32_t state, int value) 85 | { 86 | if(value == _UI_MODIFY_STATE_TOGGLE) { 87 | if(lv_obj_has_state(target, state)) lv_obj_clear_state(target, state); 88 | else lv_obj_add_state(target, state); 89 | } 90 | else if(value == _UI_MODIFY_STATE_ADD) lv_obj_add_state(target, state); 91 | else lv_obj_clear_state(target, state); 92 | } 93 | 94 | void _ui_opacity_set(lv_obj_t * target, int val) 95 | { 96 | lv_obj_set_style_opa(target, val, 0); 97 | } 98 | 99 | void _ui_anim_callback_set_x(lv_anim_t * a, int32_t v) 100 | { 101 | lv_obj_set_x((lv_obj_t *)a->user_data, v); 102 | } 103 | 104 | void _ui_anim_callback_set_y(lv_anim_t * a, int32_t v) 105 | { 106 | lv_obj_set_y((lv_obj_t *)a->user_data, v); 107 | } 108 | 109 | void _ui_anim_callback_set_width(lv_anim_t * a, int32_t v) 110 | { 111 | lv_obj_set_width((lv_obj_t *)a->user_data, v); 112 | } 113 | 114 | void _ui_anim_callback_set_height(lv_anim_t * a, int32_t v) 115 | { 116 | lv_obj_set_height((lv_obj_t *)a->user_data, v); 117 | } 118 | 119 | void _ui_anim_callback_set_opacity(lv_anim_t * a, int32_t v) 120 | { 121 | lv_obj_set_style_opa((lv_obj_t *)a->user_data, v, 0); 122 | } 123 | 124 | void _ui_anim_callback_set_image_zoom(lv_anim_t * a, int32_t v) 125 | { 126 | lv_img_set_zoom((lv_obj_t *)a->user_data, v); 127 | } 128 | 129 | void _ui_anim_callback_set_image_angle(lv_anim_t * a, int32_t v) 130 | { 131 | lv_img_set_angle((lv_obj_t *)a->user_data, v); 132 | } 133 | 134 | 135 | int32_t _ui_anim_callback_get_x(lv_anim_t * a) 136 | { 137 | return lv_obj_get_x_aligned((lv_obj_t *)a->user_data); 138 | } 139 | 140 | int32_t _ui_anim_callback_get_y(lv_anim_t * a) 141 | { 142 | return lv_obj_get_y_aligned((lv_obj_t *)a->user_data); 143 | } 144 | 145 | int32_t _ui_anim_callback_get_width(lv_anim_t * a) 146 | { 147 | return lv_obj_get_width((lv_obj_t *)a->user_data); 148 | } 149 | 150 | int32_t _ui_anim_callback_get_height(lv_anim_t * a) 151 | { 152 | return lv_obj_get_height((lv_obj_t *)a->user_data); 153 | } 154 | 155 | int32_t _ui_anim_callback_get_opacity(lv_anim_t * a) 156 | { 157 | return lv_obj_get_style_opa((lv_obj_t *)a->user_data, 0); 158 | } 159 | 160 | int32_t _ui_anim_callback_get_image_zoom(lv_anim_t * a) 161 | { 162 | return lv_img_get_zoom((lv_obj_t *)a->user_data); 163 | } 164 | 165 | int32_t _ui_anim_callback_get_image_angle(lv_anim_t * a) 166 | { 167 | return lv_img_get_angle((lv_obj_t *)a->user_data); 168 | } 169 | 170 | void _ui_arc_set_text_value(lv_obj_t * trg, lv_obj_t * src, char * prefix, char * postfix) 171 | { 172 | char buf[_UI_TEMPORARY_STRING_BUFFER_SIZE]; 173 | lv_snprintf(buf, sizeof(buf), "%s%d%s", prefix, (int)lv_arc_get_value(src), postfix); 174 | lv_label_set_text(trg, buf); 175 | } 176 | 177 | void _ui_slider_set_text_value(lv_obj_t * trg, lv_obj_t * src, char * prefix, char * postfix) 178 | { 179 | char buf[_UI_TEMPORARY_STRING_BUFFER_SIZE]; 180 | lv_snprintf(buf, sizeof(buf), "%s%d%s", prefix, (int)lv_slider_get_value(src), postfix); 181 | lv_label_set_text(trg, buf); 182 | } 183 | void _ui_checked_set_text_value(lv_obj_t * trg, lv_obj_t * src, char * txt_on, char * txt_off) 184 | { 185 | if(lv_obj_has_state(src, LV_STATE_CHECKED)) lv_label_set_text(trg, txt_on); 186 | else lv_label_set_text(trg, txt_off); 187 | } 188 | 189 | 190 | -------------------------------------------------------------------------------- /lib/FT6336U/FT6336U.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************/ 2 | /*! 3 | @file FT6336U.h 4 | Author: Atsushi Sasaki(https://github.com/aselectroworks) 5 | License: MIT (see LICENSE) 6 | */ 7 | /**************************************************************************/ 8 | 9 | #ifndef _FT6336U_H 10 | #define _FT6336U_H 11 | 12 | #include 13 | #include 14 | #include 15 | 16 | #define I2C_ADDR_FT6336U 0x38 17 | 18 | // Touch Parameter 19 | #define FT6336U_PRES_DOWN 0x2 20 | #define FT6336U_COORD_UD 0x1 21 | 22 | // Registers 23 | #define FT6336U_ADDR_DEVICE_MODE 0x00 24 | typedef enum { 25 | working_mode = 0b000, 26 | factory_mode = 0b100, 27 | } DEVICE_MODE_Enum; 28 | #define FT6336U_ADDR_GESTURE_ID 0x01 29 | #define FT6336U_ADDR_TD_STATUS 0x02 30 | 31 | #define FT6336U_ADDR_TOUCH1_EVENT 0x03 32 | #define FT6336U_ADDR_TOUCH1_ID 0x05 33 | #define FT6336U_ADDR_TOUCH1_X 0x03 34 | #define FT6336U_ADDR_TOUCH1_Y 0x05 35 | #define FT6336U_ADDR_TOUCH1_WEIGHT 0x07 36 | #define FT6336U_ADDR_TOUCH1_MISC 0x08 37 | 38 | #define FT6336U_ADDR_TOUCH2_EVENT 0x09 39 | #define FT6336U_ADDR_TOUCH2_ID 0x0B 40 | #define FT6336U_ADDR_TOUCH2_X 0x09 41 | #define FT6336U_ADDR_TOUCH2_Y 0x0B 42 | #define FT6336U_ADDR_TOUCH2_WEIGHT 0x0D 43 | #define FT6336U_ADDR_TOUCH2_MISC 0x0E 44 | 45 | #define FT6336U_ADDR_THRESHOLD 0x80 46 | #define FT6336U_ADDR_FILTER_COE 0x85 47 | #define FT6336U_ADDR_CTRL 0x86 48 | typedef enum { 49 | keep_active_mode = 0, 50 | switch_to_monitor_mode = 1, 51 | } CTRL_MODE_Enum; 52 | #define FT6336U_ADDR_TIME_ENTER_MONITOR 0x87 53 | #define FT6336U_ADDR_ACTIVE_MODE_RATE 0x88 54 | #define FT6336U_ADDR_MONITOR_MODE_RATE 0x89 55 | 56 | #define FT6336U_ADDR_RADIAN_VALUE 0x91 57 | #define FT6336U_ADDR_OFFSET_LEFT_RIGHT 0x92 58 | #define FT6336U_ADDR_OFFSET_UP_DOWN 0x93 59 | #define FT6336U_ADDR_DISTANCE_LEFT_RIGHT 0x94 60 | #define FT6336U_ADDR_DISTANCE_UP_DOWN 0x95 61 | #define FT6336U_ADDR_DISTANCE_ZOOM 0x96 62 | 63 | #define FT6336U_ADDR_LIBRARY_VERSION_H 0xA1 64 | #define FT6336U_ADDR_LIBRARY_VERSION_L 0xA2 65 | #define FT6336U_ADDR_CHIP_ID 0xA3 66 | #define FT6336U_ADDR_G_MODE 0xA4 67 | typedef enum { 68 | pollingMode = 0, 69 | triggerMode = 1, 70 | } G_MODE_Enum; 71 | #define FT6336U_ADDR_POWER_MODE 0xA5 72 | #define FT6336U_ADDR_FIRMARE_ID 0xA6 73 | #define FT6336U_ADDR_FOCALTECH_ID 0xA8 74 | #define FT6336U_ADDR_RELEASE_CODE_ID 0xAF 75 | #define FT6336U_ADDR_STATE 0xBC 76 | 77 | // Function Specific Type 78 | typedef enum { 79 | touch = 0, 80 | stream, 81 | release, 82 | } TouchStatusEnum; 83 | typedef struct { 84 | TouchStatusEnum status; 85 | uint16_t x; 86 | uint16_t y; 87 | } TouchPointType; 88 | typedef struct { 89 | uint8_t touch_count; 90 | TouchPointType tp[2]; 91 | } FT6336U_TouchPointType; 92 | 93 | 94 | // Uncomment to enable debug messages 95 | //#define FT6336U_DEBUG 96 | 97 | // Define where debug output will be printed 98 | #define DEBUG_PRINTER Serial 99 | 100 | // Setup debug printing macros 101 | #ifdef FT6336U_DEBUG 102 | #define DEBUG_PRINT(...) \ 103 | { \ 104 | DEBUG_PRINTER.print(__VA_ARGS__); \ 105 | } 106 | #define DEBUG_PRINTLN(...) \ 107 | { \ 108 | DEBUG_PRINTER.println(__VA_ARGS__); \ 109 | } 110 | #else 111 | #define DEBUG_PRINT(...) \ 112 | { \ 113 | } 114 | #define DEBUG_PRINTLN(...) \ 115 | { \ 116 | } 117 | #endif 118 | 119 | /**************************************************************************/ 120 | /*! 121 | @brief FT6336U I2C CTP controller driver 122 | */ 123 | /**************************************************************************/ 124 | class FT6336U 125 | { 126 | public: 127 | FT6336U(uint8_t rst_n, uint8_t int_n); 128 | #if defined(ESP32) || defined(ESP8266) 129 | FT6336U(int8_t sda, int8_t scl, uint8_t rst_n, uint8_t int_n); 130 | #endif 131 | virtual ~FT6336U(); 132 | 133 | void begin(void); 134 | 135 | uint8_t read_device_mode(void); 136 | void write_device_mode(DEVICE_MODE_Enum); 137 | uint8_t read_gesture_id(void); 138 | uint8_t read_td_status(void); 139 | uint8_t read_touch_number(void); 140 | uint16_t read_touch1_x(void); 141 | uint16_t read_touch1_y(void); 142 | uint8_t read_touch1_event(void); 143 | uint8_t read_touch1_id(void); 144 | uint8_t read_touch1_weight(void); 145 | uint8_t read_touch1_misc(void); 146 | uint16_t read_touch2_x(void); 147 | uint16_t read_touch2_y(void); 148 | uint8_t read_touch2_event(void); 149 | uint8_t read_touch2_id(void); 150 | uint8_t read_touch2_weight(void); 151 | uint8_t read_touch2_misc(void); 152 | 153 | // Mode Parameter Register 154 | uint8_t read_touch_threshold(void); 155 | uint8_t read_filter_coefficient(void); 156 | uint8_t read_ctrl_mode(void); 157 | void write_ctrl_mode(CTRL_MODE_Enum mode); 158 | uint8_t read_time_period_enter_monitor(void); 159 | uint8_t read_active_rate(void); 160 | uint8_t read_monitor_rate(void); 161 | 162 | // Gestrue Parameter Register 163 | uint8_t read_radian_value(void); 164 | void write_radian_value(uint8_t val); 165 | uint8_t read_offset_left_right(void); 166 | void write_offset_left_right(uint8_t val); 167 | uint8_t read_offset_up_down(void); 168 | void write_offset_up_down(uint8_t val); 169 | uint8_t read_distance_left_right(void); 170 | void write_distance_left_right(uint8_t val); 171 | uint8_t read_distance_up_down(void); 172 | void write_distance_up_down(uint8_t val); 173 | uint8_t read_distance_zoom(void); 174 | void write_distance_zoom(uint8_t val); 175 | 176 | // System Information 177 | uint16_t read_library_version(void); 178 | uint8_t read_chip_id(void); 179 | uint8_t read_g_mode(void); 180 | void write_g_mode(G_MODE_Enum mode); 181 | uint8_t read_pwrmode(void); 182 | uint8_t read_firmware_id(void); 183 | uint8_t read_focaltech_id(void); 184 | uint8_t read_release_code_id(void); 185 | uint8_t read_state(void); 186 | 187 | // Scan Function 188 | FT6336U_TouchPointType scan(void); 189 | 190 | private: 191 | int8_t sda = -1; 192 | int8_t scl = -1; 193 | uint8_t rst_n = -1; 194 | uint8_t int_n = -1; 195 | 196 | uint8_t readByte(uint8_t addr); 197 | void writeByte(uint8_t addr, uint8_t data); 198 | 199 | FT6336U_TouchPointType touchPoint; 200 | }; 201 | #endif 202 | -------------------------------------------------------------------------------- /lib/FT6336U/FT6336U.cpp: -------------------------------------------------------------------------------- 1 | /**************************************************************************/ 2 | /*! 3 | @file FT6336U.cpp 4 | Author: Atsushi Sasaki (https://github.com/aselectroworks) 5 | License: MIT (see LICENSE) 6 | */ 7 | /**************************************************************************/ 8 | 9 | #include "FT6336U.h" 10 | 11 | #include 12 | 13 | FT6336U::FT6336U(uint8_t rst_n, uint8_t int_n) 14 | : rst_n(rst_n), int_n(int_n) { 15 | } 16 | #if defined(ESP32) || defined(ESP8266) 17 | FT6336U::FT6336U(int8_t sda, int8_t scl, uint8_t rst_n, uint8_t int_n) 18 | : sda(sda), scl(scl), rst_n(rst_n), int_n(int_n) { 19 | } 20 | #endif 21 | FT6336U::~FT6336U() { 22 | } 23 | 24 | 25 | void FT6336U::begin(void) { 26 | // Initialize I2C 27 | #if defined(ESP32) || defined(ESP8266) 28 | if(sda != -1 && scl != -1) { 29 | Wire.begin(sda, scl); 30 | } 31 | else { 32 | Wire.begin(); 33 | } 34 | #else 35 | Wire.begin(); 36 | #endif 37 | // Int Pin Configuration 38 | pinMode(int_n, INPUT); 39 | // Reset Pin Configuration 40 | pinMode(rst_n, OUTPUT); 41 | digitalWrite(rst_n, LOW); 42 | delay(10); 43 | digitalWrite(rst_n, HIGH); 44 | delay(500); 45 | } 46 | uint8_t FT6336U::read_device_mode(void) { 47 | return (readByte(FT6336U_ADDR_DEVICE_MODE) & 0x70) >> 4; 48 | } 49 | void FT6336U::write_device_mode(DEVICE_MODE_Enum mode) { 50 | writeByte(FT6336U_ADDR_DEVICE_MODE, (mode & 0x07) << 4); 51 | } 52 | uint8_t FT6336U::read_gesture_id(void) { 53 | return readByte(FT6336U_ADDR_GESTURE_ID); 54 | } 55 | uint8_t FT6336U::read_td_status(void) { 56 | return readByte(FT6336U_ADDR_TD_STATUS); 57 | } 58 | uint8_t FT6336U::read_touch_number(void) { 59 | return readByte(FT6336U_ADDR_TD_STATUS) & 0x0F; 60 | } 61 | // Touch 1 functions 62 | uint16_t FT6336U::read_touch1_x(void) { 63 | uint8_t read_buf[2]; 64 | read_buf[0] = readByte(FT6336U_ADDR_TOUCH1_X); 65 | read_buf[1] = readByte(FT6336U_ADDR_TOUCH1_X + 1); 66 | return ((read_buf[0] & 0x0f) << 8) | read_buf[1]; 67 | } 68 | uint16_t FT6336U::read_touch1_y(void) { 69 | uint8_t read_buf[2]; 70 | read_buf[0] = readByte(FT6336U_ADDR_TOUCH1_Y); 71 | read_buf[1] = readByte(FT6336U_ADDR_TOUCH1_Y + 1); 72 | return ((read_buf[0] & 0x0f) << 8) | read_buf[1]; 73 | } 74 | uint8_t FT6336U::read_touch1_event(void) { 75 | return readByte(FT6336U_ADDR_TOUCH1_EVENT) >> 6; 76 | } 77 | uint8_t FT6336U::read_touch1_id(void) { 78 | return readByte(FT6336U_ADDR_TOUCH1_ID) >> 4; 79 | } 80 | uint8_t FT6336U::read_touch1_weight(void) { 81 | return readByte(FT6336U_ADDR_TOUCH1_WEIGHT); 82 | } 83 | uint8_t FT6336U::read_touch1_misc(void) { 84 | return readByte(FT6336U_ADDR_TOUCH1_MISC) >> 4; 85 | } 86 | // Touch 2 functions 87 | uint16_t FT6336U::read_touch2_x(void) { 88 | uint8_t read_buf[2]; 89 | read_buf[0] = readByte(FT6336U_ADDR_TOUCH2_X); 90 | read_buf[1] = readByte(FT6336U_ADDR_TOUCH2_X + 1); 91 | return ((read_buf[0] & 0x0f) << 8) | read_buf[1]; 92 | } 93 | uint16_t FT6336U::read_touch2_y(void) { 94 | uint8_t read_buf[2]; 95 | read_buf[0] = readByte(FT6336U_ADDR_TOUCH2_Y); 96 | read_buf[1] = readByte(FT6336U_ADDR_TOUCH2_Y + 1); 97 | return ((read_buf[0] & 0x0f) << 8) | read_buf[1]; 98 | } 99 | uint8_t FT6336U::read_touch2_event(void) { 100 | return readByte(FT6336U_ADDR_TOUCH2_EVENT) >> 6; 101 | } 102 | uint8_t FT6336U::read_touch2_id(void) { 103 | return readByte(FT6336U_ADDR_TOUCH2_ID) >> 4; 104 | } 105 | uint8_t FT6336U::read_touch2_weight(void) { 106 | return readByte(FT6336U_ADDR_TOUCH2_WEIGHT); 107 | } 108 | uint8_t FT6336U::read_touch2_misc(void) { 109 | return readByte(FT6336U_ADDR_TOUCH2_MISC) >> 4; 110 | } 111 | 112 | // Mode Parameter Register 113 | uint8_t FT6336U::read_touch_threshold(void) { 114 | return readByte(FT6336U_ADDR_THRESHOLD); 115 | } 116 | uint8_t FT6336U::read_filter_coefficient(void) { 117 | return readByte(FT6336U_ADDR_FILTER_COE); 118 | } 119 | uint8_t FT6336U::read_ctrl_mode(void) { 120 | return readByte(FT6336U_ADDR_CTRL); 121 | } 122 | void FT6336U::write_ctrl_mode(CTRL_MODE_Enum mode) { 123 | writeByte(FT6336U_ADDR_CTRL, mode); 124 | } 125 | uint8_t FT6336U::read_time_period_enter_monitor(void) { 126 | return readByte(FT6336U_ADDR_TIME_ENTER_MONITOR); 127 | } 128 | uint8_t FT6336U::read_active_rate(void) { 129 | return readByte(FT6336U_ADDR_ACTIVE_MODE_RATE); 130 | } 131 | uint8_t FT6336U::read_monitor_rate(void) { 132 | return readByte(FT6336U_ADDR_MONITOR_MODE_RATE); 133 | } 134 | 135 | // Gesture Parameters 136 | uint8_t FT6336U::read_radian_value(void) { 137 | return readByte(FT6336U_ADDR_RADIAN_VALUE); 138 | } 139 | void FT6336U::write_radian_value(uint8_t val) { 140 | writeByte(FT6336U_ADDR_RADIAN_VALUE, val); 141 | } 142 | uint8_t FT6336U::read_offset_left_right(void) { 143 | return readByte(FT6336U_ADDR_OFFSET_LEFT_RIGHT); 144 | } 145 | void FT6336U::write_offset_left_right(uint8_t val) { 146 | writeByte(FT6336U_ADDR_OFFSET_LEFT_RIGHT, val); 147 | } 148 | uint8_t FT6336U::read_offset_up_down(void) { 149 | return readByte(FT6336U_ADDR_OFFSET_UP_DOWN); 150 | } 151 | void FT6336U::write_offset_up_down(uint8_t val) { 152 | writeByte(FT6336U_ADDR_OFFSET_UP_DOWN, val); 153 | } 154 | uint8_t FT6336U::read_distance_left_right(void) { 155 | return readByte(FT6336U_ADDR_DISTANCE_LEFT_RIGHT); 156 | } 157 | void FT6336U::write_distance_left_right(uint8_t val) { 158 | writeByte(FT6336U_ADDR_DISTANCE_LEFT_RIGHT, val); 159 | } 160 | uint8_t FT6336U::read_distance_up_down(void) { 161 | return readByte(FT6336U_ADDR_DISTANCE_UP_DOWN); 162 | } 163 | void FT6336U::write_distance_up_down(uint8_t val) { 164 | writeByte(FT6336U_ADDR_DISTANCE_UP_DOWN, val); 165 | } 166 | uint8_t FT6336U::read_distance_zoom(void) { 167 | return readByte(FT6336U_ADDR_DISTANCE_ZOOM); 168 | } 169 | void FT6336U::write_distance_zoom(uint8_t val) { 170 | writeByte(FT6336U_ADDR_DISTANCE_ZOOM, val); 171 | } 172 | 173 | 174 | // System Information 175 | uint16_t FT6336U::read_library_version(void) { 176 | uint8_t read_buf[2]; 177 | read_buf[0] = readByte(FT6336U_ADDR_LIBRARY_VERSION_H); 178 | read_buf[1] = readByte(FT6336U_ADDR_LIBRARY_VERSION_L); 179 | return ((read_buf[0] & 0x0f) << 8) | read_buf[1]; 180 | } 181 | uint8_t FT6336U::read_chip_id(void) { 182 | return readByte(FT6336U_ADDR_CHIP_ID); 183 | } 184 | uint8_t FT6336U::read_g_mode(void) { 185 | return readByte(FT6336U_ADDR_G_MODE); 186 | } 187 | void FT6336U::write_g_mode(G_MODE_Enum mode){ 188 | writeByte(FT6336U_ADDR_G_MODE, mode); 189 | } 190 | uint8_t FT6336U::read_pwrmode(void) { 191 | return readByte(FT6336U_ADDR_POWER_MODE); 192 | } 193 | uint8_t FT6336U::read_firmware_id(void) { 194 | return readByte(FT6336U_ADDR_FIRMARE_ID); 195 | } 196 | uint8_t FT6336U::read_focaltech_id(void) { 197 | return readByte(FT6336U_ADDR_FOCALTECH_ID); 198 | } 199 | uint8_t FT6336U::read_release_code_id(void) { 200 | return readByte(FT6336U_ADDR_RELEASE_CODE_ID); 201 | } 202 | uint8_t FT6336U::read_state(void) { 203 | return readByte(FT6336U_ADDR_STATE); 204 | } 205 | 206 | 207 | //coordinate diagram(FPC downwards) 208 | ////y ////////////////////264x176 209 | // 210 | // 211 | //x 212 | // 213 | // 214 | FT6336U_TouchPointType FT6336U::scan(void){ 215 | touchPoint.touch_count = read_td_status(); 216 | 217 | if(touchPoint.touch_count == 0) { 218 | touchPoint.tp[0].status = release; 219 | touchPoint.tp[1].status = release; 220 | } 221 | else if(touchPoint.touch_count == 1) { 222 | uint8_t id1 = read_touch1_id(); // id1 = 0 or 1 223 | touchPoint.tp[id1].status = (touchPoint.tp[id1].status == release) ? touch : stream; 224 | touchPoint.tp[id1].x = read_touch1_x(); 225 | touchPoint.tp[id1].y = read_touch1_y(); 226 | touchPoint.tp[~id1 & 0x01].status = release; 227 | } 228 | else { 229 | uint8_t id1 = read_touch1_id(); // id1 = 0 or 1 230 | touchPoint.tp[id1].status = (touchPoint.tp[id1].status == release) ? touch : stream; 231 | touchPoint.tp[id1].x = read_touch1_x(); 232 | touchPoint.tp[id1].y = read_touch1_y(); 233 | uint8_t id2 = read_touch2_id(); // id2 = 0 or 1(~id1 & 0x01) 234 | touchPoint.tp[id2].status = (touchPoint.tp[id2].status == release) ? touch : stream; 235 | touchPoint.tp[id2].x = read_touch2_x(); 236 | touchPoint.tp[id2].y = read_touch2_y(); 237 | } 238 | 239 | return touchPoint; 240 | 241 | } 242 | 243 | 244 | // Private Function 245 | uint8_t FT6336U::readByte(uint8_t addr) { 246 | uint8_t rdData = 0; 247 | uint8_t rdDataCount; 248 | do { 249 | Wire.beginTransmission(I2C_ADDR_FT6336U); 250 | Wire.write(addr); 251 | Wire.endTransmission(false); // Restart 252 | delay(10); 253 | rdDataCount = Wire.requestFrom(I2C_ADDR_FT6336U, 1); 254 | } while(rdDataCount == 0); 255 | while(Wire.available()) { 256 | rdData = Wire.read(); 257 | } 258 | return rdData; 259 | 260 | } 261 | void FT6336U::writeByte(uint8_t addr, uint8_t data) { 262 | DEBUG_PRINTLN("") 263 | DEBUG_PRINT("writeI2C reg 0x") 264 | DEBUG_PRINT(addr, HEX) 265 | DEBUG_PRINT(" -> 0x") DEBUG_PRINTLN(data, HEX) 266 | 267 | Wire.beginTransmission(I2C_ADDR_FT6336U); 268 | Wire.write(addr); 269 | Wire.write(data); 270 | Wire.endTransmission(); 271 | } 272 | -------------------------------------------------------------------------------- /src/ui_img_web_png.c: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #include "ui.h" 7 | 8 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 9 | #define LV_ATTRIBUTE_MEM_ALIGN 10 | #endif 11 | 12 | // IMAGE DATA: assets\web.png 13 | const LV_ATTRIBUTE_MEM_ALIGN uint8_t ui_img_web_png_data[] = { 14 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x49, 0xFF, 0xFF, 0x9C, 0xFF, 0xFF, 0x1E, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x61, 0xFF, 0xFF, 0x60, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0x1E, 0xFF, 0xFF, 0x9B, 0xFF, 0xFF, 0x48, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x22, 0xFF, 0xFF, 0xBD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, 0xB3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x56, 15 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0xFF, 0xFF, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0xFF, 0xFF, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5C, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x51, 0xFF, 0xFF, 0x14, 0xFF, 0xFF, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x16, 0xFF, 0xFF, 0x53, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xFF, 0xFF, 0x04, 16 | 0xFF, 0xFF, 0x72, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x41, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x42, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x19, 0x00, 0x00, 0x00, 17 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x27, 0xFF, 0xFF, 0x56, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0xFF, 0xFF, 0x27, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0x67, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 18 | 0xFF, 0xFF, 0x66, 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x21, 0xFF, 0xFF, 0x39, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x37, 0xFF, 0xFF, 0x37, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0xFF, 0xFF, 0x09, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x36, 0xFF, 0xFF, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0x66, 19 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x65, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x21, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0xFF, 0xFF, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0xFF, 0xFF, 0x29, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 20 | 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x14, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x3B, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x72, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x72, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, 0x71, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 21 | 0xFF, 0xFF, 0x05, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x59, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x52, 0xFF, 0xFF, 0x14, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x15, 0xFF, 0xFF, 0x53, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x58, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2D, 0xFF, 0xFF, 0xC5, 0xFF, 0xFF, 0xFF, 22 | 0xFF, 0xFF, 0x55, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, 0xB3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0xFF, 0xFF, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x46, 0xFF, 0xFF, 0x9A, 0xFF, 0xFF, 0x1E, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0x60, 0xFF, 0xFF, 0x5F, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0x1E, 0xFF, 0xFF, 0x9A, 0xFF, 0xFF, 0x46, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 23 | }; 24 | const lv_img_dsc_t ui_img_web_png = { 25 | .header.always_zero = 0, 26 | .header.w = 24, 27 | .header.h = 24, 28 | .data_size = sizeof(ui_img_web_png_data), 29 | .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA, 30 | .data = ui_img_web_png_data 31 | }; 32 | 33 | -------------------------------------------------------------------------------- /src/ui_img_554157408.c: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #include "ui.h" 7 | 8 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 9 | #define LV_ATTRIBUTE_MEM_ALIGN 10 | #endif 11 | 12 | // IMAGE DATA: assets\email (1).png 13 | const LV_ATTRIBUTE_MEM_ALIGN uint8_t ui_img_554157408_data[] = { 14 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 15 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x4C, 0xFF, 0xFF, 0x75, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x75, 0xFF, 0xFF, 0x4B, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0xFF, 0xFF, 0xF4, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 16 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1B, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x8B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x24, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0xFF, 17 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xD5, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x17, 18 | 0xFF, 0xFF, 0xD5, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x25, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xD9, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xD5, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x25, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xD5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xFF, 0xFF, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x25, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xD9, 19 | 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xD9, 0xFF, 0xFF, 0x1A, 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xD5, 0xFF, 0xFF, 0xE8, 0xFF, 0xFF, 0x40, 0xFF, 0xFF, 0xD5, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xD8, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x27, 0xFF, 0xFF, 0xE5, 0xFF, 0xFF, 0xEE, 0xFF, 0xFF, 0xEE, 0xFF, 0xFF, 0xE5, 0xFF, 0xFF, 0x27, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0xFF, 0xFF, 0xD8, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xD9, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x86, 0xFF, 0xFF, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0xFF, 0xFF, 0xD9, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0xFF, 20 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0x20, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xD5, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x24, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x8B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 21 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1B, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x93, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x4A, 0xFF, 0xFF, 0x75, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x75, 0xFF, 0xFF, 0x49, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 22 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 23 | }; 24 | const lv_img_dsc_t ui_img_554157408 = { 25 | .header.always_zero = 0, 26 | .header.w = 24, 27 | .header.h = 24, 28 | .data_size = sizeof(ui_img_554157408_data), 29 | .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA, 30 | .data = ui_img_554157408_data 31 | }; 32 | 33 | -------------------------------------------------------------------------------- /src/ui_img_email_png.c: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #include "ui.h" 7 | 8 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 9 | #define LV_ATTRIBUTE_MEM_ALIGN 10 | #endif 11 | 12 | // IMAGE DATA: assets\email.png 13 | const LV_ATTRIBUTE_MEM_ALIGN uint8_t ui_img_email_png_data[] = { 14 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 15 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0xFF, 0xFF, 0x75, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x75, 0xFF, 0xFF, 0x39, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0x20, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x24, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xCE, 0xFF, 0xFF, 0x1D, 0xFF, 0xFF, 0x24, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 16 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x29, 0xFF, 0xFF, 0x1D, 0xFF, 0xFF, 0xCE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0x20, 0xFF, 0xFF, 0x25, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x29, 0xFF, 0xFF, 0x1C, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0x20, 0xFF, 0xFF, 0x25, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x29, 0xFF, 0xFF, 0x1C, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 17 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0x20, 0xFF, 0xFF, 0x25, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xFF, 0xFF, 0x29, 0xFF, 0xFF, 0x1C, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0x1B, 0xFF, 0xFF, 0x25, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xFF, 0xFF, 0x2A, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1B, 0xFF, 0xFF, 0x25, 0xFF, 0xFF, 0xE5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 18 | 0xFF, 0xFF, 0x2A, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1B, 0xFF, 0xFF, 0x27, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0x27, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0xFF, 0xFF, 0xE5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xFF, 0xFF, 0x2A, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1B, 0xFF, 0xFF, 0x26, 19 | 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0x1B, 0xFF, 0xFF, 0x26, 0xFF, 0xFF, 0xE5, 0xFF, 0xFF, 0xE9, 0xFF, 0xFF, 0x2B, 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x2A, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1B, 0xFF, 0xFF, 0x25, 0xFF, 0xFF, 0xE5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0x1B, 0xFF, 0xFF, 0x11, 0xFF, 0xFF, 0x11, 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xD5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xFF, 0xFF, 0x2A, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0x1B, 0xFF, 0xFF, 0x26, 0xFF, 0xFF, 0xE5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0xFF, 0xFF, 0x78, 0xFF, 0xFF, 0x79, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0xFF, 0xFF, 0x26, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 20 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0x20, 0xFF, 0xFF, 0x25, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xFF, 0xFF, 0x2A, 0xFF, 0xFF, 0x1C, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0x20, 0xFF, 0xFF, 0x25, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xFF, 0xFF, 0x29, 0xFF, 0xFF, 0x1C, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xFF, 0xFF, 0x1D, 0xFF, 0xFF, 0x25, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 21 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x29, 0xFF, 0xFF, 0x1D, 0xFF, 0xFF, 0xCE, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0x24, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x29, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x39, 0xFF, 0xFF, 0x75, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x75, 0xFF, 0xFF, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 22 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 23 | }; 24 | const lv_img_dsc_t ui_img_email_png = { 25 | .header.always_zero = 0, 26 | .header.w = 24, 27 | .header.h = 24, 28 | .data_size = sizeof(ui_img_email_png_data), 29 | .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA, 30 | .data = ui_img_email_png_data 31 | }; 32 | 33 | -------------------------------------------------------------------------------- /src/ui_img_globe_png.c: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #include "ui.h" 7 | 8 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 9 | #define LV_ATTRIBUTE_MEM_ALIGN 10 | #endif 11 | 12 | // IMAGE DATA: assets\globe.png 13 | const LV_ATTRIBUTE_MEM_ALIGN uint8_t ui_img_globe_png_data[] = { 14 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0xFF, 0xFF, 0x6C, 0xFF, 0xFF, 0xB7, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0xF4, 0xFF, 0xFF, 0xF4, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0xB6, 0xFF, 0xFF, 0x6C, 0xFF, 0xFF, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0xFF, 0xFF, 0x9B, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x9A, 0xFF, 0xFF, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xCE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0x14, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0x14, 0xFF, 0xFF, 0xC4, 0xFF, 0xFF, 0xFF, 15 | 0xFF, 0xFF, 0xCE, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xCC, 0xFF, 0xFF, 0x2C, 0xFF, 0xFF, 0xDD, 0xFF, 0xFF, 0xDE, 0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0xFF, 0xFF, 0xDE, 0xFF, 0xFF, 0xDD, 0xFF, 0xFF, 0x2C, 0xFF, 0xFF, 0xCC, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4D, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xFF, 0xFF, 0x6E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0xFF, 0xFF, 0x92, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xCB, 0xFF, 0xFF, 0x95, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xDC, 16 | 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xDC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x95, 0xFF, 0xFF, 0xCC, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9B, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0x95, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0x96, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6B, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0x9A, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x66, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0xFF, 0xFF, 0xB5, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xB5, 0xFF, 0xFF, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x93, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x1E, 17 | 0xFF, 0xFF, 0x6D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9E, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x22, 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0x22, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x29, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0xFF, 0xFF, 0xB7, 0xFF, 0xFF, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0xB5, 0xFF, 0xFF, 0xDC, 0xFF, 0xFF, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD9, 0xFF, 0xFF, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 18 | 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0xFF, 0xFF, 0xD7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAC, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xE2, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xE2, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xE2, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xE2, 0xFF, 0xFF, 0xF2, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD8, 0xFF, 0xFF, 0xAE, 0x00, 0x00, 0x00, 19 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB0, 0xFF, 0xFF, 0xD6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAC, 0xFF, 0xFF, 0xD9, 0xFF, 0xFF, 0xB5, 0xFF, 0xFF, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xB4, 0xFF, 0xFF, 0x6B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9E, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x22, 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0x22, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x29, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6B, 20 | 0xFF, 0xFF, 0x1D, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x66, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0xFF, 0xFF, 0xB6, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xB6, 0xFF, 0xFF, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x94, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0x1D, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x25, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x94, 0xFF, 0xFF, 0x67, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0x67, 0xFF, 0xFF, 0x95, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6B, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x26, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xCC, 0xFF, 0xFF, 0x95, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xDC, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 21 | 0xFF, 0xFF, 0xDD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x95, 0xFF, 0xFF, 0xCC, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4C, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0xFF, 0xFF, 0x6E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0xFF, 0xFF, 0x93, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xCC, 0xFF, 0xFF, 0x2D, 0xFF, 0xFF, 0xDD, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xDC, 0xFF, 0xFF, 0x2D, 0xFF, 0xFF, 0xCC, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4C, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, 22 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0xFF, 0xFF, 0x14, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0x15, 0xFF, 0xFF, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0xFF, 0xFF, 0x9A, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0x98, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0xFF, 0xFF, 0x6B, 0xFF, 0xFF, 0xB6, 0xFF, 0xFF, 0xD9, 0xFF, 0xFF, 0xF4, 0xFF, 0xFF, 0xF4, 0xFF, 0xFF, 0xD8, 0xFF, 0xFF, 0xB5, 0xFF, 0xFF, 0x6A, 0xFF, 0xFF, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 23 | }; 24 | const lv_img_dsc_t ui_img_globe_png = { 25 | .header.always_zero = 0, 26 | .header.w = 24, 27 | .header.h = 24, 28 | .data_size = sizeof(ui_img_globe_png_data), 29 | .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA, 30 | .data = ui_img_globe_png_data 31 | }; 32 | 33 | -------------------------------------------------------------------------------- /src/ui_img_1127648905.c: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #include "ui.h" 7 | 8 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 9 | #define LV_ATTRIBUTE_MEM_ALIGN 10 | #endif 11 | 12 | // IMAGE DATA: assets\cloudy-day.png 13 | const LV_ATTRIBUTE_MEM_ALIGN uint8_t ui_img_1127648905_data[] = { 14 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x53, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0xFF, 0xFF, 0xFF, 15 | 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0xFF, 0xFF, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x25, 0xFF, 0xFF, 0xA0, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0xFF, 0xFF, 0xB5, 0xFF, 0xFF, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0xFF, 0xFF, 0x66, 0xFF, 0xFF, 0x75, 0xFF, 0xFF, 0x56, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 16 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x6D, 0xFF, 0xFF, 0x3B, 0xFF, 0xFF, 0x89, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xFF, 0xFF, 0x52, 0xFF, 0xFF, 0x64, 0xFF, 0xFF, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 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, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 17 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x66, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x66, 0xFF, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0xAD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x35, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0xFF, 0xFF, 0x7A, 0xFF, 0xFF, 0xC4, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xA2, 0xFF, 0xFF, 0x32, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 18 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x15, 0xFF, 0xFF, 0x0D, 0xFF, 0xFF, 0x22, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x15, 0xFF, 0xFF, 0xD5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x62, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x64, 0xFF, 0xFF, 0x7A, 0xFF, 0xFF, 0xAD, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0x24, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x22, 0xFF, 0xFF, 0xCC, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 19 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xB8, 0xFF, 0xFF, 0x23, 0xFF, 0xFF, 0x0E, 0xFF, 0xFF, 0x21, 0xFF, 0xFF, 0x96, 0xFF, 0xFF, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x82, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x16, 0xFF, 0xFF, 0xA4, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x74, 0xFF, 0xFF, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 20 | 0xFF, 0xFF, 0x17, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xB7, 0xFF, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xEE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 21 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 22 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 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, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4A, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x2D, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0x3C, 0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 23 | }; 24 | const lv_img_dsc_t ui_img_1127648905 = { 25 | .header.always_zero = 0, 26 | .header.w = 24, 27 | .header.h = 24, 28 | .data_size = sizeof(ui_img_1127648905_data), 29 | .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA, 30 | .data = ui_img_1127648905_data 31 | }; 32 | 33 | -------------------------------------------------------------------------------- /src/ui_img_1276322231.c: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #include "ui.h" 7 | 8 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 9 | #define LV_ATTRIBUTE_MEM_ALIGN 10 | #endif 11 | 12 | // IMAGE DATA: assets\phone-call.png 13 | const LV_ATTRIBUTE_MEM_ALIGN uint8_t ui_img_1276322231_data[] = { 14 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x9B, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xD1, 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xB5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 15 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 16 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xFF, 0xFF, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 17 | 0xFF, 0xFF, 0x4A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x63, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 18 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xCD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x34, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 19 | 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2A, 0xFF, 0xFF, 0x55, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0xB6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0xFF, 0xFF, 0xD3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8E, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 20 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0xFF, 0xFF, 0xDE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0x8B, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x23, 0xFF, 0xFF, 0xDE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1A, 0xFF, 0xFF, 0xD3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 21 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x11, 0xFF, 0xFF, 0xB5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x7D, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 22 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0xFF, 0xFF, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0x67, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, 0x50, 0xFF, 0xFF, 0xA3, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0xF5, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0x78, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 23 | }; 24 | const lv_img_dsc_t ui_img_1276322231 = { 25 | .header.always_zero = 0, 26 | .header.w = 24, 27 | .header.h = 24, 28 | .data_size = sizeof(ui_img_1276322231_data), 29 | .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA, 30 | .data = ui_img_1276322231_data 31 | }; 32 | 33 | -------------------------------------------------------------------------------- /src/ui_img_1668805065.c: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #include "ui.h" 7 | 8 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 9 | #define LV_ATTRIBUTE_MEM_ALIGN 10 | #endif 11 | 12 | // IMAGE DATA: assets\twitter (1).png 13 | const LV_ATTRIBUTE_MEM_ALIGN uint8_t ui_img_1668805065_data[] = { 14 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x40, 0xFF, 0xFF, 0x99, 15 | 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xA4, 0xFF, 0xFF, 0x59, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0D, 0xFF, 0xFF, 0x12, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x61, 0xFF, 0xFF, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0xFF, 0xFF, 0x4D, 0xFF, 0xFF, 0x91, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xFF, 0xFF, 0xE2, 0xFF, 0xFF, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0x3B, 0xFF, 0xFF, 0x30, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 16 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xFF, 0xFF, 0xEA, 0xFF, 0xFF, 0x42, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0xFF, 0xFF, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x98, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xA1, 0xFF, 0xFF, 0x4B, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 17 | 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0xFF, 0xFF, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xD9, 0xFF, 0xFF, 0xCD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xA8, 0xFF, 0xFF, 0x91, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 18 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0xA8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x6C, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 19 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 20 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1D, 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x97, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0xFF, 0xFF, 0x6B, 0xFF, 0xFF, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 21 | 0xFF, 0xFF, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3D, 0xFF, 0xFF, 0x6C, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xB4, 0xFF, 0xFF, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xFF, 0xFF, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x5B, 0xFF, 0xFF, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x7B, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0xFF, 0xFF, 0x61, 0xFF, 0xFF, 0x94, 0xFF, 0xFF, 0xAC, 0xFF, 0xFF, 0xBB, 22 | 0xFF, 0xFF, 0xB2, 0xFF, 0xFF, 0x9B, 0xFF, 0xFF, 0x72, 0xFF, 0xFF, 0x34, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 23 | }; 24 | const lv_img_dsc_t ui_img_1668805065 = { 25 | .header.always_zero = 0, 26 | .header.w = 24, 27 | .header.h = 24, 28 | .data_size = sizeof(ui_img_1668805065_data), 29 | .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA, 30 | .data = ui_img_1668805065_data 31 | }; 32 | 33 | -------------------------------------------------------------------------------- /src/ui_img_twitter_png.c: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #include "ui.h" 7 | 8 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 9 | #define LV_ATTRIBUTE_MEM_ALIGN 10 | #endif 11 | 12 | // IMAGE DATA: assets\twitter.png 13 | const LV_ATTRIBUTE_MEM_ALIGN uint8_t ui_img_twitter_png_data[] = { 14 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0x4C, 0xFF, 0xFF, 0x9D, 15 | 0xFF, 0xFF, 0xAA, 0xFF, 0xFF, 0x9B, 0xFF, 0xFF, 0x4E, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x33, 0xFF, 0xFF, 0xD8, 0xFF, 0xFF, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0xFF, 0xFF, 0xC9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xC9, 0xFF, 0xFF, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0x39, 0xFF, 0xFF, 0x38, 0xFF, 0xFF, 0x8D, 0xFF, 0xFF, 0x83, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0xFF, 0xFF, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0D, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xEC, 0xFF, 0xFF, 0x55, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x63, 0xFF, 0xFF, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDE, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xD5, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0x71, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 16 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x78, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0xFF, 0xFF, 0x51, 0xFF, 0xFF, 0x7A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0x9C, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xB6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0xFF, 0xFF, 0x4E, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCA, 0xFF, 0xFF, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xE5, 0xFF, 0xFF, 0x12, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBC, 0xFF, 0xFF, 0xD9, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x57, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0x98, 0xFF, 0xFF, 0x5F, 0xFF, 0xFF, 0xE9, 0xFF, 0xFF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xA8, 0xFF, 0xFF, 0xF4, 0xFF, 0xFF, 0x36, 0x00, 0x00, 0x00, 17 | 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x54, 0xFF, 0xFF, 0xAC, 0xFF, 0xFF, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xFF, 0xFF, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x20, 0xFF, 0xFF, 0x44, 0xFF, 0xFF, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0xFF, 0xFF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD3, 0xFF, 0xFF, 0xEA, 0xFF, 0xFF, 0x98, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 18 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xF2, 0xFF, 0xFF, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0x57, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8B, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0x18, 0x00, 0x00, 0x00, 19 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x13, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2B, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0x92, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8E, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x73, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 20 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0xFF, 0xFF, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xAE, 0xFF, 0xFF, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2E, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xCC, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x4B, 0xFF, 0xFF, 0xF2, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x89, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xA9, 0xFF, 0xFF, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x19, 0xFF, 0xFF, 0x9A, 0xFF, 0xFF, 0xFC, 21 | 0xFF, 0xFF, 0xCA, 0xFF, 0xFF, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xFF, 0xFF, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x09, 0xFF, 0xFF, 0x4D, 0xFF, 0xFF, 0x9B, 0xFF, 0xFF, 0xF4, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0x8D, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x28, 0xFF, 0xFF, 0xA0, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xCD, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xFF, 0xFF, 0x9D, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0xFF, 0xFF, 0x4C, 0xFF, 0xFF, 0x82, 0xFF, 0xFF, 0xA5, 0xFF, 0xFF, 0xB7, 22 | 0xFF, 0xFF, 0xB2, 0xFF, 0xFF, 0x98, 0xFF, 0xFF, 0x7E, 0xFF, 0xFF, 0x42, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 23 | }; 24 | const lv_img_dsc_t ui_img_twitter_png = { 25 | .header.always_zero = 0, 26 | .header.w = 24, 27 | .header.h = 24, 28 | .data_size = sizeof(ui_img_twitter_png_data), 29 | .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA, 30 | .data = ui_img_twitter_png_data 31 | }; 32 | 33 | -------------------------------------------------------------------------------- /src/ui_img_led_control_png.c: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #include "ui.h" 7 | 8 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 9 | #define LV_ATTRIBUTE_MEM_ALIGN 10 | #endif 11 | 12 | // IMAGE DATA: assets\led_control.png 13 | const LV_ATTRIBUTE_MEM_ALIGN uint8_t ui_img_led_control_png_data[] = { 14 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 15 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x08, 0xFF, 0xFF, 0xAD, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xAB, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 16 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xFF, 0xFF, 0x92, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xFF, 0xFF, 0x92, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 17 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0x16, 0xFF, 0xFF, 0xEC, 0xFF, 0xFF, 0xDD, 0xFF, 0xFF, 0x99, 0xFF, 0xFF, 0x99, 0xFF, 0xFF, 0xDE, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0x16, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xFF, 0xFF, 0x9D, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0x9E, 0xFF, 0xFF, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xFF, 0xFF, 0x1A, 0xFF, 0xFF, 0xDE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xFF, 0xFF, 0x19, 0xFF, 0xFF, 0xDE, 18 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0xFF, 0xFF, 0x97, 0xFF, 0xFF, 0x99, 0xFF, 0xFF, 0x31, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x30, 0xFF, 0xFF, 0x9A, 0xFF, 0xFF, 0x96, 0xFF, 0xFF, 0x97, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8E, 0xFF, 0xFF, 0x8E, 0xFF, 0xFF, 0xD2, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0xD2, 0xFF, 0xFF, 0x8E, 0xFF, 0xFF, 0x8E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x79, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 19 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x31, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0xFF, 0xFF, 0x7D, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x7C, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 20 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x86, 0xFF, 0xFF, 0xF4, 0xFF, 0xFF, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x77, 21 | 0xFF, 0xFF, 0x77, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x71, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x71, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x71, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x85, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 22 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 23 | }; 24 | const lv_img_dsc_t ui_img_led_control_png = { 25 | .header.always_zero = 0, 26 | .header.w = 24, 27 | .header.h = 24, 28 | .data_size = sizeof(ui_img_led_control_png_data), 29 | .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA, 30 | .data = ui_img_led_control_png_data 31 | }; 32 | 33 | -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | MIT License 3 | 4 | Copyright (c) 2022 Felix Biego 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | */ 24 | 25 | 26 | #define LGFX_USE_V1 27 | 28 | #include 29 | #include 30 | #include "ui.h" 31 | #include 32 | #include 33 | 34 | #include 35 | #include 36 | #include 37 | #include 38 | 39 | #ifdef PLUS 40 | #define SCR 30 41 | class LGFX : public lgfx::LGFX_Device 42 | { 43 | 44 | lgfx::Panel_ST7796 _panel_instance; 45 | 46 | lgfx::Bus_Parallel8 _bus_instance; 47 | 48 | lgfx::Light_PWM _light_instance; 49 | 50 | lgfx::Touch_FT5x06 _touch_instance; 51 | 52 | public: 53 | LGFX(void) 54 | { 55 | { 56 | auto cfg = _bus_instance.config(); 57 | 58 | cfg.port = 0; 59 | cfg.freq_write = 20000000; 60 | cfg.pin_wr = 47; // pin number connecting WR 61 | cfg.pin_rd = -1; // pin number connecting RD 62 | cfg.pin_rs = 0; // Pin number connecting RS(D/C) 63 | cfg.pin_d0 = 9; // pin number connecting D0 64 | cfg.pin_d1 = 46; // pin number connecting D1 65 | cfg.pin_d2 = 3; // pin number connecting D2 66 | cfg.pin_d3 = 8; // pin number connecting D3 67 | cfg.pin_d4 = 18; // pin number connecting D4 68 | cfg.pin_d5 = 17; // pin number connecting D5 69 | cfg.pin_d6 = 16; // pin number connecting D6 70 | cfg.pin_d7 = 15; // pin number connecting D7 71 | 72 | _bus_instance.config(cfg); // Apply the settings to the bus. 73 | _panel_instance.setBus(&_bus_instance); // Sets the bus to the panel. 74 | } 75 | 76 | { // Set display panel control. 77 | auto cfg = _panel_instance.config(); // Get the structure for display panel settings. 78 | 79 | cfg.pin_cs = -1; // Pin number to which CS is connected (-1 = disable) 80 | cfg.pin_rst = 4; // pin number where RST is connected (-1 = disable) 81 | cfg.pin_busy = -1; // pin number to which BUSY is connected (-1 = disable) 82 | 83 | // * The following setting values ​​are set to general default values ​​for each panel, and the pin number (-1 = disable) to which BUSY is connected, so please try commenting out any unknown items. 84 | 85 | cfg.memory_width = 320; // Maximum width supported by driver IC 86 | cfg.memory_height = 480; // Maximum height supported by driver IC 87 | cfg.panel_width = 320; // actual displayable width 88 | cfg.panel_height = 480; // actual displayable height 89 | cfg.offset_x = 0; // Panel offset in X direction 90 | cfg.offset_y = 0; // Panel offset in Y direction 91 | cfg.offset_rotation = 1; 92 | cfg.dummy_read_pixel = 8; 93 | cfg.dummy_read_bits = 1; 94 | cfg.readable = false; 95 | cfg.invert = true; 96 | cfg.rgb_order = false; 97 | cfg.dlen_16bit = false; 98 | cfg.bus_shared = true; 99 | 100 | _panel_instance.config(cfg); 101 | } 102 | 103 | { // Set backlight control. (delete if not necessary) 104 | auto cfg = _light_instance.config(); // Get the structure for backlight configuration. 105 | 106 | cfg.pin_bl = 45; // pin number to which the backlight is connected 107 | cfg.invert = false; // true to invert backlight brightness 108 | cfg.freq = 44100; // backlight PWM frequency 109 | cfg.pwm_channel = 0; // PWM channel number to use 110 | 111 | _light_instance.config(cfg); 112 | _panel_instance.setLight(&_light_instance); // Sets the backlight to the panel. 113 | } 114 | 115 | { // Configure settings for touch screen control. (delete if not necessary) 116 | auto cfg = _touch_instance.config(); 117 | 118 | cfg.x_min = 0; // Minimum X value (raw value) obtained from the touchscreen 119 | cfg.x_max = 319; // Maximum X value (raw value) obtained from the touchscreen 120 | cfg.y_min = 0; // Minimum Y value obtained from touchscreen (raw value) 121 | cfg.y_max = 479; // Maximum Y value (raw value) obtained from the touchscreen 122 | cfg.pin_int = 7; // pin number to which INT is connected 123 | cfg.bus_shared = false; 124 | cfg.offset_rotation = 0; 125 | 126 | // For I2C connection 127 | cfg.i2c_port = 0; // Select I2C to use (0 or 1) 128 | cfg.i2c_addr = 0x38; // I2C device address number 129 | cfg.pin_sda = 6; // pin number where SDA is connected 130 | cfg.pin_scl = 5; // pin number to which SCL is connected 131 | cfg.freq = 400000; // set I2C clock 132 | 133 | _touch_instance.config(cfg); 134 | _panel_instance.setTouch(&_touch_instance); // Set the touchscreen to the panel. 135 | } 136 | 137 | setPanel(&_panel_instance); // Sets the panel to use. 138 | } 139 | }; 140 | 141 | #else 142 | #define SCR 8 143 | class LGFX : public lgfx::LGFX_Device 144 | { 145 | 146 | lgfx::Panel_ST7796 _panel_instance; 147 | 148 | lgfx::Bus_SPI _bus_instance; 149 | 150 | lgfx::Light_PWM _light_instance; 151 | 152 | // lgfx::Touch_FT5x06 _touch_instance; 153 | 154 | public: 155 | LGFX(void) 156 | { 157 | { 158 | auto cfg = _bus_instance.config(); // Get the structure for bus configuration. 159 | 160 | // SPI bus settings 161 | cfg.spi_host = VSPI_HOST; // Select the SPI to use ESP32-S2,C3 : SPI2_HOST or SPI3_HOST / ESP32 : VSPI_HOST or HSPI_HOST 162 | // * With the ESP-IDF version upgrade, VSPI_HOST and HSPI_HOST descriptions are deprecated, so if an error occurs, use SPI2_HOST and SPI3_HOST instead. 163 | cfg.spi_mode = 3; // Set SPI communication mode (0 ~ 3) 164 | cfg.freq_write = 27000000; // SPI clock when sending (up to 80MHz, rounded to 80MHz divided by an integer) 165 | cfg.freq_read = 6000000; // SPI clock when receiving 166 | cfg.spi_3wire = false; // set to true if receiving on MOSI pin 167 | cfg.use_lock = true; // set to true to use transaction lock 168 | cfg.dma_channel = SPI_DMA_CH_AUTO; // Set the DMA channel to use (0=not use DMA / 1=1ch / 2=ch / SPI_DMA_CH_AUTO=auto setting) 169 | // * With the ESP-IDF version upgrade, SPI_DMA_CH_AUTO (automatic setting) is recommended for the DMA channel. Specifying 1ch and 2ch is deprecated. 170 | cfg.pin_sclk = 14; // set SPI SCLK pin number 171 | cfg.pin_mosi = 13; // Set MOSI pin number for SPI 172 | cfg.pin_miso = -1; // set SPI MISO pin number (-1 = disable) 173 | cfg.pin_dc = 21; // Set SPI D/C pin number (-1 = disable) 174 | 175 | _bus_instance.config(cfg); // Apply the settings to the bus. 176 | _panel_instance.setBus(&_bus_instance); // Sets the bus to the panel. 177 | } 178 | 179 | { // Set display panel control. 180 | auto cfg = _panel_instance.config(); // Get the structure for display panel settings. 181 | 182 | cfg.pin_cs = 15; // Pin number to which CS is connected (-1 = disable) 183 | cfg.pin_rst = 22; // pin number where RST is connected (-1 = disable) 184 | cfg.pin_busy = -1; // pin number to which BUSY is connected (-1 = disable) 185 | 186 | // * The following setting values ​​are set to general default values ​​for each panel, and the pin number (-1 = disable) to which BUSY is connected, so please try commenting out any unknown items. 187 | 188 | cfg.memory_width = 320; // Maximum width supported by driver IC 189 | cfg.memory_height = 480; // Maximum height supported by driver IC 190 | cfg.panel_width = 320; // actual displayable width 191 | cfg.panel_height = 480; // actual displayable height 192 | cfg.offset_x = 0; // Panel offset in X direction 193 | cfg.offset_y = 0; // Panel offset in Y direction 194 | cfg.offset_rotation = 0; 195 | cfg.dummy_read_pixel = 8; 196 | cfg.dummy_read_bits = 1; 197 | cfg.readable = false; 198 | cfg.invert = false; 199 | cfg.rgb_order = false; 200 | cfg.dlen_16bit = false; 201 | cfg.bus_shared = false; 202 | 203 | _panel_instance.config(cfg); 204 | } 205 | 206 | { // Set backlight control. (delete if not necessary) 207 | auto cfg = _light_instance.config(); // Get the structure for backlight configuration. 208 | 209 | cfg.pin_bl = 23; // pin number to which the backlight is connected 210 | cfg.invert = false; // true to invert backlight brightness 211 | cfg.freq = 44100; // backlight PWM frequency 212 | cfg.pwm_channel = 1; // PWM channel number to use 213 | 214 | _light_instance.config(cfg); 215 | _panel_instance.setLight(&_light_instance); // Sets the backlight to the panel. 216 | } 217 | 218 | // { // Configure settings for touch screen control. (delete if not necessary) 219 | // auto cfg = _touch_instance.config(); 220 | 221 | // cfg.x_min = 0; // Minimum X value (raw value) obtained from the touchscreen 222 | // cfg.x_max = 319; // Maximum X value (raw value) obtained from the touchscreen 223 | // cfg.y_min = 0; // Minimum Y value obtained from touchscreen (raw value) 224 | // cfg.y_max = 479; // Maximum Y value (raw value) obtained from the touchscreen 225 | // cfg.pin_int = 36; // pin number to which INT is connected 226 | // cfg.bus_shared = false; 227 | // cfg.offset_rotation = 0; 228 | 229 | // // For I2C connection 230 | // cfg.i2c_port = 0; // Select I2C to use (0 or 1) 231 | // cfg.i2c_addr = 0x38; // I2C device address number 232 | // cfg.pin_sda = 18; // pin number where SDA is connected 233 | // cfg.pin_scl = 19; // pin number to which SCL is connected 234 | // cfg.freq = 400000; // set I2C clock 235 | 236 | // _touch_instance.config(cfg); 237 | // _panel_instance.setTouch(&_touch_instance); // Set the touchscreen to the panel. 238 | // } 239 | 240 | setPanel(&_panel_instance); // Sets the panel to use. 241 | } 242 | }; 243 | 244 | struct TouchData 245 | { 246 | int xpos; 247 | int ypos; 248 | int event; 249 | } touch_data; 250 | 251 | #include "FT6336U.h" 252 | 253 | FT6336U ft6336u(18, 19, -1, 36); 254 | 255 | #endif 256 | 257 | // Create an instance of the prepared class. 258 | LGFX tft; 259 | 260 | /* Change to your screen resolution */ 261 | static const uint32_t screenWidth = 480; 262 | static const uint32_t screenHeight = 320; 263 | 264 | static lv_disp_draw_buf_t draw_buf; 265 | static lv_disp_drv_t disp_drv; 266 | 267 | static lv_color_t disp_draw_buf[screenWidth * SCR]; 268 | static lv_color_t disp_draw_buf2[screenWidth * SCR]; 269 | 270 | LV_IMG_DECLARE(ui_img_four_64_png); 271 | LV_IMG_DECLARE(ui_img_six_64_png); 272 | LV_IMG_DECLARE(ui_img_eight_64_png); 273 | LV_IMG_DECLARE(ui_img_nine_64_png); 274 | 275 | lv_img_dsc_t digits[10] = {ui_img_zero_64_png, ui_img_one_64_png, ui_img_two_64_png, ui_img_three_64_png, ui_img_four_64_png, 276 | ui_img_five_64_png, ui_img_six_64_png, ui_img_seven_64_png, ui_img_eight_64_png, ui_img_nine_64_png}; 277 | 278 | #define SERVICE_UUID "fb1e4001-54ae-4a28-9f74-dfccb248601d" 279 | #define CHARACTERISTIC_UUID_RX "fb1e4002-54ae-4a28-9f74-dfccb248601d" 280 | #define CHARACTERISTIC_UUID_TX "fb1e4003-54ae-4a28-9f74-dfccb248601d" 281 | static BLECharacteristic *pCharacteristicTX; 282 | static BLECharacteristic *pCharacteristicRX; 283 | 284 | ESP32Time rtc; 285 | 286 | static bool deviceConnected = false; 287 | class MyServerCallbacks : public BLEServerCallbacks 288 | { 289 | void onConnect(BLEServer *pServer) 290 | { 291 | deviceConnected = true; 292 | } 293 | void onDisconnect(BLEServer *pServer) 294 | { 295 | deviceConnected = false; 296 | pServer->startAdvertising(); 297 | } 298 | }; 299 | 300 | class MyCallbacks : public BLECharacteristicCallbacks 301 | { 302 | 303 | void onStatus(BLECharacteristic *pCharacteristic, Status s, uint32_t code) 304 | { 305 | Serial.print("Status "); 306 | Serial.print(s); 307 | Serial.print(" on characteristic "); 308 | Serial.print(pCharacteristic->getUUID().toString().c_str()); 309 | Serial.print(" with code "); 310 | Serial.println(code); 311 | } 312 | 313 | void onNotify(BLECharacteristic *pCharacteristic) 314 | { 315 | uint8_t *pData; 316 | std::string value = pCharacteristic->getValue(); 317 | int len = value.length(); 318 | pData = pCharacteristic->getData(); 319 | if (pData != NULL) 320 | { 321 | Serial.print("Notify callback for characteristic "); 322 | Serial.print(pCharacteristic->getUUID().toString().c_str()); 323 | Serial.print(" of data length "); 324 | Serial.println(len); 325 | Serial.print("TX "); 326 | for (int i = 0; i < len; i++) 327 | { 328 | Serial.printf("%02X ", pData[i]); 329 | } 330 | Serial.println(); 331 | } 332 | } 333 | 334 | void onWrite(BLECharacteristic *pCharacteristic) 335 | { 336 | uint8_t *pData; 337 | std::string value = pCharacteristic->getValue(); 338 | int len = value.length(); 339 | pData = pCharacteristic->getData(); 340 | if (pData != NULL) 341 | { 342 | Serial.print("Write callback for characteristic "); 343 | Serial.print(pCharacteristic->getUUID().toString().c_str()); 344 | Serial.print(" of data length "); 345 | Serial.println(len); 346 | Serial.print("RX "); 347 | for (int i = 0; i < len; i++) 348 | { 349 | Serial.printf("%02X ", pData[i]); 350 | } 351 | Serial.println(); 352 | 353 | if (pData[0] == 0xAB) 354 | { 355 | switch (pData[4]) 356 | { 357 | case 0x93: 358 | rtc.setTime(pData[13], pData[12], pData[11], pData[10], pData[9], pData[7] * 256 + pData[8]); 359 | break; 360 | 361 | } 362 | } 363 | 364 | } 365 | } 366 | }; 367 | 368 | void initBLE() 369 | { 370 | BLEDevice::init("Card"); 371 | BLEServer *pServer = BLEDevice::createServer(); 372 | pServer->setCallbacks(new MyServerCallbacks()); 373 | 374 | BLEService *pService = pServer->createService(SERVICE_UUID); 375 | pCharacteristicTX = pService->createCharacteristic(CHARACTERISTIC_UUID_TX, BLECharacteristic::PROPERTY_NOTIFY); 376 | pCharacteristicRX = pService->createCharacteristic(CHARACTERISTIC_UUID_RX, BLECharacteristic::PROPERTY_WRITE | BLECharacteristic::PROPERTY_WRITE_NR); 377 | pCharacteristicRX->setCallbacks(new MyCallbacks()); 378 | pCharacteristicTX->setCallbacks(new MyCallbacks()); 379 | pCharacteristicTX->addDescriptor(new BLE2902()); 380 | pCharacteristicTX->setNotifyProperty(true); 381 | pService->start(); 382 | 383 | // BLEAdvertising *pAdvertising = pServer->getAdvertising(); // this still is working for backward compatibility 384 | BLEAdvertising *pAdvertising = BLEDevice::getAdvertising(); 385 | pAdvertising->addServiceUUID(SERVICE_UUID); 386 | pAdvertising->setScanResponse(true); 387 | pAdvertising->setMinPreferred(0x06); // functions that help with iPhone connections issue 388 | pAdvertising->setMinPreferred(0x12); 389 | BLEDevice::startAdvertising(); 390 | Serial.println("Characteristic defined! Now you can read it in your phone!"); 391 | } 392 | 393 | 394 | enum Action { 395 | VIEW = 0xA0, 396 | DIAL 397 | }; 398 | 399 | void launchIntent(Action a, String intent){ 400 | char s1 = a; 401 | String result = String(s1) + intent; 402 | pCharacteristicTX->setValue(result.c_str()); 403 | pCharacteristicTX->notify(); 404 | delay(200); 405 | } 406 | 407 | /* Display flushing */ 408 | void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) 409 | { 410 | if (tft.getStartCount() == 0) 411 | { 412 | tft.endWrite(); 413 | } 414 | 415 | tft.pushImageDMA(area->x1, area->y1, area->x2 - area->x1 + 1, area->y2 - area->y1 + 1, (lgfx::swap565_t *)&color_p->full); 416 | 417 | lv_disp_flush_ready(disp); /* tell lvgl that flushing is done */ 418 | } 419 | 420 | /*Read the touchpad*/ 421 | void my_touchpad_read(lv_indev_drv_t *indev_driver, lv_indev_data_t *data) 422 | { 423 | #ifdef PLUS 424 | uint16_t touchX, touchY; 425 | 426 | bool touched = tft.getTouch(&touchX, &touchY); 427 | 428 | if (!touched) 429 | { 430 | data->state = LV_INDEV_STATE_REL; 431 | } 432 | else 433 | { 434 | data->state = LV_INDEV_STATE_PR; 435 | 436 | /*Set the coordinates*/ 437 | data->point.x = touchX; 438 | data->point.y = touchY; 439 | } 440 | #else 441 | data->point.x = touch_data.xpos; 442 | data->point.y = touch_data.ypos; 443 | 444 | if (touch_data.event == 1) 445 | { 446 | data->state = LV_INDEV_STATE_PR; 447 | } 448 | else 449 | { 450 | data->state = LV_INDEV_STATE_REL; 451 | } 452 | #endif 453 | } 454 | 455 | void onClickEmail(lv_event_t *e) 456 | { 457 | lv_obj_t *target = lv_event_get_target(e); 458 | if (lv_obj_has_state(target, LV_STATE_CHECKED)) 459 | { 460 | launchIntent(VIEW, "mailto:fbiego.fb@gmail.com"); 461 | } 462 | } 463 | void onClickWebsite(lv_event_t *e) 464 | { 465 | lv_obj_t *target = lv_event_get_target(e); 466 | if (lv_obj_has_state(target, LV_STATE_CHECKED)) 467 | { 468 | launchIntent(VIEW, "https://felix.fbiego.com/"); 469 | } 470 | } 471 | void onClickTwitter(lv_event_t *e) 472 | { 473 | lv_obj_t *target = lv_event_get_target(e); 474 | if (lv_obj_has_state(target, LV_STATE_CHECKED)) 475 | { 476 | launchIntent(VIEW, "https://twitter.com/fbiego_"); 477 | } 478 | } 479 | void onClickCall(lv_event_t *e) 480 | { 481 | lv_obj_t *target = lv_event_get_target(e); 482 | if (lv_obj_has_state(target, LV_STATE_CHECKED)) 483 | { 484 | launchIntent(DIAL, "tel:+25470*****06"); 485 | } 486 | } 487 | void onBrightnessChange(lv_event_t *e) 488 | { 489 | lv_obj_t *slider = lv_event_get_target(e); 490 | int brightness = (int)lv_slider_get_value(slider); 491 | tft.setBrightness(brightness); 492 | } 493 | 494 | void setup() 495 | { 496 | Serial.begin(115200); 497 | 498 | tft.init(); 499 | tft.initDMA(); 500 | tft.startWrite(); 501 | 502 | #ifndef PLUS 503 | ft6336u.begin(); 504 | 505 | #endif 506 | 507 | lv_init(); 508 | Serial.print("Width: "); 509 | Serial.print(screenWidth); 510 | Serial.print("\tHeight: "); 511 | Serial.println(screenHeight); 512 | 513 | if (!disp_draw_buf) 514 | { 515 | Serial.println("LVGL disp_draw_buf allocate failed!"); 516 | } 517 | else 518 | { 519 | 520 | Serial.print("Display buffer size: "); 521 | 522 | lv_disp_draw_buf_init(&draw_buf, disp_draw_buf, disp_draw_buf2, screenWidth * SCR); 523 | 524 | /* Initialize the display */ 525 | lv_disp_drv_init(&disp_drv); 526 | /* Change the following line to your display resolution */ 527 | disp_drv.hor_res = screenWidth; 528 | disp_drv.ver_res = screenHeight; 529 | disp_drv.flush_cb = my_disp_flush; 530 | disp_drv.draw_buf = &draw_buf; 531 | lv_disp_drv_register(&disp_drv); 532 | 533 | /* Initialize the input device driver */ 534 | static lv_indev_drv_t indev_drv; 535 | lv_indev_drv_init(&indev_drv); 536 | indev_drv.type = LV_INDEV_TYPE_POINTER; 537 | indev_drv.read_cb = my_touchpad_read; 538 | lv_indev_drv_register(&indev_drv); 539 | 540 | ui_init(); 541 | 542 | Serial.println("Setup done"); 543 | } 544 | 545 | initBLE(); 546 | } 547 | 548 | void loop() 549 | { 550 | lv_timer_handler(); /* let the GUI do its work */ 551 | delay(5); 552 | 553 | lv_label_set_text(ui_dateText, rtc.getTime("%A, %d %B %Y").c_str()); 554 | int hr = rtc.getHour(true); 555 | int mn = rtc.getMinute(); 556 | int sc = rtc.getSecond(); 557 | 558 | lv_img_set_src(ui_hour1, &digits[hr / 10]); 559 | lv_img_set_src(ui_hour2, &digits[hr % 10]); 560 | lv_img_set_src(ui_minute1, &digits[mn / 10]); 561 | lv_img_set_src(ui_minute2, &digits[mn % 10]); 562 | lv_img_set_src(ui_second1, &digits[sc / 10]); 563 | lv_img_set_src(ui_second2, &digits[sc % 10]); 564 | 565 | if (deviceConnected){ 566 | lv_obj_clear_flag(ui_connectIcon, LV_OBJ_FLAG_HIDDEN); 567 | } else { 568 | lv_obj_add_flag(ui_connectIcon, LV_OBJ_FLAG_HIDDEN); 569 | } 570 | } -------------------------------------------------------------------------------- /lib/lv_conf.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_conf.h 3 | * Configuration file for v8.3.0 4 | */ 5 | 6 | /* 7 | * Copy this file as `lv_conf.h` 8 | * 1. simply next to the `lvgl` folder 9 | * 2. or any other places and 10 | * - define `LV_CONF_INCLUDE_SIMPLE` 11 | * - add the path as include path 12 | */ 13 | 14 | /* clang-format off */ 15 | #if 1 /*Set it to "1" to enable content*/ 16 | 17 | #ifndef LV_CONF_H 18 | #define LV_CONF_H 19 | 20 | #include 21 | 22 | /*==================== 23 | COLOR SETTINGS 24 | *====================*/ 25 | 26 | /*Color depth: 1 (1 byte per pixel), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/ 27 | #define LV_COLOR_DEPTH 16 28 | 29 | /*Swap the 2 bytes of RGB565 color. Useful if the display has an 8-bit interface (e.g. SPI)*/ 30 | #define LV_COLOR_16_SWAP 1 31 | 32 | /*Enable features to draw on transparent background. 33 | *It's required if opa, and transform_* style properties are used. 34 | *Can be also used if the UI is above another layer, e.g. an OSD menu or video player.*/ 35 | #define LV_COLOR_SCREEN_TRANSP 0 36 | 37 | /* Adjust color mix functions rounding. GPUs might calculate color mix (blending) differently. 38 | * 0: round down, 64: round up from x.75, 128: round up from half, 192: round up from x.25, 254: round up */ 39 | #define LV_COLOR_MIX_ROUND_OFS 0 40 | 41 | /*Images pixels with this color will not be drawn if they are chroma keyed)*/ 42 | #define LV_COLOR_CHROMA_KEY lv_color_hex(0x00ff00) /*pure green*/ 43 | 44 | /*========================= 45 | MEMORY SETTINGS 46 | *=========================*/ 47 | 48 | /*1: use custom malloc/free, 0: use the built-in `lv_mem_alloc()` and `lv_mem_free()`*/ 49 | #define LV_MEM_CUSTOM 0 50 | #if LV_MEM_CUSTOM == 0 51 | /*Size of the memory available for `lv_mem_alloc()` in bytes (>= 2kB)*/ 52 | // #define LV_MEM_SIZE (64U * 1024U) /*[bytes]*/ 53 | 54 | /*Set an address for the memory pool instead of allocating it as a normal array. Can be in external SRAM too.*/ 55 | #define LV_MEM_ADR 0 /*0: unused*/ 56 | /*Instead of an address give a memory allocator that will be called to get a memory pool for LVGL. E.g. my_malloc*/ 57 | #if LV_MEM_ADR == 0 58 | #undef LV_MEM_POOL_INCLUDE 59 | #undef LV_MEM_POOL_ALLOC 60 | #endif 61 | 62 | #else /*LV_MEM_CUSTOM*/ 63 | #define LV_MEM_CUSTOM_INCLUDE /*Header for the dynamic memory function*/ 64 | #define LV_MEM_CUSTOM_ALLOC malloc 65 | #define LV_MEM_CUSTOM_FREE free 66 | #define LV_MEM_CUSTOM_REALLOC realloc 67 | #endif /*LV_MEM_CUSTOM*/ 68 | 69 | /*Number of the intermediate memory buffer used during rendering and other internal processing mechanisms. 70 | *You will see an error log message if there wasn't enough buffers. */ 71 | #define LV_MEM_BUF_MAX_NUM 16 72 | 73 | /*Use the standard `memcpy` and `memset` instead of LVGL's own functions. (Might or might not be faster).*/ 74 | #define LV_MEMCPY_MEMSET_STD 0 75 | 76 | /*==================== 77 | HAL SETTINGS 78 | *====================*/ 79 | 80 | /*Default display refresh period. LVG will redraw changed areas with this period time*/ 81 | #define LV_DISP_DEF_REFR_PERIOD 30 /*[ms]*/ 82 | 83 | /*Input device read period in milliseconds*/ 84 | #define LV_INDEV_DEF_READ_PERIOD 30 /*[ms]*/ 85 | 86 | /*Use a custom tick source that tells the elapsed time in milliseconds. 87 | *It removes the need to manually update the tick with `lv_tick_inc()`)*/ 88 | #define LV_TICK_CUSTOM 1 89 | #if LV_TICK_CUSTOM 90 | #define LV_TICK_CUSTOM_INCLUDE "Arduino.h" /*Header for the system time function*/ 91 | #define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis()) /*Expression evaluating to current system time in ms*/ 92 | #endif /*LV_TICK_CUSTOM*/ 93 | 94 | /*Default Dot Per Inch. Used to initialize default sizes such as widgets sized, style paddings. 95 | *(Not so important, you can adjust it to modify default sizes and spaces)*/ 96 | #define LV_DPI_DEF 130 /*[px/inch]*/ 97 | 98 | /*======================= 99 | * FEATURE CONFIGURATION 100 | *=======================*/ 101 | 102 | /*------------- 103 | * Drawing 104 | *-----------*/ 105 | 106 | /*Enable complex draw engine. 107 | *Required to draw shadow, gradient, rounded corners, circles, arc, skew lines, image transformations or any masks*/ 108 | #define LV_DRAW_COMPLEX 1 109 | #if LV_DRAW_COMPLEX != 0 110 | 111 | /*Allow buffering some shadow calculation. 112 | *LV_SHADOW_CACHE_SIZE is the max. shadow size to buffer, where shadow size is `shadow_width + radius` 113 | *Caching has LV_SHADOW_CACHE_SIZE^2 RAM cost*/ 114 | #define LV_SHADOW_CACHE_SIZE 0 115 | 116 | /* Set number of maximally cached circle data. 117 | * The circumference of 1/4 circle are saved for anti-aliasing 118 | * radius * 4 bytes are used per circle (the most often used radiuses are saved) 119 | * 0: to disable caching */ 120 | #define LV_CIRCLE_CACHE_SIZE 4 121 | #endif /*LV_DRAW_COMPLEX*/ 122 | 123 | /** 124 | * "Simple layers" are used when a widget has `style_opa < 255` to buffer the widget into a layer 125 | * and blend it as an image with the given opacity. 126 | * Note that `bg_opa`, `text_opa` etc don't require buffering into layer) 127 | * The widget can be buffered in smaller chunks to avoid using large buffers. 128 | * 129 | * - LV_LAYER_SIMPLE_BUF_SIZE: [bytes] the optimal target buffer size. LVGL will try to allocate it 130 | * - LV_LAYER_SIMPLE_FALLBACK_BUF_SIZE: [bytes] used if `LV_LAYER_SIMPLE_BUF_SIZE` couldn't be allocated. 131 | * 132 | * Both buffer sizes are in bytes. 133 | * "Transformed layers" (where transform_angle/zoom properties are used) use larger buffers 134 | * and can't be drawn in chunks. So these settings affects only widgets with opacity. 135 | */ 136 | #define LV_LAYER_SIMPLE_BUF_SIZE (24 * 1024) 137 | #define LV_LAYER_SIMPLE_FALLBACK_BUF_SIZE (3 * 1024) 138 | 139 | /*Default image cache size. Image caching keeps the images opened. 140 | *If only the built-in image formats are used there is no real advantage of caching. (I.e. if no new image decoder is added) 141 | *With complex image decoders (e.g. PNG or JPG) caching can save the continuous open/decode of images. 142 | *However the opened images might consume additional RAM. 143 | *0: to disable caching*/ 144 | #define LV_IMG_CACHE_DEF_SIZE 0 145 | 146 | /*Number of stops allowed per gradient. Increase this to allow more stops. 147 | *This adds (sizeof(lv_color_t) + 1) bytes per additional stop*/ 148 | #define LV_GRADIENT_MAX_STOPS 2 149 | 150 | /*Default gradient buffer size. 151 | *When LVGL calculates the gradient "maps" it can save them into a cache to avoid calculating them again. 152 | *LV_GRAD_CACHE_DEF_SIZE sets the size of this cache in bytes. 153 | *If the cache is too small the map will be allocated only while it's required for the drawing. 154 | *0 mean no caching.*/ 155 | #define LV_GRAD_CACHE_DEF_SIZE 0 156 | 157 | /*Allow dithering the gradients (to achieve visual smooth color gradients on limited color depth display) 158 | *LV_DITHER_GRADIENT implies allocating one or two more lines of the object's rendering surface 159 | *The increase in memory consumption is (32 bits * object width) plus 24 bits * object width if using error diffusion */ 160 | #define LV_DITHER_GRADIENT 0 161 | #if LV_DITHER_GRADIENT 162 | /*Add support for error diffusion dithering. 163 | *Error diffusion dithering gets a much better visual result, but implies more CPU consumption and memory when drawing. 164 | *The increase in memory consumption is (24 bits * object's width)*/ 165 | #define LV_DITHER_ERROR_DIFFUSION 0 166 | #endif 167 | 168 | /*Maximum buffer size to allocate for rotation. 169 | *Only used if software rotation is enabled in the display driver.*/ 170 | #define LV_DISP_ROT_MAX_BUF (10*1024) 171 | 172 | /*------------- 173 | * GPU 174 | *-----------*/ 175 | 176 | /*Use Arm's 2D acceleration library Arm-2D */ 177 | #define LV_USE_GPU_ARM2D 0 178 | 179 | /*Use STM32's DMA2D (aka Chrom Art) GPU*/ 180 | #define LV_USE_GPU_STM32_DMA2D 0 181 | #if LV_USE_GPU_STM32_DMA2D 182 | /*Must be defined to include path of CMSIS header of target processor 183 | e.g. "stm32f769xx.h" or "stm32f429xx.h"*/ 184 | #define LV_GPU_DMA2D_CMSIS_INCLUDE 185 | #endif 186 | 187 | /*Use SWM341's DMA2D GPU*/ 188 | #define LV_USE_GPU_SWM341_DMA2D 0 189 | #if LV_USE_GPU_SWM341_DMA2D 190 | #define LV_GPU_SWM341_DMA2D_INCLUDE "SWM341.h" 191 | #endif 192 | 193 | /*Use NXP's PXP GPU iMX RTxxx platforms*/ 194 | #define LV_USE_GPU_NXP_PXP 0 195 | #if LV_USE_GPU_NXP_PXP 196 | /*1: Add default bare metal and FreeRTOS interrupt handling routines for PXP (lv_gpu_nxp_pxp_osa.c) 197 | * and call lv_gpu_nxp_pxp_init() automatically during lv_init(). Note that symbol SDK_OS_FREE_RTOS 198 | * has to be defined in order to use FreeRTOS OSA, otherwise bare-metal implementation is selected. 199 | *0: lv_gpu_nxp_pxp_init() has to be called manually before lv_init() 200 | */ 201 | #define LV_USE_GPU_NXP_PXP_AUTO_INIT 0 202 | #endif 203 | 204 | /*Use NXP's VG-Lite GPU iMX RTxxx platforms*/ 205 | #define LV_USE_GPU_NXP_VG_LITE 0 206 | 207 | /*Use SDL renderer API*/ 208 | #define LV_USE_GPU_SDL 0 209 | #if LV_USE_GPU_SDL 210 | #define LV_GPU_SDL_INCLUDE_PATH 211 | /*Texture cache size, 8MB by default*/ 212 | #define LV_GPU_SDL_LRU_SIZE (1024 * 1024 * 8) 213 | /*Custom blend mode for mask drawing, disable if you need to link with older SDL2 lib*/ 214 | #define LV_GPU_SDL_CUSTOM_BLEND_MODE (SDL_VERSION_ATLEAST(2, 0, 6)) 215 | #endif 216 | 217 | /*------------- 218 | * Logging 219 | *-----------*/ 220 | 221 | /*Enable the log module*/ 222 | #define LV_USE_LOG 0 223 | #if LV_USE_LOG 224 | 225 | /*How important log should be added: 226 | *LV_LOG_LEVEL_TRACE A lot of logs to give detailed information 227 | *LV_LOG_LEVEL_INFO Log important events 228 | *LV_LOG_LEVEL_WARN Log if something unwanted happened but didn't cause a problem 229 | *LV_LOG_LEVEL_ERROR Only critical issue, when the system may fail 230 | *LV_LOG_LEVEL_USER Only logs added by the user 231 | *LV_LOG_LEVEL_NONE Do not log anything*/ 232 | #define LV_LOG_LEVEL LV_LOG_LEVEL_WARN 233 | 234 | /*1: Print the log with 'printf'; 235 | *0: User need to register a callback with `lv_log_register_print_cb()`*/ 236 | #define LV_LOG_PRINTF 0 237 | 238 | /*Enable/disable LV_LOG_TRACE in modules that produces a huge number of logs*/ 239 | #define LV_LOG_TRACE_MEM 1 240 | #define LV_LOG_TRACE_TIMER 1 241 | #define LV_LOG_TRACE_INDEV 1 242 | #define LV_LOG_TRACE_DISP_REFR 1 243 | #define LV_LOG_TRACE_EVENT 1 244 | #define LV_LOG_TRACE_OBJ_CREATE 1 245 | #define LV_LOG_TRACE_LAYOUT 1 246 | #define LV_LOG_TRACE_ANIM 1 247 | 248 | #endif /*LV_USE_LOG*/ 249 | 250 | /*------------- 251 | * Asserts 252 | *-----------*/ 253 | 254 | /*Enable asserts if an operation is failed or an invalid data is found. 255 | *If LV_USE_LOG is enabled an error message will be printed on failure*/ 256 | #define LV_USE_ASSERT_NULL 1 /*Check if the parameter is NULL. (Very fast, recommended)*/ 257 | #define LV_USE_ASSERT_MALLOC 1 /*Checks is the memory is successfully allocated or no. (Very fast, recommended)*/ 258 | #define LV_USE_ASSERT_STYLE 0 /*Check if the styles are properly initialized. (Very fast, recommended)*/ 259 | #define LV_USE_ASSERT_MEM_INTEGRITY 0 /*Check the integrity of `lv_mem` after critical operations. (Slow)*/ 260 | #define LV_USE_ASSERT_OBJ 0 /*Check the object's type and existence (e.g. not deleted). (Slow)*/ 261 | 262 | /*Add a custom handler when assert happens e.g. to restart the MCU*/ 263 | #define LV_ASSERT_HANDLER_INCLUDE 264 | #define LV_ASSERT_HANDLER while(1); /*Halt by default*/ 265 | 266 | /*------------- 267 | * Others 268 | *-----------*/ 269 | 270 | /*1: Show CPU usage and FPS count*/ 271 | #define LV_USE_PERF_MONITOR 0 272 | #if LV_USE_PERF_MONITOR 273 | #define LV_USE_PERF_MONITOR_POS LV_ALIGN_BOTTOM_RIGHT 274 | #endif 275 | 276 | /*1: Show the used memory and the memory fragmentation 277 | * Requires LV_MEM_CUSTOM = 0*/ 278 | #define LV_USE_MEM_MONITOR 0 279 | #if LV_USE_MEM_MONITOR 280 | #define LV_USE_MEM_MONITOR_POS LV_ALIGN_BOTTOM_LEFT 281 | #endif 282 | 283 | /*1: Draw random colored rectangles over the redrawn areas*/ 284 | #define LV_USE_REFR_DEBUG 0 285 | 286 | /*Change the built in (v)snprintf functions*/ 287 | #define LV_SPRINTF_CUSTOM 0 288 | #if LV_SPRINTF_CUSTOM 289 | #define LV_SPRINTF_INCLUDE 290 | #define lv_snprintf snprintf 291 | #define lv_vsnprintf vsnprintf 292 | #else /*LV_SPRINTF_CUSTOM*/ 293 | #define LV_SPRINTF_USE_FLOAT 1 294 | #endif /*LV_SPRINTF_CUSTOM*/ 295 | 296 | #define LV_USE_USER_DATA 1 297 | 298 | /*Garbage Collector settings 299 | *Used if lvgl is bound to higher level language and the memory is managed by that language*/ 300 | #define LV_ENABLE_GC 0 301 | #if LV_ENABLE_GC != 0 302 | #define LV_GC_INCLUDE "gc.h" /*Include Garbage Collector related things*/ 303 | #endif /*LV_ENABLE_GC*/ 304 | 305 | /*===================== 306 | * COMPILER SETTINGS 307 | *====================*/ 308 | 309 | /*For big endian systems set to 1*/ 310 | #define LV_BIG_ENDIAN_SYSTEM 0 311 | 312 | /*Define a custom attribute to `lv_tick_inc` function*/ 313 | #define LV_ATTRIBUTE_TICK_INC 314 | 315 | /*Define a custom attribute to `lv_timer_handler` function*/ 316 | #define LV_ATTRIBUTE_TIMER_HANDLER 317 | 318 | /*Define a custom attribute to `lv_disp_flush_ready` function*/ 319 | #define LV_ATTRIBUTE_FLUSH_READY 320 | 321 | /*Required alignment size for buffers*/ 322 | #define LV_ATTRIBUTE_MEM_ALIGN_SIZE 1 323 | 324 | /*Will be added where memories needs to be aligned (with -Os data might not be aligned to boundary by default). 325 | * E.g. __attribute__((aligned(4)))*/ 326 | #define LV_ATTRIBUTE_MEM_ALIGN 327 | 328 | /*Attribute to mark large constant arrays for example font's bitmaps*/ 329 | #define LV_ATTRIBUTE_LARGE_CONST 330 | 331 | /*Compiler prefix for a big array declaration in RAM*/ 332 | #define LV_ATTRIBUTE_LARGE_RAM_ARRAY 333 | 334 | /*Place performance critical functions into a faster memory (e.g RAM)*/ 335 | #define LV_ATTRIBUTE_FAST_MEM 336 | 337 | /*Prefix variables that are used in GPU accelerated operations, often these need to be placed in RAM sections that are DMA accessible*/ 338 | #define LV_ATTRIBUTE_DMA 339 | 340 | /*Export integer constant to binding. This macro is used with constants in the form of LV_ that 341 | *should also appear on LVGL binding API such as Micropython.*/ 342 | #define LV_EXPORT_CONST_INT(int_value) struct _silence_gcc_warning /*The default value just prevents GCC warning*/ 343 | 344 | /*Extend the default -32k..32k coordinate range to -4M..4M by using int32_t for coordinates instead of int16_t*/ 345 | #define LV_USE_LARGE_COORD 0 346 | 347 | /*================== 348 | * FONT USAGE 349 | *===================*/ 350 | 351 | /*Montserrat fonts with ASCII range and some symbols using bpp = 4 352 | *https://fonts.google.com/specimen/Montserrat*/ 353 | #define LV_FONT_MONTSERRAT_8 0 354 | #define LV_FONT_MONTSERRAT_10 1 355 | #define LV_FONT_MONTSERRAT_12 1 356 | #define LV_FONT_MONTSERRAT_14 1 357 | #define LV_FONT_MONTSERRAT_16 1 358 | #define LV_FONT_MONTSERRAT_18 1 359 | #define LV_FONT_MONTSERRAT_20 1 360 | #define LV_FONT_MONTSERRAT_22 1 361 | #define LV_FONT_MONTSERRAT_24 1 362 | #define LV_FONT_MONTSERRAT_26 1 363 | #define LV_FONT_MONTSERRAT_28 1 364 | #define LV_FONT_MONTSERRAT_30 0 365 | #define LV_FONT_MONTSERRAT_32 1 366 | #define LV_FONT_MONTSERRAT_34 1 367 | #define LV_FONT_MONTSERRAT_36 0 368 | #define LV_FONT_MONTSERRAT_38 0 369 | #define LV_FONT_MONTSERRAT_40 1 370 | #define LV_FONT_MONTSERRAT_42 0 371 | #define LV_FONT_MONTSERRAT_44 1 372 | #define LV_FONT_MONTSERRAT_46 0 373 | #define LV_FONT_MONTSERRAT_48 1 374 | 375 | /*Demonstrate special features*/ 376 | #define LV_FONT_MONTSERRAT_12_SUBPX 0 377 | #define LV_FONT_MONTSERRAT_28_COMPRESSED 0 /*bpp = 3*/ 378 | #define LV_FONT_DEJAVU_16_PERSIAN_HEBREW 0 /*Hebrew, Arabic, Persian letters and all their forms*/ 379 | #define LV_FONT_SIMSUN_16_CJK 0 /*1000 most common CJK radicals*/ 380 | 381 | /*Pixel perfect monospace fonts*/ 382 | #define LV_FONT_UNSCII_8 0 383 | #define LV_FONT_UNSCII_16 0 384 | 385 | /*Optionally declare custom fonts here. 386 | *You can use these fonts as default font too and they will be available globally. 387 | *E.g. #define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(my_font_1) LV_FONT_DECLARE(my_font_2)*/ 388 | #define LV_FONT_CUSTOM_DECLARE 389 | 390 | /*Always set a default font*/ 391 | #define LV_FONT_DEFAULT &lv_font_montserrat_16 392 | 393 | /*Enable handling large font and/or fonts with a lot of characters. 394 | *The limit depends on the font size, font face and bpp. 395 | *Compiler error will be triggered if a font needs it.*/ 396 | #define LV_FONT_FMT_TXT_LARGE 0 397 | 398 | /*Enables/disables support for compressed fonts.*/ 399 | #define LV_USE_FONT_COMPRESSED 0 400 | 401 | /*Enable subpixel rendering*/ 402 | #define LV_USE_FONT_SUBPX 0 403 | #if LV_USE_FONT_SUBPX 404 | /*Set the pixel order of the display. Physical order of RGB channels. Doesn't matter with "normal" fonts.*/ 405 | #define LV_FONT_SUBPX_BGR 0 /*0: RGB; 1:BGR order*/ 406 | #endif 407 | 408 | /*Enable drawing placeholders when glyph dsc is not found*/ 409 | #define LV_USE_FONT_PLACEHOLDER 1 410 | 411 | /*================= 412 | * TEXT SETTINGS 413 | *=================*/ 414 | 415 | /** 416 | * Select a character encoding for strings. 417 | * Your IDE or editor should have the same character encoding 418 | * - LV_TXT_ENC_UTF8 419 | * - LV_TXT_ENC_ASCII 420 | */ 421 | #define LV_TXT_ENC LV_TXT_ENC_UTF8 422 | 423 | /*Can break (wrap) texts on these chars*/ 424 | #define LV_TXT_BREAK_CHARS " ,.;:-_" 425 | 426 | /*If a word is at least this long, will break wherever "prettiest" 427 | *To disable, set to a value <= 0*/ 428 | #define LV_TXT_LINE_BREAK_LONG_LEN 0 429 | 430 | /*Minimum number of characters in a long word to put on a line before a break. 431 | *Depends on LV_TXT_LINE_BREAK_LONG_LEN.*/ 432 | #define LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN 3 433 | 434 | /*Minimum number of characters in a long word to put on a line after a break. 435 | *Depends on LV_TXT_LINE_BREAK_LONG_LEN.*/ 436 | #define LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN 3 437 | 438 | /*The control character to use for signalling text recoloring.*/ 439 | #define LV_TXT_COLOR_CMD "#" 440 | 441 | /*Support bidirectional texts. Allows mixing Left-to-Right and Right-to-Left texts. 442 | *The direction will be processed according to the Unicode Bidirectional Algorithm: 443 | *https://www.w3.org/International/articles/inline-bidi-markup/uba-basics*/ 444 | #define LV_USE_BIDI 0 445 | #if LV_USE_BIDI 446 | /*Set the default direction. Supported values: 447 | *`LV_BASE_DIR_LTR` Left-to-Right 448 | *`LV_BASE_DIR_RTL` Right-to-Left 449 | *`LV_BASE_DIR_AUTO` detect texts base direction*/ 450 | #define LV_BIDI_BASE_DIR_DEF LV_BASE_DIR_AUTO 451 | #endif 452 | 453 | /*Enable Arabic/Persian processing 454 | *In these languages characters should be replaced with an other form based on their position in the text*/ 455 | #define LV_USE_ARABIC_PERSIAN_CHARS 0 456 | 457 | /*================== 458 | * WIDGET USAGE 459 | *================*/ 460 | 461 | /*Documentation of the widgets: https://docs.lvgl.io/latest/en/html/widgets/index.html*/ 462 | 463 | #define LV_USE_ARC 1 464 | 465 | #define LV_USE_BAR 1 466 | 467 | #define LV_USE_BTN 1 468 | 469 | #define LV_USE_BTNMATRIX 1 470 | 471 | #define LV_USE_CANVAS 1 472 | 473 | #define LV_USE_CHECKBOX 1 474 | 475 | #define LV_USE_DROPDOWN 1 /*Requires: lv_label*/ 476 | 477 | #define LV_USE_IMG 1 /*Requires: lv_label*/ 478 | 479 | #define LV_USE_LABEL 1 480 | #if LV_USE_LABEL 481 | #define LV_LABEL_TEXT_SELECTION 1 /*Enable selecting text of the label*/ 482 | #define LV_LABEL_LONG_TXT_HINT 1 /*Store some extra info in labels to speed up drawing of very long texts*/ 483 | #endif 484 | 485 | #define LV_USE_LINE 1 486 | 487 | #define LV_USE_ROLLER 1 /*Requires: lv_label*/ 488 | #if LV_USE_ROLLER 489 | #define LV_ROLLER_INF_PAGES 7 /*Number of extra "pages" when the roller is infinite*/ 490 | #endif 491 | 492 | #define LV_USE_SLIDER 1 /*Requires: lv_bar*/ 493 | 494 | #define LV_USE_SWITCH 1 495 | 496 | #define LV_USE_TEXTAREA 1 /*Requires: lv_label*/ 497 | #if LV_USE_TEXTAREA != 0 498 | #define LV_TEXTAREA_DEF_PWD_SHOW_TIME 1500 /*ms*/ 499 | #endif 500 | 501 | #define LV_USE_TABLE 1 502 | 503 | /*================== 504 | * EXTRA COMPONENTS 505 | *==================*/ 506 | 507 | /*----------- 508 | * Widgets 509 | *----------*/ 510 | #define LV_USE_ANIMIMG 1 511 | 512 | #define LV_USE_CALENDAR 1 513 | #if LV_USE_CALENDAR 514 | #define LV_CALENDAR_WEEK_STARTS_MONDAY 0 515 | #if LV_CALENDAR_WEEK_STARTS_MONDAY 516 | #define LV_CALENDAR_DEFAULT_DAY_NAMES {"Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"} 517 | #else 518 | #define LV_CALENDAR_DEFAULT_DAY_NAMES {"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"} 519 | #endif 520 | 521 | #define LV_CALENDAR_DEFAULT_MONTH_NAMES {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"} 522 | #define LV_USE_CALENDAR_HEADER_ARROW 1 523 | #define LV_USE_CALENDAR_HEADER_DROPDOWN 1 524 | #endif /*LV_USE_CALENDAR*/ 525 | 526 | #define LV_USE_CHART 1 527 | 528 | #define LV_USE_COLORWHEEL 1 529 | 530 | #define LV_USE_IMGBTN 1 531 | 532 | #define LV_USE_KEYBOARD 1 533 | 534 | #define LV_USE_LED 1 535 | 536 | #define LV_USE_LIST 1 537 | 538 | #define LV_USE_MENU 1 539 | 540 | #define LV_USE_METER 1 541 | 542 | #define LV_USE_MSGBOX 1 543 | 544 | #define LV_USE_SPAN 1 545 | #if LV_USE_SPAN 546 | /*A line text can contain maximum num of span descriptor */ 547 | #define LV_SPAN_SNIPPET_STACK_SIZE 64 548 | #endif 549 | 550 | #define LV_USE_SPINBOX 1 551 | 552 | #define LV_USE_SPINNER 1 553 | 554 | #define LV_USE_TABVIEW 1 555 | 556 | #define LV_USE_TILEVIEW 1 557 | 558 | #define LV_USE_WIN 1 559 | 560 | /*----------- 561 | * Themes 562 | *----------*/ 563 | 564 | /*A simple, impressive and very complete theme*/ 565 | #define LV_USE_THEME_DEFAULT 1 566 | #if LV_USE_THEME_DEFAULT 567 | 568 | /*0: Light mode; 1: Dark mode*/ 569 | #define LV_THEME_DEFAULT_DARK 0 570 | 571 | /*1: Enable grow on press*/ 572 | #define LV_THEME_DEFAULT_GROW 1 573 | 574 | /*Default transition time in [ms]*/ 575 | #define LV_THEME_DEFAULT_TRANSITION_TIME 80 576 | #endif /*LV_USE_THEME_DEFAULT*/ 577 | 578 | /*A very simple theme that is a good starting point for a custom theme*/ 579 | #define LV_USE_THEME_BASIC 1 580 | 581 | /*A theme designed for monochrome displays*/ 582 | #define LV_USE_THEME_MONO 1 583 | 584 | /*----------- 585 | * Layouts 586 | *----------*/ 587 | 588 | /*A layout similar to Flexbox in CSS.*/ 589 | #define LV_USE_FLEX 1 590 | 591 | /*A layout similar to Grid in CSS.*/ 592 | #define LV_USE_GRID 1 593 | 594 | /*--------------------- 595 | * 3rd party libraries 596 | *--------------------*/ 597 | 598 | /*File system interfaces for common APIs */ 599 | 600 | /*API for fopen, fread, etc*/ 601 | #define LV_USE_FS_STDIO 0 602 | #if LV_USE_FS_STDIO 603 | #define LV_FS_STDIO_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/ 604 | #define LV_FS_STDIO_PATH "" /*Set the working directory. File/directory paths will be appended to it.*/ 605 | #define LV_FS_STDIO_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/ 606 | #endif 607 | 608 | /*API for open, read, etc*/ 609 | #define LV_USE_FS_POSIX 0 610 | #if LV_USE_FS_POSIX 611 | #define LV_FS_POSIX_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/ 612 | #define LV_FS_POSIX_PATH "" /*Set the working directory. File/directory paths will be appended to it.*/ 613 | #define LV_FS_POSIX_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/ 614 | #endif 615 | 616 | /*API for CreateFile, ReadFile, etc*/ 617 | #define LV_USE_FS_WIN32 0 618 | #if LV_USE_FS_WIN32 619 | #define LV_FS_WIN32_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/ 620 | #define LV_FS_WIN32_PATH "" /*Set the working directory. File/directory paths will be appended to it.*/ 621 | #define LV_FS_WIN32_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/ 622 | #endif 623 | 624 | /*API for FATFS (needs to be added separately). Uses f_open, f_read, etc*/ 625 | #define LV_USE_FS_FATFS 0 626 | #if LV_USE_FS_FATFS 627 | #define LV_FS_FATFS_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/ 628 | #define LV_FS_FATFS_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/ 629 | #endif 630 | 631 | /*PNG decoder library*/ 632 | #define LV_USE_PNG 0 633 | 634 | /*BMP decoder library*/ 635 | #define LV_USE_BMP 0 636 | 637 | /* JPG + split JPG decoder library. 638 | * Split JPG is a custom format optimized for embedded systems. */ 639 | #define LV_USE_SJPG 0 640 | 641 | /*GIF decoder library*/ 642 | #define LV_USE_GIF 0 643 | 644 | /*QR code library*/ 645 | #define LV_USE_QRCODE 0 646 | 647 | /*FreeType library*/ 648 | #define LV_USE_FREETYPE 0 649 | #if LV_USE_FREETYPE 650 | /*Memory used by FreeType to cache characters [bytes] (-1: no caching)*/ 651 | #define LV_FREETYPE_CACHE_SIZE (16 * 1024) 652 | #if LV_FREETYPE_CACHE_SIZE >= 0 653 | /* 1: bitmap cache use the sbit cache, 0:bitmap cache use the image cache. */ 654 | /* sbit cache:it is much more memory efficient for small bitmaps(font size < 256) */ 655 | /* if font size >= 256, must be configured as image cache */ 656 | #define LV_FREETYPE_SBIT_CACHE 0 657 | /* Maximum number of opened FT_Face/FT_Size objects managed by this cache instance. */ 658 | /* (0:use system defaults) */ 659 | #define LV_FREETYPE_CACHE_FT_FACES 0 660 | #define LV_FREETYPE_CACHE_FT_SIZES 0 661 | #endif 662 | #endif 663 | 664 | /*Rlottie library*/ 665 | #define LV_USE_RLOTTIE 0 666 | 667 | /*FFmpeg library for image decoding and playing videos 668 | *Supports all major image formats so do not enable other image decoder with it*/ 669 | #define LV_USE_FFMPEG 0 670 | #if LV_USE_FFMPEG 671 | /*Dump input information to stderr*/ 672 | #define LV_FFMPEG_DUMP_FORMAT 0 673 | #endif 674 | 675 | /*----------- 676 | * Others 677 | *----------*/ 678 | 679 | /*1: Enable API to take snapshot for object*/ 680 | #define LV_USE_SNAPSHOT 0 681 | 682 | /*1: Enable Monkey test*/ 683 | #define LV_USE_MONKEY 0 684 | 685 | /*1: Enable grid navigation*/ 686 | #define LV_USE_GRIDNAV 0 687 | 688 | /*1: Enable lv_obj fragment*/ 689 | #define LV_USE_FRAGMENT 0 690 | 691 | /*1: Support using images as font in label or span widgets */ 692 | #define LV_USE_IMGFONT 0 693 | 694 | /*1: Enable a published subscriber based messaging system */ 695 | #define LV_USE_MSG 0 696 | 697 | /*1: Enable Pinyin input method*/ 698 | /*Requires: lv_keyboard*/ 699 | #define LV_USE_IME_PINYIN 0 700 | #if LV_USE_IME_PINYIN 701 | /*1: Use default thesaurus*/ 702 | /*If you do not use the default thesaurus, be sure to use `lv_ime_pinyin` after setting the thesauruss*/ 703 | #define LV_IME_PINYIN_USE_DEFAULT_DICT 1 704 | /*Set the maximum number of candidate panels that can be displayed*/ 705 | /*This needs to be adjusted according to the size of the screen*/ 706 | #define LV_IME_PINYIN_CAND_TEXT_NUM 6 707 | 708 | /*Use 9 key input(k9)*/ 709 | #define LV_IME_PINYIN_USE_K9_MODE 1 710 | #if LV_IME_PINYIN_USE_K9_MODE == 1 711 | #define LV_IME_PINYIN_K9_CAND_TEXT_NUM 3 712 | #endif // LV_IME_PINYIN_USE_K9_MODE 713 | #endif 714 | 715 | /*================== 716 | * EXAMPLES 717 | *==================*/ 718 | 719 | /*Enable the examples to be built with the library*/ 720 | #define LV_BUILD_EXAMPLES 1 721 | 722 | /*=================== 723 | * DEMO USAGE 724 | ====================*/ 725 | 726 | /*Show some widget. It might be required to increase `LV_MEM_SIZE` */ 727 | #define LV_USE_DEMO_WIDGETS 1 728 | #if LV_USE_DEMO_WIDGETS 729 | #define LV_DEMO_WIDGETS_SLIDESHOW 0 730 | #endif 731 | 732 | /*Demonstrate the usage of encoder and keyboard*/ 733 | #define LV_USE_DEMO_KEYPAD_AND_ENCODER 0 734 | 735 | /*Benchmark your system*/ 736 | #define LV_USE_DEMO_BENCHMARK 0 737 | #if LV_USE_DEMO_BENCHMARK 738 | /*Use RGB565A8 images with 16 bit color depth instead of ARGB8565*/ 739 | #define LV_DEMO_BENCHMARK_RGB565A8 0 740 | #endif 741 | 742 | /*Stress test for LVGL*/ 743 | #define LV_USE_DEMO_STRESS 0 744 | 745 | /*Music player demo*/ 746 | #define LV_USE_DEMO_MUSIC 0 747 | #if LV_USE_DEMO_MUSIC 748 | #define LV_DEMO_MUSIC_SQUARE 0 749 | #define LV_DEMO_MUSIC_LANDSCAPE 0 750 | #define LV_DEMO_MUSIC_ROUND 0 751 | #define LV_DEMO_MUSIC_LARGE 0 752 | #define LV_DEMO_MUSIC_AUTO_PLAY 0 753 | #endif 754 | 755 | /*--END OF LV_CONF_H--*/ 756 | 757 | #endif /*LV_CONF_H*/ 758 | 759 | #endif /*End of "Content enable"*/ 760 | -------------------------------------------------------------------------------- /src/ui.c: -------------------------------------------------------------------------------- 1 | // SquareLine LVGL GENERATED FILE 2 | // EDITOR VERSION: SquareLine Studio 1.1.0 3 | // LVGL VERSION: 8.2 4 | // PROJECT: card 5 | 6 | #include "ui.h" 7 | #include "ui_helpers.h" 8 | 9 | ///////////////////// VARIABLES //////////////////// 10 | void ui_event_mainScreen(lv_event_t * e); 11 | lv_obj_t * ui_mainScreen; 12 | lv_obj_t * ui_nameLabel; 13 | lv_obj_t * ui_aboutLabel; 14 | void ui_event_emailPanel(lv_event_t * e); 15 | lv_obj_t * ui_emailPanel; 16 | lv_obj_t * ui_emailIcon; 17 | lv_obj_t * ui_emailText; 18 | void ui_event_websitePanel(lv_event_t * e); 19 | lv_obj_t * ui_websitePanel; 20 | lv_obj_t * ui_websiteIcon; 21 | lv_obj_t * ui_websiteText; 22 | void ui_event_twitterPanel(lv_event_t * e); 23 | lv_obj_t * ui_twitterPanel; 24 | lv_obj_t * ui_twitterIcon; 25 | lv_obj_t * ui_twitterText; 26 | void ui_event_phonePanel(lv_event_t * e); 27 | lv_obj_t * ui_phonePanel; 28 | lv_obj_t * ui_phoneIcon; 29 | lv_obj_t * ui_phoneText; 30 | lv_obj_t * ui_alertPanel; 31 | lv_obj_t * ui_connectIcon; 32 | void ui_event_clockScreen(lv_event_t * e); 33 | lv_obj_t * ui_clockScreen; 34 | lv_obj_t * ui_clockPanel; 35 | lv_obj_t * ui_hour1; 36 | lv_obj_t * ui_hour2; 37 | lv_obj_t * ui_minute1; 38 | lv_obj_t * ui_minute2; 39 | lv_obj_t * ui_second1; 40 | lv_obj_t * ui_second2; 41 | lv_obj_t * ui_label1; 42 | lv_obj_t * ui_label2; 43 | lv_obj_t * ui_dateText; 44 | lv_obj_t * ui_weatherIcon; 45 | lv_obj_t * ui_weatherTemp; 46 | lv_obj_t * ui_weatherLocation; 47 | void ui_event_brightnessSlider(lv_event_t * e); 48 | lv_obj_t * ui_brightnessSlider; 49 | lv_obj_t * ui_brightnessIcon; 50 | 51 | ///////////////////// TEST LVGL SETTINGS //////////////////// 52 | #if LV_COLOR_DEPTH != 16 53 | #error "LV_COLOR_DEPTH should be 16bit to match SquareLine Studio's settings" 54 | #endif 55 | #if LV_COLOR_16_SWAP !=1 56 | #error "LV_COLOR_16_SWAP should be 1 to match SquareLine Studio's settings" 57 | #endif 58 | 59 | ///////////////////// ANIMATIONS //////////////////// 60 | 61 | ///////////////////// FUNCTIONS //////////////////// 62 | void ui_event_mainScreen(lv_event_t * e) 63 | { 64 | lv_event_code_t event_code = lv_event_get_code(e); 65 | lv_obj_t * target = lv_event_get_target(e); 66 | if(event_code == LV_EVENT_GESTURE && lv_indev_get_gesture_dir(lv_indev_get_act()) == LV_DIR_LEFT) { 67 | _ui_screen_change(ui_clockScreen, LV_SCR_LOAD_ANIM_MOVE_LEFT, 500, 0); 68 | } 69 | } 70 | void ui_event_emailPanel(lv_event_t * e) 71 | { 72 | lv_event_code_t event_code = lv_event_get_code(e); 73 | lv_obj_t * target = lv_event_get_target(e); 74 | if(event_code == LV_EVENT_VALUE_CHANGED && lv_obj_has_state(target, LV_STATE_CHECKED)) { 75 | _ui_label_set_property(ui_emailText, _UI_LABEL_PROPERTY_TEXT, "fbiego.fb@gmail.com"); 76 | } 77 | if(event_code == LV_EVENT_VALUE_CHANGED && !lv_obj_has_state(target, LV_STATE_CHECKED)) { 78 | _ui_label_set_property(ui_emailText, _UI_LABEL_PROPERTY_TEXT, ""); 79 | } 80 | if(event_code == LV_EVENT_CLICKED) { 81 | onClickEmail(e); 82 | } 83 | } 84 | void ui_event_websitePanel(lv_event_t * e) 85 | { 86 | lv_event_code_t event_code = lv_event_get_code(e); 87 | lv_obj_t * target = lv_event_get_target(e); 88 | if(event_code == LV_EVENT_VALUE_CHANGED && lv_obj_has_state(target, LV_STATE_CHECKED)) { 89 | _ui_label_set_property(ui_websiteText, _UI_LABEL_PROPERTY_TEXT, "felix.fbiego.com"); 90 | } 91 | if(event_code == LV_EVENT_VALUE_CHANGED && !lv_obj_has_state(target, LV_STATE_CHECKED)) { 92 | _ui_label_set_property(ui_websiteText, _UI_LABEL_PROPERTY_TEXT, ""); 93 | } 94 | if(event_code == LV_EVENT_CLICKED) { 95 | onClickWebsite(e); 96 | } 97 | } 98 | void ui_event_twitterPanel(lv_event_t * e) 99 | { 100 | lv_event_code_t event_code = lv_event_get_code(e); 101 | lv_obj_t * target = lv_event_get_target(e); 102 | if(event_code == LV_EVENT_VALUE_CHANGED && lv_obj_has_state(target, LV_STATE_CHECKED)) { 103 | _ui_label_set_property(ui_twitterText, _UI_LABEL_PROPERTY_TEXT, "@fbiego_"); 104 | } 105 | if(event_code == LV_EVENT_VALUE_CHANGED && !lv_obj_has_state(target, LV_STATE_CHECKED)) { 106 | _ui_label_set_property(ui_twitterText, _UI_LABEL_PROPERTY_TEXT, ""); 107 | } 108 | if(event_code == LV_EVENT_CLICKED) { 109 | onClickTwitter(e); 110 | } 111 | } 112 | void ui_event_phonePanel(lv_event_t * e) 113 | { 114 | lv_event_code_t event_code = lv_event_get_code(e); 115 | lv_obj_t * target = lv_event_get_target(e); 116 | if(event_code == LV_EVENT_VALUE_CHANGED && lv_obj_has_state(target, LV_STATE_CHECKED)) { 117 | _ui_label_set_property(ui_phoneText, _UI_LABEL_PROPERTY_TEXT, "+254 7** *** *06"); 118 | } 119 | if(event_code == LV_EVENT_VALUE_CHANGED && !lv_obj_has_state(target, LV_STATE_CHECKED)) { 120 | _ui_label_set_property(ui_phoneText, _UI_LABEL_PROPERTY_TEXT, ""); 121 | } 122 | if(event_code == LV_EVENT_CLICKED) { 123 | onClickCall(e); 124 | } 125 | } 126 | void ui_event_clockScreen(lv_event_t * e) 127 | { 128 | lv_event_code_t event_code = lv_event_get_code(e); 129 | lv_obj_t * target = lv_event_get_target(e); 130 | if(event_code == LV_EVENT_GESTURE && lv_indev_get_gesture_dir(lv_indev_get_act()) == LV_DIR_RIGHT) { 131 | _ui_screen_change(ui_mainScreen, LV_SCR_LOAD_ANIM_MOVE_RIGHT, 500, 0); 132 | } 133 | } 134 | void ui_event_brightnessSlider(lv_event_t * e) 135 | { 136 | lv_event_code_t event_code = lv_event_get_code(e); 137 | lv_obj_t * target = lv_event_get_target(e); 138 | if(event_code == LV_EVENT_VALUE_CHANGED) { 139 | onBrightnessChange(e); 140 | } 141 | } 142 | 143 | ///////////////////// SCREENS //////////////////// 144 | void ui_mainScreen_screen_init(void) 145 | { 146 | ui_mainScreen = lv_obj_create(NULL); 147 | lv_obj_clear_flag(ui_mainScreen, LV_OBJ_FLAG_SCROLLABLE); /// Flags 148 | lv_obj_set_style_bg_color(ui_mainScreen, lv_color_hex(0x000000), LV_PART_MAIN | LV_STATE_DEFAULT); 149 | lv_obj_set_style_bg_opa(ui_mainScreen, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 150 | lv_obj_set_style_bg_img_src(ui_mainScreen, &ui_img_236433794, LV_PART_MAIN | LV_STATE_DEFAULT); 151 | lv_obj_set_style_bg_img_opa(ui_mainScreen, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 152 | 153 | ui_nameLabel = lv_label_create(ui_mainScreen); 154 | lv_obj_set_width(ui_nameLabel, LV_SIZE_CONTENT); /// 1 155 | lv_obj_set_height(ui_nameLabel, LV_SIZE_CONTENT); /// 1 156 | lv_obj_set_x(ui_nameLabel, 20); 157 | lv_obj_set_y(ui_nameLabel, 40); 158 | lv_label_set_text(ui_nameLabel, "Felix Biego"); 159 | lv_obj_set_style_text_font(ui_nameLabel, &lv_font_montserrat_40, LV_PART_MAIN | LV_STATE_DEFAULT); 160 | 161 | ui_aboutLabel = lv_label_create(ui_mainScreen); 162 | lv_obj_set_width(ui_aboutLabel, 440); 163 | lv_obj_set_height(ui_aboutLabel, LV_SIZE_CONTENT); /// 1 164 | lv_obj_set_x(ui_aboutLabel, 20); 165 | lv_obj_set_y(ui_aboutLabel, 100); 166 | lv_label_set_long_mode(ui_aboutLabel, LV_LABEL_LONG_SCROLL_CIRCULAR); 167 | lv_label_set_text(ui_aboutLabel, "Software Engineer | Embedded Systems Developer | IoT |"); 168 | lv_label_set_recolor(ui_aboutLabel, "true"); 169 | lv_obj_set_style_text_color(ui_aboutLabel, lv_color_hex(0x78D53A), LV_PART_MAIN | LV_STATE_DEFAULT); 170 | lv_obj_set_style_text_opa(ui_aboutLabel, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 171 | lv_obj_set_style_text_font(ui_aboutLabel, &lv_font_montserrat_20, LV_PART_MAIN | LV_STATE_DEFAULT); 172 | 173 | ui_emailPanel = lv_obj_create(ui_mainScreen); 174 | lv_obj_set_width(ui_emailPanel, LV_SIZE_CONTENT); /// 1 175 | lv_obj_set_height(ui_emailPanel, LV_SIZE_CONTENT); /// 50 176 | lv_obj_set_x(ui_emailPanel, 20); 177 | lv_obj_set_y(ui_emailPanel, 160); 178 | lv_obj_add_flag(ui_emailPanel, LV_OBJ_FLAG_CHECKABLE); /// Flags 179 | lv_obj_clear_flag(ui_emailPanel, LV_OBJ_FLAG_SCROLLABLE); /// Flags 180 | lv_obj_set_style_radius(ui_emailPanel, 50, LV_PART_MAIN | LV_STATE_DEFAULT); 181 | lv_obj_set_style_bg_color(ui_emailPanel, lv_color_hex(0x6CBE34), LV_PART_MAIN | LV_STATE_DEFAULT); 182 | lv_obj_set_style_bg_opa(ui_emailPanel, 150, LV_PART_MAIN | LV_STATE_DEFAULT); 183 | lv_obj_set_style_border_width(ui_emailPanel, 0, LV_PART_MAIN | LV_STATE_DEFAULT); 184 | lv_obj_set_style_pad_left(ui_emailPanel, 15, LV_PART_MAIN | LV_STATE_DEFAULT); 185 | lv_obj_set_style_pad_right(ui_emailPanel, 15, LV_PART_MAIN | LV_STATE_DEFAULT); 186 | lv_obj_set_style_pad_top(ui_emailPanel, 5, LV_PART_MAIN | LV_STATE_DEFAULT); 187 | lv_obj_set_style_pad_bottom(ui_emailPanel, 5, LV_PART_MAIN | LV_STATE_DEFAULT); 188 | 189 | ui_emailIcon = lv_img_create(ui_emailPanel); 190 | lv_img_set_src(ui_emailIcon, &ui_img_email_png); 191 | lv_obj_set_width(ui_emailIcon, LV_SIZE_CONTENT); /// 1 192 | lv_obj_set_height(ui_emailIcon, LV_SIZE_CONTENT); /// 1 193 | lv_obj_set_align(ui_emailIcon, LV_ALIGN_LEFT_MID); 194 | lv_obj_add_flag(ui_emailIcon, LV_OBJ_FLAG_ADV_HITTEST); /// Flags 195 | lv_obj_clear_flag(ui_emailIcon, LV_OBJ_FLAG_SCROLLABLE); /// Flags 196 | 197 | ui_emailText = lv_label_create(ui_emailPanel); 198 | lv_obj_set_width(ui_emailText, LV_SIZE_CONTENT); /// 1 199 | lv_obj_set_height(ui_emailText, LV_SIZE_CONTENT); /// 1 200 | lv_obj_set_x(ui_emailText, 30); 201 | lv_obj_set_y(ui_emailText, 0); 202 | lv_obj_set_align(ui_emailText, LV_ALIGN_LEFT_MID); 203 | lv_label_set_text(ui_emailText, ""); 204 | 205 | ui_websitePanel = lv_obj_create(ui_mainScreen); 206 | lv_obj_set_width(ui_websitePanel, LV_SIZE_CONTENT); /// 1 207 | lv_obj_set_height(ui_websitePanel, LV_SIZE_CONTENT); /// 50 208 | lv_obj_set_x(ui_websitePanel, 20); 209 | lv_obj_set_y(ui_websitePanel, 240); 210 | lv_obj_add_flag(ui_websitePanel, LV_OBJ_FLAG_CHECKABLE); /// Flags 211 | lv_obj_clear_flag(ui_websitePanel, LV_OBJ_FLAG_SCROLLABLE); /// Flags 212 | lv_obj_set_style_radius(ui_websitePanel, 50, LV_PART_MAIN | LV_STATE_DEFAULT); 213 | lv_obj_set_style_bg_color(ui_websitePanel, lv_color_hex(0x6CBE34), LV_PART_MAIN | LV_STATE_DEFAULT); 214 | lv_obj_set_style_bg_opa(ui_websitePanel, 150, LV_PART_MAIN | LV_STATE_DEFAULT); 215 | lv_obj_set_style_border_width(ui_websitePanel, 0, LV_PART_MAIN | LV_STATE_DEFAULT); 216 | lv_obj_set_style_pad_left(ui_websitePanel, 15, LV_PART_MAIN | LV_STATE_DEFAULT); 217 | lv_obj_set_style_pad_right(ui_websitePanel, 15, LV_PART_MAIN | LV_STATE_DEFAULT); 218 | lv_obj_set_style_pad_top(ui_websitePanel, 5, LV_PART_MAIN | LV_STATE_DEFAULT); 219 | lv_obj_set_style_pad_bottom(ui_websitePanel, 5, LV_PART_MAIN | LV_STATE_DEFAULT); 220 | 221 | ui_websiteIcon = lv_img_create(ui_websitePanel); 222 | lv_img_set_src(ui_websiteIcon, &ui_img_web_png); 223 | lv_obj_set_width(ui_websiteIcon, LV_SIZE_CONTENT); /// 1 224 | lv_obj_set_height(ui_websiteIcon, LV_SIZE_CONTENT); /// 1 225 | lv_obj_set_align(ui_websiteIcon, LV_ALIGN_LEFT_MID); 226 | lv_obj_add_flag(ui_websiteIcon, LV_OBJ_FLAG_ADV_HITTEST); /// Flags 227 | lv_obj_clear_flag(ui_websiteIcon, LV_OBJ_FLAG_SCROLLABLE); /// Flags 228 | 229 | ui_websiteText = lv_label_create(ui_websitePanel); 230 | lv_obj_set_width(ui_websiteText, LV_SIZE_CONTENT); /// 1 231 | lv_obj_set_height(ui_websiteText, LV_SIZE_CONTENT); /// 1 232 | lv_obj_set_x(ui_websiteText, 30); 233 | lv_obj_set_y(ui_websiteText, 0); 234 | lv_obj_set_align(ui_websiteText, LV_ALIGN_LEFT_MID); 235 | lv_label_set_text(ui_websiteText, ""); 236 | 237 | ui_twitterPanel = lv_obj_create(ui_mainScreen); 238 | lv_obj_set_width(ui_twitterPanel, LV_SIZE_CONTENT); /// 1 239 | lv_obj_set_height(ui_twitterPanel, LV_SIZE_CONTENT); /// 50 240 | lv_obj_set_x(ui_twitterPanel, 20); 241 | lv_obj_set_y(ui_twitterPanel, 280); 242 | lv_obj_add_flag(ui_twitterPanel, LV_OBJ_FLAG_CHECKABLE); /// Flags 243 | lv_obj_clear_flag(ui_twitterPanel, LV_OBJ_FLAG_SCROLLABLE); /// Flags 244 | lv_obj_set_style_radius(ui_twitterPanel, 50, LV_PART_MAIN | LV_STATE_DEFAULT); 245 | lv_obj_set_style_bg_color(ui_twitterPanel, lv_color_hex(0x6CBE34), LV_PART_MAIN | LV_STATE_DEFAULT); 246 | lv_obj_set_style_bg_opa(ui_twitterPanel, 150, LV_PART_MAIN | LV_STATE_DEFAULT); 247 | lv_obj_set_style_border_width(ui_twitterPanel, 0, LV_PART_MAIN | LV_STATE_DEFAULT); 248 | lv_obj_set_style_pad_left(ui_twitterPanel, 15, LV_PART_MAIN | LV_STATE_DEFAULT); 249 | lv_obj_set_style_pad_right(ui_twitterPanel, 15, LV_PART_MAIN | LV_STATE_DEFAULT); 250 | lv_obj_set_style_pad_top(ui_twitterPanel, 5, LV_PART_MAIN | LV_STATE_DEFAULT); 251 | lv_obj_set_style_pad_bottom(ui_twitterPanel, 5, LV_PART_MAIN | LV_STATE_DEFAULT); 252 | 253 | ui_twitterIcon = lv_img_create(ui_twitterPanel); 254 | lv_img_set_src(ui_twitterIcon, &ui_img_1668805065); 255 | lv_obj_set_width(ui_twitterIcon, LV_SIZE_CONTENT); /// 1 256 | lv_obj_set_height(ui_twitterIcon, LV_SIZE_CONTENT); /// 1 257 | lv_obj_set_align(ui_twitterIcon, LV_ALIGN_LEFT_MID); 258 | lv_obj_add_flag(ui_twitterIcon, LV_OBJ_FLAG_ADV_HITTEST); /// Flags 259 | lv_obj_clear_flag(ui_twitterIcon, LV_OBJ_FLAG_SCROLLABLE); /// Flags 260 | 261 | ui_twitterText = lv_label_create(ui_twitterPanel); 262 | lv_obj_set_width(ui_twitterText, LV_SIZE_CONTENT); /// 1 263 | lv_obj_set_height(ui_twitterText, LV_SIZE_CONTENT); /// 1 264 | lv_obj_set_x(ui_twitterText, 30); 265 | lv_obj_set_y(ui_twitterText, 0); 266 | lv_obj_set_align(ui_twitterText, LV_ALIGN_LEFT_MID); 267 | lv_label_set_text(ui_twitterText, ""); 268 | 269 | ui_phonePanel = lv_obj_create(ui_mainScreen); 270 | lv_obj_set_width(ui_phonePanel, LV_SIZE_CONTENT); /// 1 271 | lv_obj_set_height(ui_phonePanel, LV_SIZE_CONTENT); /// 50 272 | lv_obj_set_x(ui_phonePanel, 20); 273 | lv_obj_set_y(ui_phonePanel, 200); 274 | lv_obj_add_flag(ui_phonePanel, LV_OBJ_FLAG_CHECKABLE); /// Flags 275 | lv_obj_clear_flag(ui_phonePanel, LV_OBJ_FLAG_SCROLLABLE); /// Flags 276 | lv_obj_set_style_radius(ui_phonePanel, 50, LV_PART_MAIN | LV_STATE_DEFAULT); 277 | lv_obj_set_style_bg_color(ui_phonePanel, lv_color_hex(0x6CBE34), LV_PART_MAIN | LV_STATE_DEFAULT); 278 | lv_obj_set_style_bg_opa(ui_phonePanel, 150, LV_PART_MAIN | LV_STATE_DEFAULT); 279 | lv_obj_set_style_border_width(ui_phonePanel, 0, LV_PART_MAIN | LV_STATE_DEFAULT); 280 | lv_obj_set_style_pad_left(ui_phonePanel, 15, LV_PART_MAIN | LV_STATE_DEFAULT); 281 | lv_obj_set_style_pad_right(ui_phonePanel, 15, LV_PART_MAIN | LV_STATE_DEFAULT); 282 | lv_obj_set_style_pad_top(ui_phonePanel, 5, LV_PART_MAIN | LV_STATE_DEFAULT); 283 | lv_obj_set_style_pad_bottom(ui_phonePanel, 5, LV_PART_MAIN | LV_STATE_DEFAULT); 284 | 285 | ui_phoneIcon = lv_img_create(ui_phonePanel); 286 | lv_img_set_src(ui_phoneIcon, &ui_img_1276322231); 287 | lv_obj_set_width(ui_phoneIcon, LV_SIZE_CONTENT); /// 1 288 | lv_obj_set_height(ui_phoneIcon, LV_SIZE_CONTENT); /// 1 289 | lv_obj_set_align(ui_phoneIcon, LV_ALIGN_LEFT_MID); 290 | lv_obj_add_flag(ui_phoneIcon, LV_OBJ_FLAG_ADV_HITTEST); /// Flags 291 | lv_obj_clear_flag(ui_phoneIcon, LV_OBJ_FLAG_SCROLLABLE); /// Flags 292 | 293 | ui_phoneText = lv_label_create(ui_phonePanel); 294 | lv_obj_set_width(ui_phoneText, LV_SIZE_CONTENT); /// 1 295 | lv_obj_set_height(ui_phoneText, LV_SIZE_CONTENT); /// 1 296 | lv_obj_set_x(ui_phoneText, 30); 297 | lv_obj_set_y(ui_phoneText, 0); 298 | lv_obj_set_align(ui_phoneText, LV_ALIGN_LEFT_MID); 299 | lv_label_set_text(ui_phoneText, ""); 300 | 301 | ui_alertPanel = lv_obj_create(ui_mainScreen); 302 | lv_obj_set_width(ui_alertPanel, 480); 303 | lv_obj_set_height(ui_alertPanel, 320); 304 | lv_obj_set_align(ui_alertPanel, LV_ALIGN_CENTER); 305 | lv_obj_add_flag(ui_alertPanel, LV_OBJ_FLAG_HIDDEN); /// Flags 306 | lv_obj_clear_flag(ui_alertPanel, LV_OBJ_FLAG_SCROLLABLE); /// Flags 307 | lv_obj_set_style_radius(ui_alertPanel, 0, LV_PART_MAIN | LV_STATE_DEFAULT); 308 | lv_obj_set_style_bg_color(ui_alertPanel, lv_color_hex(0x000000), LV_PART_MAIN | LV_STATE_DEFAULT); 309 | lv_obj_set_style_bg_opa(ui_alertPanel, 220, LV_PART_MAIN | LV_STATE_DEFAULT); 310 | lv_obj_set_style_border_width(ui_alertPanel, 0, LV_PART_MAIN | LV_STATE_DEFAULT); 311 | 312 | ui_connectIcon = lv_img_create(ui_mainScreen); 313 | lv_img_set_src(ui_connectIcon, &ui_img_wifi_png); 314 | lv_obj_set_width(ui_connectIcon, LV_SIZE_CONTENT); /// 1 315 | lv_obj_set_height(ui_connectIcon, LV_SIZE_CONTENT); /// 1 316 | lv_obj_set_x(ui_connectIcon, 228); 317 | lv_obj_set_y(ui_connectIcon, 149); 318 | lv_obj_set_align(ui_connectIcon, LV_ALIGN_CENTER); 319 | lv_obj_add_flag(ui_connectIcon, LV_OBJ_FLAG_ADV_HITTEST); /// Flags 320 | lv_obj_clear_flag(ui_connectIcon, LV_OBJ_FLAG_SCROLLABLE); /// Flags 321 | lv_obj_set_style_img_recolor(ui_connectIcon, lv_color_hex(0x6FE022), LV_PART_MAIN | LV_STATE_DEFAULT); 322 | lv_obj_set_style_img_recolor_opa(ui_connectIcon, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 323 | 324 | lv_obj_add_event_cb(ui_emailPanel, ui_event_emailPanel, LV_EVENT_ALL, NULL); 325 | lv_obj_add_event_cb(ui_websitePanel, ui_event_websitePanel, LV_EVENT_ALL, NULL); 326 | lv_obj_add_event_cb(ui_twitterPanel, ui_event_twitterPanel, LV_EVENT_ALL, NULL); 327 | lv_obj_add_event_cb(ui_phonePanel, ui_event_phonePanel, LV_EVENT_ALL, NULL); 328 | lv_obj_add_event_cb(ui_mainScreen, ui_event_mainScreen, LV_EVENT_ALL, NULL); 329 | 330 | } 331 | void ui_clockScreen_screen_init(void) 332 | { 333 | ui_clockScreen = lv_obj_create(NULL); 334 | lv_obj_clear_flag(ui_clockScreen, LV_OBJ_FLAG_SCROLLABLE); /// Flags 335 | lv_obj_set_style_bg_color(ui_clockScreen, lv_color_hex(0x000000), LV_PART_MAIN | LV_STATE_DEFAULT); 336 | lv_obj_set_style_bg_opa(ui_clockScreen, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 337 | lv_obj_set_style_bg_img_src(ui_clockScreen, &ui_img_236433794, LV_PART_MAIN | LV_STATE_DEFAULT); 338 | lv_obj_set_style_bg_img_opa(ui_clockScreen, 100, LV_PART_MAIN | LV_STATE_DEFAULT); 339 | 340 | ui_clockPanel = lv_obj_create(ui_clockScreen); 341 | lv_obj_set_width(ui_clockPanel, 400); 342 | lv_obj_set_height(ui_clockPanel, 100); 343 | lv_obj_set_x(ui_clockPanel, 0); 344 | lv_obj_set_y(ui_clockPanel, 41); 345 | lv_obj_set_align(ui_clockPanel, LV_ALIGN_TOP_MID); 346 | lv_obj_clear_flag(ui_clockPanel, LV_OBJ_FLAG_SCROLLABLE); /// Flags 347 | lv_obj_set_style_radius(ui_clockPanel, 10, LV_PART_MAIN | LV_STATE_DEFAULT); 348 | lv_obj_set_style_bg_color(ui_clockPanel, lv_color_hex(0xFFFFFF), LV_PART_MAIN | LV_STATE_DEFAULT); 349 | lv_obj_set_style_bg_opa(ui_clockPanel, 0, LV_PART_MAIN | LV_STATE_DEFAULT); 350 | lv_obj_set_style_border_color(ui_clockPanel, lv_color_hex(0x6CBE34), LV_PART_MAIN | LV_STATE_DEFAULT); 351 | lv_obj_set_style_border_opa(ui_clockPanel, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 352 | lv_obj_set_style_border_width(ui_clockPanel, 1, LV_PART_MAIN | LV_STATE_DEFAULT); 353 | 354 | ui_hour1 = lv_img_create(ui_clockPanel); 355 | lv_img_set_src(ui_hour1, &ui_img_zero_64_png); 356 | lv_obj_set_width(ui_hour1, LV_SIZE_CONTENT); /// 1 357 | lv_obj_set_height(ui_hour1, LV_SIZE_CONTENT); /// 1 358 | lv_obj_set_x(ui_hour1, -120); 359 | lv_obj_set_y(ui_hour1, 0); 360 | lv_obj_set_align(ui_hour1, LV_ALIGN_TOP_MID); 361 | lv_obj_add_flag(ui_hour1, LV_OBJ_FLAG_ADV_HITTEST); /// Flags 362 | lv_obj_clear_flag(ui_hour1, LV_OBJ_FLAG_SCROLLABLE); /// Flags 363 | lv_obj_set_style_img_recolor(ui_hour1, lv_color_hex(0x6CBE34), LV_PART_MAIN | LV_STATE_DEFAULT); 364 | lv_obj_set_style_img_recolor_opa(ui_hour1, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 365 | 366 | ui_hour2 = lv_img_create(ui_clockPanel); 367 | lv_img_set_src(ui_hour2, &ui_img_one_64_png); 368 | lv_obj_set_width(ui_hour2, LV_SIZE_CONTENT); /// 1 369 | lv_obj_set_height(ui_hour2, LV_SIZE_CONTENT); /// 1 370 | lv_obj_set_x(ui_hour2, -80); 371 | lv_obj_set_y(ui_hour2, 0); 372 | lv_obj_set_align(ui_hour2, LV_ALIGN_TOP_MID); 373 | lv_obj_add_flag(ui_hour2, LV_OBJ_FLAG_ADV_HITTEST); /// Flags 374 | lv_obj_clear_flag(ui_hour2, LV_OBJ_FLAG_SCROLLABLE); /// Flags 375 | lv_obj_set_style_img_recolor(ui_hour2, lv_color_hex(0x6CBE34), LV_PART_MAIN | LV_STATE_DEFAULT); 376 | lv_obj_set_style_img_recolor_opa(ui_hour2, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 377 | 378 | ui_minute1 = lv_img_create(ui_clockPanel); 379 | lv_img_set_src(ui_minute1, &ui_img_three_64_png); 380 | lv_obj_set_width(ui_minute1, LV_SIZE_CONTENT); /// 1 381 | lv_obj_set_height(ui_minute1, LV_SIZE_CONTENT); /// 1 382 | lv_obj_set_x(ui_minute1, -20); 383 | lv_obj_set_y(ui_minute1, 0); 384 | lv_obj_set_align(ui_minute1, LV_ALIGN_TOP_MID); 385 | lv_obj_add_flag(ui_minute1, LV_OBJ_FLAG_ADV_HITTEST); /// Flags 386 | lv_obj_clear_flag(ui_minute1, LV_OBJ_FLAG_SCROLLABLE); /// Flags 387 | lv_obj_set_style_img_recolor(ui_minute1, lv_color_hex(0x6CBE34), LV_PART_MAIN | LV_STATE_DEFAULT); 388 | lv_obj_set_style_img_recolor_opa(ui_minute1, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 389 | 390 | ui_minute2 = lv_img_create(ui_clockPanel); 391 | lv_img_set_src(ui_minute2, &ui_img_seven_64_png); 392 | lv_obj_set_width(ui_minute2, LV_SIZE_CONTENT); /// 1 393 | lv_obj_set_height(ui_minute2, LV_SIZE_CONTENT); /// 1 394 | lv_obj_set_x(ui_minute2, 20); 395 | lv_obj_set_y(ui_minute2, 0); 396 | lv_obj_set_align(ui_minute2, LV_ALIGN_TOP_MID); 397 | lv_obj_add_flag(ui_minute2, LV_OBJ_FLAG_ADV_HITTEST); /// Flags 398 | lv_obj_clear_flag(ui_minute2, LV_OBJ_FLAG_SCROLLABLE); /// Flags 399 | lv_obj_set_style_img_recolor(ui_minute2, lv_color_hex(0x6CBE34), LV_PART_MAIN | LV_STATE_DEFAULT); 400 | lv_obj_set_style_img_recolor_opa(ui_minute2, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 401 | 402 | ui_second1 = lv_img_create(ui_clockPanel); 403 | lv_img_set_src(ui_second1, &ui_img_two_64_png); 404 | lv_obj_set_width(ui_second1, LV_SIZE_CONTENT); /// 1 405 | lv_obj_set_height(ui_second1, LV_SIZE_CONTENT); /// 1 406 | lv_obj_set_x(ui_second1, 80); 407 | lv_obj_set_y(ui_second1, 0); 408 | lv_obj_set_align(ui_second1, LV_ALIGN_TOP_MID); 409 | lv_obj_add_flag(ui_second1, LV_OBJ_FLAG_ADV_HITTEST); /// Flags 410 | lv_obj_clear_flag(ui_second1, LV_OBJ_FLAG_SCROLLABLE); /// Flags 411 | lv_obj_set_style_img_recolor(ui_second1, lv_color_hex(0x6CBE34), LV_PART_MAIN | LV_STATE_DEFAULT); 412 | lv_obj_set_style_img_recolor_opa(ui_second1, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 413 | 414 | ui_second2 = lv_img_create(ui_clockPanel); 415 | lv_img_set_src(ui_second2, &ui_img_five_64_png); 416 | lv_obj_set_width(ui_second2, LV_SIZE_CONTENT); /// 1 417 | lv_obj_set_height(ui_second2, LV_SIZE_CONTENT); /// 1 418 | lv_obj_set_x(ui_second2, 120); 419 | lv_obj_set_y(ui_second2, 0); 420 | lv_obj_set_align(ui_second2, LV_ALIGN_TOP_MID); 421 | lv_obj_add_flag(ui_second2, LV_OBJ_FLAG_ADV_HITTEST); /// Flags 422 | lv_obj_clear_flag(ui_second2, LV_OBJ_FLAG_SCROLLABLE); /// Flags 423 | lv_obj_set_style_img_recolor(ui_second2, lv_color_hex(0x6CBE34), LV_PART_MAIN | LV_STATE_DEFAULT); 424 | lv_obj_set_style_img_recolor_opa(ui_second2, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 425 | 426 | ui_label1 = lv_label_create(ui_clockPanel); 427 | lv_obj_set_width(ui_label1, LV_SIZE_CONTENT); /// 1 428 | lv_obj_set_height(ui_label1, LV_SIZE_CONTENT); /// 1 429 | lv_obj_set_x(ui_label1, -50); 430 | lv_obj_set_y(ui_label1, 0); 431 | lv_obj_set_align(ui_label1, LV_ALIGN_TOP_MID); 432 | lv_label_set_text(ui_label1, ":"); 433 | lv_obj_set_style_text_color(ui_label1, lv_color_hex(0x6CBE34), LV_PART_MAIN | LV_STATE_DEFAULT); 434 | lv_obj_set_style_text_opa(ui_label1, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 435 | lv_obj_set_style_text_font(ui_label1, &lv_font_montserrat_48, LV_PART_MAIN | LV_STATE_DEFAULT); 436 | 437 | ui_label2 = lv_label_create(ui_clockPanel); 438 | lv_obj_set_width(ui_label2, LV_SIZE_CONTENT); /// 1 439 | lv_obj_set_height(ui_label2, LV_SIZE_CONTENT); /// 1 440 | lv_obj_set_x(ui_label2, 50); 441 | lv_obj_set_y(ui_label2, 0); 442 | lv_obj_set_align(ui_label2, LV_ALIGN_TOP_MID); 443 | lv_label_set_text(ui_label2, ":"); 444 | lv_obj_set_style_text_color(ui_label2, lv_color_hex(0x6CBE34), LV_PART_MAIN | LV_STATE_DEFAULT); 445 | lv_obj_set_style_text_opa(ui_label2, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 446 | lv_obj_set_style_text_font(ui_label2, &lv_font_montserrat_48, LV_PART_MAIN | LV_STATE_DEFAULT); 447 | 448 | ui_dateText = lv_label_create(ui_clockScreen); 449 | lv_obj_set_width(ui_dateText, LV_SIZE_CONTENT); /// 1 450 | lv_obj_set_height(ui_dateText, LV_SIZE_CONTENT); /// 1 451 | lv_obj_set_x(ui_dateText, 0); 452 | lv_obj_set_y(ui_dateText, 160); 453 | lv_obj_set_align(ui_dateText, LV_ALIGN_TOP_MID); 454 | lv_label_set_text(ui_dateText, "Friday, 04 November"); 455 | lv_obj_set_style_text_color(ui_dateText, lv_color_hex(0x6CBE34), LV_PART_MAIN | LV_STATE_DEFAULT); 456 | lv_obj_set_style_text_opa(ui_dateText, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 457 | lv_obj_set_style_text_font(ui_dateText, &lv_font_montserrat_22, LV_PART_MAIN | LV_STATE_DEFAULT); 458 | 459 | ui_weatherIcon = lv_img_create(ui_clockScreen); 460 | lv_img_set_src(ui_weatherIcon, &ui_img_1127648905); 461 | lv_obj_set_width(ui_weatherIcon, LV_SIZE_CONTENT); /// 1 462 | lv_obj_set_height(ui_weatherIcon, LV_SIZE_CONTENT); /// 1 463 | lv_obj_set_x(ui_weatherIcon, -158); 464 | lv_obj_set_y(ui_weatherIcon, 247); 465 | lv_obj_set_align(ui_weatherIcon, LV_ALIGN_TOP_MID); 466 | lv_obj_add_flag(ui_weatherIcon, LV_OBJ_FLAG_ADV_HITTEST); /// Flags 467 | lv_obj_clear_flag(ui_weatherIcon, LV_OBJ_FLAG_SCROLLABLE); /// Flags 468 | 469 | ui_weatherTemp = lv_label_create(ui_clockScreen); 470 | lv_obj_set_width(ui_weatherTemp, LV_SIZE_CONTENT); /// 1 471 | lv_obj_set_height(ui_weatherTemp, LV_SIZE_CONTENT); /// 1 472 | lv_obj_set_x(ui_weatherTemp, -118); 473 | lv_obj_set_y(ui_weatherTemp, 254); 474 | lv_obj_set_align(ui_weatherTemp, LV_ALIGN_TOP_MID); 475 | lv_label_set_text(ui_weatherTemp, "27 °C"); 476 | 477 | ui_weatherLocation = lv_label_create(ui_clockScreen); 478 | lv_obj_set_width(ui_weatherLocation, LV_SIZE_CONTENT); /// 1 479 | lv_obj_set_height(ui_weatherLocation, LV_SIZE_CONTENT); /// 1 480 | lv_obj_set_x(ui_weatherLocation, -119); 481 | lv_obj_set_y(ui_weatherLocation, 277); 482 | lv_obj_set_align(ui_weatherLocation, LV_ALIGN_TOP_MID); 483 | lv_label_set_text(ui_weatherLocation, "Weather"); 484 | 485 | ui_brightnessSlider = lv_slider_create(ui_clockScreen); 486 | lv_slider_set_range(ui_brightnessSlider, 1, 255); 487 | lv_slider_set_value(ui_brightnessSlider, 50, LV_ANIM_OFF); 488 | if(lv_slider_get_mode(ui_brightnessSlider) == LV_SLIDER_MODE_RANGE) lv_slider_set_left_value(ui_brightnessSlider, 0, 489 | LV_ANIM_OFF); 490 | lv_obj_set_width(ui_brightnessSlider, 150); 491 | lv_obj_set_height(ui_brightnessSlider, 10); 492 | lv_obj_set_x(ui_brightnessSlider, 131); 493 | lv_obj_set_y(ui_brightnessSlider, 132); 494 | lv_obj_set_align(ui_brightnessSlider, LV_ALIGN_CENTER); 495 | lv_obj_set_style_bg_color(ui_brightnessSlider, lv_color_hex(0x6FE022), LV_PART_MAIN | LV_STATE_DEFAULT); 496 | lv_obj_set_style_bg_opa(ui_brightnessSlider, 50, LV_PART_MAIN | LV_STATE_DEFAULT); 497 | 498 | lv_obj_set_style_bg_color(ui_brightnessSlider, lv_color_hex(0x6FE022), LV_PART_INDICATOR | LV_STATE_DEFAULT); 499 | lv_obj_set_style_bg_opa(ui_brightnessSlider, 255, LV_PART_INDICATOR | LV_STATE_DEFAULT); 500 | 501 | lv_obj_set_style_bg_color(ui_brightnessSlider, lv_color_hex(0x6F9622), LV_PART_KNOB | LV_STATE_DEFAULT); 502 | lv_obj_set_style_bg_opa(ui_brightnessSlider, 255, LV_PART_KNOB | LV_STATE_DEFAULT); 503 | 504 | ui_brightnessIcon = lv_img_create(ui_clockScreen); 505 | lv_img_set_src(ui_brightnessIcon, &ui_img_led_control_png); 506 | lv_obj_set_width(ui_brightnessIcon, LV_SIZE_CONTENT); /// 1 507 | lv_obj_set_height(ui_brightnessIcon, LV_SIZE_CONTENT); /// 1 508 | lv_obj_set_x(ui_brightnessIcon, 26); 509 | lv_obj_set_y(ui_brightnessIcon, 131); 510 | lv_obj_set_align(ui_brightnessIcon, LV_ALIGN_CENTER); 511 | lv_obj_add_flag(ui_brightnessIcon, LV_OBJ_FLAG_ADV_HITTEST); /// Flags 512 | lv_obj_clear_flag(ui_brightnessIcon, LV_OBJ_FLAG_SCROLLABLE); /// Flags 513 | lv_obj_set_style_img_recolor(ui_brightnessIcon, lv_color_hex(0x6FE022), LV_PART_MAIN | LV_STATE_DEFAULT); 514 | lv_obj_set_style_img_recolor_opa(ui_brightnessIcon, 255, LV_PART_MAIN | LV_STATE_DEFAULT); 515 | 516 | lv_obj_add_event_cb(ui_brightnessSlider, ui_event_brightnessSlider, LV_EVENT_ALL, NULL); 517 | lv_obj_add_event_cb(ui_clockScreen, ui_event_clockScreen, LV_EVENT_ALL, NULL); 518 | 519 | } 520 | 521 | void ui_init(void) 522 | { 523 | lv_disp_t * dispp = lv_disp_get_default(); 524 | lv_theme_t * theme = lv_theme_default_init(dispp, lv_palette_main(LV_PALETTE_BLUE), lv_palette_main(LV_PALETTE_RED), 525 | true, LV_FONT_DEFAULT); 526 | lv_disp_set_theme(dispp, theme); 527 | ui_mainScreen_screen_init(); 528 | ui_clockScreen_screen_init(); 529 | lv_disp_load_scr(ui_mainScreen); 530 | } 531 | --------------------------------------------------------------------------------