diff --git a/.cproject b/.cproject
index 012ade9..4d310b6 100644
--- a/.cproject
+++ b/.cproject
@@ -124,6 +124,49 @@
+
+
+
@@ -136,6 +179,11 @@
+
+
+
+
+
@@ -280,6 +328,45 @@
+
+
+
@@ -292,6 +379,11 @@
+
+
+
+
+
@@ -329,11 +421,20 @@
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
diff --git a/.project b/.project
index 2dec87b..a86e2cf 100644
--- a/.project
+++ b/.project
@@ -25,5 +25,6 @@
org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
org.eclipse.cdt.managedbuilder.core.managedBuildNature
com.st.stm32cube.ide.mcu.MCUSW4STM32ConvertedProjectNature
+ org.eclipse.cdt.core.ccnature
diff --git a/hal_stm_lvgl/tft/tft.c b/hal_stm_lvgl/tft/tft.c
index d69a17c..b4ea659 100644
--- a/hal_stm_lvgl/tft/tft.c
+++ b/hal_stm_lvgl/tft/tft.c
@@ -84,7 +84,7 @@ static uint16_t * my_fb = (uint16_t *)LAYER0_ADDRESS;
static uint32_t * my_fb = (uint32_t *)LAYER0_ADDRESS;
#endif
-static lv_disp_t * disp;
+static lv_display_t * disp;
static DMA_HandleTypeDef DmaHandle;
static volatile int32_t x1_flush;
@@ -146,9 +146,9 @@ void tft_init(void)
static uint8_t buf1[TFT_HOR_RES * 48 * 2];
static uint8_t buf2[TFT_HOR_RES * 48 * 2];
- disp = lv_disp_create(800, 480);
- lv_disp_set_draw_buffers(disp, buf1, buf2, TFT_HOR_RES * 48 * 2, LV_DISP_RENDER_MODE_PARTIAL);
- lv_disp_set_flush_cb(disp, tft_flush_cb);
+ disp = lv_display_create(800, 480);
+ lv_display_set_buffers(disp, buf1, buf2, TFT_HOR_RES * 48 * 2, LV_DISP_RENDER_MODE_PARTIAL);
+ lv_display_set_flush_cb(disp, tft_flush_cb);
}
/**********************
@@ -157,31 +157,7 @@ void tft_init(void)
static void tft_flush_cb(lv_disp_t * disp, const lv_area_t * area, uint8_t * pxmap)
{
-// SCB_CleanInvalidateDCache();
-// int32_t y;
-// uint16_t * fb_tmp = my_fb;
-// uint32_t px_map_stride = lv_area_get_width(area) * 2;
-// lv_coord_t fb_stride = lv_disp_get_hor_res(disp);
-// fb_tmp += area->y1 * fb_stride;
-// fb_tmp += area->x1;
-// for(y = area->y1; y <= area->y2; y++) {
-// lv_memcpy(fb_tmp, pxmap, px_map_stride);
-// pxmap += px_map_stride;
-// fb_tmp += fb_stride;
-// }
-//
-//#if TFT_NO_TEARING
-// if(lv_disp_flush_is_last(disp)) refr_qry = true;
-// else lv_disp_flush_ready(disp);
-//#else
-// if(lv_disp_flush_is_last(&disp_drv)) HAL_DSI_Refresh(&hdsi_discovery);
-//
-// lv_disp_flush_ready(&disp_drv);
-//#endif
-// return;
-
-// lv_disp_flush_ready(drv);
-// return;
+
SCB_CleanInvalidateDCache();
/*Truncate the area to the screen*/
diff --git a/lv_conf.h b/lv_conf.h
index e05765c..e805e6c 100644
--- a/lv_conf.h
+++ b/lv_conf.h
@@ -1,6 +1,6 @@
/**
* @file lv_conf.h
- * Configuration file for v9.0.0-dev
+ * Configuration file for v9.0.0
*/
/*
@@ -21,8 +21,6 @@
COLOR SETTINGS
*====================*/
-#define LV_USE_DEV_VERSION
-
/*Color depth: 8 (A8), 16 (RGB565), 24 (RGB888), 32 (XRGB8888)*/
#define LV_COLOR_DEPTH 16
@@ -31,9 +29,11 @@
*=========================*/
/* Possible values
- * - LV_STDLIB_BUILTIN: LVGL's built in implementation
- * - LV_STDLIB_CLIB: Standard C functions, like malloc, strlen, etc
- * - LV_STDLIB_CUSTOM: Implement the functions externally
+ * - LV_STDLIB_BUILTIN: LVGL's built in implementation
+ * - LV_STDLIB_CLIB: Standard C functions, like malloc, strlen, etc
+ * - LV_STDLIB_MICROPYTHON: MicroPython implementation
+ * - LV_STDLIB_RTTHREAD: RT-Thread implementation
+ * - LV_STDLIB_CUSTOM: Implement the functions externally
*/
#define LV_USE_STDLIB_MALLOC LV_STDLIB_BUILTIN
#define LV_USE_STDLIB_STRING LV_STDLIB_BUILTIN
@@ -42,7 +42,7 @@
#if LV_USE_STDLIB_MALLOC == LV_STDLIB_BUILTIN
/*Size of the memory available for `lv_malloc()` in bytes (>= 2kB)*/
- #define LV_MEM_SIZE (128 * 1024U) /*[bytes]*/
+ #define LV_MEM_SIZE (64 * 1024U) /*[bytes]*/
/*Size of the memory expand for `lv_malloc()` in bytes*/
#define LV_MEM_POOL_EXPAND_SIZE 0
@@ -56,11 +56,6 @@
#endif
#endif /*LV_USE_MALLOC == LV_STDLIB_BUILTIN*/
-
-#if LV_USE_STDLIB_SPRINTF == LV_STDLIB_BUILTIN
- #define LV_SPRINTF_USE_FLOAT 0
-#endif /*LV_USE_STDLIB_SPRINTF == LV_STDLIB_BUILTIN*/
-
/*====================
HAL SETTINGS
*====================*/
@@ -68,42 +63,54 @@
/*Default display refresh, input device read and animation step period.*/
#define LV_DEF_REFR_PERIOD 33 /*[ms]*/
-/*Use a custom tick source that tells the elapsed time in milliseconds.
- *It removes the need to manually update the tick with `lv_tick_inc()`)*/
-#define LV_TICK_CUSTOM 0
-#if LV_TICK_CUSTOM
- #define LV_TICK_CUSTOM_INCLUDE "Arduino.h" /*Header for the system time function*/
- #define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis()) /*Expression evaluating to current system time in ms*/
- /*If using lvgl as ESP32 component*/
- // #define LV_TICK_CUSTOM_INCLUDE "esp_timer.h"
- // #define LV_TICK_CUSTOM_SYS_TIME_EXPR ((esp_timer_get_time() / 1000LL))
-#endif /*LV_TICK_CUSTOM*/
-
/*Default Dot Per Inch. Used to initialize default sizes such as widgets sized, style paddings.
*(Not so important, you can adjust it to modify default sizes and spaces)*/
#define LV_DPI_DEF 130 /*[px/inch]*/
+/*=================
+ * OPERATING SYSTEM
+ *=================*/
+/*Select an 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_CUSTOM */
+#define LV_USE_OS LV_OS_NONE
+
+#if LV_USE_OS == LV_OS_CUSTOM
+ #define LV_OS_CUSTOM_INCLUDE
+#endif
+
/*========================
* RENDERING CONFIGURATION
*========================*/
-/* Max. memory to be used for layers */
-#define LV_LAYER_MAX_MEMORY_USAGE 150 /*[kB]*/
+/*Align the stride of all layers and images to this bytes*/
+#define LV_DRAW_BUF_STRIDE_ALIGN 1
+
+/*Align the start address of draw_buf addresses to this bytes*/
+#define LV_DRAW_BUF_ALIGN 4
#define LV_USE_DRAW_SW 1
#if LV_USE_DRAW_SW == 1
/* Set the number of draw unit.
* > 1 requires an operating system enabled in `LV_USE_OS`
- * > 1 means multply threads will render the screen in parallel */
+ * > 1 means multiply threads will render the screen in parallel */
#define LV_DRAW_SW_DRAW_UNIT_CNT 1
+ /* Use Arm-2D to accelerate the sw render */
+ #define LV_USE_DRAW_ARM2D_SYNC 0
+
/* If a widget has `style_opa < 255` (not `bg_opa`, `text_opa` etc) or not NORMAL blend mode
* it is buffered into a "simple" layer before rendering. The widget can be buffered in smaller chunks.
* "Transformed layers" (if `transform_angle/zoom` are set) use larger buffers
* and can't be drawn in chunks. */
/*The target buffer size for simple layer chunks.*/
- #define LV_DRAW_SW_LAYER_SIMPLE_BUF_SIZE (24 * 1024) /*[bytes]*/
+ #define LV_DRAW_SW_LAYER_SIMPLE_BUF_SIZE (24 * 1024) /*[bytes]*/
/* 0: use a simple renderer capable of drawing only simple rectangles with gradient, images, texts, and straight lines only
* 1: use a complex renderer capable of drawing rounded corners, shadow, skew lines, and arcs too */
@@ -121,23 +128,58 @@
* 0: to disable caching */
#define LV_DRAW_SW_CIRCLE_CACHE_SIZE 4
#endif
+
+ #define LV_USE_DRAW_SW_ASM LV_DRAW_SW_ASM_NONE
+
+ #if LV_USE_DRAW_SW_ASM == LV_DRAW_SW_ASM_CUSTOM
+ #define LV_DRAW_SW_ASM_CUSTOM_INCLUDE ""
+ #endif
#endif
-/*=================
- * OPERATING SYSTEM
- *=================*/
-/*Select an operating system to use. Possible options:
- * - LV_OS_NONE
- * - LV_OS_PTHREAD
- * - LV_OS_FREERTOS
- * - LV_OS_CMSIS_RTOS2
- * - LV_OS_CUSTOM */
-#define LV_USE_OS LV_OS_NONE
+/* Use NXP's VG-Lite GPU on iMX RTxxx platforms. */
+#define LV_USE_DRAW_VGLITE 0
-#if LV_USE_OS == LV_OS_CUSTOM
- #define LV_OS_CUSTOM_INCLUDE
+#if LV_USE_DRAW_VGLITE
+ /* Enable blit quality degradation workaround recommended for screen's dimension > 352 pixels. */
+ #define LV_USE_VGLITE_BLIT_SPLIT 0
+
+ #if LV_USE_OS
+ /* Enable VGLite draw async. Queue multiple tasks and flash them once to the GPU. */
+ #define LV_USE_VGLITE_DRAW_ASYNC 1
+ #endif
+
+ /* Enable VGLite asserts. */
+ #define LV_USE_VGLITE_ASSERT 0
+#endif
+
+/* Use NXP's PXP on iMX RTxxx platforms. */
+#define LV_USE_DRAW_PXP 0
+
+#if LV_USE_DRAW_PXP
+ /* Enable PXP asserts. */
+ #define LV_USE_PXP_ASSERT 0
#endif
+/* Use Renesas Dave2D on RA platforms. */
+#define LV_USE_DRAW_DAVE2D 0
+
+/* Draw using cached SDL textures*/
+#define LV_USE_DRAW_SDL 0
+
+/* Use VG-Lite GPU. */
+#define LV_USE_DRAW_VG_LITE 0
+
+#if LV_USE_DRAW_VG_LITE
+/* Enable VG-Lite custom external 'gpu_init()' function */
+#define LV_VG_LITE_USE_GPU_INIT 0
+
+/* Enable VG-Lite assert. */
+#define LV_VG_LITE_USE_ASSERT 0
+
+/* VG-Lite flush commit trigger threshold. GPU will try to batch these many draw tasks. */
+#define LV_VG_LITE_FLUSH_MAX_COUNT 8
+
+#endif
/*=======================
* FEATURE CONFIGURATION
@@ -168,6 +210,10 @@
*0: Disable print timestamp*/
#define LV_LOG_USE_TIMESTAMP 1
+ /*1: Print file and line number of the log;
+ *0: Do not print file and line number of the log*/
+ #define LV_LOG_USE_FILE_LINE 1
+
/*Enable/disable LV_LOG_TRACE in modules that produces a huge number of logs*/
#define LV_LOG_TRACE_MEM 1
#define LV_LOG_TRACE_TIMER 1
@@ -177,7 +223,7 @@
#define LV_LOG_TRACE_OBJ_CREATE 1
#define LV_LOG_TRACE_LAYOUT 1
#define LV_LOG_TRACE_ANIM 1
- #define LV_LOG_TRACE_MSG 1
+ #define LV_LOG_TRACE_CACHE 1
#endif /*LV_USE_LOG*/
@@ -212,58 +258,65 @@
*For layers add the index number of the draw unit on black background.*/
#define LV_USE_PARALLEL_DRAW_DEBUG 0
-/*------------------
- * STATUS MONITORING
- *------------------*/
-
-/*1: Show CPU usage and FPS count
- * Requires `LV_USE_SYSMON = 1`*/
-#define LV_USE_PERF_MONITOR 1
-#if LV_USE_PERF_MONITOR
- #define LV_USE_PERF_MONITOR_POS LV_ALIGN_BOTTOM_RIGHT
-
- /*0: Displays performance data on the screen, 1: Prints performance data using log.*/
- #define LV_USE_PERF_MONITOR_LOG_MODE 0
-#endif
-
-/*1: Show the used memory and the memory fragmentation
- * Requires `LV_USE_BUILTIN_MALLOC = 1`
- * Requires `LV_USE_SYSMON = 1`*/
-#define LV_USE_MEM_MONITOR 1
-#if LV_USE_MEM_MONITOR
- #define LV_USE_MEM_MONITOR_POS LV_ALIGN_BOTTOM_LEFT
-#endif
-
/*-------------
* Others
*-----------*/
-/*Maximum buffer size to allocate for rotation.
- *Only used if software rotation is enabled in the display driver.*/
-#define LV_DISP_ROT_MAX_BUF (10*1024)
-
-/*Garbage Collector settings
- *Used if lvgl is bound to higher level language and the memory is managed by that language*/
-#define LV_ENABLE_GC 0
-#if LV_ENABLE_GC != 0
- #define LV_GC_INCLUDE "gc.h" /*Include Garbage Collector related things*/
-#endif /*LV_ENABLE_GC*/
+#define LV_ENABLE_GLOBAL_CUSTOM 0
+#if LV_ENABLE_GLOBAL_CUSTOM
+ /*Header to include for the custom 'lv_global' function"*/
+ #define LV_GLOBAL_CUSTOM_INCLUDE
+#endif
-/*Default image cache size. Image caching keeps some images opened.
- *If only the built-in image formats are used there is no real advantage of caching.
- *With other image decoders (e.g. PNG or JPG) caching save the continuous open/decode of images.
- *However the opened images consume additional RAM.
- *0: to disable caching*/
-#define LV_IMG_CACHE_DEF_SIZE 0
+/*Default cache size in bytes.
+ *Used by image decoders such as `lv_lodepng` to keep the decoded image in the memory.
+ *If size is not set to 0, the decoder will fail to decode when the cache is full.
+ *If size is 0, the cache function is not enabled and the decoded mem will be released immediately after use.*/
+#define LV_CACHE_DEF_SIZE 0
+/*Default number of image header cache entries. The cache is used to store the headers of images
+ *The main logic is like `LV_CACHE_DEF_SIZE` but for image headers.*/
+#define LV_IMAGE_HEADER_CACHE_DEF_CNT 32
/*Number of stops allowed per gradient. Increase this to allow more stops.
*This adds (sizeof(lv_color_t) + 1) bytes per additional stop*/
-#define LV_GRADIENT_MAX_STOPS 2
+#define LV_GRADIENT_MAX_STOPS 2
/* Adjust color mix functions rounding. GPUs might calculate color mix (blending) differently.
* 0: round down, 64: round up from x.75, 128: round up from half, 192: round up from x.25, 254: round up */
-#define lv_color_mix_ROUND_OFS 0
+#define LV_COLOR_MIX_ROUND_OFS 0
+
+/* Add 2 x 32 bit variables to each lv_obj_t to speed up getting style properties */
+#define LV_OBJ_STYLE_CACHE 0
+
+/* Add `id` field to `lv_obj_t` */
+#define LV_USE_OBJ_ID 0
+
+/* Use lvgl builtin method for obj ID */
+#define LV_USE_OBJ_ID_BUILTIN 0
+
+/*Use obj property set/get API*/
+#define LV_USE_OBJ_PROPERTY 0
+
+/* VG-Lite Simulator */
+/*Requires: LV_USE_THORVG_INTERNAL or LV_USE_THORVG_EXTERNAL */
+#define LV_USE_VG_LITE_THORVG 0
+
+#if LV_USE_VG_LITE_THORVG
+
+ /*Enable LVGL's blend mode support*/
+ #define LV_VG_LITE_THORVG_LVGL_BLEND_SUPPORT 0
+
+ /*Enable YUV color format support*/
+ #define LV_VG_LITE_THORVG_YUV_SUPPORT 0
+
+ /*Enable 16 pixels alignment*/
+ #define LV_VG_LITE_THORVG_16PIXELS_ALIGN 1
+
+ /*Enable multi-thread render*/
+ #define LV_VG_LITE_THORVG_THREAD_RENDER 0
+
+#endif
/*=====================
* COMPILER SETTINGS
@@ -278,7 +331,7 @@
/*Define a custom attribute to `lv_timer_handler` function*/
#define LV_ATTRIBUTE_TIMER_HANDLER
-/*Define a custom attribute to `lv_disp_flush_ready` function*/
+/*Define a custom attribute to `lv_display_flush_ready` function*/
#define LV_ATTRIBUTE_FLUSH_READY
/*Required alignment size for buffers*/
@@ -301,8 +354,11 @@
*should also appear on LVGL binding API such as Micropython.*/
#define LV_EXPORT_CONST_INT(int_value) struct _silence_gcc_warning /*The default value just prevents GCC warning*/
-/*Extend the default -32k..32k coordinate range to -4M..4M by using int32_t for coordinates instead of int16_t*/
-#define LV_USE_LARGE_COORD 0
+/*Prefix all global extern data with this*/
+#define LV_ATTRIBUTE_EXTERN_DATA
+
+/* Use `float` as `lv_value_precise_t` */
+#define LV_USE_FLOAT 0
/*==================
* FONT USAGE
@@ -317,8 +373,8 @@
#define LV_FONT_MONTSERRAT_16 0
#define LV_FONT_MONTSERRAT_18 0
#define LV_FONT_MONTSERRAT_20 0
-#define LV_FONT_MONTSERRAT_22 0
-#define LV_FONT_MONTSERRAT_24 1
+#define LV_FONT_MONTSERRAT_22 1
+#define LV_FONT_MONTSERRAT_24 0
#define LV_FONT_MONTSERRAT_26 0
#define LV_FONT_MONTSERRAT_28 0
#define LV_FONT_MONTSERRAT_30 0
@@ -352,7 +408,7 @@
/*Enable handling large font and/or fonts with a lot of characters.
*The limit depends on the font size, font face and bpp.
*Compiler error will be triggered if a font needs it.*/
-#define LV_FONT_FMT_TXT_LARGE 0
+#define LV_FONT_FMT_TXT_LARGE 1
/*Enables/disables support for compressed fonts.*/
#define LV_USE_FONT_COMPRESSED 0
@@ -409,15 +465,17 @@
/*Documentation of the widgets: https://docs.lvgl.io/latest/en/html/widgets/index.html*/
+#define LV_WIDGETS_HAS_DEFAULT_VALUE 1
+
#define LV_USE_ANIMIMG 1
#define LV_USE_ARC 1
#define LV_USE_BAR 1
-#define LV_USE_BTN 1
+#define LV_USE_BUTTON 1
-#define LV_USE_BTNMATRIX 1
+#define LV_USE_BUTTONMATRIX 1
#define LV_USE_CALENDAR 1
#if LV_USE_CALENDAR
@@ -441,9 +499,9 @@
#define LV_USE_DROPDOWN 1 /*Requires: lv_label*/
-#define LV_USE_IMG 1 /*Requires: lv_label*/
+#define LV_USE_IMAGE 1 /*Requires: lv_label*/
-#define LV_USE_IMGBTN 1
+#define LV_USE_IMAGEBUTTON 1
#define LV_USE_KEYBOARD 1
@@ -451,6 +509,7 @@
#if LV_USE_LABEL
#define LV_LABEL_TEXT_SELECTION 1 /*Enable selecting text of the label*/
#define LV_LABEL_LONG_TXT_HINT 1 /*Store some extra info in labels to speed up drawing of very long texts*/
+ #define LV_LABEL_WAIT_CHAR_COUNT 3 /*The count of wait chart*/
#endif
#define LV_USE_LED 1
@@ -461,12 +520,12 @@
#define LV_USE_MENU 1
-#define LV_USE_METER 1
-
#define LV_USE_MSGBOX 1
#define LV_USE_ROLLER 1 /*Requires: lv_label*/
+#define LV_USE_SCALE 1
+
#define LV_USE_SLIDER 1 /*Requires: lv_bar*/
#define LV_USE_SPAN 1
@@ -513,10 +572,10 @@
#endif /*LV_USE_THEME_DEFAULT*/
/*A very simple theme that is a good starting point for a custom theme*/
-#define LV_USE_THEME_BASIC 0
+#define LV_USE_THEME_SIMPLE 1
/*A theme designed for monochrome displays*/
-#define LV_USE_THEME_MONO 0
+#define LV_USE_THEME_MONO 1
/*==================
* LAYOUTS
@@ -565,18 +624,42 @@
#define LV_FS_FATFS_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/
#endif
-/*PNG decoder library*/
-#define LV_USE_PNG 0
+/*API for memory-mapped file access. */
+#define LV_USE_FS_MEMFS 0
+#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')*/
+#endif
+
+/*LODEPNG decoder library*/
+#define LV_USE_LODEPNG 0
+
+/*PNG decoder(libpng) library*/
+#define LV_USE_LIBPNG 0
/*BMP decoder library*/
#define LV_USE_BMP 0
/* JPG + split JPG decoder library.
* Split JPG is a custom format optimized for embedded systems. */
-#define LV_USE_SJPG 0
+#define LV_USE_TJPGD 0
+
+/* libjpeg-turbo decoder library.
+ * Supports complete JPEG specifications and high-performance JPEG decoding. */
+#define LV_USE_LIBJPEG_TURBO 0
/*GIF decoder library*/
#define LV_USE_GIF 0
+#if LV_USE_GIF
+/*GIF decoder accelerate*/
+#define LV_GIF_CACHE_DECODE_DATA 0
+#endif
+
+
+/*Decode bin images to RAM*/
+#define LV_BIN_DECODER_RAM_LOAD 0
+
+/*RLE decompress library*/
+#define LV_USE_RLE 0
/*QR code library*/
#define LV_USE_QRCODE 0
@@ -587,21 +670,17 @@
/*FreeType library*/
#define LV_USE_FREETYPE 0
#if LV_USE_FREETYPE
- /*Memory used by FreeType to cache characters [bytes]*/
- #define LV_FREETYPE_CACHE_SIZE (64 * 1024)
+ /*Memory used by FreeType to cache characters in kilobytes*/
+ #define LV_FREETYPE_CACHE_SIZE 768
/*Let FreeType to use LVGL memory and file porting*/
#define LV_FREETYPE_USE_LVGL_PORT 0
- /* 1: bitmap cache use the sbit cache, 0:bitmap cache use the image cache. */
- /* sbit cache:it is much more memory efficient for small bitmaps(font size < 256) */
- /* if font size >= 256, must be configured as image cache */
- #define LV_FREETYPE_SBIT_CACHE 0
-
/* Maximum number of opened FT_Face/FT_Size objects managed by this cache instance. */
/* (0:use system defaults) */
- #define LV_FREETYPE_CACHE_FT_FACES 4
- #define LV_FREETYPE_CACHE_FT_SIZES 4
+ #define LV_FREETYPE_CACHE_FT_FACES 8
+ #define LV_FREETYPE_CACHE_FT_SIZES 8
+ #define LV_FREETYPE_CACHE_FT_GLYPH_CNT 256
#endif
/* Built-in TTF decoder */
@@ -614,6 +693,24 @@
/*Rlottie library*/
#define LV_USE_RLOTTIE 0
+/*Enable Vector Graphic APIs*/
+#define LV_USE_VECTOR_GRAPHIC 0
+
+/* Enable ThorVG (vector graphics library) from the src/libs folder */
+#define LV_USE_THORVG_INTERNAL 0
+
+/* Enable ThorVG by assuming that its installed and linked to the project */
+#define LV_USE_THORVG_EXTERNAL 0
+
+/*Enable LZ4 compress/decompress lib*/
+#define LV_USE_LZ4 0
+
+/*Use lvgl built-in LZ4 lib*/
+#define LV_USE_LZ4_INTERNAL 0
+
+/*Use external LZ4 library*/
+#define LV_USE_LZ4_EXTERNAL 0
+
/*FFmpeg library for image decoding and playing videos
*Supports all major image formats so do not enable other image decoder with it*/
#define LV_USE_FFMPEG 0
@@ -630,7 +727,30 @@
#define LV_USE_SNAPSHOT 0
/*1: Enable system monitor component*/
-#define LV_USE_SYSMON 1
+#define LV_USE_SYSMON 1
+#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
+
+ /*1: Show CPU usage and FPS count
+ * Requires `LV_USE_SYSMON = 1`*/
+ #define LV_USE_PERF_MONITOR 1
+ #if LV_USE_PERF_MONITOR
+ #define LV_USE_PERF_MONITOR_POS LV_ALIGN_BOTTOM_RIGHT
+
+ /*0: Displays performance data on the screen, 1: Prints performance data using log.*/
+ #define LV_USE_PERF_MONITOR_LOG_MODE 0
+ #endif
+
+ /*1: Show the used memory and the memory fragmentation
+ * Requires `LV_USE_BUILTIN_MALLOC = 1`
+ * Requires `LV_USE_SYSMON = 1`*/
+ #define LV_USE_MEM_MONITOR 1
+ #if LV_USE_MEM_MONITOR
+ #define LV_USE_MEM_MONITOR_POS LV_ALIGN_BOTTOM_LEFT
+ #endif
+
+#endif /*LV_USE_SYSMON*/
/*1: Enable the runtime performance profiler*/
#define LV_USE_PROFILER 0
@@ -646,10 +766,16 @@
#define LV_PROFILER_INCLUDE "lvgl/src/misc/lv_profiler_builtin.h"
/*Profiler start point function*/
- #define LV_PROFILER_BEGIN LV_PROFILER_BUILTIN_BEGIN
+ #define LV_PROFILER_BEGIN LV_PROFILER_BUILTIN_BEGIN
/*Profiler end point function*/
- #define LV_PROFILER_END LV_PROFILER_BUILTIN_END
+ #define LV_PROFILER_END LV_PROFILER_BUILTIN_END
+
+ /*Profiler start point function with custom tag*/
+ #define LV_PROFILER_BEGIN_TAG LV_PROFILER_BUILTIN_BEGIN_TAG
+
+ /*Profiler end point function with custom tag*/
+ #define LV_PROFILER_END_TAG LV_PROFILER_BUILTIN_END_TAG
#endif
/*1: Enable Monkey test*/
@@ -663,16 +789,9 @@
/*1: Support using images as font in label or span widgets */
#define LV_USE_IMGFONT 0
-#if LV_USE_IMGFONT
- /*Imgfont image file path maximum length*/
- #define LV_IMGFONT_PATH_MAX_LEN 64
-
- /*1: Use img cache to buffer header information*/
- #define LV_IMGFONT_USE_IMG_CACHE_HEADER 0
-#endif
-/*1: Enable a published subscriber based messaging system */
-#define LV_USE_MSG 0
+/*1: Enable an observer pattern implementation*/
+#define LV_USE_OBSERVER 1
/*1: Enable Pinyin input method*/
/*Requires: lv_keyboard*/
@@ -689,7 +808,7 @@
#define LV_IME_PINYIN_USE_K9_MODE 1
#if LV_IME_PINYIN_USE_K9_MODE == 1
#define LV_IME_PINYIN_K9_CAND_TEXT_NUM 3
- #endif // LV_IME_PINYIN_USE_K9_MODE
+ #endif /*LV_IME_PINYIN_USE_K9_MODE*/
#endif
/*1: Enable file explorer*/
@@ -703,9 +822,6 @@
#define LV_FILE_EXPLORER_QUICK_ACCESS 1
#endif
-
-#define LV_USE_OBSERVER 1
-
/*==================
* DEVICES
*==================*/
@@ -714,15 +830,51 @@
#define LV_USE_SDL 0
#if LV_USE_SDL
#define LV_SDL_INCLUDE_PATH
- #define LV_SDL_PARTIAL_MODE 0 /*Recommended only to emulate a setup with a display controller*/
- #define LV_SDL_FULLSCREEN 0
- #define LV_SDL_DIRECT_EXIT 1 /*1: Exit the application when all SDL widows are closed*/
+ #define LV_SDL_RENDER_MODE LV_DISPLAY_RENDER_MODE_DIRECT /*LV_DISPLAY_RENDER_MODE_DIRECT is recommended for best performance*/
+ #define LV_SDL_BUF_COUNT 1 /*1 or 2*/
+ #define LV_SDL_FULLSCREEN 0 /*1: Make the window full screen by default*/
+ #define LV_SDL_DIRECT_EXIT 1 /*1: Exit the application when all SDL windows are closed*/
+#endif
+
+/*Use X11 to open window on Linux desktop and handle mouse and keyboard*/
+#define LV_USE_X11 0
+#if LV_USE_X11
+ #define LV_X11_DIRECT_EXIT 1 /*Exit the application when all X11 windows have been closed*/
+ #define LV_X11_DOUBLE_BUFFER 1 /*Use double buffers for endering*/
+ /*select only 1 of the following render modes (LV_X11_RENDER_MODE_PARTIAL preferred!)*/
+ #define LV_X11_RENDER_MODE_PARTIAL 1 /*Partial render mode (preferred)*/
+ #define LV_X11_RENDER_MODE_DIRECT 0 /*direct render mode*/
+ #define LV_X11_RENDER_MODE_FULL 0 /*Full render mode*/
#endif
/*Driver for /dev/fb*/
#define LV_USE_LINUX_FBDEV 0
#if LV_USE_LINUX_FBDEV
- #define LV_LINUX_FBDEV_BSD 0
+ #define LV_LINUX_FBDEV_BSD 0
+ #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
+#endif
+
+/*Use Nuttx to open window and handle touchscreen*/
+#define LV_USE_NUTTX 0
+
+#if LV_USE_NUTTX
+ #define LV_USE_NUTTX_LIBUV 0
+
+ /*Use Nuttx custom init API to open window and handle touchscreen*/
+ #define LV_USE_NUTTX_CUSTOM_INIT 0
+
+ /*Driver for /dev/lcd*/
+ #define LV_USE_NUTTX_LCD 0
+ #if LV_USE_NUTTX_LCD
+ #define LV_NUTTX_LCD_BUFFER_COUNT 0
+ #define LV_NUTTX_LCD_BUFFER_SIZE 60
+ #endif
+
+ /*Driver for /dev/input*/
+ #define LV_USE_NUTTX_TOUCHSCREEN 0
+
#endif
/*Driver for /dev/dri/card*/
@@ -731,6 +883,20 @@
/*Interface for TFT_eSPI*/
#define LV_USE_TFT_ESPI 0
+/*Driver for evdev input devices*/
+#define LV_USE_EVDEV 0
+
+/*Drivers for LCD devices connected via SPI/parallel port*/
+#define LV_USE_ST7735 0
+#define LV_USE_ST7789 0
+#define LV_USE_ST7796 0
+#define LV_USE_ILI9341 0
+
+#define LV_USE_GENERIC_MIPI (LV_USE_ST7735 | LV_USE_ST7789 | LV_USE_ST7796 | LV_USE_ILI9341)
+
+/* LVGL Windows backend */
+#define LV_USE_WINDOWS 0
+
/*==================
* EXAMPLES
*==================*/
@@ -752,11 +918,10 @@
#define LV_USE_DEMO_KEYPAD_AND_ENCODER 0
/*Benchmark your system*/
-#define LV_USE_DEMO_BENCHMARK 1
-#if LV_USE_DEMO_BENCHMARK
- /*Use RGB565A8 images with 16 bit color depth instead of ARGB8565*/
- #define LV_DEMO_BENCHMARK_RGB565A8 0
-#endif
+#define LV_USE_DEMO_BENCHMARK 0
+
+/*Render test for each primitives. Requires at least 480x272 display*/
+#define LV_USE_DEMO_RENDER 0
/*Stress test for LVGL*/
#define LV_USE_DEMO_STRESS 0
@@ -772,14 +937,19 @@
#endif
/*Flex layout demo*/
-#define LV_USE_DEMO_FLEX_LAYOUT 0
+#define LV_USE_DEMO_FLEX_LAYOUT 0
/*Smart-phone like multi-language demo*/
-#define LV_USE_DEMO_MULTILANG 0
+#define LV_USE_DEMO_MULTILANG 0
/*Widget transformation demo*/
#define LV_USE_DEMO_TRANSFORM 0
+/*Demonstrate scroll settings*/
+#define LV_USE_DEMO_SCROLL 0
+
+/*Vector graphic demo*/
+#define LV_USE_DEMO_VECTOR_GRAPHIC 0
/*--END OF LV_CONF_H--*/
#endif /*LV_CONF_H*/
diff --git a/lvgl b/lvgl
index 5e3fb68..27e7932 160000
--- a/lvgl
+++ b/lvgl
@@ -1 +1 @@
-Subproject commit 5e3fb688355d06aa8fdf07499e1e841571101c8b
+Subproject commit 27e79328aac758211faf58181daf02a91c8beb69
diff --git a/src/main.c b/src/main.c
index c743e11..e35d82d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -44,29 +44,7 @@ int main(void) {
tft_init();
touchpad_init();
- lv_demo_benchmark();
-// lv_demo_widgets();
-
-// lv_obj_t * main_cont = lv_obj_create(lv_scr_act());
-// lv_obj_center(main_cont);
-// lv_obj_set_size(main_cont, 740, 400);
-// lv_obj_set_flex_flow(main_cont, LV_FLEX_FLOW_ROW_WRAP);
-//
-// uint32_t i;
-// for(i = 0; i < 20; i++) {
-// lv_obj_t * cont = lv_obj_create(main_cont);
-// lv_obj_set_size(cont, 130, 100);
-// lv_obj_set_style_pad_all(cont, 5, 0);
-// lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_ROW_WRAP);
-//
-// uint32_t j;
-// for(j = 0; j < 5; j++) {
-// lv_obj_t * btn = lv_btn_create(cont);
-// lv_obj_t * label = lv_label_create(btn);
-// lv_label_set_text(label, "A");
-// }
-// }
-
+ lv_demo_widgets();
while(1) {
lv_task_handler();