1 /**
2  * GENERATED FILE, DO NOT EDIT IT!
3  * @file lv_conf_internal.h
4  * Make sure all the defines of lv_conf.h have a default value
5 **/
6 
7 #ifndef LV_CONF_INTERNAL_H
8 #define LV_CONF_INTERNAL_H
9 /* clang-format off */
10 
11 #include <stdint.h>
12 
13 /* Handle special Kconfig options */
14 #ifndef LV_KCONFIG_IGNORE
15     #include "lv_conf_kconfig.h"
16     #ifdef CONFIG_LV_CONF_SKIP
17         #define LV_CONF_SKIP
18     #endif
19 #endif
20 
21 /*If "lv_conf.h" is available from here try to use it later.*/
22 #ifdef __has_include
23     #if __has_include("lv_conf.h")
24         #ifndef LV_CONF_INCLUDE_SIMPLE
25             #define LV_CONF_INCLUDE_SIMPLE
26         #endif
27     #endif
28 #endif
29 
30 /*If lv_conf.h is not skipped include it*/
31 #ifndef LV_CONF_SKIP
32     #ifdef LV_CONF_PATH                           /*If there is a path defined for lv_conf.h use it*/
33         #define __LV_TO_STR_AUX(x) #x
34         #define __LV_TO_STR(x) __LV_TO_STR_AUX(x)
35         #include __LV_TO_STR(LV_CONF_PATH)
36         #undef __LV_TO_STR_AUX
37         #undef __LV_TO_STR
38     #elif defined(LV_CONF_INCLUDE_SIMPLE)         /*Or simply include lv_conf.h is enabled*/
39         #include "lv_conf.h"
40     #else
41         #include "../../lv_conf.h"                /*Else assume lv_conf.h is next to the lvgl folder*/
42     #endif
43 #endif
44 
45 #ifdef CONFIG_LV_COLOR_DEPTH
46     #define _LV_KCONFIG_PRESENT
47 #endif
48 
49 /*----------------------------------
50  * Start parsing lv_conf_template.h
51  -----------------------------------*/
52 
53 #include <stdint.h>
54 
55 /*====================
56    COLOR SETTINGS
57  *====================*/
58 
59 /*Color depth: 1 (1 byte per pixel), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/
60 #ifndef LV_COLOR_DEPTH
61     #ifdef CONFIG_LV_COLOR_DEPTH
62         #define LV_COLOR_DEPTH CONFIG_LV_COLOR_DEPTH
63     #else
64         #define LV_COLOR_DEPTH 16
65     #endif
66 #endif
67 
68 /*Swap the 2 bytes of RGB565 color. Useful if the display has an 8-bit interface (e.g. SPI)*/
69 #ifndef LV_COLOR_16_SWAP
70     #ifdef CONFIG_LV_COLOR_16_SWAP
71         #define LV_COLOR_16_SWAP CONFIG_LV_COLOR_16_SWAP
72     #else
73         #define LV_COLOR_16_SWAP 0
74     #endif
75 #endif
76 
77 /*Enable more complex drawing routines to manage screens transparency.
78  *Can be used if the UI is above another layer, e.g. an OSD menu or video player.
79  *Requires `LV_COLOR_DEPTH = 32` colors and the screen's `bg_opa` should be set to non LV_OPA_COVER value*/
80 #ifndef LV_COLOR_SCREEN_TRANSP
81     #ifdef CONFIG_LV_COLOR_SCREEN_TRANSP
82         #define LV_COLOR_SCREEN_TRANSP CONFIG_LV_COLOR_SCREEN_TRANSP
83     #else
84         #define LV_COLOR_SCREEN_TRANSP 0
85     #endif
86 #endif
87 
88 /* Adjust color mix functions rounding. GPUs might calculate color mix (blending) differently.
89  * 0: round down, 64: round up from x.75, 128: round up from half, 192: round up from x.25, 254: round up */
90 #ifndef LV_COLOR_MIX_ROUND_OFS
91     #ifdef CONFIG_LV_COLOR_MIX_ROUND_OFS
92         #define LV_COLOR_MIX_ROUND_OFS CONFIG_LV_COLOR_MIX_ROUND_OFS
93     #else
94         #define LV_COLOR_MIX_ROUND_OFS (LV_COLOR_DEPTH == 32 ? 0: 128)
95     #endif
96 #endif
97 
98 /*Images pixels with this color will not be drawn if they are chroma keyed)*/
99 #ifndef LV_COLOR_CHROMA_KEY
100     #ifdef CONFIG_LV_COLOR_CHROMA_KEY
101         #define LV_COLOR_CHROMA_KEY CONFIG_LV_COLOR_CHROMA_KEY
102     #else
103         #define LV_COLOR_CHROMA_KEY lv_color_hex(0x00ff00)         /*pure green*/
104     #endif
105 #endif
106 
107 /*=========================
108    MEMORY SETTINGS
109  *=========================*/
110 
111 /*1: use custom malloc/free, 0: use the built-in `lv_mem_alloc()` and `lv_mem_free()`*/
112 #ifndef LV_MEM_CUSTOM
113     #ifdef CONFIG_LV_MEM_CUSTOM
114         #define LV_MEM_CUSTOM CONFIG_LV_MEM_CUSTOM
115     #else
116         #define LV_MEM_CUSTOM 0
117     #endif
118 #endif
119 #if LV_MEM_CUSTOM == 0
120     /*Size of the memory available for `lv_mem_alloc()` in bytes (>= 2kB)*/
121     #ifndef LV_MEM_SIZE
122         #ifdef CONFIG_LV_MEM_SIZE
123             #define LV_MEM_SIZE CONFIG_LV_MEM_SIZE
124         #else
125             #define LV_MEM_SIZE (48U * 1024U)          /*[bytes]*/
126         #endif
127     #endif
128 
129     /*Set an address for the memory pool instead of allocating it as a normal array. Can be in external SRAM too.*/
130     #ifndef LV_MEM_ADR
131         #ifdef CONFIG_LV_MEM_ADR
132             #define LV_MEM_ADR CONFIG_LV_MEM_ADR
133         #else
134             #define LV_MEM_ADR 0     /*0: unused*/
135         #endif
136     #endif
137     /*Instead of an address give a memory allocator that will be called to get a memory pool for LVGL. E.g. my_malloc*/
138     #if LV_MEM_ADR == 0
139         //#define LV_MEM_POOL_INCLUDE your_alloc_library  /* Uncomment if using an external allocator*/
140         //#define LV_MEM_POOL_ALLOC   your_alloc          /* Uncomment if using an external allocator*/
141     #endif
142 
143 #else       /*LV_MEM_CUSTOM*/
144     #ifndef LV_MEM_CUSTOM_INCLUDE
145         #ifdef CONFIG_LV_MEM_CUSTOM_INCLUDE
146             #define LV_MEM_CUSTOM_INCLUDE CONFIG_LV_MEM_CUSTOM_INCLUDE
147         #else
148             #define LV_MEM_CUSTOM_INCLUDE <stdlib.h>   /*Header for the dynamic memory function*/
149         #endif
150     #endif
151     #ifndef LV_MEM_CUSTOM_ALLOC
152         #ifdef CONFIG_LV_MEM_CUSTOM_ALLOC
153             #define LV_MEM_CUSTOM_ALLOC CONFIG_LV_MEM_CUSTOM_ALLOC
154         #else
155             #define LV_MEM_CUSTOM_ALLOC   malloc
156         #endif
157     #endif
158     #ifndef LV_MEM_CUSTOM_FREE
159         #ifdef CONFIG_LV_MEM_CUSTOM_FREE
160             #define LV_MEM_CUSTOM_FREE CONFIG_LV_MEM_CUSTOM_FREE
161         #else
162             #define LV_MEM_CUSTOM_FREE    free
163         #endif
164     #endif
165     #ifndef LV_MEM_CUSTOM_REALLOC
166         #ifdef CONFIG_LV_MEM_CUSTOM_REALLOC
167             #define LV_MEM_CUSTOM_REALLOC CONFIG_LV_MEM_CUSTOM_REALLOC
168         #else
169             #define LV_MEM_CUSTOM_REALLOC realloc
170         #endif
171     #endif
172 #endif     /*LV_MEM_CUSTOM*/
173 
174 /*Number of the intermediate memory buffer used during rendering and other internal processing mechanisms.
175  *You will see an error log message if there wasn't enough buffers. */
176 #ifndef LV_MEM_BUF_MAX_NUM
177     #ifdef CONFIG_LV_MEM_BUF_MAX_NUM
178         #define LV_MEM_BUF_MAX_NUM CONFIG_LV_MEM_BUF_MAX_NUM
179     #else
180         #define LV_MEM_BUF_MAX_NUM 16
181     #endif
182 #endif
183 
184 /*Use the standard `memcpy` and `memset` instead of LVGL's own functions. (Might or might not be faster).*/
185 #ifndef LV_MEMCPY_MEMSET_STD
186     #ifdef CONFIG_LV_MEMCPY_MEMSET_STD
187         #define LV_MEMCPY_MEMSET_STD CONFIG_LV_MEMCPY_MEMSET_STD
188     #else
189         #define LV_MEMCPY_MEMSET_STD 0
190     #endif
191 #endif
192 
193 /*====================
194    HAL SETTINGS
195  *====================*/
196 
197 /*Default display refresh period. LVG will redraw changed areas with this period time*/
198 #ifndef LV_DISP_DEF_REFR_PERIOD
199     #ifdef CONFIG_LV_DISP_DEF_REFR_PERIOD
200         #define LV_DISP_DEF_REFR_PERIOD CONFIG_LV_DISP_DEF_REFR_PERIOD
201     #else
202         #define LV_DISP_DEF_REFR_PERIOD 30      /*[ms]*/
203     #endif
204 #endif
205 
206 /*Input device read period in milliseconds*/
207 #ifndef LV_INDEV_DEF_READ_PERIOD
208     #ifdef CONFIG_LV_INDEV_DEF_READ_PERIOD
209         #define LV_INDEV_DEF_READ_PERIOD CONFIG_LV_INDEV_DEF_READ_PERIOD
210     #else
211         #define LV_INDEV_DEF_READ_PERIOD 30     /*[ms]*/
212     #endif
213 #endif
214 
215 /*Use a custom tick source that tells the elapsed time in milliseconds.
216  *It removes the need to manually update the tick with `lv_tick_inc()`)*/
217 #ifndef LV_TICK_CUSTOM
218     #ifdef CONFIG_LV_TICK_CUSTOM
219         #define LV_TICK_CUSTOM CONFIG_LV_TICK_CUSTOM
220     #else
221         #define LV_TICK_CUSTOM 0
222     #endif
223 #endif
224 #if LV_TICK_CUSTOM
225     #ifndef LV_TICK_CUSTOM_INCLUDE
226         #ifdef CONFIG_LV_TICK_CUSTOM_INCLUDE
227             #define LV_TICK_CUSTOM_INCLUDE CONFIG_LV_TICK_CUSTOM_INCLUDE
228         #else
229             #define LV_TICK_CUSTOM_INCLUDE "Arduino.h"         /*Header for the system time function*/
230         #endif
231     #endif
232     #ifndef LV_TICK_CUSTOM_SYS_TIME_EXPR
233         #ifdef CONFIG_LV_TICK_CUSTOM_SYS_TIME_EXPR
234             #define LV_TICK_CUSTOM_SYS_TIME_EXPR CONFIG_LV_TICK_CUSTOM_SYS_TIME_EXPR
235         #else
236             #define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis())    /*Expression evaluating to current system time in ms*/
237         #endif
238     #endif
239 #endif   /*LV_TICK_CUSTOM*/
240 
241 /*Default Dot Per Inch. Used to initialize default sizes such as widgets sized, style paddings.
242  *(Not so important, you can adjust it to modify default sizes and spaces)*/
243 #ifndef LV_DPI_DEF
244     #ifdef CONFIG_LV_DPI_DEF
245         #define LV_DPI_DEF CONFIG_LV_DPI_DEF
246     #else
247         #define LV_DPI_DEF 130     /*[px/inch]*/
248     #endif
249 #endif
250 
251 /*=======================
252  * FEATURE CONFIGURATION
253  *=======================*/
254 
255 /*-------------
256  * Drawing
257  *-----------*/
258 
259 /*Enable complex draw engine.
260  *Required to draw shadow, gradient, rounded corners, circles, arc, skew lines, image transformations or any masks*/
261 #ifndef LV_DRAW_COMPLEX
262     #ifdef _LV_KCONFIG_PRESENT
263         #ifdef CONFIG_LV_DRAW_COMPLEX
264             #define LV_DRAW_COMPLEX CONFIG_LV_DRAW_COMPLEX
265         #else
266             #define LV_DRAW_COMPLEX 0
267         #endif
268     #else
269         #define LV_DRAW_COMPLEX 1
270     #endif
271 #endif
272 #if LV_DRAW_COMPLEX != 0
273 
274     /*Allow buffering some shadow calculation.
275     *LV_SHADOW_CACHE_SIZE is the max. shadow size to buffer, where shadow size is `shadow_width + radius`
276     *Caching has LV_SHADOW_CACHE_SIZE^2 RAM cost*/
277     #ifndef LV_SHADOW_CACHE_SIZE
278         #ifdef CONFIG_LV_SHADOW_CACHE_SIZE
279             #define LV_SHADOW_CACHE_SIZE CONFIG_LV_SHADOW_CACHE_SIZE
280         #else
281             #define LV_SHADOW_CACHE_SIZE 0
282         #endif
283     #endif
284 
285     /* Set number of maximally cached circle data.
286     * The circumference of 1/4 circle are saved for anti-aliasing
287     * radius * 4 bytes are used per circle (the most often used radiuses are saved)
288     * 0: to disable caching */
289     #ifndef LV_CIRCLE_CACHE_SIZE
290         #ifdef CONFIG_LV_CIRCLE_CACHE_SIZE
291             #define LV_CIRCLE_CACHE_SIZE CONFIG_LV_CIRCLE_CACHE_SIZE
292         #else
293             #define LV_CIRCLE_CACHE_SIZE 4
294         #endif
295     #endif
296 #endif /*LV_DRAW_COMPLEX*/
297 
298 /*Default image cache size. Image caching keeps the images opened.
299  *If only the built-in image formats are used there is no real advantage of caching. (I.e. if no new image decoder is added)
300  *With complex image decoders (e.g. PNG or JPG) caching can save the continuous open/decode of images.
301  *However the opened images might consume additional RAM.
302  *0: to disable caching*/
303 #ifndef LV_IMG_CACHE_DEF_SIZE
304     #ifdef CONFIG_LV_IMG_CACHE_DEF_SIZE
305         #define LV_IMG_CACHE_DEF_SIZE CONFIG_LV_IMG_CACHE_DEF_SIZE
306     #else
307         #define LV_IMG_CACHE_DEF_SIZE   0
308     #endif
309 #endif
310 
311 /*Number of stops allowed per gradient. Increase this to allow more stops.
312  *This adds (sizeof(lv_color_t) + 1) bytes per additional stop*/
313 #ifndef LV_GRADIENT_MAX_STOPS
314     #ifdef CONFIG_LV_GRADIENT_MAX_STOPS
315         #define LV_GRADIENT_MAX_STOPS CONFIG_LV_GRADIENT_MAX_STOPS
316     #else
317         #define LV_GRADIENT_MAX_STOPS       2
318     #endif
319 #endif
320 
321 /*Default gradient buffer size.
322  *When LVGL calculates the gradient "maps" it can save them into a cache to avoid calculating them again.
323  *LV_GRAD_CACHE_DEF_SIZE sets the size of this cache in bytes.
324  *If the cache is too small the map will be allocated only while it's required for the drawing.
325  *0 mean no caching.*/
326 #ifndef LV_GRAD_CACHE_DEF_SIZE
327     #ifdef CONFIG_LV_GRAD_CACHE_DEF_SIZE
328         #define LV_GRAD_CACHE_DEF_SIZE CONFIG_LV_GRAD_CACHE_DEF_SIZE
329     #else
330         #define LV_GRAD_CACHE_DEF_SIZE      0
331     #endif
332 #endif
333 
334 /*Allow dithering the gradients (to achieve visual smooth color gradients on limited color depth display)
335  *LV_DITHER_GRADIENT implies allocating one or two more lines of the object's rendering surface
336  *The increase in memory consumption is (32 bits * object width) plus 24 bits * object width if using error diffusion */
337 #ifndef LV_DITHER_GRADIENT
338     #ifdef CONFIG_LV_DITHER_GRADIENT
339         #define LV_DITHER_GRADIENT CONFIG_LV_DITHER_GRADIENT
340     #else
341         #define LV_DITHER_GRADIENT      0
342     #endif
343 #endif
344 #if LV_DITHER_GRADIENT
345     /*Add support for error diffusion dithering.
346      *Error diffusion dithering gets a much better visual result, but implies more CPU consumption and memory when drawing.
347      *The increase in memory consumption is (24 bits * object's width)*/
348     #ifndef LV_DITHER_ERROR_DIFFUSION
349         #ifdef CONFIG_LV_DITHER_ERROR_DIFFUSION
350             #define LV_DITHER_ERROR_DIFFUSION CONFIG_LV_DITHER_ERROR_DIFFUSION
351         #else
352             #define LV_DITHER_ERROR_DIFFUSION   0
353         #endif
354     #endif
355 #endif
356 
357 /*Maximum buffer size to allocate for rotation.
358  *Only used if software rotation is enabled in the display driver.*/
359 #ifndef LV_DISP_ROT_MAX_BUF
360     #ifdef CONFIG_LV_DISP_ROT_MAX_BUF
361         #define LV_DISP_ROT_MAX_BUF CONFIG_LV_DISP_ROT_MAX_BUF
362     #else
363         #define LV_DISP_ROT_MAX_BUF (10*1024)
364     #endif
365 #endif
366 
367 /*-------------
368  * GPU
369  *-----------*/
370 
371 /*Use STM32's DMA2D (aka Chrom Art) GPU*/
372 #ifndef LV_USE_GPU_STM32_DMA2D
373     #ifdef CONFIG_LV_USE_GPU_STM32_DMA2D
374         #define LV_USE_GPU_STM32_DMA2D CONFIG_LV_USE_GPU_STM32_DMA2D
375     #else
376         #define LV_USE_GPU_STM32_DMA2D 0
377     #endif
378 #endif
379 #if LV_USE_GPU_STM32_DMA2D
380     /*Must be defined to include path of CMSIS header of target processor
381     e.g. "stm32f769xx.h" or "stm32f429xx.h"*/
382     #ifndef LV_GPU_DMA2D_CMSIS_INCLUDE
383         #ifdef CONFIG_LV_GPU_DMA2D_CMSIS_INCLUDE
384             #define LV_GPU_DMA2D_CMSIS_INCLUDE CONFIG_LV_GPU_DMA2D_CMSIS_INCLUDE
385         #else
386             #define LV_GPU_DMA2D_CMSIS_INCLUDE
387         #endif
388     #endif
389 #endif
390 
391 /*Use NXP's PXP GPU iMX RTxxx platforms*/
392 #ifndef LV_USE_GPU_NXP_PXP
393     #ifdef CONFIG_LV_USE_GPU_NXP_PXP
394         #define LV_USE_GPU_NXP_PXP CONFIG_LV_USE_GPU_NXP_PXP
395     #else
396         #define LV_USE_GPU_NXP_PXP 0
397     #endif
398 #endif
399 #if LV_USE_GPU_NXP_PXP
400     /*1: Add default bare metal and FreeRTOS interrupt handling routines for PXP (lv_gpu_nxp_pxp_osa.c)
401     *   and call lv_gpu_nxp_pxp_init() automatically during lv_init(). Note that symbol SDK_OS_FREE_RTOS
402     *   has to be defined in order to use FreeRTOS OSA, otherwise bare-metal implementation is selected.
403     *0: lv_gpu_nxp_pxp_init() has to be called manually before lv_init()
404     */
405     #ifndef LV_USE_GPU_NXP_PXP_AUTO_INIT
406         #ifdef CONFIG_LV_USE_GPU_NXP_PXP_AUTO_INIT
407             #define LV_USE_GPU_NXP_PXP_AUTO_INIT CONFIG_LV_USE_GPU_NXP_PXP_AUTO_INIT
408         #else
409             #define LV_USE_GPU_NXP_PXP_AUTO_INIT 0
410         #endif
411     #endif
412 #endif
413 
414 /*Use NXP's VG-Lite GPU iMX RTxxx platforms*/
415 #ifndef LV_USE_GPU_NXP_VG_LITE
416     #ifdef CONFIG_LV_USE_GPU_NXP_VG_LITE
417         #define LV_USE_GPU_NXP_VG_LITE CONFIG_LV_USE_GPU_NXP_VG_LITE
418     #else
419         #define LV_USE_GPU_NXP_VG_LITE 0
420     #endif
421 #endif
422 
423 /*Use SDL renderer API*/
424 #ifndef LV_USE_GPU_SDL
425     #ifdef CONFIG_LV_USE_GPU_SDL
426         #define LV_USE_GPU_SDL CONFIG_LV_USE_GPU_SDL
427     #else
428         #define LV_USE_GPU_SDL 0
429     #endif
430 #endif
431 #if LV_USE_GPU_SDL
432     #ifndef LV_GPU_SDL_INCLUDE_PATH
433         #ifdef CONFIG_LV_GPU_SDL_INCLUDE_PATH
434             #define LV_GPU_SDL_INCLUDE_PATH CONFIG_LV_GPU_SDL_INCLUDE_PATH
435         #else
436             #define LV_GPU_SDL_INCLUDE_PATH <SDL2/SDL.h>
437         #endif
438     #endif
439     /*Texture cache size, 8MB by default*/
440     #ifndef LV_GPU_SDL_LRU_SIZE
441         #ifdef CONFIG_LV_GPU_SDL_LRU_SIZE
442             #define LV_GPU_SDL_LRU_SIZE CONFIG_LV_GPU_SDL_LRU_SIZE
443         #else
444             #define LV_GPU_SDL_LRU_SIZE (1024 * 1024 * 8)
445         #endif
446     #endif
447     /*Custom blend mode for mask drawing, disable if you need to link with older SDL2 lib*/
448     #ifndef LV_GPU_SDL_CUSTOM_BLEND_MODE
449         #ifdef CONFIG_LV_GPU_SDL_CUSTOM_BLEND_MODE
450             #define LV_GPU_SDL_CUSTOM_BLEND_MODE CONFIG_LV_GPU_SDL_CUSTOM_BLEND_MODE
451         #else
452             #define LV_GPU_SDL_CUSTOM_BLEND_MODE (SDL_VERSION_ATLEAST(2, 0, 6))
453         #endif
454     #endif
455 #endif
456 
457 /*-------------
458  * Logging
459  *-----------*/
460 
461 /*Enable the log module*/
462 #ifndef LV_USE_LOG
463     #ifdef CONFIG_LV_USE_LOG
464         #define LV_USE_LOG CONFIG_LV_USE_LOG
465     #else
466         #define LV_USE_LOG 0
467     #endif
468 #endif
469 #if LV_USE_LOG
470 
471     /*How important log should be added:
472     *LV_LOG_LEVEL_TRACE       A lot of logs to give detailed information
473     *LV_LOG_LEVEL_INFO        Log important events
474     *LV_LOG_LEVEL_WARN        Log if something unwanted happened but didn't cause a problem
475     *LV_LOG_LEVEL_ERROR       Only critical issue, when the system may fail
476     *LV_LOG_LEVEL_USER        Only logs added by the user
477     *LV_LOG_LEVEL_NONE        Do not log anything*/
478     #ifndef LV_LOG_LEVEL
479         #ifdef CONFIG_LV_LOG_LEVEL
480             #define LV_LOG_LEVEL CONFIG_LV_LOG_LEVEL
481         #else
482             #define LV_LOG_LEVEL LV_LOG_LEVEL_WARN
483         #endif
484     #endif
485 
486     /*1: Print the log with 'printf';
487     *0: User need to register a callback with `lv_log_register_print_cb()`*/
488     #ifndef LV_LOG_PRINTF
489         #ifdef CONFIG_LV_LOG_PRINTF
490             #define LV_LOG_PRINTF CONFIG_LV_LOG_PRINTF
491         #else
492             #define LV_LOG_PRINTF 0
493         #endif
494     #endif
495 
496     /*Enable/disable LV_LOG_TRACE in modules that produces a huge number of logs*/
497     #ifndef LV_LOG_TRACE_MEM
498         #ifdef _LV_KCONFIG_PRESENT
499             #ifdef CONFIG_LV_LOG_TRACE_MEM
500                 #define LV_LOG_TRACE_MEM CONFIG_LV_LOG_TRACE_MEM
501             #else
502                 #define LV_LOG_TRACE_MEM 0
503             #endif
504         #else
505             #define LV_LOG_TRACE_MEM        1
506         #endif
507     #endif
508     #ifndef LV_LOG_TRACE_TIMER
509         #ifdef _LV_KCONFIG_PRESENT
510             #ifdef CONFIG_LV_LOG_TRACE_TIMER
511                 #define LV_LOG_TRACE_TIMER CONFIG_LV_LOG_TRACE_TIMER
512             #else
513                 #define LV_LOG_TRACE_TIMER 0
514             #endif
515         #else
516             #define LV_LOG_TRACE_TIMER      1
517         #endif
518     #endif
519     #ifndef LV_LOG_TRACE_INDEV
520         #ifdef _LV_KCONFIG_PRESENT
521             #ifdef CONFIG_LV_LOG_TRACE_INDEV
522                 #define LV_LOG_TRACE_INDEV CONFIG_LV_LOG_TRACE_INDEV
523             #else
524                 #define LV_LOG_TRACE_INDEV 0
525             #endif
526         #else
527             #define LV_LOG_TRACE_INDEV      1
528         #endif
529     #endif
530     #ifndef LV_LOG_TRACE_DISP_REFR
531         #ifdef _LV_KCONFIG_PRESENT
532             #ifdef CONFIG_LV_LOG_TRACE_DISP_REFR
533                 #define LV_LOG_TRACE_DISP_REFR CONFIG_LV_LOG_TRACE_DISP_REFR
534             #else
535                 #define LV_LOG_TRACE_DISP_REFR 0
536             #endif
537         #else
538             #define LV_LOG_TRACE_DISP_REFR  1
539         #endif
540     #endif
541     #ifndef LV_LOG_TRACE_EVENT
542         #ifdef _LV_KCONFIG_PRESENT
543             #ifdef CONFIG_LV_LOG_TRACE_EVENT
544                 #define LV_LOG_TRACE_EVENT CONFIG_LV_LOG_TRACE_EVENT
545             #else
546                 #define LV_LOG_TRACE_EVENT 0
547             #endif
548         #else
549             #define LV_LOG_TRACE_EVENT      1
550         #endif
551     #endif
552     #ifndef LV_LOG_TRACE_OBJ_CREATE
553         #ifdef _LV_KCONFIG_PRESENT
554             #ifdef CONFIG_LV_LOG_TRACE_OBJ_CREATE
555                 #define LV_LOG_TRACE_OBJ_CREATE CONFIG_LV_LOG_TRACE_OBJ_CREATE
556             #else
557                 #define LV_LOG_TRACE_OBJ_CREATE 0
558             #endif
559         #else
560             #define LV_LOG_TRACE_OBJ_CREATE 1
561         #endif
562     #endif
563     #ifndef LV_LOG_TRACE_LAYOUT
564         #ifdef _LV_KCONFIG_PRESENT
565             #ifdef CONFIG_LV_LOG_TRACE_LAYOUT
566                 #define LV_LOG_TRACE_LAYOUT CONFIG_LV_LOG_TRACE_LAYOUT
567             #else
568                 #define LV_LOG_TRACE_LAYOUT 0
569             #endif
570         #else
571             #define LV_LOG_TRACE_LAYOUT     1
572         #endif
573     #endif
574     #ifndef LV_LOG_TRACE_ANIM
575         #ifdef _LV_KCONFIG_PRESENT
576             #ifdef CONFIG_LV_LOG_TRACE_ANIM
577                 #define LV_LOG_TRACE_ANIM CONFIG_LV_LOG_TRACE_ANIM
578             #else
579                 #define LV_LOG_TRACE_ANIM 0
580             #endif
581         #else
582             #define LV_LOG_TRACE_ANIM       1
583         #endif
584     #endif
585 
586 #endif  /*LV_USE_LOG*/
587 
588 /*-------------
589  * Asserts
590  *-----------*/
591 
592 /*Enable asserts if an operation is failed or an invalid data is found.
593  *If LV_USE_LOG is enabled an error message will be printed on failure*/
594 #ifndef LV_USE_ASSERT_NULL
595     #ifdef _LV_KCONFIG_PRESENT
596         #ifdef CONFIG_LV_USE_ASSERT_NULL
597             #define LV_USE_ASSERT_NULL CONFIG_LV_USE_ASSERT_NULL
598         #else
599             #define LV_USE_ASSERT_NULL 0
600         #endif
601     #else
602         #define LV_USE_ASSERT_NULL          1   /*Check if the parameter is NULL. (Very fast, recommended)*/
603     #endif
604 #endif
605 #ifndef LV_USE_ASSERT_MALLOC
606     #ifdef _LV_KCONFIG_PRESENT
607         #ifdef CONFIG_LV_USE_ASSERT_MALLOC
608             #define LV_USE_ASSERT_MALLOC CONFIG_LV_USE_ASSERT_MALLOC
609         #else
610             #define LV_USE_ASSERT_MALLOC 0
611         #endif
612     #else
613         #define LV_USE_ASSERT_MALLOC        1   /*Checks is the memory is successfully allocated or no. (Very fast, recommended)*/
614     #endif
615 #endif
616 #ifndef LV_USE_ASSERT_STYLE
617     #ifdef CONFIG_LV_USE_ASSERT_STYLE
618         #define LV_USE_ASSERT_STYLE CONFIG_LV_USE_ASSERT_STYLE
619     #else
620         #define LV_USE_ASSERT_STYLE         0   /*Check if the styles are properly initialized. (Very fast, recommended)*/
621     #endif
622 #endif
623 #ifndef LV_USE_ASSERT_MEM_INTEGRITY
624     #ifdef CONFIG_LV_USE_ASSERT_MEM_INTEGRITY
625         #define LV_USE_ASSERT_MEM_INTEGRITY CONFIG_LV_USE_ASSERT_MEM_INTEGRITY
626     #else
627         #define LV_USE_ASSERT_MEM_INTEGRITY 0   /*Check the integrity of `lv_mem` after critical operations. (Slow)*/
628     #endif
629 #endif
630 #ifndef LV_USE_ASSERT_OBJ
631     #ifdef CONFIG_LV_USE_ASSERT_OBJ
632         #define LV_USE_ASSERT_OBJ CONFIG_LV_USE_ASSERT_OBJ
633     #else
634         #define LV_USE_ASSERT_OBJ           0   /*Check the object's type and existence (e.g. not deleted). (Slow)*/
635     #endif
636 #endif
637 
638 /*Add a custom handler when assert happens e.g. to restart the MCU*/
639 #ifndef LV_ASSERT_HANDLER_INCLUDE
640     #ifdef CONFIG_LV_ASSERT_HANDLER_INCLUDE
641         #define LV_ASSERT_HANDLER_INCLUDE CONFIG_LV_ASSERT_HANDLER_INCLUDE
642     #else
643         #define LV_ASSERT_HANDLER_INCLUDE <stdint.h>
644     #endif
645 #endif
646 #ifndef LV_ASSERT_HANDLER
647     #ifdef CONFIG_LV_ASSERT_HANDLER
648         #define LV_ASSERT_HANDLER CONFIG_LV_ASSERT_HANDLER
649     #else
650         #define LV_ASSERT_HANDLER while(1);   /*Halt by default*/
651     #endif
652 #endif
653 
654 /*-------------
655  * Others
656  *-----------*/
657 
658 /*1: Show CPU usage and FPS count*/
659 #ifndef LV_USE_PERF_MONITOR
660     #ifdef CONFIG_LV_USE_PERF_MONITOR
661         #define LV_USE_PERF_MONITOR CONFIG_LV_USE_PERF_MONITOR
662     #else
663         #define LV_USE_PERF_MONITOR 0
664     #endif
665 #endif
666 #if LV_USE_PERF_MONITOR
667     #ifndef LV_USE_PERF_MONITOR_POS
668         #ifdef CONFIG_LV_USE_PERF_MONITOR_POS
669             #define LV_USE_PERF_MONITOR_POS CONFIG_LV_USE_PERF_MONITOR_POS
670         #else
671             #define LV_USE_PERF_MONITOR_POS LV_ALIGN_BOTTOM_RIGHT
672         #endif
673     #endif
674 #endif
675 
676 /*1: Show the used memory and the memory fragmentation
677  * Requires LV_MEM_CUSTOM = 0*/
678 #ifndef LV_USE_MEM_MONITOR
679     #ifdef CONFIG_LV_USE_MEM_MONITOR
680         #define LV_USE_MEM_MONITOR CONFIG_LV_USE_MEM_MONITOR
681     #else
682         #define LV_USE_MEM_MONITOR 0
683     #endif
684 #endif
685 #if LV_USE_MEM_MONITOR
686     #ifndef LV_USE_MEM_MONITOR_POS
687         #ifdef CONFIG_LV_USE_MEM_MONITOR_POS
688             #define LV_USE_MEM_MONITOR_POS CONFIG_LV_USE_MEM_MONITOR_POS
689         #else
690             #define LV_USE_MEM_MONITOR_POS LV_ALIGN_BOTTOM_LEFT
691         #endif
692     #endif
693 #endif
694 
695 /*1: Draw random colored rectangles over the redrawn areas*/
696 #ifndef LV_USE_REFR_DEBUG
697     #ifdef CONFIG_LV_USE_REFR_DEBUG
698         #define LV_USE_REFR_DEBUG CONFIG_LV_USE_REFR_DEBUG
699     #else
700         #define LV_USE_REFR_DEBUG 0
701     #endif
702 #endif
703 
704 /*Change the built in (v)snprintf functions*/
705 #ifndef LV_SPRINTF_CUSTOM
706     #ifdef CONFIG_LV_SPRINTF_CUSTOM
707         #define LV_SPRINTF_CUSTOM CONFIG_LV_SPRINTF_CUSTOM
708     #else
709         #define LV_SPRINTF_CUSTOM 0
710     #endif
711 #endif
712 #if LV_SPRINTF_CUSTOM
713     #ifndef LV_SPRINTF_INCLUDE
714         #ifdef CONFIG_LV_SPRINTF_INCLUDE
715             #define LV_SPRINTF_INCLUDE CONFIG_LV_SPRINTF_INCLUDE
716         #else
717             #define LV_SPRINTF_INCLUDE <stdio.h>
718         #endif
719     #endif
720     #ifndef lv_snprintf
721         #ifdef CONFIG_LV_SNPRINTF
722             #define lv_snprintf CONFIG_LV_SNPRINTF
723         #else
724             #define lv_snprintf  snprintf
725         #endif
726     #endif
727     #ifndef lv_vsnprintf
728         #ifdef CONFIG_LV_VSNPRINTF
729             #define lv_vsnprintf CONFIG_LV_VSNPRINTF
730         #else
731             #define lv_vsnprintf vsnprintf
732         #endif
733     #endif
734 #else   /*LV_SPRINTF_CUSTOM*/
735     #ifndef LV_SPRINTF_USE_FLOAT
736         #ifdef CONFIG_LV_SPRINTF_USE_FLOAT
737             #define LV_SPRINTF_USE_FLOAT CONFIG_LV_SPRINTF_USE_FLOAT
738         #else
739             #define LV_SPRINTF_USE_FLOAT 0
740         #endif
741     #endif
742 #endif  /*LV_SPRINTF_CUSTOM*/
743 
744 #ifndef LV_USE_USER_DATA
745     #ifdef _LV_KCONFIG_PRESENT
746         #ifdef CONFIG_LV_USE_USER_DATA
747             #define LV_USE_USER_DATA CONFIG_LV_USE_USER_DATA
748         #else
749             #define LV_USE_USER_DATA 0
750         #endif
751     #else
752         #define LV_USE_USER_DATA 1
753     #endif
754 #endif
755 
756 /*Garbage Collector settings
757  *Used if lvgl is bound to higher level language and the memory is managed by that language*/
758 #ifndef LV_ENABLE_GC
759     #ifdef CONFIG_LV_ENABLE_GC
760         #define LV_ENABLE_GC CONFIG_LV_ENABLE_GC
761     #else
762         #define LV_ENABLE_GC 0
763     #endif
764 #endif
765 #if LV_ENABLE_GC != 0
766     #ifndef LV_GC_INCLUDE
767         #ifdef CONFIG_LV_GC_INCLUDE
768             #define LV_GC_INCLUDE CONFIG_LV_GC_INCLUDE
769         #else
770             #define LV_GC_INCLUDE "gc.h"                           /*Include Garbage Collector related things*/
771         #endif
772     #endif
773 #endif /*LV_ENABLE_GC*/
774 
775 /*=====================
776  *  COMPILER SETTINGS
777  *====================*/
778 
779 /*For big endian systems set to 1*/
780 #ifndef LV_BIG_ENDIAN_SYSTEM
781     #ifdef CONFIG_LV_BIG_ENDIAN_SYSTEM
782         #define LV_BIG_ENDIAN_SYSTEM CONFIG_LV_BIG_ENDIAN_SYSTEM
783     #else
784         #define LV_BIG_ENDIAN_SYSTEM 0
785     #endif
786 #endif
787 
788 /*Define a custom attribute to `lv_tick_inc` function*/
789 #ifndef LV_ATTRIBUTE_TICK_INC
790     #ifdef CONFIG_LV_ATTRIBUTE_TICK_INC
791         #define LV_ATTRIBUTE_TICK_INC CONFIG_LV_ATTRIBUTE_TICK_INC
792     #else
793         #define LV_ATTRIBUTE_TICK_INC
794     #endif
795 #endif
796 
797 /*Define a custom attribute to `lv_timer_handler` function*/
798 #ifndef LV_ATTRIBUTE_TIMER_HANDLER
799     #ifdef CONFIG_LV_ATTRIBUTE_TIMER_HANDLER
800         #define LV_ATTRIBUTE_TIMER_HANDLER CONFIG_LV_ATTRIBUTE_TIMER_HANDLER
801     #else
802         #define LV_ATTRIBUTE_TIMER_HANDLER
803     #endif
804 #endif
805 
806 /*Define a custom attribute to `lv_disp_flush_ready` function*/
807 #ifndef LV_ATTRIBUTE_FLUSH_READY
808     #ifdef CONFIG_LV_ATTRIBUTE_FLUSH_READY
809         #define LV_ATTRIBUTE_FLUSH_READY CONFIG_LV_ATTRIBUTE_FLUSH_READY
810     #else
811         #define LV_ATTRIBUTE_FLUSH_READY
812     #endif
813 #endif
814 
815 /*Required alignment size for buffers*/
816 #ifndef LV_ATTRIBUTE_MEM_ALIGN_SIZE
817     #ifdef _LV_KCONFIG_PRESENT
818         #ifdef CONFIG_LV_ATTRIBUTE_MEM_ALIGN_SIZE
819             #define LV_ATTRIBUTE_MEM_ALIGN_SIZE CONFIG_LV_ATTRIBUTE_MEM_ALIGN_SIZE
820         #else
821             #define LV_ATTRIBUTE_MEM_ALIGN_SIZE 0
822         #endif
823     #else
824         #define LV_ATTRIBUTE_MEM_ALIGN_SIZE 1
825     #endif
826 #endif
827 
828 /*Will be added where memories needs to be aligned (with -Os data might not be aligned to boundary by default).
829  * E.g. __attribute__((aligned(4)))*/
830 #ifndef LV_ATTRIBUTE_MEM_ALIGN
831     #ifdef CONFIG_LV_ATTRIBUTE_MEM_ALIGN
832         #define LV_ATTRIBUTE_MEM_ALIGN CONFIG_LV_ATTRIBUTE_MEM_ALIGN
833     #else
834         #define LV_ATTRIBUTE_MEM_ALIGN
835     #endif
836 #endif
837 
838 /*Attribute to mark large constant arrays for example font's bitmaps*/
839 #ifndef LV_ATTRIBUTE_LARGE_CONST
840     #ifdef CONFIG_LV_ATTRIBUTE_LARGE_CONST
841         #define LV_ATTRIBUTE_LARGE_CONST CONFIG_LV_ATTRIBUTE_LARGE_CONST
842     #else
843         #define LV_ATTRIBUTE_LARGE_CONST
844     #endif
845 #endif
846 
847 /*Compiler prefix for a big array declaration in RAM*/
848 #ifndef LV_ATTRIBUTE_LARGE_RAM_ARRAY
849     #ifdef CONFIG_LV_ATTRIBUTE_LARGE_RAM_ARRAY
850         #define LV_ATTRIBUTE_LARGE_RAM_ARRAY CONFIG_LV_ATTRIBUTE_LARGE_RAM_ARRAY
851     #else
852         #define LV_ATTRIBUTE_LARGE_RAM_ARRAY
853     #endif
854 #endif
855 
856 /*Place performance critical functions into a faster memory (e.g RAM)*/
857 #ifndef LV_ATTRIBUTE_FAST_MEM
858     #ifdef CONFIG_LV_ATTRIBUTE_FAST_MEM
859         #define LV_ATTRIBUTE_FAST_MEM CONFIG_LV_ATTRIBUTE_FAST_MEM
860     #else
861         #define LV_ATTRIBUTE_FAST_MEM
862     #endif
863 #endif
864 
865 /*Prefix variables that are used in GPU accelerated operations, often these need to be placed in RAM sections that are DMA accessible*/
866 #ifndef LV_ATTRIBUTE_DMA
867     #ifdef CONFIG_LV_ATTRIBUTE_DMA
868         #define LV_ATTRIBUTE_DMA CONFIG_LV_ATTRIBUTE_DMA
869     #else
870         #define LV_ATTRIBUTE_DMA
871     #endif
872 #endif
873 
874 /*Export integer constant to binding. This macro is used with constants in the form of LV_<CONST> that
875  *should also appear on LVGL binding API such as Micropython.*/
876 #ifndef LV_EXPORT_CONST_INT
877     #ifdef CONFIG_LV_EXPORT_CONST_INT
878         #define LV_EXPORT_CONST_INT CONFIG_LV_EXPORT_CONST_INT
879     #else
880         #define LV_EXPORT_CONST_INT(int_value) struct _silence_gcc_warning /*The default value just prevents GCC warning*/
881     #endif
882 #endif
883 
884 /*Extend the default -32k..32k coordinate range to -4M..4M by using int32_t for coordinates instead of int16_t*/
885 #ifndef LV_USE_LARGE_COORD
886     #ifdef CONFIG_LV_USE_LARGE_COORD
887         #define LV_USE_LARGE_COORD CONFIG_LV_USE_LARGE_COORD
888     #else
889         #define LV_USE_LARGE_COORD 0
890     #endif
891 #endif
892 
893 /*==================
894  *   FONT USAGE
895  *===================*/
896 
897 /*Montserrat fonts with ASCII range and some symbols using bpp = 4
898  *https://fonts.google.com/specimen/Montserrat*/
899 #ifndef LV_FONT_MONTSERRAT_8
900     #ifdef CONFIG_LV_FONT_MONTSERRAT_8
901         #define LV_FONT_MONTSERRAT_8 CONFIG_LV_FONT_MONTSERRAT_8
902     #else
903         #define LV_FONT_MONTSERRAT_8  0
904     #endif
905 #endif
906 #ifndef LV_FONT_MONTSERRAT_10
907     #ifdef CONFIG_LV_FONT_MONTSERRAT_10
908         #define LV_FONT_MONTSERRAT_10 CONFIG_LV_FONT_MONTSERRAT_10
909     #else
910         #define LV_FONT_MONTSERRAT_10 0
911     #endif
912 #endif
913 #ifndef LV_FONT_MONTSERRAT_12
914     #ifdef CONFIG_LV_FONT_MONTSERRAT_12
915         #define LV_FONT_MONTSERRAT_12 CONFIG_LV_FONT_MONTSERRAT_12
916     #else
917         #define LV_FONT_MONTSERRAT_12 0
918     #endif
919 #endif
920 #ifndef LV_FONT_MONTSERRAT_14
921     #ifdef _LV_KCONFIG_PRESENT
922         #ifdef CONFIG_LV_FONT_MONTSERRAT_14
923             #define LV_FONT_MONTSERRAT_14 CONFIG_LV_FONT_MONTSERRAT_14
924         #else
925             #define LV_FONT_MONTSERRAT_14 0
926         #endif
927     #else
928         #define LV_FONT_MONTSERRAT_14 1
929     #endif
930 #endif
931 #ifndef LV_FONT_MONTSERRAT_16
932     #ifdef CONFIG_LV_FONT_MONTSERRAT_16
933         #define LV_FONT_MONTSERRAT_16 CONFIG_LV_FONT_MONTSERRAT_16
934     #else
935         #define LV_FONT_MONTSERRAT_16 0
936     #endif
937 #endif
938 #ifndef LV_FONT_MONTSERRAT_18
939     #ifdef CONFIG_LV_FONT_MONTSERRAT_18
940         #define LV_FONT_MONTSERRAT_18 CONFIG_LV_FONT_MONTSERRAT_18
941     #else
942         #define LV_FONT_MONTSERRAT_18 0
943     #endif
944 #endif
945 #ifndef LV_FONT_MONTSERRAT_20
946     #ifdef CONFIG_LV_FONT_MONTSERRAT_20
947         #define LV_FONT_MONTSERRAT_20 CONFIG_LV_FONT_MONTSERRAT_20
948     #else
949         #define LV_FONT_MONTSERRAT_20 0
950     #endif
951 #endif
952 #ifndef LV_FONT_MONTSERRAT_22
953     #ifdef CONFIG_LV_FONT_MONTSERRAT_22
954         #define LV_FONT_MONTSERRAT_22 CONFIG_LV_FONT_MONTSERRAT_22
955     #else
956         #define LV_FONT_MONTSERRAT_22 0
957     #endif
958 #endif
959 #ifndef LV_FONT_MONTSERRAT_24
960     #ifdef CONFIG_LV_FONT_MONTSERRAT_24
961         #define LV_FONT_MONTSERRAT_24 CONFIG_LV_FONT_MONTSERRAT_24
962     #else
963         #define LV_FONT_MONTSERRAT_24 0
964     #endif
965 #endif
966 #ifndef LV_FONT_MONTSERRAT_26
967     #ifdef CONFIG_LV_FONT_MONTSERRAT_26
968         #define LV_FONT_MONTSERRAT_26 CONFIG_LV_FONT_MONTSERRAT_26
969     #else
970         #define LV_FONT_MONTSERRAT_26 0
971     #endif
972 #endif
973 #ifndef LV_FONT_MONTSERRAT_28
974     #ifdef CONFIG_LV_FONT_MONTSERRAT_28
975         #define LV_FONT_MONTSERRAT_28 CONFIG_LV_FONT_MONTSERRAT_28
976     #else
977         #define LV_FONT_MONTSERRAT_28 0
978     #endif
979 #endif
980 #ifndef LV_FONT_MONTSERRAT_30
981     #ifdef CONFIG_LV_FONT_MONTSERRAT_30
982         #define LV_FONT_MONTSERRAT_30 CONFIG_LV_FONT_MONTSERRAT_30
983     #else
984         #define LV_FONT_MONTSERRAT_30 0
985     #endif
986 #endif
987 #ifndef LV_FONT_MONTSERRAT_32
988     #ifdef CONFIG_LV_FONT_MONTSERRAT_32
989         #define LV_FONT_MONTSERRAT_32 CONFIG_LV_FONT_MONTSERRAT_32
990     #else
991         #define LV_FONT_MONTSERRAT_32 0
992     #endif
993 #endif
994 #ifndef LV_FONT_MONTSERRAT_34
995     #ifdef CONFIG_LV_FONT_MONTSERRAT_34
996         #define LV_FONT_MONTSERRAT_34 CONFIG_LV_FONT_MONTSERRAT_34
997     #else
998         #define LV_FONT_MONTSERRAT_34 0
999     #endif
1000 #endif
1001 #ifndef LV_FONT_MONTSERRAT_36
1002     #ifdef CONFIG_LV_FONT_MONTSERRAT_36
1003         #define LV_FONT_MONTSERRAT_36 CONFIG_LV_FONT_MONTSERRAT_36
1004     #else
1005         #define LV_FONT_MONTSERRAT_36 0
1006     #endif
1007 #endif
1008 #ifndef LV_FONT_MONTSERRAT_38
1009     #ifdef CONFIG_LV_FONT_MONTSERRAT_38
1010         #define LV_FONT_MONTSERRAT_38 CONFIG_LV_FONT_MONTSERRAT_38
1011     #else
1012         #define LV_FONT_MONTSERRAT_38 0
1013     #endif
1014 #endif
1015 #ifndef LV_FONT_MONTSERRAT_40
1016     #ifdef CONFIG_LV_FONT_MONTSERRAT_40
1017         #define LV_FONT_MONTSERRAT_40 CONFIG_LV_FONT_MONTSERRAT_40
1018     #else
1019         #define LV_FONT_MONTSERRAT_40 0
1020     #endif
1021 #endif
1022 #ifndef LV_FONT_MONTSERRAT_42
1023     #ifdef CONFIG_LV_FONT_MONTSERRAT_42
1024         #define LV_FONT_MONTSERRAT_42 CONFIG_LV_FONT_MONTSERRAT_42
1025     #else
1026         #define LV_FONT_MONTSERRAT_42 0
1027     #endif
1028 #endif
1029 #ifndef LV_FONT_MONTSERRAT_44
1030     #ifdef CONFIG_LV_FONT_MONTSERRAT_44
1031         #define LV_FONT_MONTSERRAT_44 CONFIG_LV_FONT_MONTSERRAT_44
1032     #else
1033         #define LV_FONT_MONTSERRAT_44 0
1034     #endif
1035 #endif
1036 #ifndef LV_FONT_MONTSERRAT_46
1037     #ifdef CONFIG_LV_FONT_MONTSERRAT_46
1038         #define LV_FONT_MONTSERRAT_46 CONFIG_LV_FONT_MONTSERRAT_46
1039     #else
1040         #define LV_FONT_MONTSERRAT_46 0
1041     #endif
1042 #endif
1043 #ifndef LV_FONT_MONTSERRAT_48
1044     #ifdef CONFIG_LV_FONT_MONTSERRAT_48
1045         #define LV_FONT_MONTSERRAT_48 CONFIG_LV_FONT_MONTSERRAT_48
1046     #else
1047         #define LV_FONT_MONTSERRAT_48 0
1048     #endif
1049 #endif
1050 
1051 /*Demonstrate special features*/
1052 #ifndef LV_FONT_MONTSERRAT_12_SUBPX
1053     #ifdef CONFIG_LV_FONT_MONTSERRAT_12_SUBPX
1054         #define LV_FONT_MONTSERRAT_12_SUBPX CONFIG_LV_FONT_MONTSERRAT_12_SUBPX
1055     #else
1056         #define LV_FONT_MONTSERRAT_12_SUBPX      0
1057     #endif
1058 #endif
1059 #ifndef LV_FONT_MONTSERRAT_28_COMPRESSED
1060     #ifdef CONFIG_LV_FONT_MONTSERRAT_28_COMPRESSED
1061         #define LV_FONT_MONTSERRAT_28_COMPRESSED CONFIG_LV_FONT_MONTSERRAT_28_COMPRESSED
1062     #else
1063         #define LV_FONT_MONTSERRAT_28_COMPRESSED 0  /*bpp = 3*/
1064     #endif
1065 #endif
1066 #ifndef LV_FONT_DEJAVU_16_PERSIAN_HEBREW
1067     #ifdef CONFIG_LV_FONT_DEJAVU_16_PERSIAN_HEBREW
1068         #define LV_FONT_DEJAVU_16_PERSIAN_HEBREW CONFIG_LV_FONT_DEJAVU_16_PERSIAN_HEBREW
1069     #else
1070         #define LV_FONT_DEJAVU_16_PERSIAN_HEBREW 0  /*Hebrew, Arabic, Persian letters and all their forms*/
1071     #endif
1072 #endif
1073 #ifndef LV_FONT_SIMSUN_16_CJK
1074     #ifdef CONFIG_LV_FONT_SIMSUN_16_CJK
1075         #define LV_FONT_SIMSUN_16_CJK CONFIG_LV_FONT_SIMSUN_16_CJK
1076     #else
1077         #define LV_FONT_SIMSUN_16_CJK            0  /*1000 most common CJK radicals*/
1078     #endif
1079 #endif
1080 
1081 /*Pixel perfect monospace fonts*/
1082 #ifndef LV_FONT_UNSCII_8
1083     #ifdef CONFIG_LV_FONT_UNSCII_8
1084         #define LV_FONT_UNSCII_8 CONFIG_LV_FONT_UNSCII_8
1085     #else
1086         #define LV_FONT_UNSCII_8  0
1087     #endif
1088 #endif
1089 #ifndef LV_FONT_UNSCII_16
1090     #ifdef CONFIG_LV_FONT_UNSCII_16
1091         #define LV_FONT_UNSCII_16 CONFIG_LV_FONT_UNSCII_16
1092     #else
1093         #define LV_FONT_UNSCII_16 0
1094     #endif
1095 #endif
1096 
1097 /*Optionally declare custom fonts here.
1098  *You can use these fonts as default font too and they will be available globally.
1099  *E.g. #define LV_FONT_CUSTOM_DECLARE   LV_FONT_DECLARE(my_font_1) LV_FONT_DECLARE(my_font_2)*/
1100 #ifndef LV_FONT_CUSTOM_DECLARE
1101     #ifdef CONFIG_LV_FONT_CUSTOM_DECLARE
1102         #define LV_FONT_CUSTOM_DECLARE CONFIG_LV_FONT_CUSTOM_DECLARE
1103     #else
1104         #define LV_FONT_CUSTOM_DECLARE
1105     #endif
1106 #endif
1107 
1108 /*Always set a default font*/
1109 #ifndef LV_FONT_DEFAULT
1110     #ifdef CONFIG_LV_FONT_DEFAULT
1111         #define LV_FONT_DEFAULT CONFIG_LV_FONT_DEFAULT
1112     #else
1113         #define LV_FONT_DEFAULT &lv_font_montserrat_14
1114     #endif
1115 #endif
1116 
1117 /*Enable handling large font and/or fonts with a lot of characters.
1118  *The limit depends on the font size, font face and bpp.
1119  *Compiler error will be triggered if a font needs it.*/
1120 #ifndef LV_FONT_FMT_TXT_LARGE
1121     #ifdef CONFIG_LV_FONT_FMT_TXT_LARGE
1122         #define LV_FONT_FMT_TXT_LARGE CONFIG_LV_FONT_FMT_TXT_LARGE
1123     #else
1124         #define LV_FONT_FMT_TXT_LARGE 0
1125     #endif
1126 #endif
1127 
1128 /*Enables/disables support for compressed fonts.*/
1129 #ifndef LV_USE_FONT_COMPRESSED
1130     #ifdef CONFIG_LV_USE_FONT_COMPRESSED
1131         #define LV_USE_FONT_COMPRESSED CONFIG_LV_USE_FONT_COMPRESSED
1132     #else
1133         #define LV_USE_FONT_COMPRESSED 0
1134     #endif
1135 #endif
1136 
1137 /*Enable subpixel rendering*/
1138 #ifndef LV_USE_FONT_SUBPX
1139     #ifdef CONFIG_LV_USE_FONT_SUBPX
1140         #define LV_USE_FONT_SUBPX CONFIG_LV_USE_FONT_SUBPX
1141     #else
1142         #define LV_USE_FONT_SUBPX 0
1143     #endif
1144 #endif
1145 #if LV_USE_FONT_SUBPX
1146     /*Set the pixel order of the display. Physical order of RGB channels. Doesn't matter with "normal" fonts.*/
1147     #ifndef LV_FONT_SUBPX_BGR
1148         #ifdef CONFIG_LV_FONT_SUBPX_BGR
1149             #define LV_FONT_SUBPX_BGR CONFIG_LV_FONT_SUBPX_BGR
1150         #else
1151             #define LV_FONT_SUBPX_BGR 0  /*0: RGB; 1:BGR order*/
1152         #endif
1153     #endif
1154 #endif
1155 
1156 /*=================
1157  *  TEXT SETTINGS
1158  *=================*/
1159 
1160 /**
1161  * Select a character encoding for strings.
1162  * Your IDE or editor should have the same character encoding
1163  * - LV_TXT_ENC_UTF8
1164  * - LV_TXT_ENC_ASCII
1165  */
1166 #ifndef LV_TXT_ENC
1167     #ifdef CONFIG_LV_TXT_ENC
1168         #define LV_TXT_ENC CONFIG_LV_TXT_ENC
1169     #else
1170         #define LV_TXT_ENC LV_TXT_ENC_UTF8
1171     #endif
1172 #endif
1173 
1174 /*Can break (wrap) texts on these chars*/
1175 #ifndef LV_TXT_BREAK_CHARS
1176     #ifdef CONFIG_LV_TXT_BREAK_CHARS
1177         #define LV_TXT_BREAK_CHARS CONFIG_LV_TXT_BREAK_CHARS
1178     #else
1179         #define LV_TXT_BREAK_CHARS " ,.;:-_"
1180     #endif
1181 #endif
1182 
1183 /*If a word is at least this long, will break wherever "prettiest"
1184  *To disable, set to a value <= 0*/
1185 #ifndef LV_TXT_LINE_BREAK_LONG_LEN
1186     #ifdef CONFIG_LV_TXT_LINE_BREAK_LONG_LEN
1187         #define LV_TXT_LINE_BREAK_LONG_LEN CONFIG_LV_TXT_LINE_BREAK_LONG_LEN
1188     #else
1189         #define LV_TXT_LINE_BREAK_LONG_LEN 0
1190     #endif
1191 #endif
1192 
1193 /*Minimum number of characters in a long word to put on a line before a break.
1194  *Depends on LV_TXT_LINE_BREAK_LONG_LEN.*/
1195 #ifndef LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN
1196     #ifdef CONFIG_LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN
1197         #define LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN CONFIG_LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN
1198     #else
1199         #define LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN 3
1200     #endif
1201 #endif
1202 
1203 /*Minimum number of characters in a long word to put on a line after a break.
1204  *Depends on LV_TXT_LINE_BREAK_LONG_LEN.*/
1205 #ifndef LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN
1206     #ifdef CONFIG_LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN
1207         #define LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN CONFIG_LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN
1208     #else
1209         #define LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN 3
1210     #endif
1211 #endif
1212 
1213 /*The control character to use for signalling text recoloring.*/
1214 #ifndef LV_TXT_COLOR_CMD
1215     #ifdef CONFIG_LV_TXT_COLOR_CMD
1216         #define LV_TXT_COLOR_CMD CONFIG_LV_TXT_COLOR_CMD
1217     #else
1218         #define LV_TXT_COLOR_CMD "#"
1219     #endif
1220 #endif
1221 
1222 /*Support bidirectional texts. Allows mixing Left-to-Right and Right-to-Left texts.
1223  *The direction will be processed according to the Unicode Bidirectional Algorithm:
1224  *https://www.w3.org/International/articles/inline-bidi-markup/uba-basics*/
1225 #ifndef LV_USE_BIDI
1226     #ifdef CONFIG_LV_USE_BIDI
1227         #define LV_USE_BIDI CONFIG_LV_USE_BIDI
1228     #else
1229         #define LV_USE_BIDI 0
1230     #endif
1231 #endif
1232 #if LV_USE_BIDI
1233     /*Set the default direction. Supported values:
1234     *`LV_BASE_DIR_LTR` Left-to-Right
1235     *`LV_BASE_DIR_RTL` Right-to-Left
1236     *`LV_BASE_DIR_AUTO` detect texts base direction*/
1237     #ifndef LV_BIDI_BASE_DIR_DEF
1238         #ifdef CONFIG_LV_BIDI_BASE_DIR_DEF
1239             #define LV_BIDI_BASE_DIR_DEF CONFIG_LV_BIDI_BASE_DIR_DEF
1240         #else
1241             #define LV_BIDI_BASE_DIR_DEF LV_BASE_DIR_AUTO
1242         #endif
1243     #endif
1244 #endif
1245 
1246 /*Enable Arabic/Persian processing
1247  *In these languages characters should be replaced with an other form based on their position in the text*/
1248 #ifndef LV_USE_ARABIC_PERSIAN_CHARS
1249     #ifdef CONFIG_LV_USE_ARABIC_PERSIAN_CHARS
1250         #define LV_USE_ARABIC_PERSIAN_CHARS CONFIG_LV_USE_ARABIC_PERSIAN_CHARS
1251     #else
1252         #define LV_USE_ARABIC_PERSIAN_CHARS 0
1253     #endif
1254 #endif
1255 
1256 /*==================
1257  *  WIDGET USAGE
1258  *================*/
1259 
1260 /*Documentation of the widgets: https://docs.lvgl.io/latest/en/html/widgets/index.html*/
1261 
1262 #ifndef LV_USE_ARC
1263     #ifdef _LV_KCONFIG_PRESENT
1264         #ifdef CONFIG_LV_USE_ARC
1265             #define LV_USE_ARC CONFIG_LV_USE_ARC
1266         #else
1267             #define LV_USE_ARC 0
1268         #endif
1269     #else
1270         #define LV_USE_ARC        1
1271     #endif
1272 #endif
1273 
1274 #ifndef LV_USE_ANIMIMG
1275     #ifdef _LV_KCONFIG_PRESENT
1276         #ifdef CONFIG_LV_USE_ANIMIMG
1277             #define LV_USE_ANIMIMG CONFIG_LV_USE_ANIMIMG
1278         #else
1279             #define LV_USE_ANIMIMG 0
1280         #endif
1281     #else
1282         #define LV_USE_ANIMIMG    1
1283     #endif
1284 #endif
1285 
1286 #ifndef LV_USE_BAR
1287     #ifdef _LV_KCONFIG_PRESENT
1288         #ifdef CONFIG_LV_USE_BAR
1289             #define LV_USE_BAR CONFIG_LV_USE_BAR
1290         #else
1291             #define LV_USE_BAR 0
1292         #endif
1293     #else
1294         #define LV_USE_BAR        1
1295     #endif
1296 #endif
1297 
1298 #ifndef LV_USE_BTN
1299     #ifdef _LV_KCONFIG_PRESENT
1300         #ifdef CONFIG_LV_USE_BTN
1301             #define LV_USE_BTN CONFIG_LV_USE_BTN
1302         #else
1303             #define LV_USE_BTN 0
1304         #endif
1305     #else
1306         #define LV_USE_BTN        1
1307     #endif
1308 #endif
1309 
1310 #ifndef LV_USE_BTNMATRIX
1311     #ifdef _LV_KCONFIG_PRESENT
1312         #ifdef CONFIG_LV_USE_BTNMATRIX
1313             #define LV_USE_BTNMATRIX CONFIG_LV_USE_BTNMATRIX
1314         #else
1315             #define LV_USE_BTNMATRIX 0
1316         #endif
1317     #else
1318         #define LV_USE_BTNMATRIX  1
1319     #endif
1320 #endif
1321 
1322 #ifndef LV_USE_CANVAS
1323     #ifdef _LV_KCONFIG_PRESENT
1324         #ifdef CONFIG_LV_USE_CANVAS
1325             #define LV_USE_CANVAS CONFIG_LV_USE_CANVAS
1326         #else
1327             #define LV_USE_CANVAS 0
1328         #endif
1329     #else
1330         #define LV_USE_CANVAS     1
1331     #endif
1332 #endif
1333 
1334 #ifndef LV_USE_CHECKBOX
1335     #ifdef _LV_KCONFIG_PRESENT
1336         #ifdef CONFIG_LV_USE_CHECKBOX
1337             #define LV_USE_CHECKBOX CONFIG_LV_USE_CHECKBOX
1338         #else
1339             #define LV_USE_CHECKBOX 0
1340         #endif
1341     #else
1342         #define LV_USE_CHECKBOX   1
1343     #endif
1344 #endif
1345 
1346 #ifndef LV_USE_DROPDOWN
1347     #ifdef _LV_KCONFIG_PRESENT
1348         #ifdef CONFIG_LV_USE_DROPDOWN
1349             #define LV_USE_DROPDOWN CONFIG_LV_USE_DROPDOWN
1350         #else
1351             #define LV_USE_DROPDOWN 0
1352         #endif
1353     #else
1354         #define LV_USE_DROPDOWN   1   /*Requires: lv_label*/
1355     #endif
1356 #endif
1357 
1358 #ifndef LV_USE_IMG
1359     #ifdef _LV_KCONFIG_PRESENT
1360         #ifdef CONFIG_LV_USE_IMG
1361             #define LV_USE_IMG CONFIG_LV_USE_IMG
1362         #else
1363             #define LV_USE_IMG 0
1364         #endif
1365     #else
1366         #define LV_USE_IMG        1   /*Requires: lv_label*/
1367     #endif
1368 #endif
1369 
1370 #ifndef LV_USE_LABEL
1371     #ifdef _LV_KCONFIG_PRESENT
1372         #ifdef CONFIG_LV_USE_LABEL
1373             #define LV_USE_LABEL CONFIG_LV_USE_LABEL
1374         #else
1375             #define LV_USE_LABEL 0
1376         #endif
1377     #else
1378         #define LV_USE_LABEL      1
1379     #endif
1380 #endif
1381 #if LV_USE_LABEL
1382     #ifndef LV_LABEL_TEXT_SELECTION
1383         #ifdef _LV_KCONFIG_PRESENT
1384             #ifdef CONFIG_LV_LABEL_TEXT_SELECTION
1385                 #define LV_LABEL_TEXT_SELECTION CONFIG_LV_LABEL_TEXT_SELECTION
1386             #else
1387                 #define LV_LABEL_TEXT_SELECTION 0
1388             #endif
1389         #else
1390             #define LV_LABEL_TEXT_SELECTION 1 /*Enable selecting text of the label*/
1391         #endif
1392     #endif
1393     #ifndef LV_LABEL_LONG_TXT_HINT
1394         #ifdef _LV_KCONFIG_PRESENT
1395             #ifdef CONFIG_LV_LABEL_LONG_TXT_HINT
1396                 #define LV_LABEL_LONG_TXT_HINT CONFIG_LV_LABEL_LONG_TXT_HINT
1397             #else
1398                 #define LV_LABEL_LONG_TXT_HINT 0
1399             #endif
1400         #else
1401             #define LV_LABEL_LONG_TXT_HINT 1  /*Store some extra info in labels to speed up drawing of very long texts*/
1402         #endif
1403     #endif
1404 #endif
1405 
1406 #ifndef LV_USE_LINE
1407     #ifdef _LV_KCONFIG_PRESENT
1408         #ifdef CONFIG_LV_USE_LINE
1409             #define LV_USE_LINE CONFIG_LV_USE_LINE
1410         #else
1411             #define LV_USE_LINE 0
1412         #endif
1413     #else
1414         #define LV_USE_LINE       1
1415     #endif
1416 #endif
1417 
1418 #ifndef LV_USE_ROLLER
1419     #ifdef _LV_KCONFIG_PRESENT
1420         #ifdef CONFIG_LV_USE_ROLLER
1421             #define LV_USE_ROLLER CONFIG_LV_USE_ROLLER
1422         #else
1423             #define LV_USE_ROLLER 0
1424         #endif
1425     #else
1426         #define LV_USE_ROLLER     1   /*Requires: lv_label*/
1427     #endif
1428 #endif
1429 #if LV_USE_ROLLER
1430     #ifndef LV_ROLLER_INF_PAGES
1431         #ifdef CONFIG_LV_ROLLER_INF_PAGES
1432             #define LV_ROLLER_INF_PAGES CONFIG_LV_ROLLER_INF_PAGES
1433         #else
1434             #define LV_ROLLER_INF_PAGES 7 /*Number of extra "pages" when the roller is infinite*/
1435         #endif
1436     #endif
1437 #endif
1438 
1439 #ifndef LV_USE_SLIDER
1440     #ifdef _LV_KCONFIG_PRESENT
1441         #ifdef CONFIG_LV_USE_SLIDER
1442             #define LV_USE_SLIDER CONFIG_LV_USE_SLIDER
1443         #else
1444             #define LV_USE_SLIDER 0
1445         #endif
1446     #else
1447         #define LV_USE_SLIDER     1   /*Requires: lv_bar*/
1448     #endif
1449 #endif
1450 
1451 #ifndef LV_USE_SWITCH
1452     #ifdef _LV_KCONFIG_PRESENT
1453         #ifdef CONFIG_LV_USE_SWITCH
1454             #define LV_USE_SWITCH CONFIG_LV_USE_SWITCH
1455         #else
1456             #define LV_USE_SWITCH 0
1457         #endif
1458     #else
1459         #define LV_USE_SWITCH     1
1460     #endif
1461 #endif
1462 
1463 #ifndef LV_USE_TEXTAREA
1464     #ifdef _LV_KCONFIG_PRESENT
1465         #ifdef CONFIG_LV_USE_TEXTAREA
1466             #define LV_USE_TEXTAREA CONFIG_LV_USE_TEXTAREA
1467         #else
1468             #define LV_USE_TEXTAREA 0
1469         #endif
1470     #else
1471         #define LV_USE_TEXTAREA   1   /*Requires: lv_label*/
1472     #endif
1473 #endif
1474 #if LV_USE_TEXTAREA != 0
1475     #ifndef LV_TEXTAREA_DEF_PWD_SHOW_TIME
1476         #ifdef CONFIG_LV_TEXTAREA_DEF_PWD_SHOW_TIME
1477             #define LV_TEXTAREA_DEF_PWD_SHOW_TIME CONFIG_LV_TEXTAREA_DEF_PWD_SHOW_TIME
1478         #else
1479             #define LV_TEXTAREA_DEF_PWD_SHOW_TIME 1500    /*ms*/
1480         #endif
1481     #endif
1482 #endif
1483 
1484 #ifndef LV_USE_TABLE
1485     #ifdef _LV_KCONFIG_PRESENT
1486         #ifdef CONFIG_LV_USE_TABLE
1487             #define LV_USE_TABLE CONFIG_LV_USE_TABLE
1488         #else
1489             #define LV_USE_TABLE 0
1490         #endif
1491     #else
1492         #define LV_USE_TABLE      1
1493     #endif
1494 #endif
1495 
1496 /*==================
1497  * EXTRA COMPONENTS
1498  *==================*/
1499 
1500 /*-----------
1501  * Widgets
1502  *----------*/
1503 #ifndef LV_USE_CALENDAR
1504     #ifdef _LV_KCONFIG_PRESENT
1505         #ifdef CONFIG_LV_USE_CALENDAR
1506             #define LV_USE_CALENDAR CONFIG_LV_USE_CALENDAR
1507         #else
1508             #define LV_USE_CALENDAR 0
1509         #endif
1510     #else
1511         #define LV_USE_CALENDAR   1
1512     #endif
1513 #endif
1514 #if LV_USE_CALENDAR
1515     #ifndef LV_CALENDAR_WEEK_STARTS_MONDAY
1516         #ifdef CONFIG_LV_CALENDAR_WEEK_STARTS_MONDAY
1517             #define LV_CALENDAR_WEEK_STARTS_MONDAY CONFIG_LV_CALENDAR_WEEK_STARTS_MONDAY
1518         #else
1519             #define LV_CALENDAR_WEEK_STARTS_MONDAY 0
1520         #endif
1521     #endif
1522     #if LV_CALENDAR_WEEK_STARTS_MONDAY
1523         #ifndef LV_CALENDAR_DEFAULT_DAY_NAMES
1524             #ifdef CONFIG_LV_CALENDAR_DEFAULT_DAY_NAMES
1525                 #define LV_CALENDAR_DEFAULT_DAY_NAMES CONFIG_LV_CALENDAR_DEFAULT_DAY_NAMES
1526             #else
1527                 #define LV_CALENDAR_DEFAULT_DAY_NAMES {"Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"}
1528             #endif
1529         #endif
1530     #else
1531         #ifndef LV_CALENDAR_DEFAULT_DAY_NAMES
1532             #ifdef CONFIG_LV_CALENDAR_DEFAULT_DAY_NAMES
1533                 #define LV_CALENDAR_DEFAULT_DAY_NAMES CONFIG_LV_CALENDAR_DEFAULT_DAY_NAMES
1534             #else
1535                 #define LV_CALENDAR_DEFAULT_DAY_NAMES {"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"}
1536             #endif
1537         #endif
1538     #endif
1539 
1540     #ifndef LV_CALENDAR_DEFAULT_MONTH_NAMES
1541         #ifdef CONFIG_LV_CALENDAR_DEFAULT_MONTH_NAMES
1542             #define LV_CALENDAR_DEFAULT_MONTH_NAMES CONFIG_LV_CALENDAR_DEFAULT_MONTH_NAMES
1543         #else
1544             #define LV_CALENDAR_DEFAULT_MONTH_NAMES {"January", "February", "March",  "April", "May",  "June", "July", "August", "September", "October", "November", "December"}
1545         #endif
1546     #endif
1547     #ifndef LV_USE_CALENDAR_HEADER_ARROW
1548         #ifdef _LV_KCONFIG_PRESENT
1549             #ifdef CONFIG_LV_USE_CALENDAR_HEADER_ARROW
1550                 #define LV_USE_CALENDAR_HEADER_ARROW CONFIG_LV_USE_CALENDAR_HEADER_ARROW
1551             #else
1552                 #define LV_USE_CALENDAR_HEADER_ARROW 0
1553             #endif
1554         #else
1555             #define LV_USE_CALENDAR_HEADER_ARROW 1
1556         #endif
1557     #endif
1558     #ifndef LV_USE_CALENDAR_HEADER_DROPDOWN
1559         #ifdef _LV_KCONFIG_PRESENT
1560             #ifdef CONFIG_LV_USE_CALENDAR_HEADER_DROPDOWN
1561                 #define LV_USE_CALENDAR_HEADER_DROPDOWN CONFIG_LV_USE_CALENDAR_HEADER_DROPDOWN
1562             #else
1563                 #define LV_USE_CALENDAR_HEADER_DROPDOWN 0
1564             #endif
1565         #else
1566             #define LV_USE_CALENDAR_HEADER_DROPDOWN 1
1567         #endif
1568     #endif
1569 #endif  /*LV_USE_CALENDAR*/
1570 
1571 #ifndef LV_USE_CHART
1572     #ifdef _LV_KCONFIG_PRESENT
1573         #ifdef CONFIG_LV_USE_CHART
1574             #define LV_USE_CHART CONFIG_LV_USE_CHART
1575         #else
1576             #define LV_USE_CHART 0
1577         #endif
1578     #else
1579         #define LV_USE_CHART      1
1580     #endif
1581 #endif
1582 
1583 #ifndef LV_USE_COLORWHEEL
1584     #ifdef _LV_KCONFIG_PRESENT
1585         #ifdef CONFIG_LV_USE_COLORWHEEL
1586             #define LV_USE_COLORWHEEL CONFIG_LV_USE_COLORWHEEL
1587         #else
1588             #define LV_USE_COLORWHEEL 0
1589         #endif
1590     #else
1591         #define LV_USE_COLORWHEEL 1
1592     #endif
1593 #endif
1594 
1595 #ifndef LV_USE_IMGBTN
1596     #ifdef _LV_KCONFIG_PRESENT
1597         #ifdef CONFIG_LV_USE_IMGBTN
1598             #define LV_USE_IMGBTN CONFIG_LV_USE_IMGBTN
1599         #else
1600             #define LV_USE_IMGBTN 0
1601         #endif
1602     #else
1603         #define LV_USE_IMGBTN     1
1604     #endif
1605 #endif
1606 
1607 #ifndef LV_USE_KEYBOARD
1608     #ifdef _LV_KCONFIG_PRESENT
1609         #ifdef CONFIG_LV_USE_KEYBOARD
1610             #define LV_USE_KEYBOARD CONFIG_LV_USE_KEYBOARD
1611         #else
1612             #define LV_USE_KEYBOARD 0
1613         #endif
1614     #else
1615         #define LV_USE_KEYBOARD   1
1616     #endif
1617 #endif
1618 
1619 #ifndef LV_USE_LED
1620     #ifdef _LV_KCONFIG_PRESENT
1621         #ifdef CONFIG_LV_USE_LED
1622             #define LV_USE_LED CONFIG_LV_USE_LED
1623         #else
1624             #define LV_USE_LED 0
1625         #endif
1626     #else
1627         #define LV_USE_LED        1
1628     #endif
1629 #endif
1630 
1631 #ifndef LV_USE_LIST
1632     #ifdef _LV_KCONFIG_PRESENT
1633         #ifdef CONFIG_LV_USE_LIST
1634             #define LV_USE_LIST CONFIG_LV_USE_LIST
1635         #else
1636             #define LV_USE_LIST 0
1637         #endif
1638     #else
1639         #define LV_USE_LIST       1
1640     #endif
1641 #endif
1642 
1643 #ifndef LV_USE_MENU
1644     #ifdef _LV_KCONFIG_PRESENT
1645         #ifdef CONFIG_LV_USE_MENU
1646             #define LV_USE_MENU CONFIG_LV_USE_MENU
1647         #else
1648             #define LV_USE_MENU 0
1649         #endif
1650     #else
1651         #define LV_USE_MENU       1
1652     #endif
1653 #endif
1654 
1655 #ifndef LV_USE_METER
1656     #ifdef _LV_KCONFIG_PRESENT
1657         #ifdef CONFIG_LV_USE_METER
1658             #define LV_USE_METER CONFIG_LV_USE_METER
1659         #else
1660             #define LV_USE_METER 0
1661         #endif
1662     #else
1663         #define LV_USE_METER      1
1664     #endif
1665 #endif
1666 
1667 #ifndef LV_USE_MSGBOX
1668     #ifdef _LV_KCONFIG_PRESENT
1669         #ifdef CONFIG_LV_USE_MSGBOX
1670             #define LV_USE_MSGBOX CONFIG_LV_USE_MSGBOX
1671         #else
1672             #define LV_USE_MSGBOX 0
1673         #endif
1674     #else
1675         #define LV_USE_MSGBOX     1
1676     #endif
1677 #endif
1678 
1679 #ifndef LV_USE_SPINBOX
1680     #ifdef _LV_KCONFIG_PRESENT
1681         #ifdef CONFIG_LV_USE_SPINBOX
1682             #define LV_USE_SPINBOX CONFIG_LV_USE_SPINBOX
1683         #else
1684             #define LV_USE_SPINBOX 0
1685         #endif
1686     #else
1687         #define LV_USE_SPINBOX    1
1688     #endif
1689 #endif
1690 
1691 #ifndef LV_USE_SPINNER
1692     #ifdef _LV_KCONFIG_PRESENT
1693         #ifdef CONFIG_LV_USE_SPINNER
1694             #define LV_USE_SPINNER CONFIG_LV_USE_SPINNER
1695         #else
1696             #define LV_USE_SPINNER 0
1697         #endif
1698     #else
1699         #define LV_USE_SPINNER    1
1700     #endif
1701 #endif
1702 
1703 #ifndef LV_USE_TABVIEW
1704     #ifdef _LV_KCONFIG_PRESENT
1705         #ifdef CONFIG_LV_USE_TABVIEW
1706             #define LV_USE_TABVIEW CONFIG_LV_USE_TABVIEW
1707         #else
1708             #define LV_USE_TABVIEW 0
1709         #endif
1710     #else
1711         #define LV_USE_TABVIEW    1
1712     #endif
1713 #endif
1714 
1715 #ifndef LV_USE_TILEVIEW
1716     #ifdef _LV_KCONFIG_PRESENT
1717         #ifdef CONFIG_LV_USE_TILEVIEW
1718             #define LV_USE_TILEVIEW CONFIG_LV_USE_TILEVIEW
1719         #else
1720             #define LV_USE_TILEVIEW 0
1721         #endif
1722     #else
1723         #define LV_USE_TILEVIEW   1
1724     #endif
1725 #endif
1726 
1727 #ifndef LV_USE_WIN
1728     #ifdef _LV_KCONFIG_PRESENT
1729         #ifdef CONFIG_LV_USE_WIN
1730             #define LV_USE_WIN CONFIG_LV_USE_WIN
1731         #else
1732             #define LV_USE_WIN 0
1733         #endif
1734     #else
1735         #define LV_USE_WIN        1
1736     #endif
1737 #endif
1738 
1739 #ifndef LV_USE_SPAN
1740     #ifdef _LV_KCONFIG_PRESENT
1741         #ifdef CONFIG_LV_USE_SPAN
1742             #define LV_USE_SPAN CONFIG_LV_USE_SPAN
1743         #else
1744             #define LV_USE_SPAN 0
1745         #endif
1746     #else
1747         #define LV_USE_SPAN       1
1748     #endif
1749 #endif
1750 #if LV_USE_SPAN
1751     /*A line text can contain maximum num of span descriptor */
1752     #ifndef LV_SPAN_SNIPPET_STACK_SIZE
1753         #ifdef CONFIG_LV_SPAN_SNIPPET_STACK_SIZE
1754             #define LV_SPAN_SNIPPET_STACK_SIZE CONFIG_LV_SPAN_SNIPPET_STACK_SIZE
1755         #else
1756             #define LV_SPAN_SNIPPET_STACK_SIZE 64
1757         #endif
1758     #endif
1759 #endif
1760 
1761 /*-----------
1762  * Themes
1763  *----------*/
1764 
1765 /*A simple, impressive and very complete theme*/
1766 #ifndef LV_USE_THEME_DEFAULT
1767     #ifdef _LV_KCONFIG_PRESENT
1768         #ifdef CONFIG_LV_USE_THEME_DEFAULT
1769             #define LV_USE_THEME_DEFAULT CONFIG_LV_USE_THEME_DEFAULT
1770         #else
1771             #define LV_USE_THEME_DEFAULT 0
1772         #endif
1773     #else
1774         #define LV_USE_THEME_DEFAULT 1
1775     #endif
1776 #endif
1777 #if LV_USE_THEME_DEFAULT
1778 
1779     /*0: Light mode; 1: Dark mode*/
1780     #ifndef LV_THEME_DEFAULT_DARK
1781         #ifdef CONFIG_LV_THEME_DEFAULT_DARK
1782             #define LV_THEME_DEFAULT_DARK CONFIG_LV_THEME_DEFAULT_DARK
1783         #else
1784             #define LV_THEME_DEFAULT_DARK 0
1785         #endif
1786     #endif
1787 
1788     /*1: Enable grow on press*/
1789     #ifndef LV_THEME_DEFAULT_GROW
1790         #ifdef _LV_KCONFIG_PRESENT
1791             #ifdef CONFIG_LV_THEME_DEFAULT_GROW
1792                 #define LV_THEME_DEFAULT_GROW CONFIG_LV_THEME_DEFAULT_GROW
1793             #else
1794                 #define LV_THEME_DEFAULT_GROW 0
1795             #endif
1796         #else
1797             #define LV_THEME_DEFAULT_GROW 1
1798         #endif
1799     #endif
1800 
1801     /*Default transition time in [ms]*/
1802     #ifndef LV_THEME_DEFAULT_TRANSITION_TIME
1803         #ifdef CONFIG_LV_THEME_DEFAULT_TRANSITION_TIME
1804             #define LV_THEME_DEFAULT_TRANSITION_TIME CONFIG_LV_THEME_DEFAULT_TRANSITION_TIME
1805         #else
1806             #define LV_THEME_DEFAULT_TRANSITION_TIME 80
1807         #endif
1808     #endif
1809 #endif /*LV_USE_THEME_DEFAULT*/
1810 
1811 /*A very simple theme that is a good starting point for a custom theme*/
1812 #ifndef LV_USE_THEME_BASIC
1813     #ifdef _LV_KCONFIG_PRESENT
1814         #ifdef CONFIG_LV_USE_THEME_BASIC
1815             #define LV_USE_THEME_BASIC CONFIG_LV_USE_THEME_BASIC
1816         #else
1817             #define LV_USE_THEME_BASIC 0
1818         #endif
1819     #else
1820         #define LV_USE_THEME_BASIC 1
1821     #endif
1822 #endif
1823 
1824 /*A theme designed for monochrome displays*/
1825 #ifndef LV_USE_THEME_MONO
1826     #ifdef _LV_KCONFIG_PRESENT
1827         #ifdef CONFIG_LV_USE_THEME_MONO
1828             #define LV_USE_THEME_MONO CONFIG_LV_USE_THEME_MONO
1829         #else
1830             #define LV_USE_THEME_MONO 0
1831         #endif
1832     #else
1833         #define LV_USE_THEME_MONO 1
1834     #endif
1835 #endif
1836 
1837 /*-----------
1838  * Layouts
1839  *----------*/
1840 
1841 /*A layout similar to Flexbox in CSS.*/
1842 #ifndef LV_USE_FLEX
1843     #ifdef _LV_KCONFIG_PRESENT
1844         #ifdef CONFIG_LV_USE_FLEX
1845             #define LV_USE_FLEX CONFIG_LV_USE_FLEX
1846         #else
1847             #define LV_USE_FLEX 0
1848         #endif
1849     #else
1850         #define LV_USE_FLEX 1
1851     #endif
1852 #endif
1853 
1854 /*A layout similar to Grid in CSS.*/
1855 #ifndef LV_USE_GRID
1856     #ifdef _LV_KCONFIG_PRESENT
1857         #ifdef CONFIG_LV_USE_GRID
1858             #define LV_USE_GRID CONFIG_LV_USE_GRID
1859         #else
1860             #define LV_USE_GRID 0
1861         #endif
1862     #else
1863         #define LV_USE_GRID 1
1864     #endif
1865 #endif
1866 
1867 /*---------------------
1868  * 3rd party libraries
1869  *--------------------*/
1870 
1871 /*File system interfaces for common APIs */
1872 
1873 /*API for fopen, fread, etc*/
1874 #ifndef LV_USE_FS_STDIO
1875     #ifdef CONFIG_LV_USE_FS_STDIO
1876         #define LV_USE_FS_STDIO CONFIG_LV_USE_FS_STDIO
1877     #else
1878         #define LV_USE_FS_STDIO 0
1879     #endif
1880 #endif
1881 #if LV_USE_FS_STDIO
1882     #ifndef LV_FS_STDIO_LETTER
1883         #ifdef CONFIG_LV_FS_STDIO_LETTER
1884             #define LV_FS_STDIO_LETTER CONFIG_LV_FS_STDIO_LETTER
1885         #else
1886             #define LV_FS_STDIO_LETTER '\0'     /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
1887         #endif
1888     #endif
1889     #ifndef LV_FS_STDIO_PATH
1890         #ifdef CONFIG_LV_FS_STDIO_PATH
1891             #define LV_FS_STDIO_PATH CONFIG_LV_FS_STDIO_PATH
1892         #else
1893             #define LV_FS_STDIO_PATH ""         /*Set the working directory. File/directory paths will be appended to it.*/
1894         #endif
1895     #endif
1896     #ifndef LV_FS_STDIO_CACHE_SIZE
1897         #ifdef CONFIG_LV_FS_STDIO_CACHE_SIZE
1898             #define LV_FS_STDIO_CACHE_SIZE CONFIG_LV_FS_STDIO_CACHE_SIZE
1899         #else
1900             #define LV_FS_STDIO_CACHE_SIZE  0   /*>0 to cache this number of bytes in lv_fs_read()*/
1901         #endif
1902     #endif
1903 #endif
1904 
1905 /*API for open, read, etc*/
1906 #ifndef LV_USE_FS_POSIX
1907     #ifdef CONFIG_LV_USE_FS_POSIX
1908         #define LV_USE_FS_POSIX CONFIG_LV_USE_FS_POSIX
1909     #else
1910         #define LV_USE_FS_POSIX 0
1911     #endif
1912 #endif
1913 #if LV_USE_FS_POSIX
1914     #ifndef LV_FS_POSIX_LETTER
1915         #ifdef CONFIG_LV_FS_POSIX_LETTER
1916             #define LV_FS_POSIX_LETTER CONFIG_LV_FS_POSIX_LETTER
1917         #else
1918             #define LV_FS_POSIX_LETTER '\0'     /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
1919         #endif
1920     #endif
1921     #ifndef LV_FS_POSIX_PATH
1922         #ifdef CONFIG_LV_FS_POSIX_PATH
1923             #define LV_FS_POSIX_PATH CONFIG_LV_FS_POSIX_PATH
1924         #else
1925             #define LV_FS_POSIX_PATH ""         /*Set the working directory. File/directory paths will be appended to it.*/
1926         #endif
1927     #endif
1928     #ifndef LV_FS_POSIX_CACHE_SIZE
1929         #ifdef CONFIG_LV_FS_POSIX_CACHE_SIZE
1930             #define LV_FS_POSIX_CACHE_SIZE CONFIG_LV_FS_POSIX_CACHE_SIZE
1931         #else
1932             #define LV_FS_POSIX_CACHE_SIZE  0   /*>0 to cache this number of bytes in lv_fs_read()*/
1933         #endif
1934     #endif
1935 #endif
1936 
1937 /*API for CreateFile, ReadFile, etc*/
1938 #ifndef LV_USE_FS_WIN32
1939     #ifdef CONFIG_LV_USE_FS_WIN32
1940         #define LV_USE_FS_WIN32 CONFIG_LV_USE_FS_WIN32
1941     #else
1942         #define LV_USE_FS_WIN32 0
1943     #endif
1944 #endif
1945 #if LV_USE_FS_WIN32
1946     #ifndef LV_FS_WIN32_LETTER
1947         #ifdef CONFIG_LV_FS_WIN32_LETTER
1948             #define LV_FS_WIN32_LETTER CONFIG_LV_FS_WIN32_LETTER
1949         #else
1950             #define LV_FS_WIN32_LETTER  '\0'    /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
1951         #endif
1952     #endif
1953     #ifndef LV_FS_WIN32_PATH
1954         #ifdef CONFIG_LV_FS_WIN32_PATH
1955             #define LV_FS_WIN32_PATH CONFIG_LV_FS_WIN32_PATH
1956         #else
1957             #define LV_FS_WIN32_PATH ""         /*Set the working directory. File/directory paths will be appended to it.*/
1958         #endif
1959     #endif
1960     #ifndef LV_FS_WIN32_CACHE_SIZE
1961         #ifdef CONFIG_LV_FS_WIN32_CACHE_SIZE
1962             #define LV_FS_WIN32_CACHE_SIZE CONFIG_LV_FS_WIN32_CACHE_SIZE
1963         #else
1964             #define LV_FS_WIN32_CACHE_SIZE 0    /*>0 to cache this number of bytes in lv_fs_read()*/
1965         #endif
1966     #endif
1967 #endif
1968 
1969 /*API for FATFS (needs to be added separately). Uses f_open, f_read, etc*/
1970 #ifndef LV_USE_FS_FATFS
1971     #ifdef CONFIG_LV_USE_FS_FATFS
1972         #define LV_USE_FS_FATFS CONFIG_LV_USE_FS_FATFS
1973     #else
1974         #define LV_USE_FS_FATFS  0
1975     #endif
1976 #endif
1977 #if LV_USE_FS_FATFS
1978     #ifndef LV_FS_FATFS_LETTER
1979         #ifdef CONFIG_LV_FS_FATFS_LETTER
1980             #define LV_FS_FATFS_LETTER CONFIG_LV_FS_FATFS_LETTER
1981         #else
1982             #define LV_FS_FATFS_LETTER '\0'     /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
1983         #endif
1984     #endif
1985     #ifndef LV_FS_FATFS_CACHE_SIZE
1986         #ifdef CONFIG_LV_FS_FATFS_CACHE_SIZE
1987             #define LV_FS_FATFS_CACHE_SIZE CONFIG_LV_FS_FATFS_CACHE_SIZE
1988         #else
1989             #define LV_FS_FATFS_CACHE_SIZE 0    /*>0 to cache this number of bytes in lv_fs_read()*/
1990         #endif
1991     #endif
1992 #endif
1993 
1994 /*PNG decoder library*/
1995 #ifndef LV_USE_PNG
1996     #ifdef CONFIG_LV_USE_PNG
1997         #define LV_USE_PNG CONFIG_LV_USE_PNG
1998     #else
1999         #define LV_USE_PNG 0
2000     #endif
2001 #endif
2002 
2003 /*BMP decoder library*/
2004 #ifndef LV_USE_BMP
2005     #ifdef CONFIG_LV_USE_BMP
2006         #define LV_USE_BMP CONFIG_LV_USE_BMP
2007     #else
2008         #define LV_USE_BMP 0
2009     #endif
2010 #endif
2011 
2012 /* JPG + split JPG decoder library.
2013  * Split JPG is a custom format optimized for embedded systems. */
2014 #ifndef LV_USE_SJPG
2015     #ifdef CONFIG_LV_USE_SJPG
2016         #define LV_USE_SJPG CONFIG_LV_USE_SJPG
2017     #else
2018         #define LV_USE_SJPG 0
2019     #endif
2020 #endif
2021 
2022 /*GIF decoder library*/
2023 #ifndef LV_USE_GIF
2024     #ifdef CONFIG_LV_USE_GIF
2025         #define LV_USE_GIF CONFIG_LV_USE_GIF
2026     #else
2027         #define LV_USE_GIF 0
2028     #endif
2029 #endif
2030 
2031 /*QR code library*/
2032 #ifndef LV_USE_QRCODE
2033     #ifdef CONFIG_LV_USE_QRCODE
2034         #define LV_USE_QRCODE CONFIG_LV_USE_QRCODE
2035     #else
2036         #define LV_USE_QRCODE 0
2037     #endif
2038 #endif
2039 
2040 /*FreeType library*/
2041 #ifndef LV_USE_FREETYPE
2042     #ifdef CONFIG_LV_USE_FREETYPE
2043         #define LV_USE_FREETYPE CONFIG_LV_USE_FREETYPE
2044     #else
2045         #define LV_USE_FREETYPE 0
2046     #endif
2047 #endif
2048 #if LV_USE_FREETYPE
2049     /*Memory used by FreeType to cache characters [bytes] (-1: no caching)*/
2050     #ifndef LV_FREETYPE_CACHE_SIZE
2051         #ifdef CONFIG_LV_FREETYPE_CACHE_SIZE
2052             #define LV_FREETYPE_CACHE_SIZE CONFIG_LV_FREETYPE_CACHE_SIZE
2053         #else
2054             #define LV_FREETYPE_CACHE_SIZE (16 * 1024)
2055         #endif
2056     #endif
2057     #if LV_FREETYPE_CACHE_SIZE >= 0
2058         /* 1: bitmap cache use the sbit cache, 0:bitmap cache use the image cache. */
2059         /* sbit cache:it is much more memory efficient for small bitmaps(font size < 256) */
2060         /* if font size >= 256, must be configured as image cache */
2061         #ifndef LV_FREETYPE_SBIT_CACHE
2062             #ifdef CONFIG_LV_FREETYPE_SBIT_CACHE
2063                 #define LV_FREETYPE_SBIT_CACHE CONFIG_LV_FREETYPE_SBIT_CACHE
2064             #else
2065                 #define LV_FREETYPE_SBIT_CACHE 0
2066             #endif
2067         #endif
2068         /* Maximum number of opened FT_Face/FT_Size objects managed by this cache instance. */
2069         /* (0:use system defaults) */
2070         #ifndef LV_FREETYPE_CACHE_FT_FACES
2071             #ifdef CONFIG_LV_FREETYPE_CACHE_FT_FACES
2072                 #define LV_FREETYPE_CACHE_FT_FACES CONFIG_LV_FREETYPE_CACHE_FT_FACES
2073             #else
2074                 #define LV_FREETYPE_CACHE_FT_FACES 0
2075             #endif
2076         #endif
2077         #ifndef LV_FREETYPE_CACHE_FT_SIZES
2078             #ifdef CONFIG_LV_FREETYPE_CACHE_FT_SIZES
2079                 #define LV_FREETYPE_CACHE_FT_SIZES CONFIG_LV_FREETYPE_CACHE_FT_SIZES
2080             #else
2081                 #define LV_FREETYPE_CACHE_FT_SIZES 0
2082             #endif
2083         #endif
2084     #endif
2085 #endif
2086 
2087 /*Rlottie library*/
2088 #ifndef LV_USE_RLOTTIE
2089     #ifdef CONFIG_LV_USE_RLOTTIE
2090         #define LV_USE_RLOTTIE CONFIG_LV_USE_RLOTTIE
2091     #else
2092         #define LV_USE_RLOTTIE 0
2093     #endif
2094 #endif
2095 
2096 /*FFmpeg library for image decoding and playing videos
2097  *Supports all major image formats so do not enable other image decoder with it*/
2098 #ifndef LV_USE_FFMPEG
2099     #ifdef CONFIG_LV_USE_FFMPEG
2100         #define LV_USE_FFMPEG CONFIG_LV_USE_FFMPEG
2101     #else
2102         #define LV_USE_FFMPEG  0
2103     #endif
2104 #endif
2105 #if LV_USE_FFMPEG
2106     /*Dump input information to stderr*/
2107     #ifndef LV_FFMPEG_AV_DUMP_FORMAT
2108         #ifdef CONFIG_LV_FFMPEG_AV_DUMP_FORMAT
2109             #define LV_FFMPEG_AV_DUMP_FORMAT CONFIG_LV_FFMPEG_AV_DUMP_FORMAT
2110         #else
2111             #define LV_FFMPEG_AV_DUMP_FORMAT 0
2112         #endif
2113     #endif
2114 #endif
2115 
2116 /*-----------
2117  * Others
2118  *----------*/
2119 
2120 /*1: Enable API to take snapshot for object*/
2121 #ifndef LV_USE_SNAPSHOT
2122     #ifdef CONFIG_LV_USE_SNAPSHOT
2123         #define LV_USE_SNAPSHOT CONFIG_LV_USE_SNAPSHOT
2124     #else
2125         #define LV_USE_SNAPSHOT 0
2126     #endif
2127 #endif
2128 
2129 /*1: Enable Monkey test*/
2130 #ifndef LV_USE_MONKEY
2131     #ifdef CONFIG_LV_USE_MONKEY
2132         #define LV_USE_MONKEY CONFIG_LV_USE_MONKEY
2133     #else
2134         #define LV_USE_MONKEY   0
2135     #endif
2136 #endif
2137 
2138 /*1: Enable grid navigation*/
2139 #ifndef LV_USE_GRIDNAV
2140     #ifdef CONFIG_LV_USE_GRIDNAV
2141         #define LV_USE_GRIDNAV CONFIG_LV_USE_GRIDNAV
2142     #else
2143         #define LV_USE_GRIDNAV  0
2144     #endif
2145 #endif
2146 
2147 /*==================
2148 * EXAMPLES
2149 *==================*/
2150 
2151 /*Enable the examples to be built with the library*/
2152 #ifndef LV_BUILD_EXAMPLES
2153     #ifdef _LV_KCONFIG_PRESENT
2154         #ifdef CONFIG_LV_BUILD_EXAMPLES
2155             #define LV_BUILD_EXAMPLES CONFIG_LV_BUILD_EXAMPLES
2156         #else
2157             #define LV_BUILD_EXAMPLES 0
2158         #endif
2159     #else
2160         #define LV_BUILD_EXAMPLES 1
2161     #endif
2162 #endif
2163 
2164 /*===================
2165  * DEMO USAGE
2166  ====================*/
2167 
2168 /*Show some widget. It might be required to increase `LV_MEM_SIZE` */
2169 #ifndef LV_USE_DEMO_WIDGETS
2170     #ifdef CONFIG_LV_USE_DEMO_WIDGETS
2171         #define LV_USE_DEMO_WIDGETS CONFIG_LV_USE_DEMO_WIDGETS
2172     #else
2173         #define LV_USE_DEMO_WIDGETS        0
2174     #endif
2175 #endif
2176 #if LV_USE_DEMO_WIDGETS
2177 #ifndef LV_DEMO_WIDGETS_SLIDESHOW
2178     #ifdef CONFIG_LV_DEMO_WIDGETS_SLIDESHOW
2179         #define LV_DEMO_WIDGETS_SLIDESHOW CONFIG_LV_DEMO_WIDGETS_SLIDESHOW
2180     #else
2181         #define LV_DEMO_WIDGETS_SLIDESHOW  0
2182     #endif
2183 #endif
2184 #endif
2185 
2186 /*Demonstrate the usage of encoder and keyboard*/
2187 #ifndef LV_USE_DEMO_KEYPAD_AND_ENCODER
2188     #ifdef CONFIG_LV_USE_DEMO_KEYPAD_AND_ENCODER
2189         #define LV_USE_DEMO_KEYPAD_AND_ENCODER CONFIG_LV_USE_DEMO_KEYPAD_AND_ENCODER
2190     #else
2191         #define LV_USE_DEMO_KEYPAD_AND_ENCODER     0
2192     #endif
2193 #endif
2194 
2195 /*Benchmark your system*/
2196 #ifndef LV_USE_DEMO_BENCHMARK
2197     #ifdef CONFIG_LV_USE_DEMO_BENCHMARK
2198         #define LV_USE_DEMO_BENCHMARK CONFIG_LV_USE_DEMO_BENCHMARK
2199     #else
2200         #define LV_USE_DEMO_BENCHMARK   0
2201     #endif
2202 #endif
2203 
2204 /*Stress test for LVGL*/
2205 #ifndef LV_USE_DEMO_STRESS
2206     #ifdef CONFIG_LV_USE_DEMO_STRESS
2207         #define LV_USE_DEMO_STRESS CONFIG_LV_USE_DEMO_STRESS
2208     #else
2209         #define LV_USE_DEMO_STRESS      0
2210     #endif
2211 #endif
2212 
2213 /*Music player demo*/
2214 #ifndef LV_USE_DEMO_MUSIC
2215     #ifdef CONFIG_LV_USE_DEMO_MUSIC
2216         #define LV_USE_DEMO_MUSIC CONFIG_LV_USE_DEMO_MUSIC
2217     #else
2218         #define LV_USE_DEMO_MUSIC       0
2219     #endif
2220 #endif
2221 #if LV_USE_DEMO_MUSIC
2222 #ifndef LV_DEMO_MUSIC_SQUARE
2223     #ifdef CONFIG_LV_DEMO_MUSIC_SQUARE
2224         #define LV_DEMO_MUSIC_SQUARE CONFIG_LV_DEMO_MUSIC_SQUARE
2225     #else
2226         #define LV_DEMO_MUSIC_SQUARE       0
2227     #endif
2228 #endif
2229 #ifndef LV_DEMO_MUSIC_LANDSCAPE
2230     #ifdef CONFIG_LV_DEMO_MUSIC_LANDSCAPE
2231         #define LV_DEMO_MUSIC_LANDSCAPE CONFIG_LV_DEMO_MUSIC_LANDSCAPE
2232     #else
2233         #define LV_DEMO_MUSIC_LANDSCAPE    0
2234     #endif
2235 #endif
2236 #ifndef LV_DEMO_MUSIC_ROUND
2237     #ifdef CONFIG_LV_DEMO_MUSIC_ROUND
2238         #define LV_DEMO_MUSIC_ROUND CONFIG_LV_DEMO_MUSIC_ROUND
2239     #else
2240         #define LV_DEMO_MUSIC_ROUND        0
2241     #endif
2242 #endif
2243 #ifndef LV_DEMO_MUSIC_LARGE
2244     #ifdef CONFIG_LV_DEMO_MUSIC_LARGE
2245         #define LV_DEMO_MUSIC_LARGE CONFIG_LV_DEMO_MUSIC_LARGE
2246     #else
2247         #define LV_DEMO_MUSIC_LARGE        0
2248     #endif
2249 #endif
2250 #ifndef LV_DEMO_MUSIC_AUTO_PLAY
2251     #ifdef CONFIG_LV_DEMO_MUSIC_AUTO_PLAY
2252         #define LV_DEMO_MUSIC_AUTO_PLAY CONFIG_LV_DEMO_MUSIC_AUTO_PLAY
2253     #else
2254         #define LV_DEMO_MUSIC_AUTO_PLAY    0
2255     #endif
2256 #endif
2257 #endif
2258 
2259 
2260 
2261 /*----------------------------------
2262  * End of parsing lv_conf_template.h
2263  -----------------------------------*/
2264 
2265 LV_EXPORT_CONST_INT(LV_DPI_DEF);
2266 
2267 #undef _LV_KCONFIG_PRESENT
2268 
2269 
2270 /*Set some defines if a dependency is disabled*/
2271 #if LV_USE_LOG == 0
2272     #define LV_LOG_LEVEL            LV_LOG_LEVEL_NONE
2273     #define LV_LOG_TRACE_MEM        0
2274     #define LV_LOG_TRACE_TIMER      0
2275     #define LV_LOG_TRACE_INDEV      0
2276     #define LV_LOG_TRACE_DISP_REFR  0
2277     #define LV_LOG_TRACE_EVENT      0
2278     #define LV_LOG_TRACE_OBJ_CREATE 0
2279     #define LV_LOG_TRACE_LAYOUT     0
2280     #define LV_LOG_TRACE_ANIM       0
2281 #endif  /*LV_USE_LOG*/
2282 
2283 
2284 /*If running without lv_conf.h add typedefs with default value*/
2285 #ifdef LV_CONF_SKIP
2286     #if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_WARNINGS)    /*Disable warnings for Visual Studio*/
2287         #define _CRT_SECURE_NO_WARNINGS
2288     #endif
2289 #endif  /*defined(LV_CONF_SKIP)*/
2290 
2291 #endif  /*LV_CONF_INTERNAL_H*/
2292