From edfd41f6def8d0fb2fd8dfb1fa56072fac563bd5 Mon Sep 17 00:00:00 2001 From: Jan Van Winkel Date: Sun, 3 Feb 2019 16:54:58 +0100 Subject: [PATCH] gui: Upstep LittlevGL to version 5.3 Upstep LittlevGL to version 5.3 Signed-off-by: Jan Van Winkel --- lib/gui/lvgl/CMakeLists.txt | 8 +++- lib/gui/lvgl/Kconfig | 49 +++++++++++++++++++---- lib/gui/lvgl/Kconfig.objects | 71 +++++++++++++++++++++++++++++++++ lib/gui/lvgl/lv_conf.h | 76 +++++++++++++++++++++++++++++++----- 4 files changed, 187 insertions(+), 17 deletions(-) diff --git a/lib/gui/lvgl/CMakeLists.txt b/lib/gui/lvgl/CMakeLists.txt index 9c4f84c09b4..c873757ce94 100644 --- a/lib/gui/lvgl/CMakeLists.txt +++ b/lib/gui/lvgl/CMakeLists.txt @@ -11,7 +11,7 @@ set(lv_SUBBUILD_DIR ${ep_base}/Subbuild/${lv_name}) FetchContent_Declare( ${lv_name} GIT_REPOSITORY https://github.com/littlevgl/lvgl.git - GIT_TAG v5.2 + GIT_TAG v5.3 SOURCE_DIR ${lv_SOURCE_DIR} BINARY_DIR ${lv_SOURCE_DIR} SUBBUILD_DIR ${lv_SUBBUILD_DIR} @@ -37,6 +37,7 @@ zephyr_library_sources( ${LVGL_SOURCE_DIR}/lv_core/lv_group.c ${LVGL_SOURCE_DIR}/lv_core/lv_indev.c + ${LVGL_SOURCE_DIR}/lv_core/lv_lang.c ${LVGL_SOURCE_DIR}/lv_core/lv_obj.c ${LVGL_SOURCE_DIR}/lv_core/lv_refr.c ${LVGL_SOURCE_DIR}/lv_core/lv_style.c @@ -62,6 +63,7 @@ zephyr_library_sources( ${LVGL_SOURCE_DIR}/lv_misc/lv_color.c ${LVGL_SOURCE_DIR}/lv_misc/lv_font.c ${LVGL_SOURCE_DIR}/lv_misc/lv_fs.c + ${LVGL_SOURCE_DIR}/lv_misc/lv_gc.c ${LVGL_SOURCE_DIR}/lv_misc/lv_ll.c ${LVGL_SOURCE_DIR}/lv_misc/lv_log.c ${LVGL_SOURCE_DIR}/lv_misc/lv_math.c @@ -75,6 +77,7 @@ zephyr_library_sources( ${LVGL_SOURCE_DIR}/lv_objx/lv_btn.c ${LVGL_SOURCE_DIR}/lv_objx/lv_btnm.c ${LVGL_SOURCE_DIR}/lv_objx/lv_calendar.c + ${LVGL_SOURCE_DIR}/lv_objx/lv_canvas.c ${LVGL_SOURCE_DIR}/lv_objx/lv_cb.c ${LVGL_SOURCE_DIR}/lv_objx/lv_chart.c ${LVGL_SOURCE_DIR}/lv_objx/lv_cont.c @@ -94,9 +97,12 @@ zephyr_library_sources( ${LVGL_SOURCE_DIR}/lv_objx/lv_preload.c ${LVGL_SOURCE_DIR}/lv_objx/lv_roller.c ${LVGL_SOURCE_DIR}/lv_objx/lv_slider.c + ${LVGL_SOURCE_DIR}/lv_objx/lv_spinbox.c ${LVGL_SOURCE_DIR}/lv_objx/lv_sw.c ${LVGL_SOURCE_DIR}/lv_objx/lv_ta.c + ${LVGL_SOURCE_DIR}/lv_objx/lv_table.c ${LVGL_SOURCE_DIR}/lv_objx/lv_tabview.c + ${LVGL_SOURCE_DIR}/lv_objx/lv_tileview.c ${LVGL_SOURCE_DIR}/lv_objx/lv_win.c ${LVGL_SOURCE_DIR}/lv_themes/lv_theme.c diff --git a/lib/gui/lvgl/Kconfig b/lib/gui/lvgl/Kconfig index bfbb708c520..247979e20f4 100644 --- a/lib/gui/lvgl/Kconfig +++ b/lib/gui/lvgl/Kconfig @@ -105,7 +105,6 @@ choice endchoice if LVGL_CHROMA_KEY_CUSTOM - config LVGL_CUSTOM_CHROMA_KEY_RED hex "Chroma Key Red" range 0x00 0xFF @@ -182,6 +181,7 @@ config LVGL_MEM_POOL_NUMBER_BLOCKS endif +if !LVGL_TRUE_DOUBLE_BUFFERED config LVGL_VDB_SIZE int "Virtual Display Buffer Size" default 10 @@ -189,6 +189,7 @@ config LVGL_VDB_SIZE help Virtual Display Buffer (double buffering) size as a percentage of total display size. +endif config LVGL_VDB_STATIC bool "Statically allocate virtual display buffer" @@ -202,6 +203,13 @@ config LVGL_DOUBLE_VDB help Use 2 virtual display buffers to render and flush data in parallel +if LVGL_DOUBLE_VDB +config LVGL_TRUE_DOUBLE_BUFFERED + bool "True double buffered" + help + Use true double buffering, VDB size will be set to 100%. +endif + config LVGL_SCREEN_REFRESH_PERIOD int "Screen refresh period" default 50 @@ -247,12 +255,6 @@ config LVGL_INPUT_LONG_RESS_REPEAT_TIME Period in milliseconds after which a new trigger is generated for a long press -config LVGL_AVG_OBJ_COUNT - int "Average object counter" - default 32 - help - Average object counter on a screen - config LVGL_UTF_8 bool "Enable UTF-8 support" default y @@ -265,6 +267,26 @@ config LVGL_TEXT_BREAK_CHARACTERS help Characters on which a text break can take place +config LVGL_TEXT_BREAK_LONG_WORD_SIZE + int "Long word size for text break" + default 12 + help + Number of characters in a word before considering a word for a text break + +config LVGL_TEXT_BREAK_LONG_WORD_PRE_MIN_LEN + int "Minimum long word length before text break" + default 3 + help + Minimum number of characters of a long word that should be put before a + break + +config LVGL_TEXT_BREAK_LONG_WORD_POST_MIN_LEN + int "Minimum long word length after text break" + default 1 + help + Minimum number of characters of a long word that should be placed after a + break + config LVGL_ANTIALIAS bool "Enable anti-aliasing" default y @@ -310,6 +332,19 @@ config LVGL_FILESYSTEM help Enable LittlevGL file system +config LVGL_MULTI_LANGUAGE + bool "Multi language support" + help + Enable multi language support + +if LVGL_MULTI_LANGUAGE +config LVGL_NBR_OF_LANGUAGES + int "Number of languages" + default 1 + help + Number of languages to support +endif + config LVGL_VLA_SUPPORT bool "Enable variable length array support" default y diff --git a/lib/gui/lvgl/Kconfig.objects b/lib/gui/lvgl/Kconfig.objects index cc65364f7d0..305d5569a84 100644 --- a/lib/gui/lvgl/Kconfig.objects +++ b/lib/gui/lvgl/Kconfig.objects @@ -6,6 +6,12 @@ menu "Objects" +config LVGL_OBJ_REALIGN + bool "Object realign support" + default y + help + Enable object realign support + config LVGL_OBJ_LABEL bool "Label Object" default y @@ -94,6 +100,22 @@ config LVGL_OBJ_TAB_VIEW_ANIMATION_TIME endif +config LVGL_OBJ_TILE_VIEW + bool "Tile view object" + default y + depends on LVGL_OBJ_PAGE + help + Enable tile view object support + +if LVGL_OBJ_TILE_VIEW +config LVGL_OBJ_TILE_VIEW_ANIMATION_TIME + int "Tile view animation time" + default 300 + help + Tile view animation time in milliseconds + +endif + config LVGL_OBJ_CALENDAR bool "Calendar object" default y @@ -122,8 +144,28 @@ config LVGL_OBJ_PRELOAD_DEF_SPIN_TIME help Default spin time for pre-load in ms +choice + prompt "Default pre-load animation type" + default LVGL_OBJ_PRELOAD_DEF_ANIMATION_SPIN_ARC + help + Default pre-load animation type + + config LVGL_OBJ_PRELOAD_DEF_ANIMATION_SPIN_ARC + bool "Spinning Arc" + + config LVGL_OBJ_PRELOAD_DEF_ANIMATION_FILL + bool "Fill" + +endchoice endif +config LVGL_OBJ_CANVAS + bool "Canvas object" + default y + depends on LVGL_OBJ_IMAGE + help + Enabled canvas object support + config LVGL_OBJ_BAR bool "Bar object" default y @@ -149,6 +191,21 @@ config LVGL_OBJ_CHART help Enable chart object support +config LVGL_OBJ_TABLE + bool "Table object" + default y + depends on LVGL_OBJ_LABEL + help + Enable table object support + +if LVGL_OBJ_TABLE +config LVGL_OBJ_TABLE_COLUMN_MAX + int "Maximum number of table columns" + default 12 + help + Maximum number of columns to support in a table +endif + config LVGL_OBJ_LED bool "LED object" default y @@ -185,6 +242,13 @@ config LVGL_OBJ_TEXT_AREA_PWD_SHOW_TIME endif +config LVGL_OBJ_SPINBOX + bool "Spinbox object" + default y + depends on LVGL_OBJ_TEXT_AREA + help + Enable spinbox object support + config LVGL_OBJ_BUTTON bool "Button object" default y @@ -206,6 +270,13 @@ config LVGL_OBJ_IMG_BUTTON help Enable image button object support +if LVGL_OBJ_IMG_BUTTON +config LVGL_OBJ_IMG_BUTTON_TILED + bool "Image button tile support" + help + Enable tile support for image button +endif + endif config LVGL_OBJ_BUTTON_MATRIX diff --git a/lib/gui/lvgl/lv_conf.h b/lib/gui/lvgl/lv_conf.h index dcfe0a9ad2c..d94b46d2477 100644 --- a/lib/gui/lvgl/lv_conf.h +++ b/lib/gui/lvgl/lv_conf.h @@ -17,18 +17,35 @@ #define LV_MEM_CUSTOM_ALLOC k_malloc #define LV_MEM_CUSTOM_FREE k_free +#define LV_ENABLE_GC 0 + #elif defined(CONFIG_LVGL_MEM_POOL_HEAP_LIB_C) #define LV_MEM_CUSTOM_INCLUDE "stdlib.h" #define LV_MEM_CUSTOM_ALLOC malloc #define LV_MEM_CUSTOM_FREE free +#ifdef CONFIG_NEWLIB_LIBC + +#define LV_ENABLE_GC 1 +#define LV_MEM_CUSTOM_REALLOC realloc +#define LV_MEM_CUSTOM_GET_SIZE malloc_size +#define LV_GC_INCLUDE "stdlib.h" + +#else + +#define LV_ENABLE_GC 0 + +#endif + #else #define LV_MEM_CUSTOM_INCLUDE "lvgl_mem.h" #define LV_MEM_CUSTOM_ALLOC lvgl_malloc #define LV_MEM_CUSTOM_FREE lvgl_free +#define LV_ENABLE_GC 0 + #endif /* Graphics settings */ @@ -37,8 +54,22 @@ #define LV_VER_RES CONFIG_LVGL_VER_RES #define LV_DPI CONFIG_LVGL_DPI +#ifdef CONFIG_LVGL_ANTIALIAS +#define LV_ANTIALIAS CONFIG_LVGL_ANTIALIAS +#else +#define LV_ANTIALIAS 0 +#endif + +#define LV_REFR_PERIOD CONFIG_LVGL_SCREEN_REFRESH_PERIOD + +/* VDB settings */ + +#ifdef CONFIG_LVGL_TRUE_DOUBLE_BUFFERED +#define LV_VDB_SIZE (CONFIG_LVGL_VDB_SIZE * CONFIG_LVGL_HOR_RES) +#else #define LV_VDB_SIZE (CONFIG_LVGL_VDB_SIZE * CONFIG_LVGL_HOR_RES \ * CONFIG_LVGL_VER_RES / 100) +#endif #if CONFIG_LVGL_BITS_PER_PIXEL == 0 #define LV_VDB_PX_BPP LV_COLOR_SIZE @@ -52,7 +83,6 @@ #define LV_VDB_ADR LV_VDB_ADR_INV #endif - #define LV_VDB_DOUBLE CONFIG_LVGL_DOUBLE_VDB #ifdef CONFIG_LVGL_VDB_STATIC #define LV_VDB2_ADR 0 @@ -60,14 +90,7 @@ #define LV_VDB2_ADR LV_VDB_ADR_INV #endif -#ifdef CONFIG_LVGL_ANTIALIAS -#define LV_ANTIALIAS CONFIG_LVGL_ANTIALIAS -#else -#define LV_ANTIALIAS 0 -#endif - -#define LV_REFR_PERIOD CONFIG_LVGL_SCREEN_REFRESH_PERIOD -#define LV_INV_FIFO_SIZE CONFIG_LVGL_AVG_OBJ_COUNT +#define LV_VDB_TRUE_DOUBLE_BUFFERED CONFIG_LVGL_TRUE_DOUBLE_BUFFERED /* Miscellaneous setting */ @@ -109,6 +132,11 @@ #define LV_TXT_UTF8 CONFIG_LVGL_UTF_8 #define LV_TXT_BREAK_CHARS CONFIG_LVGL_TEXT_BREAK_CHARACTERS +#define LV_TXT_LINE_BREAK_LONG_LEN CONFIG_LVGL_TEXT_BREAK_LONG_WORD_SIZE +#define LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN \ + CONFIG_LVGL_TEXT_BREAK_LONG_WORD_PRE_MIN_LEN +#define LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN \ + CONFIG_LVGL_TEXT_BREAK_LONG_WORD_POST_MIN_LEN #define USE_LV_ANIMATION CONFIG_LVGL_ANIMATION #define USE_LV_SHADOW CONFIG_LVGL_SHADOW @@ -117,6 +145,12 @@ #define USE_LV_REAL_DRAW CONFIG_LVGL_DIRECT_DRAW #define USE_LV_FILESYSTEM CONFIG_LVGL_FILESYSTEM +#ifdef LVGL_MULTI_LANGUAGE +#define USE_LV_MULTI_LANG CONFIG_LVGL_NBR_OF_LANGUAGES +#else +#define USE_LV_MULTI_LANG 0 +#endif + #define LV_ATTRIBUTE_TICK_INC #define LV_ATTRIBUTE_TASK_HANDLER #define LV_COMPILER_VLA_SUPPORTED CONFIG_LVGL_VLA_SUPPORT @@ -283,6 +317,7 @@ extern void *lv_default_font_custom_ptr; /* Objects */ #define LV_OBJ_FREE_NUM_TYPE uint32_t #define LV_OBJ_FREE_PTR 1 +#define LV_OBJ_REALIGN CONFIG_VGL_OBJ_REALIGN #define USE_LV_LABEL CONFIG_LVGL_OBJ_LABEL #if USE_LV_LABEL != 0 @@ -310,13 +345,26 @@ extern void *lv_default_font_custom_ptr; #define LV_TABVIEW_ANIM_TIME CONFIG_LVGL_OBJ_TAB_VIEW_ANIMATION_TIME #endif +#define USE_LV_TILEVIEW CONFIG_LVGL_OBJ_TILE_VIEW +#if USE_LV_TILEVIEW != 0 +#define LV_TILEVIEW_ANIM_TIME CONFIG_LVGL_OBJ_TILE_VIEW_ANIMATION_TIME +#endif + #define USE_LV_CALENDAR CONFIG_LVGL_OBJ_CALENDAR #define USE_LV_PRELOAD CONFIG_LVGL_OBJ_PRELOAD #if USE_LV_PRELOAD != 0 #define LV_PRELOAD_DEF_ARC_LENGTH CONFIG_LVGL_OBJ_PRELOAD_DEF_ARC_LENGTH #define LV_PRELOAD_DEF_SPIN_TIME CONFIG_LVGL_OBJ_PRELOAD_DEF_SPIN_TIME +#ifdef LVGL_OBJ_PRELOAD_DEF_ANIMATION_SPIN_ARC +#define LV_PRELOAD_DEF_ANIM LV_PRELOAD_TYPE_SPINNING_ARC #endif +#ifdef LVGL_OBJ_PRELOAD_DEF_ANIMATION_FILL +#define LV_PRELOAD_DEF_ANIM LV_PRELOAD_TYPE_FILLSPIN_ARC +#endif +#endif + +#define USE_LV_CANVAS CONFIG_LVGL_OBJ_CANVAS #define USE_LV_BAR CONFIG_LVGL_OBJ_BAR @@ -326,6 +374,11 @@ extern void *lv_default_font_custom_ptr; #define USE_LV_CHART CONFIG_LVGL_OBJ_CHART +#define USE_LV_TABLE CONFIG_LVGL_OBJ_TABLE +#if USE_LV_TABLE != 0 +#define LV_TABLE_COL_MAX CONFIG_LVGL_OBJ_TABLE_COLUMN_MAX +#endif + #define USE_LV_LED CONFIG_LVGL_OBJ_LED #define USE_LV_MBOX CONFIG_LVGL_OBJ_MSG_BOX @@ -338,6 +391,8 @@ extern void *lv_default_font_custom_ptr; CONFIG_LVGL_OBJ_TEXT_AREA_PWD_SHOW_TIME #endif +#define USE_LV_SPINBOX CONFIG_LVGL_OBJ_SPINBOX + #define USE_LV_BTN CONFIG_LVGL_OBJ_BUTTON #if USE_LV_BTN != 0 @@ -345,6 +400,9 @@ extern void *lv_default_font_custom_ptr; #endif #define USE_LV_IMGBTN CONFIG_LVGL_OBJ_IMG_BUTTON +#if USE_LV_IMGBTN +#define LV_IMGBTN_TILED CONFIG_LVGL_OBJ_IMG_BUTTON_TILED +#endif #define USE_LV_BTNM CONFIG_LVGL_OBJ_BUTTON_MATRIX