This is an automated email from the ASF dual-hosted git repository. acassis pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git
commit abdc745412130d6e2f16470718571ce6919662e3 Author: Qi Huang <huang...@xiaomi.com> AuthorDate: Fri Apr 3 11:21:31 2020 +0000 graphics/littlevgl: Migrate part of Kconfig/lv_conf.h to LittleVGL V6.1.2, such as basic setting and font, etc. Signed-off-by: Qi Huang <huang...@xiaomi.com> Change-Id: Ib3dc31d95acf646dd26d41be873082ea107c6616 --- graphics/littlevgl/Kconfig | 251 ++-------- graphics/littlevgl/lv_conf.h | 1068 ++++++++++++++++++++++-------------------- 2 files changed, 599 insertions(+), 720 deletions(-) diff --git a/graphics/littlevgl/Kconfig b/graphics/littlevgl/Kconfig index 58efef8..d8387d6 100644 --- a/graphics/littlevgl/Kconfig +++ b/graphics/littlevgl/Kconfig @@ -82,8 +82,8 @@ config LV_ANTIALIAS endif # LV_VDB_SIZE != 0 -config LV_REFR_PERIOD - int "Refresh period in milliseconds" +config LV_DISP_DEF_REFR_PERIOD + int "Default refresh period in milliseconds" default 50 ---help--- The graphics library will check for invalid areas an refresh @@ -100,28 +100,28 @@ endmenu menu "Input device settings" -config LV_INDEV_READ_PERIOD - int "Input device read period in milliseconds" +config LV_INDEV_DEF_READ_PERIOD + int "Input device default read period in milliseconds" default 50 config LV_INDEV_POINT_MARKER int "Mark the pressed points on the screen" default 0 -config LV_INDEV_DRAG_LIMIT - int "Drag limit in pixels" +config LV_INDEV_DEF_DRAG_LIMIT + int "Default drag limit in pixels" default 10 -config LV_INDEV_DRAG_THROW - int "Slow down ration when throwing on object by drag [%]" +config LV_INDEV_DEF_DRAG_THROW + int "Default slow down ration when throwing on object by drag [%]" default 20 -config LV_INDEV_LONG_PRESS_TIME - int "Long press time [ms]" +config LV_INDEV_DEF_LONG_PRESS_TIME + int "Default long press time [ms]" default 400 -config LV_INDEV_LONG_PRESS_REP_TIME - int "Repeated trigger period in long press [ms]" +config LV_INDEV_DEF_LONG_PRESS_REP_TIME + int "Default repeated trigger period in long press [ms]" default 100 endmenu @@ -264,207 +264,49 @@ endmenu menu "Font usage" -# 10 PX FONTS - -config USE_LV_FONT_DEJAVU_10 - int "Dejavu 10 px" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel - -config USE_LV_FONT_DEJAVU_10_LATIN_SUP - int "Dejavu 10 px - latin supplement" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel - -config USE_LV_FONT_DEJAVU_10_CYRILLIC - int "Dejavu 10 px - cyrillic" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel - -config USE_LV_FONT_SYMBOL_10 - int "Symbol 10 px" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel - -#20 PX FONTS - -config USE_LV_FONT_DEJAVU_20 - int "Dejavu 20 px" - default 4 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel - -config USE_LV_FONT_DEJAVU_20_LATIN_SUP - int "Dejavu 20 px - latin supplement" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel - -config USE_LV_FONT_DEJAVU_20_CYRILLIC - int "Dejavu 20 px - cyrillic" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel - -config USE_LV_FONT_SYMBOL_20 - int "Symbol 20 px" - default 4 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel +config USE_LV_FONT_ROBOTO_12 + bool "Roboto 12 px" + default n -#30 PX FONTS +config USE_LV_FONT_ROBOTO_16 + bool "Roboto 16 px" + default y -config USE_LV_FONT_DEJAVU_30 - int "Dejavu 30 px" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel - -config USE_LV_FONT_DEJAVU_30_LATIN_SUP - int "Dejavu 30 px - latin supplement" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel - -config USE_LV_FONT_DEJAVU_30_CYRILLIC - int "Dejavu 30 px - cyrillic" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel - -config USE_LV_FONT_SYMBOL_30 - int "Symbol 30 px" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel +config USE_LV_FONT_ROBOTO_22 + bool "Roboto 22 px" + default n -#40 PX FONTS +config USE_LV_FONT_ROBOTO_28 + bool "Roboto 28 px" + default n -config USE_LV_FONT_DEJAVU_40 - int "Dejavu 40 px" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel - -config USE_LV_FONT_DEJAVU_40_LATIN_SUP - int "Dejavu 40 px - latin supplement" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel - -config USE_LV_FONT_DEJAVU_40_CYRILLIC - int "Dejavu 40 px - cyrillic" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel - -config USE_LV_FONT_SYMBOL_40 - int "Symbol 40 px" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel - -config USE_LV_FONT_MONOSPACE_8 - int "Monospace 8 px" - default 0 - ---help--- - 0: disable - 1: 1 bit-per-pixel - 2: 2 bit-per-pixel - 4: 4 bit-per-pixel - 8: 8 bit-per-pixel +config USE_LV_FONT_UNSCII_8 + bool "Monospace 8 px" + default n choice prompt "Default Font" - default LV_FONT_DEFAULT_DEJAVU_20 + default LV_FONT_DEFAULT_ROBOTO_16 -config LV_FONT_DEFAULT_DEJAVU_10 - bool "Dejavu 10 px" - depends on USE_LV_FONT_DEJAVU_10 != 0 +config LV_FONT_DEFAULT_ROBOTO_12 + bool "Roboto 12 px" + depends on USE_LV_FONT_ROBOTO_12 != 0 -config LV_FONT_DEFAULT_DEJAVU_20 - bool "Dejavu 20 px" - depends on USE_LV_FONT_DEJAVU_20 != 0 +config LV_FONT_DEFAULT_ROBOTO_16 + bool "Roboto 16 px" + depends on USE_LV_FONT_ROBOTO_16 != 0 -config LV_FONT_DEFAULT_DEJAVU_30 - bool "Dejavu 30 px" - depends on USE_LV_FONT_DEJAVU_30 != 0 +config LV_FONT_DEFAULT_ROBOTO_22 + bool "Roboto 22 px" + depends on USE_LV_FONT_ROBOTO_22 != 0 -config LV_FONT_DEFAULT_DEJAVU_40 - bool "Dejavu 40 px" - depends on USE_LV_FONT_DEJAVU_40 != 0 +config LV_FONT_DEFAULT_ROBOTO_28 + bool "Roboto 28 px" + depends on USE_LV_FONT_ROBOTO_28 != 0 -config LV_FONT_DEFAULT_MONOSPACE_8 +config LV_FONT_DEFAULT_UNSCII_8 bool "Monospace 8 px" - depends on USE_LV_FONT_MONOSPACE_8 != 0 + depends on USE_LV_FONT_UNSCII_8 != 0 endchoice @@ -472,10 +314,6 @@ endmenu menu "Base object settings" -config LV_OBJ_FREE_PTR - bool "Free pointer enable/disable" - default y - config LV_OBJ_REALIGN bool "Enable `lv_obj_realaign()` based on `lv_obj_align()` parameters" default y @@ -567,6 +405,11 @@ config USE_LV_CHART bool "Chart usage" default y +config LV_CHART_AXIS_TICK_LABEL_MAX_LEN + depends on USE_LV_CHART + int "Chart axis tick label max length" + default 20 + config USE_LV_TABLE bool "Table usage" depends on USE_LV_LABEL diff --git a/graphics/littlevgl/lv_conf.h b/graphics/littlevgl/lv_conf.h index a929e7f..911b456 100644 --- a/graphics/littlevgl/lv_conf.h +++ b/graphics/littlevgl/lv_conf.h @@ -33,749 +33,785 @@ * ****************************************************************************/ -#ifndef __APPS_GRAPHICS_LITTLEVGL_LV_CONF_H -#define __APPS_GRAPHICS_LITTLEVGL_LV_CONF_H -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include <nuttx/config.h> - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/* Compiler settings */ - -#define LV_COMPILER_VLA_SUPPORTED 1 - -/* Dynamic memory */ - -#define LV_MEM_CUSTOM 0 -#define LV_MEM_SIZE CONFIG_LV_MEM_SIZE -#define LV_MEM_ADR 0 -#define LV_MEM_AUTO_DEFRAG 1 /* Automatically defrag on free */ -#define LV_MEM_ATTR - -#define LV_ENABLE_GC 0 +/* + * COPY THIS FILE AS `lv_conf.h` NEXT TO the `lvgl` FOLDER + */ -/* Graphical settings */ +#ifndef LV_CONF_H +#define LV_CONF_H +/* clang-format off */ -#define LV_DEMO_SLIDE_SHOW 0 +#include <nuttx/config.h> -/* Horizontal and vertical resolution of the library.*/ +#include <stdint.h> -#define LV_HOR_RES CONFIG_LV_HOR_RES -#define LV_VER_RES CONFIG_LV_VER_RES -#define LV_DPI CONFIG_LV_DPI +/* Type of coordinates. Should be `int16_t` (or `int32_t` for extreme cases) */ +typedef int16_t lv_coord_t; -/* Buffered rendering: - * - * No antialasing >= LV_HOR_RES - * Anti aliasing >= 4 * LV_HOR_RES - * - * Place VDB to a specific address (e.g. in external RAM) (0: allocate into - * RAM) - */ +/*==================== + Graphical settings + *====================*/ -#define LV_VDB_SIZE CONFIG_LV_VDB_SIZE -#define LV_VDB_ADR CONFIG_LV_VDB_ADR +/* Maximal horizontal and vertical resolution to support by the library.*/ +#define LV_HOR_RES_MAX CONFIG_LV_HOR_RES +#define LV_VER_RES_MAX CONFIG_LV_VER_RES -/* Use two Virtual Display buffers (VDB) parallelize rendering and flushing - * The flushing should use DMA to write the frame buffer in the background, +/* Color depth: + * - 1: 1 byte per pixel + * - 8: RGB233 + * - 16: RGB565 + * - 32: ARGB8888 */ +#define LV_COLOR_DEPTH CONFIG_LV_COLOR_DEPTH -#ifdef CONFIG_LV_VDB_DOUBLE -# define LV_VDB_DOUBLE CONFIG_LV_VDB_DOUBLE +/* Swap the 2 bytes of RGB565 color. + * Useful if the display has a 8 bit interface (e.g. SPI)*/ +#ifdef CONFIG_LV_COLOR_16_SWAP +#define LV_COLOR_16_SWAP CONFIG_LV_COLOR_16_SWAP #else -# define LV_VDB_DOUBLE 0 +#define LV_COLOR_16_SWAP 0 #endif -/* LV_VDB2_ADR - Place VDB2 to a specific address (e.g. in external RAM) - * (0: allocate into RAM) - */ - -#define LV_VDB2_ADR CONFIG_LV_VDB2_ADR - -#ifdef CONFIG_LV_VDB_TRUE_DOUBLE_BUFFERED -# define LV_VDB_TRUE_DOUBLE_BUFFERED CONFIG_LV_VDB_TRUE_DOUBLE_BUFFERED +/* 1: Enable screen transparency. + * Useful for OSD or other overlapping GUIs. + * Requires `LV_COLOR_DEPTH = 32` colors and the screen's style should be modified: `style.body.opa = ...`*/ +#ifdef CONFIG_LV_COLOR_SCREEN_TRANSP +#define LV_COLOR_SCREEN_TRANSP CONFIG_LV_COLOR_SCREEN_TRANSP #else -# define LV_VDB_TRUE_DOUBLE_BUFFERED 0 +#define LV_COLOR_SCREEN_TRANSP 0 #endif +/*Images pixels with this color will not be drawn (with chroma keying)*/ +#define LV_COLOR_TRANSP ((lv_color_t){.full = (CONFIG_LV_COLOR_TRANSP)}) /*LV_COLOR_LIME: pure green*/ -/* Enable anti aliasing - */ +/* Enable chroma keying for indexed images. */ +#define LV_INDEXED_CHROMA 1 +/* Enable anti-aliasing (lines, and radiuses will be smoothed) */ #ifdef CONFIG_LV_ANTIALIAS -# define LV_ANTIALIAS CONFIG_LV_ANTIALIAS +#define LV_ANTIALIAS CONFIG_LV_ANTIALIAS #else -# define LV_ANTIALIAS 0 +#define LV_ANTIALIAS 0 #endif -/* Screen refresh settings - * - * LV_REFR_PERIOD - Screen refresh period in milliseconds - * LV_INV_FIFO_SIZE - The average count of objects on a screen - */ +/* Default display refresh period. + * Can be changed in the display driver (`lv_disp_drv_t`).*/ +#define LV_DISP_DEF_REFR_PERIOD CONFIG_LV_DISP_DEF_REFR_PERIOD /*[ms]*/ -#define LV_REFR_PERIOD CONFIG_LV_REFR_PERIOD -#define LV_INV_FIFO_SIZE CONFIG_LV_INV_FIFO_SIZE +/* Dot Per Inch: used to initialize default sizes. + * E.g. a button with width = LV_DPI / 2 -> half inch wide + * (Not so important, you can adjust it to modify default sizes and spaces)*/ +#define LV_DPI CONFIG_LV_DPI /*[px]*/ -/* Misc. settings */ -/* Input device settings - * - * LV_INDEV_READ_PERIOD - Input device read period in milliseconds - * LV_INDEV_POINT_MARKER - Mark the pressed points - * LV_INDEV_DRAG_LIMIT - Drag threshold in pixels - * LV_INDEV_DRAG_THROW - Drag throw slow-down in [%]. Greater value - * means faster slow-down - * LV_INDEV_LONG_PRESS_TIME - Long press time in milliseconds - * LV_INDEV_LONG_PRESS_REP_TIME - Repeated trigger period in long press [ms] - */ +/*========================= + Memory manager settings + *=========================*/ -#define LV_INDEV_READ_PERIOD CONFIG_LV_INDEV_READ_PERIOD +/* LittelvGL's internal memory manager's settings. + * The graphical objects and other related data are stored here. */ -#ifdef CONFIG_LV_INDEV_POINT_MARKER -# define LV_INDEV_POINT_MARKER CONFIG_LV_INDEV_POINT_MARKER -#else -# define LV_INDEV_POINT_MARKER 0 -#endif +/* 1: use custom malloc/free, 0: use the built-in `lv_mem_alloc` and `lv_mem_free` */ +#define LV_MEM_CUSTOM 0 +#if LV_MEM_CUSTOM == 0 +/* Size of the memory used by `lv_mem_alloc` in bytes (>= 2kB)*/ +# define LV_MEM_SIZE (32U * 1024U) -#define LV_INDEV_DRAG_LIMIT CONFIG_LV_INDEV_DRAG_LIMIT -#define LV_INDEV_DRAG_THROW CONFIG_LV_INDEV_DRAG_THROW -#define LV_INDEV_LONG_PRESS_TIME CONFIG_LV_INDEV_LONG_PRESS_TIME -#define LV_INDEV_LONG_PRESS_REP_TIME CONFIG_LV_INDEV_LONG_PRESS_REP_TIME +/* Complier prefix for a big array declaration */ +# define LV_MEM_ATTR -/* Color settings - * - * LV_COLOR_TRANSP - Images pixels with this color will not be drawn (chroma - * keying) - */ +/* Set an address for the memory pool instead of allocating it as an array. + * Can be in external SRAM too. */ +# define LV_MEM_ADR 0 -#define LV_COLOR_DEPTH CONFIG_LV_COLOR_DEPTH +/* Automatically defrag. on free. Defrag. means joining the adjacent free cells. */ +# define LV_MEM_AUTO_DEFRAG 1 +#else /*LV_MEM_CUSTOM*/ +# define LV_MEM_CUSTOM_INCLUDE <stdlib.h> /*Header for the dynamic memory function*/ +# define LV_MEM_CUSTOM_ALLOC malloc /*Wrapper to malloc*/ +# define LV_MEM_CUSTOM_FREE free /*Wrapper to free*/ +#endif /*LV_MEM_CUSTOM*/ -#ifdef CONFIG_LV_COLOR_16_SWAP -# define LV_COLOR_16_SWAP CONFIG_LV_COLOR_16_SWAP -#else -# define LV_COLOR_16_SWAP 0 -#endif +/* Garbage Collector settings + * Used if lvgl is binded 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*/ +# define LV_MEM_CUSTOM_REALLOC your_realloc /*Wrapper to realloc*/ +# define LV_MEM_CUSTOM_GET_SIZE your_mem_get_size /*Wrapper to lv_mem_get_size*/ +#endif /* LV_ENABLE_GC */ -#ifdef CONFIG_LV_COLOR_SCREEN_TRANSP -# define LV_COLOR_SCREEN_TRANSP CONFIG_LV_COLOR_SCREEN_TRANSP -#else -# define LV_COLOR_SCREEN_TRANSP 0 -#endif +/*======================= + Input device settings + *=======================*/ -#define LV_COLOR_TRANSP LV_COLOR_HEX(CONFIG_LV_COLOR_TRANSP) +/* Input device default settings. + * Can be changed in the Input device driver (`lv_indev_drv_t`)*/ -/* Text settings - * - * LV_TXT_BREAK_CHARS - Can break texts on these chars - */ +/* Input device read period in milliseconds */ +#define LV_INDEV_DEF_READ_PERIOD CONFIG_LV_INDEV_DEF_READ_PERIOD -#ifdef CONFIG_LV_TXT_UTF8 -# define LV_TXT_UTF8 CONFIG_LV_TXT_UTF8 -#else -# define LV_TXT_UTF8 0 -#endif +/* Drag threshold in pixels */ +#define LV_INDEV_DEF_DRAG_LIMIT CONFIG_LV_INDEV_DEF_DRAG_LIMIT + +/* Drag throw slow-down in [%]. Greater value -> faster slow-down */ +#define LV_INDEV_DEF_DRAG_THROW CONFIG_LV_INDEV_DEF_DRAG_THROW + +/* Long press time in milliseconds. + * Time to send `LV_EVENT_LONG_PRESSSED`) */ +#define LV_INDEV_DEF_LONG_PRESS_TIME CONFIG_LV_INDEV_DEF_LONG_PRESS_TIME -#define LV_TXT_BREAK_CHARS CONFIG_LV_TXT_BREAK_CHARS +/* Repeated trigger period in long press [ms] + * Time between `LV_EVENT_LONG_PRESSED_REPEAT */ +#define LV_INDEV_DEF_LONG_PRESS_REP_TIME CONFIG_LV_INDEV_DEF_LONG_PRESS_REP_TIME -/* Graphics feature usage */ +/*================== + * Feature usage + *==================*/ +/*1: Enable the Animations */ #ifdef CONFIG_USE_LV_ANIMATION -# define USE_LV_ANIMATION CONFIG_USE_LV_ANIMATION +#define LV_USE_ANIMATION CONFIG_USE_LV_ANIMATION #else -# define USE_LV_ANIMATION 0 +#define LV_USE_ANIMATION 0 #endif +#if LV_USE_ANIMATION + +/*Declare the type of the user data of animations (can be e.g. `void *`, `int`, `struct`)*/ +typedef void * lv_anim_user_data_t; + +#endif + +/* 1: Enable shadow drawing*/ #ifdef CONFIG_USE_LV_SHADOW -# define USE_LV_SHADOW CONFIG_USE_LV_SHADOW +#define LV_USE_SHADOW CONFIG_USE_LV_SHADOW #else -# define USE_LV_SHADOW 0 +#define LV_USE_SHADOW 0 #endif +/* 1: Enable object groups (for keyboard/encoder navigation) */ #ifdef CONFIG_USE_LV_GROUP - #define USE_LV_GROUP CONFIG_USE_LV_GROUP +#define LV_USE_GROUP CONFIG_USE_LV_GROUP #else -# define USE_LV_GROUP 0 +#define LV_USE_GROUP 0 #endif +#if LV_USE_GROUP +typedef void * lv_group_user_data_t; +#endif /*LV_USE_GROUP*/ +/* 1: Enable GPU interface*/ #ifdef CONFIG_USE_LV_GPU -# define USE_LV_GPU CONFIG_USE_LV_GPU +#define LV_USE_GPU CONFIG_USE_LV_GPU #else -# define USE_LV_GPU 0 -#endif - -#ifdef CONFIG_USE_LV_REAL_DRAW -# define USE_LV_REAL_DRAW CONFIG_USE_LV_REAL_DRAW -#else -# define USE_LV_REAL_DRAW 0 +#define LV_USE_GPU 0 #endif +/* 1: Enable file system (might be required for images */ #ifdef CONFIG_USE_LV_FILESYSTEM -# define USE_LV_FILESYSTEM CONFIG_USE_LV_FILESYSTEM +#define LV_USE_FILESYSTEM CONFIG_USE_LV_FILESYSTEM #else -# define USE_LV_FILESYSTEM 0 +#define LV_USE_FILESYSTEM 0 #endif -/* Number of languages for labels to store (0: to disable this feature) */ - -#ifdef CONFIG_USE_LV_MULTI_LANG -# define USE_LV_MULTI_LANG CONFIG_USE_LV_MULTI_LANG -#else -# define USE_LV_MULTI_LANG 0 +#if LV_USE_FILESYSTEM +/*Declare the type of the user data of file system drivers (can be e.g. `void *`, `int`, `struct`)*/ +typedef void * lv_fs_drv_user_data_t; #endif -/* 1: use a custom tick source (removing the need to manually update the - * tick with `lv_tick_inc`) - */ - -#define LV_TICK_CUSTOM 0 +/*1: Add a `user_data` to drivers and objects*/ +#define LV_USE_USER_DATA 0 -/* LOG USAGE*/ +/*======================== + * Image decoder and cache + *========================*/ -#ifdef CONFIG_USE_LV_LOG -# define USE_LV_LOG CONFIG_USE_LV_LOG -# if defined(CONFIG_LV_LOG_LEVEL_TRACE) -# define LV_LOG_LEVEL LV_LOG_LEVEL_TRACE -# elif defined(CONFIG_LV_LOG_LEVEL_INFO) -# define LV_LOG_LEVEL LV_LOG_LEVEL_INFO -# elif defined(CONFIG_LV_LOG_LEVEL_WARN) -# define LV_LOG_LEVEL LV_LOG_LEVEL_WARN -# elif defined(CONFIG_LV_LOG_LEVEL_ERROR) -# define LV_LOG_LEVEL LV_LOG_LEVEL_ERROR -# else -# error "Unknown log level selected" -# endif -# define LV_LOG_PRINTF 1 /* TODO: find a NuttX way to do logging */ -#else -# define USE_LV_LOG 0 -# define LV_LOG_LEVEL 0 -# define LV_LOG_PRINTF 0 -#endif - -/* THEME USAGE */ -/* Just for test */ -#ifdef CONFIG_LV_THEME_LIVE_UPDATE -# define LV_THEME_LIVE_UPDATE CONFIG_LV_THEME_LIVE_UPDATE +/* 1: Enable indexed (palette) images */ +#ifdef CONFIG_LV_IMG_CF_INDEXED +#define LV_IMG_CF_INDEXED CONFIG_LV_IMG_CF_INDEXED #else -# define LV_THEME_LIVE_UPDATE 0 +#define LV_IMG_CF_INDEXED 0 #endif -#ifdef CONFIG_USE_LV_THEME_TEMPL -# define USE_LV_THEME_TEMPL CONFIG_USE_LV_THEME_TEMPL +/* 1: Enable alpha indexed images */ +#ifdef CONFIG_LV_IMG_CF_ALPHA +#define LV_IMG_CF_ALPHA CONFIG_LV_IMG_CF_ALPHA #else -# define USE_LV_THEME_TEMPL 0 +#define LV_IMG_CF_ALPHA 0 #endif -/* Built mainly from the built-in styles. Consumes very few RAM */ +/* Default image cache size. Image caching keeps the images opened. + * If only the built-in image formats are used there is no real advantage of caching. + * (I.e. no new image decoder is added) + * With complex image decoders (e.g. PNG or JPG) caching can save the continuous open/decode of images. + * However the opened images might consume additional RAM. + * LV_IMG_CACHE_DEF_SIZE must be >= 1 */ +#define LV_IMG_CACHE_DEF_SIZE 1 -#ifdef CONFIG_USE_LV_THEME_DEFAULT -# define USE_LV_THEME_DEFAULT CONFIG_USE_LV_THEME_DEFAULT -#else -# define USE_LV_THEME_DEFAULT 0 -#endif +/*Declare the type of the user data of image decoder (can be e.g. `void *`, `int`, `struct`)*/ +typedef void * lv_img_decoder_user_data_t; -/* Dark futuristic theme */ +/*===================== + * Compiler settings + *====================*/ +/* Define a custom attribute to `lv_tick_inc` function */ +#define LV_ATTRIBUTE_TICK_INC -#ifdef CONFIG_USE_LV_THEME_ALIEN -# define USE_LV_THEME_ALIEN CONFIG_USE_LV_THEME_ALIEN -#else -# define USE_LV_THEME_ALIEN 0 -#endif +/* Define a custom attribute to `lv_task_handler` function */ +#define LV_ATTRIBUTE_TASK_HANDLER -/* Dark elegant theme */ +/* With size optimization (-Os) the compiler might not align data to + * 4 or 8 byte boundary. This alignment will be explicitly applied where needed. + * E.g. __attribute__((aligned(4))) */ +#define LV_ATTRIBUTE_MEM_ALIGN -#ifdef CONFIG_USE_LV_THEME_NIGHT -# define USE_LV_THEME_NIGHT CONFIG_USE_LV_THEME_NIGHT -#else -# define USE_LV_THEME_NIGHT 0 -#endif +/* Attribute to mark large constant arrays for example + * font's bitmaps */ +#define LV_ATTRIBUTE_LARGE_CONST -/* Mono color theme for monochrome displays */ +/* Export integer constant to binding. + * This macro is used with constants in the form of LV_<CONST> that + * should also appear on lvgl binding API such as Micropython + * + * The default value just prevents a GCC warning. + */ +#define LV_EXPORT_CONST_INT(int_value) struct _silence_gcc_warning -#ifdef CONFIG_USE_LV_THEME_MONO -# define USE_LV_THEME_MONO CONFIG_USE_LV_THEME_MONO -#else -# define USE_LV_THEME_MONO 0 -#endif +/*=================== + * HAL settings + *==================*/ -/* Flat theme with bold colors and light shadows (Planned) */ +/* 1: use a custom tick source. + * It removes the need to manually update the tick with `lv_tick_inc`) */ +#define LV_TICK_CUSTOM 0 +#if LV_TICK_CUSTOM == 1 +#define LV_TICK_CUSTOM_INCLUDE "something.h" /*Header for the sys time function*/ +#define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis()) /*Expression evaluating to current systime in ms*/ +#endif /*LV_TICK_CUSTOM*/ -#ifdef CONFIG_USE_LV_THEME_MATERIAL -# define USE_LV_THEME_MATERIAL CONFIG_USE_LV_THEME_MATERIAL -#else -# define USE_LV_THEME_MATERIAL 0 -#endif +typedef void * lv_disp_drv_user_data_t; /*Type of user data in the display driver*/ +typedef void * lv_indev_drv_user_data_t; /*Type of user data in the input device driver*/ -/* Peaceful, mainly black and white theme (Planned) */ +/*================ + * Log settings + *===============*/ -#ifdef CONFIG_USE_LV_THEME_ZEN -# define USE_LV_THEME_ZEN CONFIG_USE_LV_THEME_ZEN +/*1: Enable the log module*/ +#ifdef CONFIG_USE_LV_LOG +#define LV_USE_LOG CONFIG_USE_LV_LOG #else -# define USE_LV_THEME_ZEN 0 +#define LV_USE_LOG 0 #endif -/* Water-like theme based on the movie "Finding Nemo" */ - -#ifdef CONFIG_USE_LV_THEME_NEMO -# define USE_LV_THEME_NEMO CONFIG_USE_LV_THEME_NEMO -#else -# define USE_LV_THEME_NEMO 0 +#if LV_USE_LOG +/* How important log should be added: + * LV_LOG_LEVEL_TRACE A lot of logs to give detailed information + * LV_LOG_LEVEL_INFO Log important events + * LV_LOG_LEVEL_WARN Log if something unwanted happened but didn't cause a problem + * LV_LOG_LEVEL_ERROR Only critical issue, when the system may fail + * LV_LOG_LEVEL_NONE Do not log anything + */ +#ifdef CONFIG_LV_LOG_LEVEL_TRACE +# define LV_LOG_LEVEL LV_LOG_LEVEL_TRACE #endif -/* FONT USAGE */ +#ifdef CONFIG_LV_LOG_LEVEL_INFO +# define LV_LOG_LEVEL LV_LOG_LEVEL_INFO +#endif -#ifdef CONFIG_USE_LV_FONT_DEJAVU_10 -# define USE_LV_FONT_DEJAVU_10 CONFIG_USE_LV_FONT_DEJAVU_10 -#else -# define USE_LV_FONT_DEJAVU_10 0 +#ifdef CONFIG_LV_LOG_LEVEL_WARN +# define LV_LOG_LEVEL LV_LOG_LEVEL_WARN #endif -#ifdef CONFIG_USE_LV_FONT_DEJAVU_10_LATIN_SUP -# define USE_LV_FONT_DEJAVU_10_LATIN_SUP CONFIG_USE_LV_FONT_DEJAVU_10_LATIN_SUP -#else -# define USE_LV_FONT_DEJAVU_10_LATIN_SUP 0 +#ifdef CONFIG_LV_LOG_LEVEL_ERROR +# define LV_LOG_LEVEL LV_LOG_LEVEL_ERROR #endif -#ifdef CONFIG_USE_LV_FONT_DEJAVU_10_CYRILLIC -# define USE_LV_FONT_DEJAVU_10_CYRILLIC CONFIG_USE_LV_FONT_DEJAVU_10_CYRILLIC -#else -# define USE_LV_FONT_DEJAVU_10_CYRILLIC 0 +#ifdef CONFIG_LV_LOG_LEVEL_NONE +# define LV_LOG_LEVEL LV_LOG_LEVEL_NONE #endif -#ifdef CONFIG_USE_LV_FONT_SYMBOL_10 -# define USE_LV_FONT_SYMBOL_10 CONFIG_USE_LV_FONT_SYMBOL_10 +/* 1: Print the log with 'printf'; + * 0: user need to register a callback with `lv_log_register_print_cb`*/ +#ifdef CONFIG_LV_LOG_PRINTF +# define LV_LOG_PRINTF CONFIG_LV_LOG_PRINTF #else -# define USE_LV_FONT_SYMBOL_10 0 +# define LV_LOG_PRINTF 0 #endif +#endif /*LV_USE_LOG*/ -/* Size 20 */ +/*================= + * Debug settings + *================*/ -#ifdef CONFIG_USE_LV_FONT_DEJAVU_20 -# define USE_LV_FONT_DEJAVU_20 CONFIG_USE_LV_FONT_DEJAVU_20 -#else -# define USE_LV_FONT_DEJAVU_20 0 -#endif +/* If Debug is enabled LittelvGL validates the parameters of the functions. + * If an invalid parameter is found an error log message is printed and + * the MCU halts at the error. (`LV_USE_LOG` should be enabled) + * If you are debugging the MCU you can pause + * the debugger to see exactly where the issue is. + * + * The behavior of asserts can be overwritten by redefining them here. + * E.g. #define LV_ASSERT_MEM(p) <my_assert_code> + */ +#define LV_USE_DEBUG 0 +#if LV_USE_DEBUG -#ifdef CONFIG_USE_LV_FONT_DEJAVU_20_LATIN_SUP -# define USE_LV_FONT_DEJAVU_20_LATIN_SUP CONFIG_USE_LV_FONT_DEJAVU_20_LATIN_SUP -#else -# define USE_LV_FONT_DEJAVU_20_LATIN_SUP 0 -#endif +/*Check if the parameter is NULL. (Quite fast) */ +#define LV_USE_ASSERT_NULL 1 -#ifdef CONFIG_USE_LV_FONT_DEJAVU_20_CYRILLIC -# define USE_LV_FONT_DEJAVU_20_CYRILLIC CONFIG_USE_LV_FONT_DEJAVU_20_CYRILLIC -#else -# define USE_LV_FONT_DEJAVU_20_CYRILLIC 0 -#endif +/*Checks is the memory is successfully allocated or no. (Quite fast)*/ +#define LV_USE_ASSERT_MEM 1 -#ifdef CONFIG_USE_LV_FONT_SYMBOL_20 -# define USE_LV_FONT_SYMBOL_20 CONFIG_USE_LV_FONT_SYMBOL_20 -#else -# define USE_LV_FONT_SYMBOL_20 0 -#endif +/* Check the strings. + * Search for NULL, very long strings, invalid characters, and unnatural repetitions. (Slow) + * If disabled `LV_USE_ASSERT_NULL` will be performed instead (if it's enabled) */ +#define LV_USE_ASSERT_STR 0 -/* Size 30 */ +/* Check NULL, the object's type and existence (e.g. not deleted). (Quite slow) + * If disabled `LV_USE_ASSERT_NULL` will be performed instead (if it's enabled) */ +#define LV_USE_ASSERT_OBJ 0 -#ifdef CONFIG_USE_LV_FONT_DEJAVU_30 -# define USE_LV_FONT_DEJAVU_30 CONFIG_USE_LV_FONT_DEJAVU_30 -#else -# define USE_LV_FONT_DEJAVU_30 0 -#endif +/*Check if the styles are properly initialized. (Fast)*/ +#define LV_USE_ASSERT_STYLE 1 + +#endif /*LV_USE_DEBUG*/ -#ifdef CONFIG_USE_LV_FONT_DEJAVU_30_LATIN_SUP -# define USE_LV_FONT_DEJAVU_30_LATIN_SUP CONFIG_USE_LV_FONT_DEJAVU_30_LATIN_SUP +/*================ + * THEME USAGE + *================*/ +#ifdef CONFIG_LV_THEME_LIVE_UPDATE +#define LV_THEME_LIVE_UPDATE CONFIG_LV_THEME_LIVE_UPDATE #else -# define USE_LV_FONT_DEJAVU_30_LATIN_SUP 0 +#define LV_THEME_LIVE_UPDATE 0 /*1: Allow theme switching at run time. Uses 8..10 kB of RAM*/ #endif -#ifdef CONFIG_USE_LV_FONT_DEJAVU_30_CYRILLIC -# define USE_LV_FONT_DEJAVU_30_CYRILLIC CONFIG_USE_LV_FONT_DEJAVU_30_CYRILLIC +#ifdef CONFIG_LV_THEME_LIVE_TEMPL +#define LV_USE_THEME_TEMPL CONFIG_LV_USE_THEME_TEMPL #else -# define USE_LV_FONT_DEJAVU_30_CYRILLIC 0 +#define LV_USE_THEME_TEMPL 0 /*Just for test*/ #endif -#ifdef CONFIG_USE_LV_FONT_SYMBOL_30 -# define USE_LV_FONT_SYMBOL_30 CONFIG_USE_LV_FONT_SYMBOL_30 +#ifdef CONFIG_LV_USE_THEME_DEFAULT +#define LV_USE_THEME_DEFAULT CONFIG_LV_USE_THEME_DEFAULT #else -# define USE_LV_FONT_SYMBOL_30 0 +#define LV_USE_THEME_DEFAULT 0 /*Built mainly from the built-in styles. Consumes very few RAM*/ #endif -/*Size 40*/ -#ifdef CONFIG_USE_LV_FONT_DEJAVU_40 -# define USE_LV_FONT_DEJAVU_40 CONFIG_USE_LV_FONT_DEJAVU_40 +#ifdef CONFIG_LV_USE_THEME_ALIEN +#define LV_USE_THEME_ALIEN CONFIG_LV_USE_THEME_ALIEN #else -# define USE_LV_FONT_DEJAVU_40 0 +#define LV_USE_THEME_ALIEN 0 /*Dark futuristic theme*/ #endif -#ifdef CONFIG_USE_LV_FONT_SYMBOL_40 -# define USE_LV_FONT_SYMBOL_40 CONFIG_USE_LV_FONT_SYMBOL_40 +#ifdef CONFIG_LV_USE_THEME_NIGHT +#define LV_USE_THEME_NIGHT CONFIG_LV_USE_THEME_NIGHT #else -# define USE_LV_FONT_SYMBOL_40 0 +#define LV_USE_THEME_NIGHT 0 /*Dark elegant theme*/ #endif -#ifdef CONFIG_USE_LV_FONT_DEJAVU_40_LATIN_SUP -# define USE_LV_FONT_DEJAVU_40_LATIN_SUP CONFIG_USE_LV_FONT_DEJAVU_40_LATIN_SUP +#ifdef CONFIG_LV_USE_THEME_MONO +#define LV_USE_THEME_MONO CONFIG_LV_USE_THEME_MONO #else -# define USE_LV_FONT_DEJAVU_40_LATIN_SUP 0 +#define LV_USE_THEME_MONO 0 /*Mono color theme for monochrome displays*/ #endif -#ifdef CONFIG_USE_LV_FONT_DEJAVU_40_CYRILLIC -# define USE_LV_FONT_DEJAVU_40_CYRILLIC CONFIG_USE_LV_FONT_DEJAVU_40_CYRILLIC +#ifdef CONFIG_LV_USE_THEME_MATERIAL +#define LV_USE_THEME_MATERIAL CONFIG_LV_USE_THEME_MATERIAL #else -# define USE_LV_FONT_DEJAVU_40_CYRILLIC 0 +#define LV_USE_THEME_MATERIAL 0 /*Flat theme with bold colors and light shadows*/ #endif -#ifdef CONFIG_USE_LV_FONT_MONOSPACE_8 -# define USE_LV_FONT_MONOSPACE_8 CONFIG_USE_LV_FONT_MONOSPACE_8 +#ifdef CONFIG_LV_USE_THEME_ZEN +#define LV_USE_THEME_ZEN CONFIG_LV_USE_THEME_ZEN #else -# define USE_LV_FONT_MONOSPACE_8 0 +#define LV_USE_THEME_ZEN 0 /*Peaceful, mainly light theme */ #endif -#if defined(CONFIG_LV_FONT_DEFAULT_DEJAVU_10) -# define LV_FONT_DEFAULT &lv_font_dejavu_10 -#elif defined(CONFIG_LV_FONT_DEFAULT_DEJAVU_20) -# define LV_FONT_DEFAULT &lv_font_dejavu_20 -#elif defined(CONFIG_LV_FONT_DEFAULT_DEJAVU_30) -# define LV_FONT_DEFAULT &lv_font_dejavu_30 -#elif defined(CONFIG_LV_FONT_DEFAULT_DEJAVU_40) -# define LV_FONT_DEFAULT &lv_font_dejavu_40 -#elif defined(CONFIG_LV_FONT_DEFAULT_MONOSPACE_8) -# define LV_FONT_DEFAULT &lv_font_monospace_8 +#ifdef CONFIG_LV_USE_THEME_NEMO +#define LV_USE_THEME_NEMO CONFIG_LV_USE_THEME_NEMO #else -# error "At least one font must be defined and selected as the default font" +#define LV_USE_THEME_NEMO 0 /*Water-like theme based on the movie "Finding Nemo"*/ #endif -/* LV_OBJ SETTINGS - * - * LV_OBJ_FREE_NUM_TYPE - Type of free number attribute (comment out disable free number) - * LV_OBJ_FREE_PTR - Enable the free pointer attribute - */ +/*================== + * FONT USAGE + *===================*/ -#define LV_OBJ_FREE_NUM_TYPE uint32_t +/* The built-in fonts contains the ASCII range and some Symbols with 4 bit-per-pixel. + * The symbols are available via `LV_SYMBOL_...` defines + * More info about fonts: https://docs.littlevgl.com/#Fonts + * To create a new font go to: https://littlevgl.com/ttf-font-to-c-array + */ -#ifdef CONFIG_LV_OBJ_FREE_PTR -# define LV_OBJ_FREE_PTR CONFIG_LV_OBJ_FREE_PTR +/* Robot fonts with bpp = 4 + * https://fonts.google.com/specimen/Roboto */ +#ifdef CONFIG_USE_LV_FONT_ROBOTO_12 +#define LV_FONT_ROBOTO_12 CONFIG_USE_LV_FONT_ROBOTO_12 #else -# define LV_OBJ_FREE_PTR 0 +#define LV_FONT_ROBOTO_12 0 #endif -#ifdef CONFIG_LV_OBJ_REALIGN -# define LV_OBJ_REALIGN CONFIG_LV_OBJ_REALIGN +#ifdef CONFIG_USE_LV_FONT_ROBOTO_16 +#define LV_FONT_ROBOTO_16 CONFIG_USE_LV_FONT_ROBOTO_16 #else -# define LV_OBJ_REALIGN 0 +#define LV_FONT_ROBOTO_16 0 #endif -/* LV OBJ X USAGE */ -/* Simple object */ - -/* Label (dependencies: - */ - -#ifdef CONFIG_USE_LV_LABEL -# define USE_LV_LABEL CONFIG_USE_LV_LABEL -# ifdef CONFIG_LV_LABEL_SCROLL_SPEED -# define LV_LABEL_SCROLL_SPEED CONFIG_LV_LABEL_SCROLL_SPEED -# else -# define LV_LABEL_SCROLL_SPEED 25 -# endif +#ifdef CONFIG_USE_LV_FONT_ROBOTO_22 +#define LV_FONT_ROBOTO_22 CONFIG_USE_LV_FONT_ROBOTO_22 #else -# define USE_LV_LABEL 0 +#define LV_FONT_ROBOTO_22 0 #endif -/* Image (dependencies: lv_label (if symbols are enabled) from misc: FSINT, - * UFS) - */ - -#ifdef CONFIG_USE_LV_IMG -# define USE_LV_IMG CONFIG_USE_LV_IMG +#ifdef CONFIG_USE_LV_FONT_ROBOTO_28 +#define LV_FONT_ROBOTO_28 CONFIG_USE_LV_FONT_ROBOTO_28 #else -# define USE_LV_IMG 0 +#define LV_FONT_ROBOTO_28 0 #endif -#ifdef CONFIG_LV_IMG_CF_INDEXED -# define LV_IMG_CF_INDEXED CONFIG_LV_IMG_CF_INDEXED -#else -# define LV_IMG_CF_INDEXED 0 -#endif +/* Demonstrate special features */ +#define LV_FONT_ROBOTO_12_SUBPX 1 +#define LV_FONT_ROBOTO_28_COMPRESSED 1 /*bpp = 3*/ -#ifdef CONFIG_LV_IMG_CF_ALPHA -# define LV_IMG_CF_ALPHA CONFIG_LV_IMG_CF_ALPHA +/*Pixel perfect monospace font + * http://pelulamu.net/unscii/ */ +#ifdef CONFIG_USE_LV_FONT_UNSCII_8 +#define LV_FONT_UNSCII_8 CONFIG_USE_LV_FONT_UNSCII_8 #else -# define LV_IMG_CF_ALPHA 0 +#define LV_FONT_UNSCII_8 0 #endif -/* Line (dependencies: - */ +/* Optionally declare your custom fonts here. + * You can use these fonts as default font too + * and they will be available globally. E.g. + * #define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(my_font_1) \ + * LV_FONT_DECLARE(my_font_2) + */ +#define LV_FONT_CUSTOM_DECLARE -#ifdef CONFIG_USE_LV_LINE -# define USE_LV_LINE CONFIG_USE_LV_LINE -#else -# define USE_LV_LINE 0 +/*Always set a default font from the built-in fonts*/ +#ifdef CONFIG_LV_FONT_DEFAULT_ROBOTO_12 +#define LV_FONT_DEFAULT &lv_font_roboto_12 #endif -#ifdef CONFIG_USE_LV_ARC -# define USE_LV_ARC CONFIG_USE_LV_ARC -#else -# define USE_LV_ARC 0 +#ifdef CONFIG_LV_FONT_DEFAULT_ROBOTO_16 +#define LV_FONT_DEFAULT &lv_font_roboto_16 #endif -/* Container objects */ -/* Container (dependencies: - */ - -#ifdef CONFIG_USE_LV_CONT -# define USE_LV_CONT CONFIG_USE_LV_CONT -#else -# define USE_LV_CONT 0 +#ifdef CONFIG_LV_FONT_DEFAULT_ROBOTO_22 +#define LV_FONT_DEFAULT &lv_font_roboto_22 #endif -/* Page (dependencies: lv_cont) */ - -#ifdef CONFIG_USE_LV_PAGE -# define USE_LV_PAGE CONFIG_USE_LV_PAGE -#else -# define USE_LV_PAGE 0 +#ifdef CONFIG_LV_FONT_DEFAULT_ROBOTO_28 +#define LV_FONT_DEFAULT &lv_font_roboto_28 #endif -/* Window (dependencies: lv_cont, lv_btn, lv_label, lv_img, lv_page) */ - -#ifdef CONFIG_USE_LV_WIN -# define USE_LV_WIN CONFIG_USE_LV_WIN -#else -# define USE_LV_WIN 0 +#ifdef CONFIG_LV_FONT_DEFAULT_UNSCII_8 +#define LV_FONT_DEFAULT &lv_font_unscii_8 #endif -/* Tab (dependencies: lv_page, lv_btnm) */ +/* Enable it if you have fonts with a lot of characters. + * The limit depends on the font size, font face and bpp + * but with > 10,000 characters if you see issues probably you need to enable it.*/ +#define LV_FONT_FMT_TXT_LARGE 0 -#ifdef CONFIG_USE_LV_TABVIEW -# define USE_LV_TABVIEW CONFIG_USE_LV_TABVIEW -# ifdef CONFIG_LV_TABVIEW_ANIM_TIME -# define LV_TABVIEW_ANIM_TIME CONFIG_LV_TABVIEW_ANIM_TIME -# else -# define LV_TABVIEW_ANIM_TIME 0 -# endif +/* Set the pixel order of the display. + * Important only if "subpx fonts" are used. + * With "normal" font it doesn't matter. + */ +#define LV_FONT_SUBPX_BGR 0 + +/*Declare the type of the user data of fonts (can be e.g. `void *`, `int`, `struct`)*/ +typedef void * lv_font_user_data_t; + +/*================= + * Text settings + *=================*/ + +/* Select a character encoding for strings. + * Your IDE or editor should have the same character encoding + * - LV_TXT_ENC_UTF8 + * - LV_TXT_ENC_ASCII + * */ +#define LV_TXT_ENC LV_TXT_ENC_UTF8 + + /*Can break (wrap) texts on these chars*/ +#define LV_TXT_BREAK_CHARS " ,.;:-_" + +/* If a word is at least this long, will break wherever "prettiest" + * To disable, set to a value <= 0 */ +#define LV_TXT_LINE_BREAK_LONG_LEN 12 + +/* Minimum number of characters in a long word to put on a line before a break. + * Depends on LV_TXT_LINE_BREAK_LONG_LEN. */ +#define LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN 3 + +/* Minimum number of characters in a long word to put on a line after a break. + * Depends on LV_TXT_LINE_BREAK_LONG_LEN. */ +#define LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN 3 + +/* The control character to use for signalling text recoloring. */ +#define LV_TXT_COLOR_CMD "#" + +/* Support bidirectional texts. + * Allows mixing Left-to-Right and Right-to-Left texts. + * The direction will be processed according to the Unicode Bidirectioanl Algorithm: + * https://www.w3.org/International/articles/inline-bidi-markup/uba-basics*/ +#define LV_USE_BIDI 0 +#if LV_USE_BIDI +/* Set the default direction. Supported values: + * `LV_BIDI_DIR_LTR` Left-to-Right + * `LV_BIDI_DIR_RTL` Right-to-Left + * `LV_BIDI_DIR_AUTO` detect texts base direction */ +#define LV_BIDI_BASE_DIR_DEF LV_BIDI_DIR_AUTO +#endif + +/*Change the built in (v)snprintf functions*/ +#define LV_SPRINTF_CUSTOM 0 +#if LV_SPRINTF_CUSTOM +# define LV_SPRINTF_INCLUDE <stdio.h> +# define lv_snprintf snprintf +# define lv_vsnprintf vsnprintf +#endif /*LV_SPRINTF_CUSTOM*/ + +/*=================== + * LV_OBJ SETTINGS + *==================*/ + +/*Declare the type of the user data of object (can be e.g. `void *`, `int`, `struct`)*/ +typedef void * lv_obj_user_data_t; + +/*1: enable `lv_obj_realaign()` based on `lv_obj_align()` parameters*/ +#ifdef CONFIG_LV_OBJ_REALIGN +#define LV_USE_OBJ_REALIGN CONFIG_LV_OBJ_REALIGN #else -# define USE_LV_TABVIEW 0 -# +#define LV_USE_OBJ_REALIGN 0 #endif -/* Titleview (dependencies: lv_page) */ +/* Enable to make the object clickable on a larger area. + * LV_EXT_CLICK_AREA_OFF or 0: Disable this feature + * LV_EXT_CLICK_AREA_TINY: The extra area can be adjusted horizontally and vertically (0..255 px) + * LV_EXT_CLICK_AREA_FULL: The extra area can be adjusted in all 4 directions (-32k..+32k px) + */ +#define LV_USE_EXT_CLICK_AREA LV_EXT_CLICK_AREA_OFF + +/*================== + * LV OBJ X USAGE + *================*/ +/* + * Documentation of the object types: https://docs.littlevgl.com/#Object-types + */ -#ifdef CONFIG_USE_LV_TILEVIEW -# define USE_LV_TILEVIEW CONFIG_USE_LV_TILEVIEW -# ifdef CONFIG_LV_TILEVIEW_ANIM_TIME -# define LV_TILEVIEW_ANIM_TIME CONFIG_LV_TILEVIEW_ANIM_TIME -# else -# define LV_TILEVIEW_ANIM_TIME 0 -# endif +/*Arc (dependencies: -)*/ +#ifdef CONFIG_USE_LV_ARC +#define LV_USE_ARC CONFIG_USE_LV_ARC #else -# define USE_LV_TILEVIEW 0 +#define LV_USE_ARC 0 #endif -/* Data visualizer objects */ -/* Bar (dependencies: -) */ - +/*Bar (dependencies: -)*/ #ifdef CONFIG_USE_LV_BAR -# define USE_LV_BAR CONFIG_USE_LV_BAR +#define LV_USE_BAR CONFIG_USE_LV_BAR #else -# define USE_LV_BAR 0 +#define LV_USE_BAR 0 #endif -/* Line meter (dependencies: bar; misc: trigo) */ - -#ifdef CONFIG_USE_LV_LMETER -# define USE_LV_LMETER CONFIG_USE_LV_LMETER +/*Button (dependencies: lv_cont*/ +#ifdef CONFIG_USE_LV_BTN +#define LV_USE_BTN CONFIG_USE_LV_BTN #else -# define USE_LV_LMETER 0 +#define LV_USE_BTN 0 #endif -/* Gauge (dependencies:bar, lmeter; misc: trigo) */ - -#ifdef CONFIG_USE_LV_GAUGE -# define USE_LV_GAUGE CONFIG_USE_LV_GAUGE +#if LV_USE_BTN != 0 +/*Enable button-state animations - draw a circle on click (dependencies: LV_USE_ANIMATION)*/ +#ifdef CONFIG_LV_BTN_INK_EFFECT +#define LV_BTN_INK_EFFECT CONFIG_LV_BTN_INK_EFFECT #else -# define USE_LV_GAUGE 0 +#define LV_BTN_INK_EFFECT 0 #endif -/* Chart (dependencies: -) */ +#endif -#ifdef CONFIG_USE_LV_CHART -# define USE_LV_CHART CONFIG_USE_LV_CHART +/*Button matrix (dependencies: -)*/ +#ifdef CONFIG_USE_LV_BTNM +#define LV_USE_BTNM CONFIG_USE_LV_BTNM #else -# define USE_LV_CHART 0 +#define LV_USE_BTNM 0 #endif -/* Table (dependencies: lv_label) */ - -#ifdef CONFIG_USE_LV_TABLE -# define USE_LV_TABLE CONFIG_USE_LV_TABLE -# if defined(CONFIG_LV_TABLE_COL_MAX) && CONFIG_LV_TABLE_COL_MAX > 0 -# define LV_TABLE_COL_MAX CONFIG_LV_TABLE_COL_MAX -# else -# error "LV_TABLE_COL_MAX must be greater than 0" -# endif +/*Calendar (dependencies: -)*/ +#ifdef CONFIG_USE_LV_CALENDAR +#define LV_USE_CALENDAR CONFIG_USE_LV_CALENDAR #else -# define USE_LV_TABLE 0 +#define LV_USE_CALENDAR 0 #endif -/* LED (dependencies: -) */ - -#ifdef CONFIG_USE_LV_LED -# define USE_LV_LED CONFIG_USE_LV_LED +/*Canvas (dependencies: lv_img)*/ +#ifdef CONFIG_USE_LV_CANVAS +#define LV_USE_CANVAS CONFIG_USE_LV_CANVAS #else -# define USE_LV_LED 0 +#define LV_USE_CANVAS 0 #endif -/* Message box (dependencies: lv_rect, lv_btnm, lv_label) */ -#ifdef CONFIG_USE_LV_MBOX -# define USE_LV_MBOX CONFIG_USE_LV_MBOX + +/*Check box (dependencies: lv_btn, lv_label)*/ +#ifdef CONFIG_USE_LV_CB +#define LV_USE_CB CONFIG_USE_LV_CB #else -# define USE_LV_MBOX 0 +#define LV_USE_CB 0 #endif -/* Text area (dependencies: lv_label, lv_page) */ - -#ifdef CONFIG_USE_LV_TA -# define USE_LV_TA CONFIG_USE_LV_TA +/*Chart (dependencies: -)*/ +#ifdef CONFIG_USE_LV_CHART +#define LV_USE_CHART CONFIG_USE_LV_CHART #else -# define USE_LV_TA 0 +#define LV_USE_CHART 0 #endif -/* Spinbox (dependencies: lv_ta) */ - -#ifdef CONFIG_USE_LV_SPINBOX -# define USE_LV_SPINBOX CONFIG_USE_LV_SPINBOX -#else -# define USE_LV_SPINBOX 0 +#if LV_USE_CHART +# define LV_CHART_AXIS_TICK_LABEL_MAX_LEN CONFIG_LV_CHART_AXIS_TICK_LABEL_MAX_LEN #endif -/* Calendar (dependencies: -) */ +/*Container (dependencies: -*/ +#define LV_USE_CONT 1 -#ifdef CONFIG_USE_LV_CALENDAR -# define USE_LV_CALENDAR CONFIG_USE_LV_CALENDAR -#else -# define USE_LV_CALENDAR 0 +/*Color picker (dependencies: -*/ +#define LV_USE_CPICKER 1 + +/*Drop down list (dependencies: lv_page, lv_label, lv_symbol_def.h)*/ +#define LV_USE_DDLIST 1 +#if LV_USE_DDLIST != 0 +/*Open and close default animation time [ms] (0: no animation)*/ +# define LV_DDLIST_DEF_ANIM_TIME 200 #endif -/* Preload (dependencies: lv_arc) */ +/*Gauge (dependencies:lv_bar, lv_lmeter)*/ +#define LV_USE_GAUGE 1 -#ifdef CONFIG_USE_LV_PRELOAD -# define USE_LV_PRELOAD CONFIG_USE_LV_PRELOAD -# define LV_PRELOAD_DEF_ARC_LENGTH CONFIG_LV_PRELOAD_DEF_ARC_LENGTH -# define LV_PRELOAD_DEF_SPIN_TIME CONFIG_LV_PRELOAD_DEF_SPIN_TIME -# ifdef CONFIG_LV_PRELOAD_DEF_ANIM_SPINNING_ARC -# define LV_PRELOAD_DEF_ANIM LV_PRELOAD_TYPE_SPINNING_ARC -# elif CONFIG_LV_PRELOAD-DEF_ANIM_FILLSPIN_ARC -# define LV_PRELOAD_DEF_ANIM LV_PRELOAD_TYPE_FILLSPIN_ARC -# endif -#else -# define USE_LV_PRELOAD 0 +/*Image (dependencies: lv_label*/ +#define LV_USE_IMG 1 + +/*Image Button (dependencies: lv_btn*/ +#define LV_USE_IMGBTN 1 +#if LV_USE_IMGBTN +/*1: The imgbtn requires left, mid and right parts and the width can be set freely*/ +# define LV_IMGBTN_TILED 0 #endif -/*Canvas (dependencies: lv_img)*/ +/*Keyboard (dependencies: lv_btnm)*/ +#define LV_USE_KB 1 -#ifdef CONFIG_USE_LV_CANVAS -# define USE_LV_CANVAS CONFIG_USE_LV_CANVAS -#else -# define USE_LV_CANVAS 0 -#endif +/*Label (dependencies: -*/ +#define LV_USE_LABEL 1 +#if LV_USE_LABEL != 0 +/*Hor, or ver. scroll speed [px/sec] in 'LV_LABEL_LONG_ROLL/ROLL_CIRC' mode*/ +# define LV_LABEL_DEF_SCROLL_SPEED 25 -/* User input objects */ +/* Waiting period at beginning/end of animation cycle */ +# define LV_LABEL_WAIT_CHAR_COUNT 3 -/* Button (dependencies: lv_cont */ +/*Enable selecting text of the label */ +# define LV_LABEL_TEXT_SEL 0 -#ifdef CONFIG_USE_LV_BTN -# define USE_LV_BTN CONFIG_USE_LV_BTN -#else -# define USE_LV_BTN 0 +/*Store extra some info in labels (12 bytes) to speed up drawing of very long texts*/ +# define LV_LABEL_LONG_TXT_HINT 0 #endif -/* Enable button-state animations - draw a circle on click (dependencies: USE_LV_ANIMATION) */ +/*LED (dependencies: -)*/ +#define LV_USE_LED 1 -#ifdef CONFIG_LV_BTN_INK_EFFECT -# define LV_BTN_INK_EFFECT CONFIG_LV_BTN_INK_EFFECT -#else -# define LV_BTN_INK_EFFECT 0 +/*Line (dependencies: -*/ +#define LV_USE_LINE 1 + +/*List (dependencies: lv_page, lv_btn, lv_label, (lv_img optionally for icons ))*/ +#define LV_USE_LIST 1 +#if LV_USE_LIST != 0 +/*Default animation time of focusing to a list element [ms] (0: no animation) */ +# define LV_LIST_DEF_ANIM_TIME 100 #endif -/* Image Button (dependencies: lv_btn */ +/*Line meter (dependencies: *;)*/ +#define LV_USE_LMETER 1 -#ifdef CONFIG_USE_LV_IMGBTN -# define USE_LV_IMGBTN CONFIG_USE_LV_IMGBTN -# ifdef CONFIG_LV_IMGBTN_TILED -# define LV_IMGBTN_TILED CONFIG_LV_IMGBTN_TILED -# else -# define LV_IMGBTN_TILED 0 -# endif -#else -# define CONFIG)USE_LV_IMGBTN 0 +/*Message box (dependencies: lv_rect, lv_btnm, lv_label)*/ +#define LV_USE_MBOX 1 + +/*Page (dependencies: lv_cont)*/ +#define LV_USE_PAGE 1 +#if LV_USE_PAGE != 0 +/*Focus default animation time [ms] (0: no animation)*/ +# define LV_PAGE_DEF_ANIM_TIME 400 #endif -/* Button matrix (dependencies: -) */ -#ifdef CONFIG_USE_LV_BTNM -# define USE_LV_BTNM CONFIG_USE_LV_BTNM -#else -# define USE_LV_BTNM 0 +/*Preload (dependencies: lv_arc, lv_anim)*/ +#define LV_USE_PRELOAD 1 +#if LV_USE_PRELOAD != 0 +# define LV_PRELOAD_DEF_ARC_LENGTH 60 /*[deg]*/ +# define LV_PRELOAD_DEF_SPIN_TIME 1000 /*[ms]*/ +# define LV_PRELOAD_DEF_ANIM LV_PRELOAD_TYPE_SPINNING_ARC #endif -/* Keyboard (dependencies: lv_btnm) */ +/*Roller (dependencies: lv_ddlist)*/ +#define LV_USE_ROLLER 1 +#if LV_USE_ROLLER != 0 +/*Focus animation time [ms] (0: no animation)*/ +# define LV_ROLLER_DEF_ANIM_TIME 200 -#ifdef CONFIG_USE_LV_KB -# define USE_LV_KB CONFIG_USE_LV_KB -#else -# define USE_LV_KB 0 +/*Number of extra "pages" when the roller is infinite*/ +# define LV_ROLLER_INF_PAGES 7 #endif -/* Check box (dependencies: lv_btn, lv_label) */ +/*Slider (dependencies: lv_bar)*/ +#define LV_USE_SLIDER 1 -#ifdef CONFIG_USE_LV_CB -# define USE_LV_CB CONFIG_USE_LV_CB -#else -# define USE_LV_CB 0 -#endif +/*Spinbox (dependencies: lv_ta)*/ +#define LV_USE_SPINBOX 1 -/* Switch (dependencies: lv_slider) */ +/*Switch (dependencies: lv_slider)*/ +#define LV_USE_SW 1 -#ifdef CONFIG_USE_LV_SW -# define USE_LV_SW CONFIG_USE_LV_SW -#else -# define USE_LV_SW 0 +/*Text area (dependencies: lv_label, lv_page)*/ +#define LV_USE_TA 1 +#if LV_USE_TA != 0 +# define LV_TA_DEF_CURSOR_BLINK_TIME 400 /*ms*/ +# define LV_TA_DEF_PWD_SHOW_TIME 1500 /*ms*/ #endif -/* List (dependencies: lv_page, lv_btn, lv_label, (lv_img optionally for - * icons)) - */ - -#ifdef CONFIG_USE_LV_LIST -# define USE_LV_LIST CONFIG_USE_LV_LIST -#else -# define USE_LV_LIST 0 +/*Table (dependencies: lv_label)*/ +#define LV_USE_TABLE 1 +#if LV_USE_TABLE +# define LV_TABLE_COL_MAX 12 #endif -/* Drop down list (dependencies: lv_page, lv_label) */ +/*Tab (dependencies: lv_page, lv_btnm)*/ +#define LV_USE_TABVIEW 1 +# if LV_USE_TABVIEW != 0 +/*Time of slide animation [ms] (0: no animation)*/ +# define LV_TABVIEW_DEF_ANIM_TIME 300 +#endif -#ifdef CONFIG_USE_LV_DDLIST -# define USE_LV_DDLIST CONFIG_USE_LV_DDLIST -#else -# define USE_LV_DDLIST 0 +/*Tileview (dependencies: lv_page) */ +#define LV_USE_TILEVIEW 1 +#if LV_USE_TILEVIEW +/*Time of slide animation [ms] (0: no animation)*/ +# define LV_TILEVIEW_DEF_ANIM_TIME 300 #endif -/* Roller (dependencies: lv_ddlist) */ +/*Window (dependencies: lv_cont, lv_btn, lv_label, lv_img, lv_page)*/ +#define LV_USE_WIN 1 -#ifdef CONFIG_USE_LV_ROLLER -# define USE_LV_ROLLER CONFIG_USE_LV_ROLLER -#else -# define USE_LV_ROLLER 0 +/*================== + * Non-user section + *==================*/ + +#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_WARNINGS) /* Disable warnings for Visual Studio*/ +# define _CRT_SECURE_NO_WARNINGS #endif -/* Slider (dependencies: lv_bar) */ +/*--END OF LV_CONF_H--*/ -#ifdef CONFIG_USE_LV_SLIDER -# define USE_LV_SLIDER CONFIG_USE_LV_SLIDER -#else -# define USE_LV_SLIDER 0 -#endif +/*Be sure every define has a default value*/ +#include "lvgl/src/lv_conf_checker.h" -#endif /*__APPS_GRAPHICS_LITTLEVGL_LV_CONF_H*/ +#endif /*LV_CONF_H*/