You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ac...@apache.org on 2020/04/15 14:38:33 UTC

[incubator-nuttx-apps] 01/15: graphics/littlevgl: Migrate part of Kconfig/lv_conf.h to LittleVGL V6.1.2, such as basic setting and font, etc.

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 <hu...@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 <hu...@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*/