diff --git a/Kconfig b/Kconfig index 3c660a878a..3348a94f9d 100644 --- a/Kconfig +++ b/Kconfig @@ -1,4 +1,4 @@ -# Kconfig file for LVGL v9.3.0-dev +# Kconfig file for LVGL v9.3.0 menu "LVGL configuration" diff --git a/env_support/cmsis-pack/LVGL.lvgl.9.3.0-dev2.pack b/env_support/cmsis-pack/LVGL.lvgl.9.3.0.pack similarity index 61% rename from env_support/cmsis-pack/LVGL.lvgl.9.3.0-dev2.pack rename to env_support/cmsis-pack/LVGL.lvgl.9.3.0.pack index 6446a9db22..ed983a50cd 100644 Binary files a/env_support/cmsis-pack/LVGL.lvgl.9.3.0-dev2.pack and b/env_support/cmsis-pack/LVGL.lvgl.9.3.0.pack differ diff --git a/env_support/cmsis-pack/LVGL.lvgl.pdsc b/env_support/cmsis-pack/LVGL.lvgl.pdsc index 1249d535cd..442533222c 100644 --- a/env_support/cmsis-pack/LVGL.lvgl.pdsc +++ b/env_support/cmsis-pack/LVGL.lvgl.pdsc @@ -36,8 +36,8 @@ https://github.com/lvgl/lvgl.git - - - LVGL 9.3.0-dev + + - LVGL 9.3.0 - See Change Log @@ -280,6 +280,7 @@ + @@ -293,6 +294,7 @@ + @@ -306,6 +308,21 @@ + + + + + + + + + + + Condition for NXP-G2D + + + + @@ -319,6 +336,7 @@ + @@ -332,6 +350,7 @@ + @@ -345,6 +364,7 @@ + @@ -358,6 +378,7 @@ + @@ -368,7 +389,7 @@ - + LVGL (Light and Versatile Graphics Library) is a free and open-source graphics library providing everything you need to create an embedded GUI with easy-to-use graphical elements, beautiful visual effects and a low memory footprint. @@ -429,12 +450,23 @@ + + + + + + + + + + + @@ -448,11 +480,12 @@ + - + @@ -465,10 +498,12 @@ + + @@ -485,6 +520,7 @@ + @@ -511,6 +547,7 @@ + @@ -530,6 +567,7 @@ + @@ -551,11 +589,12 @@ - + + - - + + @@ -570,6 +609,7 @@ + @@ -618,6 +658,7 @@ + @@ -627,10 +668,13 @@ + + + @@ -642,11 +686,12 @@ - + + - + @@ -730,6 +775,19 @@ + + Add the display driver for FT81X + + + + + +/* use display driver for FT81X */ +#define LV_USE_FT81X 1 + + + + Add the display driver for ILI9341 @@ -892,6 +950,20 @@ + + Add the support for SDL2 OS APIs + + + + + + +#define LV_USE_OS LV_OS_SDL2 + + + + + Add a user customized (RT)OS support @@ -963,6 +1035,24 @@ + + An hardware acceleration from NXP's G2D + + + + + + + + + + + +/*! \brief Use NXP's G2D on MPU platforms. */ +#define LV_USE_DRAW_G2D 1 + + + An hardware acceleration from NXP-PXP @@ -1079,11 +1169,13 @@ TSi's aka (Think Silicon) NemaGFX + + - + @@ -1092,7 +1184,7 @@ - + @@ -1108,11 +1200,13 @@ TSi's aka (Think Silicon) NemaGFX + + - + @@ -1121,7 +1215,7 @@ - + @@ -1136,11 +1230,13 @@ TSi's aka (Think Silicon) NemaGFX + + - + @@ -1149,7 +1245,7 @@ - + @@ -1169,7 +1265,7 @@ - + @@ -1178,7 +1274,7 @@ - + @@ -1269,6 +1365,7 @@ + @@ -1587,22 +1684,20 @@ - - - + @@ -1625,6 +1720,7 @@ + @@ -1646,6 +1742,63 @@ + + + Add XML UIs runtime + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +/** Enable loading XML UIs runtime */ +#define LV_USE_XML 1 + + + + + + + Add Built-in TTF decoder @@ -1761,7 +1914,6 @@ - @@ -1810,52 +1962,13 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + @@ -1908,9 +2021,6 @@ - - - @@ -1918,40 +2028,15 @@ + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1970,26 +2055,6 @@ #define LV_USE_DEMO_BENCHMARK 1 - - - - Add the Flex layout demo - - - - - - - - - - - - -/*! \brief enable the Flex layout demo */ -#define LV_USE_DEMO_FLEX_LAYOUT 1 - - @@ -2009,22 +2074,7 @@ - - Add the Smart-phone like multi-language demo. - - - - - - - -/*! \brief enable the Smart-phone like multi-language demo */ -#define LV_USE_DEMO_MULTILANG 1 - - - - - + Add the music player demo @@ -2040,21 +2090,6 @@ #define LV_USE_DEMO_MUSIC 1 - - - - Add the demonstration for scroll settings - - - - - - - -/*! \brief enable the demonstration for scroll settings */ -#define LV_USE_DEMO_SCROLL 1 - - @@ -2070,24 +2105,9 @@ #define LV_USE_DEMO_STRESS 1 - - - - Add the Widget transformation demo - - - - - - - -/*! \brief enable the Widget transformation demo */ -#define LV_USE_DEMO_TRANSFORM 1 - - - + Add the Vector graphic demo @@ -2133,25 +2153,6 @@ - - E-bike demo with Lottie animations - - - - - - - - - - - -/*! \brief E-bike demo with Lottie animations*/ -#define LV_USE_DEMO_EBIKE 1 - - - - diff --git a/env_support/cmsis-pack/LVGL.pidx b/env_support/cmsis-pack/LVGL.pidx index 596cc5dc0f..7ea76ac1a4 100644 --- a/env_support/cmsis-pack/LVGL.pidx +++ b/env_support/cmsis-pack/LVGL.pidx @@ -2,8 +2,8 @@ LVGL https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/ - 2024-10-31 + 2025-06-02 - + diff --git a/env_support/cmsis-pack/README.md b/env_support/cmsis-pack/README.md index 6b98762bee..660b3221a7 100644 --- a/env_support/cmsis-pack/README.md +++ b/env_support/cmsis-pack/README.md @@ -34,7 +34,9 @@ remove the misleading guide above this code segment. #ifndef LV_CONF_H #define LV_CONF_H +#if defined(_RTE_) #include "RTE_Components.h" +#endif ... ``` 4. Remove macro definitions for @@ -56,6 +58,8 @@ remove the misleading guide above this code segment. - LV_USE_DEMO_SCROLL - LV_USE_DEMO_VECTOR_GRAPHIC - LV_USE_DEMO_EBIKE + - LV_USE_DEMO_HIGH_RES + - LV_USE_DEMO_SMARTWATCH - LV_USE_DRAW_VGLITE - LV_USE_DRAW_VG_LITE - LV_USE_PXP @@ -78,6 +82,7 @@ remove the misleading guide above this code segment. - LV_USE_ST7789 - LV_USE_ST7796 - LV_USE_ST_LTDC + - LV_USE_FT81X - LV_USE_ILI9341 - LV_USE_RENESAS_GLCDC - LV_USE_NEMA_GFX @@ -85,7 +90,7 @@ remove the misleading guide above this code segment. 5. Update `LV_LOG_PRINTF` to `1` and `LV_LOG_LEVEL` to `LV_LOG_LEVEL_USER` -6. Set `LV_FONT_MONTSERRAT_12`, ``LV_FONT_MONTSERRAT_20`, `LV_FONT_MONTSERRAT_24`, `LV_FONT_MONTSERRAT_26` and `LV_FONT_MONTSERRAT_16` to `1` (So Widgets and Benchmark can be compiled correctly, this is for improving the out of box experience.) +6. Set `LV_FONT_MONTSERRAT_12`, `LV_FONT_MONTSERRAT_20`, `LV_FONT_MONTSERRAT_24`, `LV_FONT_MONTSERRAT_26` and `LV_FONT_MONTSERRAT_16` to `1` (So Widgets and Benchmark can be compiled correctly, this is for improving the out of box experience.) 7. Update macro `LV_ATTRIBUTE_MEM_ALIGN` and `LV_ATTRIBUTE_MEM_ALIGN_SIZE` to force a WORD alignment. @@ -102,16 +107,16 @@ Make sure `LV_MEM_SIZE` is no less than `(128*1024U)`. - \#define LV_USE_FS_POSIX 0 - \#define LV_USE_FS_WIN32 0 - \#define LV_USE_FS_FATFS 0 - - #define LV_USE_FS_LITTLEFS 0 - - #define LV_USE_FS_ARDUINO_ESP_LITTLEFS 0 - - #define LV_USE_FS_ARDUINO_SD 0 - - #define LV_USE_FS_MEMFS 0 + - \#define LV_USE_FS_LITTLEFS 0 + - \#define LV_USE_FS_ARDUINO_ESP_LITTLEFS 0 + - \#define LV_USE_FS_ARDUINO_SD 0 + - \#define LV_USE_FS_MEMFS 0 - \#define LV_USE_LODEPNG 0 - - #define LV_USE_LIBPNG 0 + - \#define LV_USE_LIBPNG 0 - \#define LV_USE_BMP 0 - \#define LV_USE_RLE 0 - - #define LV_USE_TJPGD 0 - - #define LV_USE_LIBJPEG_TURBO 0 + - \#define LV_USE_TJPGD 0 + - \#define LV_USE_LIBJPEG_TURBO 0 - \#define LV_USE_GIF 0 - \#define LV_USE_BARCODE 0 - \#define LV_USE_QRCODE 0 @@ -119,7 +124,8 @@ Make sure `LV_MEM_SIZE` is no less than `(128*1024U)`. - \#define LV_USE_TINY_TTF 0 - \#define LV_USE_RLOTTIE 0 - \#define LV_USE_FFMPEG 0 - - #define LV_USE_FONT_MANAGER 0 + - \#define LV_USE_FONT_MANAGER 0 + - \#define LV_USE_XML 0 9. update the definition of following macros: `LV_USE_VECTOR_GRAPHIC`, `LV_USE_THORVE_INTERNAL` and `LV_USE_THORVE_EXTERNAL` as diff --git a/env_support/cmsis-pack/gen_pack.sh b/env_support/cmsis-pack/gen_pack.sh index e62438703d..7b246af300 100755 --- a/env_support/cmsis-pack/gen_pack.sh +++ b/env_support/cmsis-pack/gen_pack.sh @@ -46,6 +46,7 @@ PACK_DIRS=" ../../src ../../libs ../../demos + ../../xmls ../../env_support/pikascript " @@ -56,6 +57,7 @@ PACK_BASE_FILES=" ../../README.md ../../lvgl.h ../../lv_version.h + ../../lvgl_private.h lv_conf_cmsis.h lv_cmsis_pack.txt " diff --git a/env_support/cmsis-pack/lv_conf_cmsis.h b/env_support/cmsis-pack/lv_conf_cmsis.h index c31971e46b..8e5c400f4e 100644 --- a/env_support/cmsis-pack/lv_conf_cmsis.h +++ b/env_support/cmsis-pack/lv_conf_cmsis.h @@ -1,6 +1,6 @@ /** * @file lv_conf.h - * Configuration file for v9.3.0-dev + * Configuration file for v9.3.0 */ /* clang-format off */ @@ -9,7 +9,9 @@ #ifndef LV_CONF_H #define LV_CONF_H +#if defined(_RTE_) #include "RTE_Components.h" +#endif /* If you need to include anything here, do it inside the `__ASSEMBLY__` guard */ #if 0 && defined(__ASSEMBLY__) @@ -104,26 +106,17 @@ /*================= * OPERATING SYSTEM *=================*/ -/** Select operating system to use. Possible options: - * - LV_OS_NONE - * - LV_OS_PTHREAD - * - LV_OS_FREERTOS - * - LV_OS_CMSIS_RTOS2 - * - LV_OS_RTTHREAD - * - LV_OS_WINDOWS - * - LV_OS_MQX - * - LV_OS_CUSTOM */ #if LV_USE_OS == LV_OS_CUSTOM #define LV_OS_CUSTOM_INCLUDE #endif #if LV_USE_OS == LV_OS_FREERTOS - /* - * Unblocking an RTOS task with a direct notification is 45% faster and uses less RAM - * than unblocking a task using an intermediary object such as a binary semaphore. - * RTOS task notifications can only be used when there is only one task that can be the recipient of the event. - */ - #define LV_USE_FREERTOS_TASK_NOTIFY 1 + /* + * Unblocking an RTOS task with a direct notification is 45% faster and uses less RAM + * than unblocking a task using an intermediary object such as a binary semaphore. + * RTOS task notifications can only be used when there is only one task that can be the recipient of the event. + */ + #define LV_USE_FREERTOS_TASK_NOTIFY 1 #endif /*======================== @@ -150,11 +143,26 @@ /** The target buffer size for simple layer chunks. */ #define LV_DRAW_LAYER_SIMPLE_BUF_SIZE (24 * 1024) /**< [bytes]*/ +/* Limit the max allocated memory for simple and transformed layers. + * It should be at least `LV_DRAW_LAYER_SIMPLE_BUF_SIZE` sized but if transformed layers are also used + * it should be enough to store the largest widget too (width x height x 4 area). + * Set it to 0 to have no limit. */ +#define LV_DRAW_LAYER_MAX_MEMORY 0 /**< No limit by default [bytes]*/ + /** Stack size of drawing thread. * NOTE: If FreeType or ThorVG is enabled, it is recommended to set it to 32KB or more. */ #define LV_DRAW_THREAD_STACK_SIZE (8 * 1024) /**< [bytes]*/ +/** Thread priority of the drawing task. + * Higher values mean higher priority. + * Can use values from lv_thread_prio_t enum in lv_os.h: LV_THREAD_PRIO_LOWEST, + * LV_THREAD_PRIO_LOW, LV_THREAD_PRIO_MID, LV_THREAD_PRIO_HIGH, LV_THREAD_PRIO_HIGHEST + * Make sure the priority value aligns with the OS-specific priority levels. + * On systems with limited priority levels (e.g., FreeRTOS), a higher value can improve + * rendering performance but might cause other tasks to starve. */ +#define LV_DRAW_THREAD_PRIO LV_THREAD_PRIO_HIGH + #define LV_USE_DRAW_SW 1 #if LV_USE_DRAW_SW == 1 /* @@ -164,15 +172,21 @@ * - bitmaps with transparency may use ARGB8888 */ #define LV_DRAW_SW_SUPPORT_RGB565 1 + #define LV_DRAW_SW_SUPPORT_RGB565_SWAPPED 1 #define LV_DRAW_SW_SUPPORT_RGB565A8 1 #define LV_DRAW_SW_SUPPORT_RGB888 1 #define LV_DRAW_SW_SUPPORT_XRGB8888 1 #define LV_DRAW_SW_SUPPORT_ARGB8888 1 + #define LV_DRAW_SW_SUPPORT_ARGB8888_PREMULTIPLIED 1 #define LV_DRAW_SW_SUPPORT_L8 1 #define LV_DRAW_SW_SUPPORT_AL88 1 #define LV_DRAW_SW_SUPPORT_A8 1 #define LV_DRAW_SW_SUPPORT_I1 1 + /* The threshold of the luminance to consider a pixel as + * active in indexed color format */ + #define LV_DRAW_SW_I1_LUM_THRESHOLD 127 + /** Set number of draw units. * - > 1 requires operating system to be enabled in `LV_USE_OS`. * - > 1 means multiple threads will render the screen in parallel. */ @@ -217,15 +231,21 @@ /** Enable drawing complex gradients in software: linear at an angle, radial or conical */ #define LV_USE_DRAW_SW_COMPLEX_GRADIENTS 0 + #endif /*Use TSi's aka (Think Silicon) NemaGFX */ #if LV_USE_NEMA_GFX - #define LV_NEMA_GFX_HAL_INCLUDE + /** Select which NemaGFX HAL to use. Possible options: + * - LV_NEMA_HAL_CUSTOM + * - LV_NEMA_HAL_STM32 */ + #define LV_USE_NEMA_HAL LV_NEMA_HAL_CUSTOM + #if LV_USE_NEMA_HAL == LV_NEMA_HAL_STM32 + #define LV_NEMA_STM32_HAL_INCLUDE + #endif /*Enable Vector Graphics Operations. Available only if NemaVG library is present*/ #define LV_USE_NEMA_VG 0 - #if LV_USE_NEMA_VG /*Define application's resolution used for VG related buffer allocation */ #define LV_NEMA_GFX_MAX_RESX 800 @@ -250,11 +270,12 @@ /** Enable VGLite asserts. */ #define LV_USE_VGLITE_ASSERT 0 + + /** Enable VGLite error checks. */ + #define LV_USE_VGLITE_CHECK_ERROR 0 #endif /** Use NXP's PXP on iMX RTxxx platforms. */ -#define LV_USE_PXP 0 - #if LV_USE_PXP /** Use PXP for drawing.*/ #define LV_USE_DRAW_PXP 1 @@ -271,6 +292,21 @@ #define LV_USE_PXP_ASSERT 0 #endif +/** Use NXP's G2D on MPU platforms. */ +#if LV_USE_DRAW_G2D + /** Maximum number of buffers that can be stored for G2D draw unit. + * Includes the frame buffers and assets. */ + #define LV_G2D_HASH_TABLE_SIZE 50 + + #if LV_USE_OS + /** Use additional draw thread for G2D processing.*/ + #define LV_USE_G2D_DRAW_THREAD 1 + #endif + + /** Enable G2D asserts. */ + #define LV_USE_G2D_ASSERT 0 +#endif + /** Use VG-Lite GPU. */ #if LV_USE_DRAW_VG_LITE /** Enable VG-Lite custom external 'gpu_init()' function */ @@ -428,6 +464,9 @@ /** Add `id` field to `lv_obj_t` */ #define LV_USE_OBJ_ID 0 +/** Enable support widget names*/ +#define LV_USE_OBJ_NAME 0 + /** Automatically assign an ID when obj is created */ #define LV_OBJ_ID_AUTO_ASSIGN LV_USE_OBJ_ID @@ -469,6 +508,10 @@ #define LV_VG_LITE_THORVG_THREAD_RENDER 0 #endif +/* Enable the multi-touch gesture recognition feature */ +/* Gesture recognition requires the use of floats */ +#define LV_USE_GESTURE_RECOGNITION 0 + /*===================== * COMPILER SETTINGS *====================*/ @@ -517,7 +560,9 @@ #define LV_USE_MATRIX 0 /** Include `lvgl_private.h` in `lvgl.h` to access internal data and functions by default */ -#define LV_USE_PRIVATE_API 0 +#ifndef LV_USE_PRIVATE_API + #define LV_USE_PRIVATE_API 0 +#endif /*================== * FONT USAGE @@ -550,8 +595,10 @@ /* Demonstrate special features */ #define LV_FONT_MONTSERRAT_28_COMPRESSED 0 /**< bpp = 3 */ #define LV_FONT_DEJAVU_16_PERSIAN_HEBREW 0 /**< Hebrew, Arabic, Persian letters and all their forms */ -#define LV_FONT_SOURCE_HAN_SANS_SC_14_CJK 0 /**< 1000 most common CJK radicals */ -#define LV_FONT_SOURCE_HAN_SANS_SC_16_CJK 0 /**< 1000 most common CJK radicals */ +#define LV_FONT_SIMSUN_14_CJK 0 /**< 1000 most common CJK radicals */ +#define LV_FONT_SIMSUN_16_CJK 0 /**< 1000 most common CJK radicals */ +#define LV_FONT_SOURCE_HAN_SANS_SC_14_CJK 0 /**< 1338 most common CJK radicals */ +#define LV_FONT_SOURCE_HAN_SANS_SC_16_CJK 0 /**< 1338 most common CJK radicals */ /** Pixel perfect monospaced fonts */ #define LV_FONT_UNSCII_8 0 @@ -631,7 +678,7 @@ /*================== * WIDGETS *================*/ -/* Documentation for widgets can be found here: https://docs.lvgl.io/latest/en/html/widgets/index.html . */ +/* Documentation for widgets can be found here: https://docs.lvgl.io/master/details/widgets/index.html . */ /** 1: Causes these widgets to be given default values at creation time. * - lv_buttonmatrix_t: Get default maps: {"Btn1", "Btn2", "Btn3", "\n", "Btn4", "Btn5", ""}, else map not set. @@ -731,10 +778,12 @@ #define LV_USE_WIN 1 +#define LV_USE_3DTEXTURE 0 + /*================== * THEMES *==================*/ -/* Documentation for themes can be found here: https://docs.lvgl.io/master/overview/style.html#themes . */ +/* Documentation for themes can be found here: https://docs.lvgl.io/master/details/common-widget-features/styles/style.html#themes . */ /** A simple, impressive and very complete theme */ #define LV_USE_THEME_DEFAULT 1 @@ -758,7 +807,7 @@ /*================== * LAYOUTS *==================*/ -/* Documentation for layouts can be found here: https://docs.lvgl.io/master/layouts/index.html . */ +/* Documentation for layouts can be found here: https://docs.lvgl.io/master/details/common-widget-features/layouts/index.html . */ /** A layout similar to Flexbox in CSS. */ #define LV_USE_FLEX 1 @@ -769,58 +818,70 @@ /*==================== * 3RD PARTS LIBRARIES *====================*/ -/* Documentation for libraries can be found here: https://docs.lvgl.io/master/libs/index.html . */ +/* Documentation for libraries can be found here: https://docs.lvgl.io/master/details/libs/index.html . */ /* File system interfaces for common APIs */ -/** Setting a default driver letter allows skipping the driver prefix in filepaths. */ +/** Setting a default driver letter allows skipping the driver prefix in filepaths. + * Documentation about how to use the below driver-identifier letters can be found at + * https://docs.lvgl.io/master/details/main-modules/fs.html#lv-fs-identifier-letters . */ #define LV_FS_DEFAULT_DRIVER_LETTER '\0' /** API for fopen, fread, etc. */ #if LV_USE_FS_STDIO - #define LV_FS_STDIO_LETTER '\0' /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */ + #define LV_FS_STDIO_LETTER '\0' /**< Set an upper-case driver-identifier letter for this driver (e.g. 'A'). */ #define LV_FS_STDIO_PATH "" /**< Set the working directory. File/directory paths will be appended to it. */ #define LV_FS_STDIO_CACHE_SIZE 0 /**< >0 to cache this number of bytes in lv_fs_read() */ #endif /** API for open, read, etc. */ #if LV_USE_FS_POSIX - #define LV_FS_POSIX_LETTER '\0' /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */ + #define LV_FS_POSIX_LETTER '\0' /**< Set an upper-case driver-identifier letter for this driver (e.g. 'A'). */ #define LV_FS_POSIX_PATH "" /**< Set the working directory. File/directory paths will be appended to it. */ #define LV_FS_POSIX_CACHE_SIZE 0 /**< >0 to cache this number of bytes in lv_fs_read() */ #endif /** API for CreateFile, ReadFile, etc. */ #if LV_USE_FS_WIN32 - #define LV_FS_WIN32_LETTER '\0' /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */ + #define LV_FS_WIN32_LETTER '\0' /**< Set an upper-case driver-identifier letter for this driver (e.g. 'A'). */ #define LV_FS_WIN32_PATH "" /**< Set the working directory. File/directory paths will be appended to it. */ #define LV_FS_WIN32_CACHE_SIZE 0 /**< >0 to cache this number of bytes in lv_fs_read() */ #endif /** API for FATFS (needs to be added separately). Uses f_open, f_read, etc. */ #if LV_USE_FS_FATFS - #define LV_FS_FATFS_LETTER '\0' /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */ + #define LV_FS_FATFS_LETTER '\0' /**< Set an upper-case driver-identifier letter for this driver (e.g. 'A'). */ + #define LV_FS_FATFS_PATH "" /**< Set the working directory. File/directory paths will be appended to it. */ #define LV_FS_FATFS_CACHE_SIZE 0 /**< >0 to cache this number of bytes in lv_fs_read() */ #endif /** API for memory-mapped file access. */ #if LV_USE_FS_MEMFS - #define LV_FS_MEMFS_LETTER '\0' /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */ + #define LV_FS_MEMFS_LETTER '\0' /**< Set an upper-case driver-identifier letter for this driver (e.g. 'A'). */ #endif /** API for LittleFs. */ #if LV_USE_FS_LITTLEFS - #define LV_FS_LITTLEFS_LETTER '\0' /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */ + #define LV_FS_LITTLEFS_LETTER '\0' /**< Set an upper-case driver-identifier letter for this driver (e.g. 'A'). */ + #define LV_FS_LITTLEFS_PATH "" /**< Set the working directory. File/directory paths will be appended to it. */ #endif /** API for Arduino LittleFs. */ #if LV_USE_FS_ARDUINO_ESP_LITTLEFS - #define LV_FS_ARDUINO_ESP_LITTLEFS_LETTER '\0' /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */ + #define LV_FS_ARDUINO_ESP_LITTLEFS_LETTER '\0' /**< Set an upper-case driver-identifier letter for this driver (e.g. 'A'). */ + #define LV_FS_ARDUINO_ESP_LITTLEFS_PATH "" /**< Set the working directory. File/directory paths will be appended to it. */ #endif /** API for Arduino Sd. */ #if LV_USE_FS_ARDUINO_SD - #define LV_FS_ARDUINO_SD_LETTER '\0' /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */ + #define LV_FS_ARDUINO_SD_LETTER '\0' /**< Set an upper-case driver-identifier letter for this driver (e.g. 'A'). */ + #define LV_FS_ARDUINO_SD_PATH "" /**< Set the working directory. File/directory paths will be appended to it. */ +#endif + +/** API for UEFI */ +#define LV_USE_FS_UEFI 0 +#if LV_USE_FS_UEFI + #define LV_FS_UEFI_LETTER '\0' /**< Set an upper-case driver-identifier letter for this driver (e.g. 'A'). */ #endif /** GIF decoder library */ @@ -851,7 +912,6 @@ /** Enable Vector Graphic APIs * - Requires `LV_USE_MATRIX = 1` */ -/*Enable Vector Graphic APIs*/ #ifndef LV_USE_VECTOR_GRAPHIC # define LV_USE_VECTOR_GRAPHIC 0 @@ -883,21 +943,22 @@ #if LV_USE_FFMPEG /** Dump input information to stderr */ #define LV_FFMPEG_DUMP_FORMAT 0 + /** Use lvgl file path in FFmpeg Player widget + * You won't be able to open URLs after enabling this feature. + * Note that FFmpeg image decoder will always use lvgl file system. */ + #define LV_FFMPEG_PLAYER_USE_LV_FS 0 #endif /*================== * OTHERS *==================*/ -/* Documentation for several of the below items can be found here: https://docs.lvgl.io/master/others/index.html . */ - -/** 1: Enable API to take snapshot for object */ -#define LV_USE_SNAPSHOT 0 +/* Documentation for several of the below items can be found here: https://docs.lvgl.io/master/details/auxiliary-modules/index.html . */ /** 1: Enable system monitor component */ #define LV_USE_SYSMON 0 #if LV_USE_SYSMON /** Get the idle percentage. E.g. uint32_t my_get_idle(void); */ - #define LV_SYSMON_GET_IDLE lv_timer_get_idle + #define LV_SYSMON_GET_IDLE lv_os_get_idle_percent /** 1: Show CPU usage and FPS count. * - Requires `LV_USE_SYSMON = 1` */ @@ -926,6 +987,7 @@ #if LV_USE_PROFILER_BUILTIN /** Default profiler trace buffer size */ #define LV_PROFILER_BUILTIN_BUF_SIZE (16 * 1024) /**< [bytes] */ + #define LV_PROFILER_BUILTIN_DEFAULT_ENABLE 1 #endif /** Header to include for profiler */ @@ -972,6 +1034,9 @@ /*Enable cache profiler*/ #define LV_PROFILER_CACHE 1 + + /*Enable event profiler*/ + #define LV_PROFILER_EVENT 1 #endif /** 1: Enable an observer pattern implementation */ @@ -1004,15 +1069,25 @@ #define LV_FILE_EXPLORER_QUICK_ACCESS 1 #endif -/** 1: Enable Font manager - * - Requires: LV_USE_FREETYPE */ +/** 1: Enable Font manager */ #if LV_USE_FONT_MANAGER -/*Font manager name max length*/ +/**Font manager name max length*/ #define LV_FONT_MANAGER_NAME_MAX_LEN 32 #endif +/** Enable emulated input devices, time emulation, and screenshot compares. */ +#define LV_USE_TEST 0 +#if LV_USE_TEST + +/** Enable `lv_test_screenshot_compare`. + * Requires libpng and a few MB of extra RAM. */ +#define LV_USE_TEST_SCREENSHOT_COMPARE 0 +#endif /*LV_USE_TEST*/ + +/*1: Enable color filter style*/ +#define LV_USE_COLOR_FILTER 0 /*================== * DEVICES *==================*/ @@ -1053,6 +1128,7 @@ #define LV_LINUX_FBDEV_RENDER_MODE LV_DISPLAY_RENDER_MODE_PARTIAL #define LV_LINUX_FBDEV_BUFFER_COUNT 0 #define LV_LINUX_FBDEV_BUFFER_SIZE 60 + #define LV_LINUX_FBDEV_MMAP 1 #endif /** Use Nuttx to open window and handle touchscreen */ @@ -1061,6 +1137,9 @@ #if LV_USE_NUTTX #define LV_USE_NUTTX_INDEPENDENT_IMAGE_HEAP 0 + /** Use independent image heap for default draw buffer */ + #define LV_NUTTX_DEFAULT_DRAW_BUF_USE_INDEPENDENT_IMAGE_HEAP 0 + #define LV_USE_NUTTX_LIBUV 0 /** Use Nuttx custom init API to open window and handle touchscreen */ @@ -1075,8 +1154,22 @@ /** Driver for /dev/input */ #define LV_USE_NUTTX_TOUCHSCREEN 0 + + /*Touchscreen cursor size in pixels(<=0: disable cursor)*/ + #define LV_NUTTX_TOUCHSCREEN_CURSOR_SIZE 0 #endif +/** Driver for /dev/dri/card */ +#if LV_USE_LINUX_DRM + + /* Use the MESA GBM library to allocate DMA buffers that can be + * shared across sub-systems and libraries using the Linux DMA-BUF API. + * The GBM library aims to provide a platform independent memory management system + * it supports the major GPU vendors - This option requires linking with libgbm */ + #define LV_LINUX_DRM_GBM_BUFFERS 0 +#endif + + /** Driver for evdev input devices */ #define LV_USE_EVDEV 0 @@ -1094,9 +1187,11 @@ #endif #endif -/* Drivers for LCD devices connected via SPI/parallel port */ -#define LV_USE_GENERIC_MIPI (LV_USE_ST7735 | LV_USE_ST7789 | LV_USE_ST7796 | LV_USE_ILI9341) - +#if (LV_USE_ST7735 | LV_USE_ST7789 | LV_USE_ST7796 | LV_USE_ILI9341) + #define LV_USE_GENERIC_MIPI 1 +#else + #define LV_USE_GENERIC_MIPI 0 +#endif /** Driver for ST LTDC */ #if LV_USE_ST_LTDC @@ -1104,6 +1199,13 @@ #define LV_ST_LTDC_USE_DMA2D_FLUSH 0 #endif +/** LVGL UEFI backend */ +#define LV_USE_UEFI 0 +#if LV_USE_UEFI + #define LV_USE_UEFI_INCLUDE "myefi.h" /**< Header that hides the actual framework (EDK2, gnu-efi, ...) */ + #define LV_UEFI_USE_MEMORY_SERVICES 0 /**< Use the memory functions from the boot services table */ +#endif + /** Use OpenGL to open window on PC and handle mouse and keyboard */ #define LV_USE_OPENGLES 0 #if LV_USE_OPENGLES @@ -1116,31 +1218,42 @@ #define LV_QNX_BUF_COUNT 1 /**< 1 or 2 */ #endif -/*================== -* EXAMPLES -*==================*/ +/*===================== +* BUILD OPTIONS +*======================*/ /** Enable examples to be built with the library. */ #define LV_BUILD_EXAMPLES 1 +/** Build the demos */ +#define LV_BUILD_DEMOS 1 + + /*=================== * DEMO USAGE ====================*/ -/** Music player demo */ -#if LV_USE_DEMO_MUSIC - #define LV_DEMO_MUSIC_SQUARE 0 - #define LV_DEMO_MUSIC_LANDSCAPE 0 - #define LV_DEMO_MUSIC_ROUND 0 - #define LV_DEMO_MUSIC_LARGE 0 - #define LV_DEMO_MUSIC_AUTO_PLAY 0 -#endif +#if LV_BUILD_DEMOS + + /** Music player demo */ + #if LV_USE_DEMO_MUSIC + #define LV_DEMO_MUSIC_SQUARE 0 + #define LV_DEMO_MUSIC_LANDSCAPE 0 + #define LV_DEMO_MUSIC_ROUND 0 + #define LV_DEMO_MUSIC_LARGE 0 + #define LV_DEMO_MUSIC_AUTO_PLAY 0 + #endif + + #if LV_USE_DEMO_BENCHMARK + /** Use fonts where bitmaps are aligned 16 byte and has Nx16 byte stride */ + #define LV_DEMO_BENCHMARK_ALIGNED_FONTS 0 + #endif -/*E-bike demo with Lottie animations (if LV_USE_LOTTIE is enabled)*/ -#define LV_USE_DEMO_EBIKE 0 -#if LV_USE_DEMO_EBIKE - #define LV_DEMO_EBIKE_PORTRAIT 0 /*0: for 480x270..480x320, 1: for 480x800..720x1280*/ #endif +/*--------------------------- + * Demos from lvgl/lv_demos + ---------------------------*/ + /*--END OF LV_CONF_H--*/ diff --git a/library.json b/library.json index 729961857b..7bd96af23b 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "lvgl", - "version": "9.3.0-dev", + "version": "9.3.0", "keywords": "graphics, gui, embedded, tft, lvgl", "description": "Graphics library to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint. It offers anti-aliasing, opacity, and animations using only one frame buffer.", "repository": { diff --git a/library.properties b/library.properties index e57fd71dbd..911743009d 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=lvgl -version=9.3.0-dev +version=9.3.0 author=kisvegabor maintainer=kisvegabor,embeddedt,pete-pjb sentence=Full-featured Graphics Library for Embedded Systems diff --git a/lv_conf_template.h b/lv_conf_template.h index edf1da0884..9afdf2341f 100644 --- a/lv_conf_template.h +++ b/lv_conf_template.h @@ -1,6 +1,6 @@ /** * @file lv_conf.h - * Configuration file for v9.3.0-dev + * Configuration file for v9.3.0 */ /* diff --git a/lv_version.h b/lv_version.h index 6aa02efb6f..8bbd5506ef 100644 --- a/lv_version.h +++ b/lv_version.h @@ -9,6 +9,6 @@ #define LVGL_VERSION_MAJOR 9 #define LVGL_VERSION_MINOR 3 #define LVGL_VERSION_PATCH 0 -#define LVGL_VERSION_INFO "dev" +#define LVGL_VERSION_INFO "" #endif /* LVGL_VERSION_H */ diff --git a/src/draw/sw/arm2d/lv_draw_sw_arm2d.h b/src/draw/sw/arm2d/lv_draw_sw_arm2d.h index f1a69765ad..3fa42677da 100644 --- a/src/draw/sw/arm2d/lv_draw_sw_arm2d.h +++ b/src/draw/sw/arm2d/lv_draw_sw_arm2d.h @@ -18,6 +18,8 @@ extern "C" { #include "../../../lv_conf_internal.h" #include "../../../misc/lv_area_private.h" +#include "../../../draw/lv_draw_private.h" +#include "../../../draw/lv_draw_image_private.h" #if LV_USE_DRAW_ARM2D_SYNC @@ -175,11 +177,11 @@ static inline lv_result_t lv_draw_sw_image_helium( const lv_area_t * coords, int32_t src_stride, const lv_area_t * des_area, - lv_draw_task_t * draw_task, + lv_draw_task_t * t, const lv_draw_image_dsc_t * draw_dsc) { lv_result_t result = LV_RESULT_INVALID; - lv_layer_t * layer = draw_task->target_layer; + lv_layer_t * layer = t->target_layer; lv_color_format_t des_cf = layer->color_format; static bool arm_2d_initialized = false; @@ -192,19 +194,27 @@ static inline lv_result_t lv_draw_sw_image_helium( if (!is_transform) { break; } + #if ARM_2D_VERSION < 10202ul if(draw_dsc->scale_x != draw_dsc->scale_y) { break; } + #endif /* filter the unsupported colour format combination */ if((LV_COLOR_FORMAT_RGB565 == des_cf) && !( (LV_COLOR_FORMAT_RGB565 == src_cf) - || (LV_COLOR_FORMAT_RGB565A8 == src_cf))) { + || (LV_COLOR_FORMAT_RGB565A8 == src_cf) + #if __ARM_2D_CFG_SUPPORT_CCCA8888_IMPLICIT_CONVERSION__ && ARM_2D_VERSION > 10201ul + || (LV_COLOR_FORMAT_ARGB8888 == src_cf) + || (LV_COLOR_FORMAT_XRGB8888 == src_cf) + #endif + || (LV_COLOR_FORMAT_A8 == src_cf))) { break; } - #if 0 /* a temporary patch */ + #if ARM_2D_VERSION > 10201ul if((LV_COLOR_FORMAT_XRGB8888 == des_cf) && !( (LV_COLOR_FORMAT_ARGB8888 == src_cf) - || (LV_COLOR_FORMAT_XRGB8888 == src_cf))) { + || (LV_COLOR_FORMAT_XRGB8888 == src_cf) + || (LV_COLOR_FORMAT_A8 == src_cf))) { break; } #else @@ -218,7 +228,7 @@ static inline lv_result_t lv_draw_sw_image_helium( /* ------------- prepare parameters for arm-2d APIs - BEGIN --------- */ lv_area_t blend_area; - if(!lv_area_intersect(&blend_area, des_area, draw_task->clip_area)) { + if(!lv_area_intersect(&blend_area, des_area, &t->clip_area)) { break; } @@ -268,8 +278,8 @@ static inline lv_result_t lv_draw_sw_image_helium( target_region = (arm_2d_region_t) { .tLocation = { - .iX = (int16_t)(coords->x1 - draw_task->clip_area->x1), - .iY = (int16_t)(coords->y1 - draw_task->clip_area->y1), + .iX = (int16_t)(coords->x1 - t->clip_area.x1), + .iY = (int16_t)(coords->y1 - t->clip_area.y1), }, .tSize = src_size, }; @@ -289,12 +299,12 @@ static inline lv_result_t lv_draw_sw_image_helium( clip_region = (arm_2d_region_t) { .tLocation = { - .iX = (int16_t)(draw_task->clip_area->x1 - layer->buf_area.x1), - .iY = (int16_t)(draw_task->clip_area->y1 - layer->buf_area.y1), + .iX = (int16_t)(t->clip_area.x1 - layer->buf_area.x1), + .iY = (int16_t)(t->clip_area.y1 - layer->buf_area.y1), }, .tSize = { - .iWidth = (int16_t)lv_area_get_width(draw_task->clip_area), - .iHeight = (int16_t)lv_area_get_height(draw_task->clip_area), + .iWidth = (int16_t)lv_area_get_width(&t->clip_area), + .iHeight = (int16_t)lv_area_get_height(&t->clip_area), }, }; @@ -318,13 +328,21 @@ static inline lv_result_t lv_draw_sw_image_helium( .pchBuffer = (uint8_t *)src_buf, }; + #if ARM_2D_VERSION > 10201ul + static const bool bIsNewFrame = true; + arm_2d_point_float_t source_center, target_center; + source_center.fX = draw_dsc->pivot.x; + source_center.fY = draw_dsc->pivot.y; + target_center.fX = target_region.tLocation.iX + draw_dsc->pivot.x; + target_center.fY = target_region.tLocation.iY + draw_dsc->pivot.y; + #else static arm_2d_location_t source_center, target_center; source_center.iX = draw_dsc->pivot.x; source_center.iY = draw_dsc->pivot.y; target_center = target_region.tLocation; target_center.iX += draw_dsc->pivot.x; target_center.iY += draw_dsc->pivot.y; - + #endif if(LV_COLOR_FORMAT_A8 == src_cf) { source_tile.tInfo.bHasEnforcedColour = true; @@ -332,6 +350,21 @@ static inline lv_result_t lv_draw_sw_image_helium( if(LV_COLOR_FORMAT_RGB565 == des_cf) { + #if ARM_2D_VERSION > 10201ul + arm_2dp_rgb565_fill_colour_with_mask_opacity_and_transform_xy( + NULL, + &source_tile, + &target_tile, + NULL, + source_center, + ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)), + draw_dsc->scale_x / 256.0f, + draw_dsc->scale_y / 256.0f, + lv_color_to_u16(draw_dsc->recolor), + opa, + &target_center + ); + #else arm_2d_rgb565_fill_colour_with_mask_opacity_and_transform( &source_tile, &target_tile, @@ -343,9 +376,26 @@ static inline lv_result_t lv_draw_sw_image_helium( opa, &target_center ); - + #endif } else if(LV_COLOR_FORMAT_XRGB8888 == des_cf) { + #if ARM_2D_VERSION > 10201ul + + arm_2dp_cccn888_fill_colour_with_mask_opacity_and_transform_xy( + NULL, + &source_tile, + &target_tile, + NULL, + source_center, + ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)), + draw_dsc->scale_x / 256.0f, + draw_dsc->scale_y / 256.0f, + lv_color_to_int(draw_dsc->recolor), + opa, + &target_center + ); + + #else arm_2d_cccn888_fill_colour_with_mask_opacity_and_transform( &source_tile, &target_tile, @@ -357,6 +407,7 @@ static inline lv_result_t lv_draw_sw_image_helium( opa, &target_center ); + #endif } else { break; @@ -377,6 +428,23 @@ static inline lv_result_t lv_draw_sw_image_helium( mask_tile.tInfo.tColourInfo.chScheme = ARM_2D_COLOUR_GRAY8; mask_tile.pchBuffer = (uint8_t *)mask_buf; + #if ARM_2D_VERSION > 10201ul + + arm_2dp_rgb565_tile_transform_xy_with_src_mask_and_opacity( + NULL, + &source_tile, + &mask_tile, + &target_tile, + NULL, + source_center, + ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)), + draw_dsc->scale_x / 256.0f, + draw_dsc->scale_y / 256.0f, + opa, + &target_center + ); + + #else if(opa >= LV_OPA_MAX) { arm_2d_rgb565_tile_transform_with_src_mask( &source_tile, @@ -402,11 +470,27 @@ static inline lv_result_t lv_draw_sw_image_helium( &target_center ); } - + #endif } else if(LV_COLOR_FORMAT_RGB565 == src_cf) { LV_ASSERT(LV_COLOR_FORMAT_RGB565 == des_cf); + #if ARM_2D_VERSION > 10201ul + + arm_2dp_rgb565_tile_transform_xy_only_with_opacity( + NULL, + &source_tile, + &target_tile, + NULL, + source_center, + ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)), + draw_dsc->scale_x / 256.0f, + draw_dsc->scale_y / 256.0f, + opa, + &target_center + ); + + #else if(opa >= LV_OPA_MAX) { #if ARM_2D_VERSION >= 10106 arm_2d_rgb565_tile_transform_only( @@ -444,75 +528,81 @@ static inline lv_result_t lv_draw_sw_image_helium( &target_center ); } - + #endif } - #if 0 /* a temporary patch */ + #if ARM_2D_VERSION > 10201ul else if(LV_COLOR_FORMAT_ARGB8888 == src_cf) { - LV_ASSERT(LV_COLOR_FORMAT_XRGB8888 == des_cf); + if (LV_COLOR_FORMAT_XRGB8888 == des_cf) { + source_tile.tInfo.bHasEnforcedColour = true; + source_tile.tInfo.tColourInfo.chScheme = ARM_2D_COLOUR_CCCA8888; - static arm_2d_tile_t mask_tile; - mask_tile = source_tile; - - mask_tile.tInfo.bHasEnforcedColour = true; - mask_tile.tInfo.tColourInfo.chScheme = ARM_2D_CHANNEL_8in32; - mask_tile.pchBuffer = (uint8_t *)src_buf + 3; - - if(opa >= LV_OPA_MAX) { - arm_2d_cccn888_tile_transform_with_src_mask( + arm_2dp_cccn888_tile_transform_xy_only_with_opacity( + NULL, &source_tile, - &mask_tile, - &target_tile, - NULL, - source_center, - ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)), - draw_dsc->scale_x / 256.0f, - &target_center - ); - } - else { - arm_2d_cccn888_tile_transform_with_src_mask_and_opacity( - &source_tile, - &mask_tile, &target_tile, NULL, source_center, ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)), draw_dsc->scale_x / 256.0f, + draw_dsc->scale_y / 256.0f, opa, &target_center ); } + else if(LV_COLOR_FORMAT_RGB565 == des_cf) { + source_tile.tInfo.bHasEnforcedColour = true; + source_tile.tInfo.tColourInfo.chScheme = ARM_2D_COLOUR_CCCA8888; + arm_2dp_rgb565_tile_transform_xy_only_with_opacity( + NULL, + &source_tile, + &target_tile, + NULL, + source_center, + ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)), + draw_dsc->scale_x / 256.0f, + draw_dsc->scale_y / 256.0f, + opa, + &target_center + ); + } } else if(LV_COLOR_FORMAT_XRGB8888 == src_cf) { - LV_ASSERT(LV_COLOR_FORMAT_XRGB8888 == des_cf); - - if(opa >= LV_OPA_MAX) { - arm_2d_cccn888_tile_transform_only( - &source_tile, - &target_tile, - NULL, - source_center, - ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)), - draw_dsc->scale_x / 256.0f, - &target_center - ); - } - else { - arm_2d_cccn888_tile_transform_only_with_opacity( + if(LV_COLOR_FORMAT_XRGB8888 == des_cf) { + arm_2dp_cccn888_tile_transform_xy_only_with_opacity( + NULL, &source_tile, &target_tile, NULL, source_center, ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)), draw_dsc->scale_x / 256.0f, + draw_dsc->scale_y / 256.0f, opa, &target_center ); } + else if(LV_COLOR_FORMAT_RGB565 == des_cf) { - } + source_tile.tInfo.bHasEnforcedColour = true; + source_tile.tInfo.tColourInfo.chScheme = ARM_2D_COLOUR_CCCA8888; + + arm_2dp_rgb565_tile_transform_xy_only_with_opacity( + NULL, + &source_tile, + &target_tile, + NULL, + source_center, + ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)), + draw_dsc->scale_x / 256.0f, + draw_dsc->scale_y / 256.0f, + opa, + &target_center + ); + + } #endif + } else { break; } diff --git a/src/draw/sw/lv_draw_sw.c b/src/draw/sw/lv_draw_sw.c index 24e465774b..8b1ef4cc5d 100644 --- a/src/draw/sw/lv_draw_sw.c +++ b/src/draw/sw/lv_draw_sw.c @@ -83,7 +83,11 @@ void lv_draw_sw_init(void) draw_sw_unit->base_unit.dispatch_cb = dispatch; draw_sw_unit->base_unit.evaluate_cb = evaluate; draw_sw_unit->base_unit.delete_cb = LV_USE_OS ? lv_draw_sw_delete : NULL; +#if LV_USE_DRAW_ARM2D_SYNC + draw_sw_unit->base_unit.name = "SW_ARM2D"; +#else draw_sw_unit->base_unit.name = "SW"; +#endif #if LV_USE_OS uint32_t i; diff --git a/src/draw/sw/lv_draw_sw_img.c b/src/draw/sw/lv_draw_sw_img.c index 2e1067ba6c..5d5574cff7 100644 --- a/src/draw/sw/lv_draw_sw_img.c +++ b/src/draw/sw/lv_draw_sw_img.c @@ -298,7 +298,7 @@ static void img_draw_core(lv_draw_task_t * t, const lv_draw_image_dsc_t * draw_d img_coords, /* src_h, src_w, src_x1, src_y1 */ img_stride, /* image stride */ clipped_img_area, /* blend area */ - t, /* draw task*/ + t, /* target buffer, buffer width, buffer height, buffer stride */ draw_dsc)) { /* opa, recolour_opa and colour */ /*In the other cases every pixel need to be checked one-by-one*/ transform_and_recolor(t, draw_dsc, decoder_dsc, sup, img_coords, clipped_img_area); @@ -569,7 +569,7 @@ static void recolor(lv_area_t relative_area, uint8_t * src_buf, uint8_t * dest_b lv_opa_t mix_inv = 255 - mix; if(cf == LV_COLOR_FORMAT_RGB565A8 || cf == LV_COLOR_FORMAT_RGB565) { - if(LV_RESULT_INVALID == LV_DRAW_SW_RGB565_RECOLOR(dest_buf, blend_area, color, mix)) { + if(LV_RESULT_INVALID == LV_DRAW_SW_RGB565_RECOLOR(dest_buf, relative_area, color, mix)) { const uint8_t * src_buf_tmp = src_buf + src_stride * relative_area.y1 + relative_area.x1 * 2; int32_t img_stride_px = src_stride / 2; @@ -608,7 +608,7 @@ static void recolor(lv_area_t relative_area, uint8_t * src_buf, uint8_t * dest_b } } else if(cf == LV_COLOR_FORMAT_RGB565_SWAPPED) { - if(LV_RESULT_INVALID == LV_DRAW_SW_RGB565_SWAPPED_RECOLOR(dest_buf, blend_area, color, mix)) { + if(LV_RESULT_INVALID == LV_DRAW_SW_RGB565_SWAPPED_RECOLOR(dest_buf, relative_area, color, mix)) { const uint8_t * src_buf_tmp = src_buf + src_stride * relative_area.y1 + relative_area.x1 * 2; int32_t img_stride_px = src_stride / 2; @@ -648,7 +648,7 @@ static void recolor(lv_area_t relative_area, uint8_t * src_buf, uint8_t * dest_b } } else if(cf == LV_COLOR_FORMAT_RGB888 || cf == LV_COLOR_FORMAT_XRGB8888 || cf == LV_COLOR_FORMAT_ARGB8888) { - if(LV_RESULT_INVALID == LV_DRAW_SW_RGB888_RECOLOR(dest_buf, blend_area, color, mix, cf_final)) { + if(LV_RESULT_INVALID == LV_DRAW_SW_RGB888_RECOLOR(dest_buf, relative_area, color, mix, cf)) { uint32_t px_size = lv_color_format_get_size(cf); src_buf += src_stride * relative_area.y1 + relative_area.x1 * px_size; if(mix >= LV_OPA_MAX) { @@ -688,7 +688,7 @@ static void recolor(lv_area_t relative_area, uint8_t * src_buf, uint8_t * dest_b } } else if(cf == LV_COLOR_FORMAT_ARGB8888_PREMULTIPLIED) { - if(LV_RESULT_INVALID == LV_DRAW_SW_ARGB8888_PREMULTIPLIED_RECOLOR(dest_buf, blend_area, color, mix, cf_final)) { + if(LV_RESULT_INVALID == LV_DRAW_SW_ARGB8888_PREMULTIPLIED_RECOLOR(dest_buf, relative_area, color, mix, cf)) { uint32_t px_size = lv_color_format_get_size(cf); src_buf += src_stride * relative_area.y1 + relative_area.x1 * px_size;