From 893bd78bbe7fb1160c29c5f8c696d7d8c8e406b3 Mon Sep 17 00:00:00 2001 From: Vilem Zavodny Date: Wed, 10 Apr 2024 16:18:38 +0200 Subject: [PATCH] feat(LVGL port): Generate C arrays for images during build process --- components/esp_lvgl_port/CHANGELOG.md | 1 + components/esp_lvgl_port/README.md | 24 + .../examples/touchscreen/main/CMakeLists.txt | 3 + .../touchscreen/main/images/.gitignore | 1 + .../touchscreen/main/images/esp_logo.png | Bin 0 -> 6639 bytes .../examples/touchscreen/main/main.c | 10 +- components/esp_lvgl_port/idf_component.yml | 2 +- .../esp_lvgl_port/project_include.cmake | 62 +++ examples/display/main/CMakeLists.txt | 12 +- examples/display/main/esp_logo.c | 423 ------------------ examples/display/main/esp_text.c | 198 -------- examples/display/main/images/esp_logo.c | 129 ++++++ examples/display/main/images/esp_logo.png | Bin 0 -> 6639 bytes examples/display/main/images/esp_text.c | 73 +++ examples/display/main/images/esp_text.png | Bin 0 -> 3217 bytes examples/display_rotation/main/CMakeLists.txt | 14 +- .../display_rotation/main/images/.gitignore | 1 + 17 files changed, 326 insertions(+), 627 deletions(-) create mode 100644 components/esp_lvgl_port/examples/touchscreen/main/images/.gitignore create mode 100644 components/esp_lvgl_port/examples/touchscreen/main/images/esp_logo.png create mode 100644 components/esp_lvgl_port/project_include.cmake delete mode 100644 examples/display/main/esp_logo.c delete mode 100644 examples/display/main/esp_text.c create mode 100644 examples/display/main/images/esp_logo.c create mode 100644 examples/display/main/images/esp_logo.png create mode 100644 examples/display/main/images/esp_text.c create mode 100644 examples/display/main/images/esp_text.png create mode 100644 examples/display_rotation/main/images/.gitignore diff --git a/components/esp_lvgl_port/CHANGELOG.md b/components/esp_lvgl_port/CHANGELOG.md index 3994b5012..5eb782853 100644 --- a/components/esp_lvgl_port/CHANGELOG.md +++ b/components/esp_lvgl_port/CHANGELOG.md @@ -7,6 +7,7 @@ - Allow to sleep main LVGL task - Wake LVGL task from touch and display, when set big maximum sleep - Allow to select display color mode (only with LVGL9) +- Auto generating C array images during build (depends on LVGL version) ### Fixes - Apply display rotation from configuration diff --git a/components/esp_lvgl_port/README.md b/components/esp_lvgl_port/README.md index 329d6b08f..615323aad 100644 --- a/components/esp_lvgl_port/README.md +++ b/components/esp_lvgl_port/README.md @@ -280,6 +280,30 @@ If the SRAM is insufficient, you can use the PSRAM as a canvas and use a small t } ``` +### Generating images (C Array) + +Images can be generated during build by adding these lines to end of the main CMakeLists.txt: +``` +# Generate C array for each image +lvgl_port_create_c_image("images/logo.png" "images/" "ARGB8888" "NONE") +lvgl_port_create_c_image("images/image.png" "images/" "ARGB8888" "NONE") +# Add generated images to build +lvgl_port_add_images(${COMPONENT_LIB} "images/") +``` + +Usage of creat function: +``` +lvgl_port_create_c_image(input_image output_folder color_format compression) +``` + +Available color formats: +L8,I1,I2,I4,I8,A1,A2,A4,A8,ARGB8888,XRGB8888,RGB565,RGB565A8,RGB888,TRUECOLOR,TRUECOLOR_ALPHA,AUTO + +Available compression: +NONE,RLE,LZ4 + +**Note:** Parameters `color_format` and `compression` are used only in LVGL 9. + ## Power Saving The LVGL port can be optimized for power saving mode. There are two main features. diff --git a/components/esp_lvgl_port/examples/touchscreen/main/CMakeLists.txt b/components/esp_lvgl_port/examples/touchscreen/main/CMakeLists.txt index cf2c455cb..a9741b610 100644 --- a/components/esp_lvgl_port/examples/touchscreen/main/CMakeLists.txt +++ b/components/esp_lvgl_port/examples/touchscreen/main/CMakeLists.txt @@ -1,2 +1,5 @@ idf_component_register(SRCS "main.c" INCLUDE_DIRS ".") + +lvgl_port_create_c_image("images/esp_logo.png" "images/" "ARGB8888" "NONE") +lvgl_port_add_images(${COMPONENT_LIB} "images/") diff --git a/components/esp_lvgl_port/examples/touchscreen/main/images/.gitignore b/components/esp_lvgl_port/examples/touchscreen/main/images/.gitignore new file mode 100644 index 000000000..09b2ac1d1 --- /dev/null +++ b/components/esp_lvgl_port/examples/touchscreen/main/images/.gitignore @@ -0,0 +1 @@ +*.c \ No newline at end of file diff --git a/components/esp_lvgl_port/examples/touchscreen/main/images/esp_logo.png b/components/esp_lvgl_port/examples/touchscreen/main/images/esp_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..510b6a5299bea6eed35247037b09a0d84cdb8aa3 GIT binary patch literal 6639 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 DF3bGa literal 0 HcmV?d00001 diff --git a/examples/display_rotation/main/CMakeLists.txt b/examples/display_rotation/main/CMakeLists.txt index 944764dd2..d92cd254a 100644 --- a/examples/display_rotation/main/CMakeLists.txt +++ b/examples/display_rotation/main/CMakeLists.txt @@ -1,4 +1,12 @@ -file(GLOB_RECURSE IMAGE_SOURCES images/*.c) - -idf_component_register(SRCS "main.c" ${IMAGE_SOURCES} +idf_component_register(SRCS "main.c" INCLUDE_DIRS ".") + +if(COMMAND lvgl_port_create_c_image) + lvgl_port_create_c_image("images/esp_logo.png" "images/" "ARGB8888" "NONE") + lvgl_port_create_c_image("images/esp_text.png" "images/" "ARGB8888" "NONE") + lvgl_port_add_images(${COMPONENT_LIB} "images/") +else() + file(GLOB_RECURSE IMAGE_SOURCES images/*.c) + target_sources(${COMPONENT_LIB} PRIVATE ${IMAGE_SOURCES}) + idf_build_set_property(COMPILE_OPTIONS "-DLV_LVGL_H_INCLUDE_SIMPLE=1" APPEND) +endif() diff --git a/examples/display_rotation/main/images/.gitignore b/examples/display_rotation/main/images/.gitignore new file mode 100644 index 000000000..09b2ac1d1 --- /dev/null +++ b/examples/display_rotation/main/images/.gitignore @@ -0,0 +1 @@ +*.c \ No newline at end of file