1 /**
2  * @file lv_conf.h
3  * Configuration file for v9.3.0-dev
4  */
5 
6 /* clang-format off */
7 #if 1 /* Set this to "1" to enable content */
8 
9 #ifndef LV_CONF_H
10 #define LV_CONF_H
11 
12 #include "RTE_Components.h"
13 
14 /* If you need to include anything here, do it inside the `__ASSEMBLY__` guard */
15 #if  0 && defined(__ASSEMBLY__)
16 #include "my_include.h"
17 #endif
18 
19 /*====================
20    COLOR SETTINGS
21  *====================*/
22 
23 /** Color depth: 1 (I1), 8 (L8), 16 (RGB565), 24 (RGB888), 32 (XRGB8888) */
24 #define LV_COLOR_DEPTH 16
25 
26 /** Swap the high and low bytes for RGB565 */
27 #define LV_COLOR_16_SWAP 0
28 
29 /*=========================
30    STDLIB WRAPPER SETTINGS
31  *=========================*/
32 
33 /** Possible values
34  * - LV_STDLIB_BUILTIN:     LVGL's built in implementation
35  * - LV_STDLIB_CLIB:        Standard C functions, like malloc, strlen, etc
36  * - LV_STDLIB_MICROPYTHON: MicroPython implementation
37  * - LV_STDLIB_RTTHREAD:    RT-Thread implementation
38  * - LV_STDLIB_CUSTOM:      Implement the functions externally
39  */
40 #define LV_USE_STDLIB_MALLOC    LV_STDLIB_BUILTIN
41 
42 /** Possible values
43  * - LV_STDLIB_BUILTIN:     LVGL's built in implementation
44  * - LV_STDLIB_CLIB:        Standard C functions, like malloc, strlen, etc
45  * - LV_STDLIB_MICROPYTHON: MicroPython implementation
46  * - LV_STDLIB_RTTHREAD:    RT-Thread implementation
47  * - LV_STDLIB_CUSTOM:      Implement the functions externally
48  */
49 #define LV_USE_STDLIB_STRING    LV_STDLIB_BUILTIN
50 
51 /** Possible values
52  * - LV_STDLIB_BUILTIN:     LVGL's built in implementation
53  * - LV_STDLIB_CLIB:        Standard C functions, like malloc, strlen, etc
54  * - LV_STDLIB_MICROPYTHON: MicroPython implementation
55  * - LV_STDLIB_RTTHREAD:    RT-Thread implementation
56  * - LV_STDLIB_CUSTOM:      Implement the functions externally
57  */
58 #define LV_USE_STDLIB_SPRINTF   LV_STDLIB_BUILTIN
59 
60 #define LV_STDINT_INCLUDE       <stdint.h>
61 #define LV_STDDEF_INCLUDE       <stddef.h>
62 #define LV_STDBOOL_INCLUDE      <stdbool.h>
63 #define LV_INTTYPES_INCLUDE     <inttypes.h>
64 #define LV_LIMITS_INCLUDE       <limits.h>
65 #define LV_STDARG_INCLUDE       <stdarg.h>
66 
67 #if LV_USE_STDLIB_MALLOC == LV_STDLIB_BUILTIN
68     /** Size of memory available for `lv_malloc()` in bytes (>= 2kB) */
69     #define LV_MEM_SIZE (128 * 1024U)          /**< [bytes] */
70 
71     /** Size of the memory expand for `lv_malloc()` in bytes */
72     #define LV_MEM_POOL_EXPAND_SIZE 0
73 
74     /** Set an address for the memory pool instead of allocating it as a normal array. Can be in external SRAM too. */
75     #define LV_MEM_ADR 0     /**< 0: unused*/
76     /* Instead of an address give a memory allocator that will be called to get a memory pool for LVGL. E.g. my_malloc */
77     #if LV_MEM_ADR == 0
78         #undef LV_MEM_POOL_INCLUDE
79         #undef LV_MEM_POOL_ALLOC
80     #endif
81 #endif  /*LV_USE_STDLIB_MALLOC == LV_STDLIB_BUILTIN*/
82 
83 /*====================
84    HAL SETTINGS
85  *====================*/
86 
87 /** Default display refresh, input device read and animation step period. */
88 #define LV_DEF_REFR_PERIOD  33      /**< [ms] */
89 
90 /** Default Dots Per Inch. Used to initialize default sizes such as widgets sized, style paddings.
91  * (Not so important, you can adjust it to modify default sizes and spaces.) */
92 #define LV_DPI_DEF 130              /**< [px/inch] */
93 
94 /*customize tick-get */
95 #if defined(__PERF_COUNTER__) && __PERF_COUNTER__
96     #define LV_GLOBAL_INIT(__GLOBAL_PTR)                                    \
97             do {                                                            \
98                 lv_global_init((lv_global_t *)(__GLOBAL_PTR));              \
99                 extern uint32_t perfc_tick_get(void);                       \
100                 (__GLOBAL_PTR)->tick_state.tick_get_cb = perfc_tick_get;    \
101             } while(0)
102 #endif
103 
104 /*=================
105  * OPERATING SYSTEM
106  *=================*/
107 /** Select operating system to use. Possible options:
108  * - LV_OS_NONE
109  * - LV_OS_PTHREAD
110  * - LV_OS_FREERTOS
111  * - LV_OS_CMSIS_RTOS2
112  * - LV_OS_RTTHREAD
113  * - LV_OS_WINDOWS
114  * - LV_OS_MQX
115  * - LV_OS_CUSTOM */
116 
117 #if LV_USE_OS == LV_OS_CUSTOM
118     #define LV_OS_CUSTOM_INCLUDE <stdint.h>
119 #endif
120 #if LV_USE_OS == LV_OS_FREERTOS
121 	/*
122 	 * Unblocking an RTOS task with a direct notification is 45% faster and uses less RAM
123 	 * than unblocking a task using an intermediary object such as a binary semaphore.
124 	 * RTOS task notifications can only be used when there is only one task that can be the recipient of the event.
125 	 */
126 	#define LV_USE_FREERTOS_TASK_NOTIFY 1
127 #endif
128 
129 /*========================
130  * RENDERING CONFIGURATION
131  *========================*/
132 
133 /** Align stride of all layers and images to this bytes */
134 #define LV_DRAW_BUF_STRIDE_ALIGN                4
135 
136 /** Align start address of draw_buf addresses to this bytes*/
137 #define LV_DRAW_BUF_ALIGN                       4
138 
139 /** Using matrix for transformations.
140  * Requirements:
141  * - `LV_USE_MATRIX = 1`.
142  * - Rendering engine needs to support 3x3 matrix transformations. */
143 #define LV_DRAW_TRANSFORM_USE_MATRIX            0
144 
145 /* If a widget has `style_opa < 255` (not `bg_opa`, `text_opa` etc) or not NORMAL blend mode
146  * it is buffered into a "simple" layer before rendering. The widget can be buffered in smaller chunks.
147  * "Transformed layers" (if `transform_angle/zoom` are set) use larger buffers
148  * and can't be drawn in chunks. */
149 
150 /** The target buffer size for simple layer chunks. */
151 #define LV_DRAW_LAYER_SIMPLE_BUF_SIZE    (24 * 1024)    /**< [bytes]*/
152 
153 /** Stack size of drawing thread.
154  * NOTE: If FreeType or ThorVG is enabled, it is recommended to set it to 32KB or more.
155  */
156 #define LV_DRAW_THREAD_STACK_SIZE    (8 * 1024)         /**< [bytes]*/
157 
158 #define LV_USE_DRAW_SW 1
159 #if LV_USE_DRAW_SW == 1
160     /*
161      * Selectively disable color format support in order to reduce code size.
162      * NOTE: some features use certain color formats internally, e.g.
163      * - gradients use RGB888
164      * - bitmaps with transparency may use ARGB8888
165      */
166     #define LV_DRAW_SW_SUPPORT_RGB565       1
167     #define LV_DRAW_SW_SUPPORT_RGB565A8     1
168     #define LV_DRAW_SW_SUPPORT_RGB888       1
169     #define LV_DRAW_SW_SUPPORT_XRGB8888     1
170     #define LV_DRAW_SW_SUPPORT_ARGB8888     1
171     #define LV_DRAW_SW_SUPPORT_L8           1
172     #define LV_DRAW_SW_SUPPORT_AL88         1
173     #define LV_DRAW_SW_SUPPORT_A8           1
174     #define LV_DRAW_SW_SUPPORT_I1           1
175 
176     /** Set number of draw units.
177      *  - > 1 requires operating system to be enabled in `LV_USE_OS`.
178      *  - > 1 means multiple threads will render the screen in parallel. */
179     #define LV_DRAW_SW_DRAW_UNIT_CNT    1
180 
181     /** Enable native helium assembly to be compiled. */
182     #define LV_USE_NATIVE_HELIUM_ASM    0
183 
184     /**
185      * - 0: Use a simple renderer capable of drawing only simple rectangles with gradient, images, text, and straight lines only.
186      * - 1: Use a complex renderer capable of drawing rounded corners, shadow, skew lines, and arcs too. */
187     #define LV_DRAW_SW_COMPLEX          1
188 
189     #if LV_DRAW_SW_COMPLEX == 1
190         /** Allow buffering some shadow calculation.
191          *  LV_DRAW_SW_SHADOW_CACHE_SIZE is the maximum shadow size to buffer, where shadow size is
192          *  `shadow_width + radius`.  Caching has LV_DRAW_SW_SHADOW_CACHE_SIZE^2 RAM cost. */
193         #define LV_DRAW_SW_SHADOW_CACHE_SIZE 0
194 
195         /** Set number of maximally-cached circle data.
196          *  The circumference of 1/4 circle are saved for anti-aliasing.
197          *  `radius * 4` bytes are used per circle (the most often used radiuses are saved).
198          *  - 0: disables caching */
199         #define LV_DRAW_SW_CIRCLE_CACHE_SIZE 4
200     #endif
201 
202     #if !defined(LV_USE_DRAW_SW_ASM) && defined(RTE_Acceleration_Arm_2D)
203         /*turn-on helium acceleration when Arm-2D and the Helium-powered device are detected */
204         #if defined(__ARM_FEATURE_MVE) && __ARM_FEATURE_MVE
205             #define LV_USE_DRAW_SW_ASM  LV_DRAW_SW_ASM_HELIUM
206             #define LV_USE_DRAW_ARM2D_SYNC   1
207         #endif
208     #endif
209 
210     #ifndef LV_USE_DRAW_SW_ASM
211         #define  LV_USE_DRAW_SW_ASM     LV_DRAW_SW_ASM_NONE
212     #endif
213 
214     #if LV_USE_DRAW_SW_ASM == LV_DRAW_SW_ASM_CUSTOM
215         #define  LV_DRAW_SW_ASM_CUSTOM_INCLUDE ""
216     #endif
217 
218     /** Enable drawing complex gradients in software: linear at an angle, radial or conical */
219     #define LV_USE_DRAW_SW_COMPLEX_GRADIENTS    0
220 #endif
221 
222 /*Use TSi's aka (Think Silicon) NemaGFX */
223 #if LV_USE_NEMA_GFX
224     #define LV_NEMA_GFX_HAL_INCLUDE <stm32u5xx_hal.h>
225 
226     /*Enable Vector Graphics Operations. Available only if NemaVG library is present*/
227     #define LV_USE_NEMA_VG 0
228 
229     #if LV_USE_NEMA_VG
230         /*Define application's resolution used for VG related buffer allocation */
231         #define LV_NEMA_GFX_MAX_RESX 800
232         #define LV_NEMA_GFX_MAX_RESY 600
233     #endif
234 #endif
235 
236 /** Use NXP's VG-Lite GPU on iMX RTxxx platforms. */
237 #if LV_USE_DRAW_VGLITE
238     /** Enable blit quality degradation workaround recommended for screen's dimension > 352 pixels. */
239     #define LV_USE_VGLITE_BLIT_SPLIT 0
240 
241     #if LV_USE_OS
242         /** Use additional draw thread for VG-Lite processing. */
243         #define LV_USE_VGLITE_DRAW_THREAD 1
244 
245         #if LV_USE_VGLITE_DRAW_THREAD
246             /** Enable VGLite draw async. Queue multiple tasks and flash them once to the GPU. */
247             #define LV_USE_VGLITE_DRAW_ASYNC 1
248         #endif
249     #endif
250 
251     /** Enable VGLite asserts. */
252     #define LV_USE_VGLITE_ASSERT 0
253 #endif
254 
255 /** Use NXP's PXP on iMX RTxxx platforms. */
256 #define LV_USE_PXP 0
257 
258 #if LV_USE_PXP
259     /** Use PXP for drawing.*/
260     #define LV_USE_DRAW_PXP 1
261 
262     /** Use PXP to rotate display.*/
263     #define LV_USE_ROTATE_PXP 0
264 
265     #if LV_USE_DRAW_PXP && LV_USE_OS
266         /** Use additional draw thread for PXP processing.*/
267         #define LV_USE_PXP_DRAW_THREAD 1
268     #endif
269 
270     /** Enable PXP asserts. */
271     #define LV_USE_PXP_ASSERT 0
272 #endif
273 
274 /** Use VG-Lite GPU. */
275 #if LV_USE_DRAW_VG_LITE
276     /** Enable VG-Lite custom external 'gpu_init()' function */
277     #define LV_VG_LITE_USE_GPU_INIT 0
278 
279     /** Enable VG-Lite assert. */
280     #define LV_VG_LITE_USE_ASSERT 0
281 
282     /** VG-Lite flush commit trigger threshold. GPU will try to batch these many draw tasks. */
283     #define LV_VG_LITE_FLUSH_MAX_COUNT 8
284 
285     /** Enable border to simulate shadow.
286      *  NOTE: which usually improves performance,
287      *  but does not guarantee the same rendering quality as the software. */
288     #define LV_VG_LITE_USE_BOX_SHADOW 0
289 
290     /** VG-Lite gradient maximum cache number.
291      *  @note  The memory usage of a single gradient image is 4K bytes. */
292     #define LV_VG_LITE_GRAD_CACHE_CNT 32
293 
294     /** VG-Lite stroke maximum cache number. */
295     #define LV_VG_LITE_STROKE_CACHE_CNT 32
296 #endif
297 
298 /** Accelerate blends, fills, etc. with STM32 DMA2D */
299 #if LV_USE_DRAW_DMA2D
300     #define LV_DRAW_DMA2D_HAL_INCLUDE "stm32h7xx_hal.h"
301 
302     /* if enabled, the user is required to call `lv_draw_dma2d_transfer_complete_interrupt_handler`
303      * upon receiving the DMA2D global interrupt
304      */
305     #define LV_USE_DRAW_DMA2D_INTERRUPT 0
306 #endif
307 
308 /** Draw using cached OpenGLES textures */
309 #define LV_USE_DRAW_OPENGLES 0
310 
311 /*=======================
312  * FEATURE CONFIGURATION
313  *=======================*/
314 
315 /*-------------
316  * Logging
317  *-----------*/
318 
319 /** Enable log module */
320 #define LV_USE_LOG 0
321 #if LV_USE_LOG
322     /** Set value to one of the following levels of logging detail:
323      *  - LV_LOG_LEVEL_TRACE    Log detailed information.
324      *  - LV_LOG_LEVEL_INFO     Log important events.
325      *  - LV_LOG_LEVEL_WARN     Log if something unwanted happened but didn't cause a problem.
326      *  - LV_LOG_LEVEL_ERROR    Log only critical issues, when system may fail.
327      *  - LV_LOG_LEVEL_USER     Log only custom log messages added by the user.
328      *  - LV_LOG_LEVEL_NONE     Do not log anything. */
329     #define LV_LOG_LEVEL LV_LOG_LEVEL_USER
330 
331     /** - 1: Print log with 'printf';
332      *  - 0: User needs to register a callback with `lv_log_register_print_cb()`. */
333     #define LV_LOG_PRINTF 1
334 
335     /** Set callback to print logs.
336      *  E.g `my_print`. The prototype should be `void my_print(lv_log_level_t level, const char * buf)`.
337      *  Can be overwritten by `lv_log_register_print_cb`. */
338     //#define LV_LOG_PRINT_CB
339 
340     /** - 1: Enable printing timestamp;
341      *  - 0: Disable printing timestamp. */
342     #define LV_LOG_USE_TIMESTAMP 1
343 
344     /** - 1: Print file and line number of the log;
345      *  - 0: Do not print file and line number of the log. */
346     #define LV_LOG_USE_FILE_LINE 1
347 
348     /* Enable/disable LV_LOG_TRACE in modules that produces a huge number of logs. */
349     #define LV_LOG_TRACE_MEM        1   /**< Enable/disable trace logs in memory operations. */
350     #define LV_LOG_TRACE_TIMER      1   /**< Enable/disable trace logs in timer operations. */
351     #define LV_LOG_TRACE_INDEV      1   /**< Enable/disable trace logs in input device operations. */
352     #define LV_LOG_TRACE_DISP_REFR  1   /**< Enable/disable trace logs in display re-draw operations. */
353     #define LV_LOG_TRACE_EVENT      1   /**< Enable/disable trace logs in event dispatch logic. */
354     #define LV_LOG_TRACE_OBJ_CREATE 1   /**< Enable/disable trace logs in object creation (core `obj` creation plus every widget). */
355     #define LV_LOG_TRACE_LAYOUT     1   /**< Enable/disable trace logs in flex- and grid-layout operations. */
356     #define LV_LOG_TRACE_ANIM       1   /**< Enable/disable trace logs in animation logic. */
357     #define LV_LOG_TRACE_CACHE      1   /**< Enable/disable trace logs in cache operations. */
358 #endif  /*LV_USE_LOG*/
359 
360 /*-------------
361  * Asserts
362  *-----------*/
363 
364 /* Enable assertion failures if an operation fails or invalid data is found.
365  * If LV_USE_LOG is enabled, an error message will be printed on failure. */
366 #define LV_USE_ASSERT_NULL          1   /**< Check if the parameter is NULL. (Very fast, recommended) */
367 #define LV_USE_ASSERT_MALLOC        1   /**< Checks is the memory is successfully allocated or no. (Very fast, recommended) */
368 #define LV_USE_ASSERT_STYLE         0   /**< Check if the styles are properly initialized. (Very fast, recommended) */
369 #define LV_USE_ASSERT_MEM_INTEGRITY 0   /**< Check the integrity of `lv_mem` after critical operations. (Slow) */
370 #define LV_USE_ASSERT_OBJ           0   /**< Check the object's type and existence (e.g. not deleted). (Slow) */
371 
372 /** Add a custom handler when assert happens e.g. to restart MCU. */
373 #define LV_ASSERT_HANDLER_INCLUDE <stdint.h>
374 #define LV_ASSERT_HANDLER while(1);     /**< Halt by default */
375 
376 /*-------------
377  * Debug
378  *-----------*/
379 
380 /** 1: Draw random colored rectangles over the redrawn areas. */
381 #define LV_USE_REFR_DEBUG 0
382 
383 /** 1: Draw a red overlay for ARGB layers and a green overlay for RGB layers*/
384 #define LV_USE_LAYER_DEBUG 0
385 
386 /** 1: Adds the following behaviors for debugging:
387  *  - Draw overlays with different colors for each draw_unit's tasks.
388  *  - Draw index number of draw unit on white background.
389  *  - For layers, draws index number of draw unit on black background. */
390 #define LV_USE_PARALLEL_DRAW_DEBUG 0
391 
392 /*-------------
393  * Others
394  *-----------*/
395 
396 #define LV_ENABLE_GLOBAL_CUSTOM 0
397 #if LV_ENABLE_GLOBAL_CUSTOM
398     /** Header to include for custom 'lv_global' function" */
399     #define LV_GLOBAL_CUSTOM_INCLUDE <stdint.h>
400 #endif
401 
402 /** Default cache size in bytes.
403  *  Used by image decoders such as `lv_lodepng` to keep the decoded image in memory.
404  *  If size is not set to 0, the decoder will fail to decode when the cache is full.
405  *  If size is 0, the cache function is not enabled and the decoded memory will be
406  *  released immediately after use. */
407 #define LV_CACHE_DEF_SIZE       0
408 
409 /** Default number of image header cache entries. The cache is used to store the headers of images
410  *  The main logic is like `LV_CACHE_DEF_SIZE` but for image headers. */
411 #define LV_IMAGE_HEADER_CACHE_DEF_CNT 0
412 
413 /** Number of stops allowed per gradient. Increase this to allow more stops.
414  *  This adds (sizeof(lv_color_t) + 1) bytes per additional stop. */
415 #define LV_GRADIENT_MAX_STOPS   2
416 
417 /** Adjust color mix functions rounding. GPUs might calculate color mix (blending) differently.
418  *  - 0:   round down,
419  *  - 64:  round up from x.75,
420  *  - 128: round up from half,
421  *  - 192: round up from x.25,
422  *  - 254: round up */
423 #define LV_COLOR_MIX_ROUND_OFS  0
424 
425 /** Add 2 x 32-bit variables to each `lv_obj_t` to speed up getting style properties */
426 #define LV_OBJ_STYLE_CACHE      0
427 
428 /** Add `id` field to `lv_obj_t` */
429 #define LV_USE_OBJ_ID           0
430 
431 /** Automatically assign an ID when obj is created */
432 #define LV_OBJ_ID_AUTO_ASSIGN   LV_USE_OBJ_ID
433 
434 /** Use builtin obj ID handler functions:
435 * - lv_obj_assign_id:       Called when a widget is created. Use a separate counter for each widget class as an ID.
436 * - lv_obj_id_compare:      Compare the ID to decide if it matches with a requested value.
437 * - lv_obj_stringify_id:    Return string-ified identifier, e.g. "button3".
438 * - lv_obj_free_id:         Does nothing, as there is no memory allocation for the ID.
439 * When disabled these functions needs to be implemented by the user.*/
440 #define LV_USE_OBJ_ID_BUILTIN   1
441 
442 /** Use obj property set/get API. */
443 #define LV_USE_OBJ_PROPERTY 0
444 
445 /** Enable property name support. */
446 #define LV_USE_OBJ_PROPERTY_NAME 1
447 
448 /* Use VG-Lite Simulator.
449  * - Requires: LV_USE_THORVG_INTERNAL or LV_USE_THORVG_EXTERNAL */
450 #define LV_USE_VG_LITE_THORVG  0
451 
452 #if LV_USE_VG_LITE_THORVG
453     /** Enable LVGL's blend mode support */
454     #define LV_VG_LITE_THORVG_LVGL_BLEND_SUPPORT 0
455 
456     /** Enable YUV color format support */
457     #define LV_VG_LITE_THORVG_YUV_SUPPORT 0
458 
459     /** Enable Linear gradient extension support */
460     #define LV_VG_LITE_THORVG_LINEAR_GRADIENT_EXT_SUPPORT 0
461 
462     /** Enable alignment on 16 pixels */
463     #define LV_VG_LITE_THORVG_16PIXELS_ALIGN 1
464 
465     /** Buffer address alignment */
466     #define LV_VG_LITE_THORVG_BUF_ADDR_ALIGN 64
467 
468     /** Enable multi-thread render */
469     #define LV_VG_LITE_THORVG_THREAD_RENDER 0
470 #endif
471 
472 /*=====================
473  *  COMPILER SETTINGS
474  *====================*/
475 
476 /** For big endian systems set to 1 */
477 #define LV_BIG_ENDIAN_SYSTEM 0
478 
479 /** Define a custom attribute for `lv_tick_inc` function */
480 #define LV_ATTRIBUTE_TICK_INC
481 
482 /** Define a custom attribute for `lv_timer_handler` function */
483 #define LV_ATTRIBUTE_TIMER_HANDLER
484 
485 /** Define a custom attribute for `lv_display_flush_ready` function */
486 #define LV_ATTRIBUTE_FLUSH_READY
487 
488 /** Align VG_LITE buffers on this number of bytes.
489  *  @note  vglite_src_buf_aligned() uses this value to validate alignment of passed buffer pointers. */
490 #define LV_ATTRIBUTE_MEM_ALIGN_SIZE 1
491 
492 /** Will be added where memory needs to be aligned (with -Os data might not be aligned to boundary by default).
493  *  E.g. __attribute__((aligned(4)))*/
494 #define LV_ATTRIBUTE_MEM_ALIGN __attribute__((aligned(4)))
495 
496 /** Attribute to mark large constant arrays, for example for font bitmaps */
497 #define LV_ATTRIBUTE_LARGE_CONST
498 
499 /** Compiler prefix for a large array declaration in RAM */
500 #define LV_ATTRIBUTE_LARGE_RAM_ARRAY
501 
502 /** Place performance critical functions into a faster memory (e.g RAM) */
503 #define LV_ATTRIBUTE_FAST_MEM
504 
505 /** Export integer constant to binding. This macro is used with constants in the form of LV_<CONST> that
506  *  should also appear on LVGL binding API such as MicroPython. */
507 #define LV_EXPORT_CONST_INT(int_value) struct _silence_gcc_warning  /**< The default value just prevents GCC warning */
508 
509 /** Prefix all global extern data with this */
510 #define LV_ATTRIBUTE_EXTERN_DATA
511 
512 /** Use `float` as `lv_value_precise_t` */
513 #define LV_USE_FLOAT            0
514 
515 /** Enable matrix support
516  *  - Requires `LV_USE_FLOAT = 1` */
517 #define LV_USE_MATRIX           0
518 
519 /** Include `lvgl_private.h` in `lvgl.h` to access internal data and functions by default */
520 #define LV_USE_PRIVATE_API		0
521 
522 /*==================
523  *   FONT USAGE
524  *===================*/
525 
526 /* Montserrat fonts with ASCII range and some symbols using bpp = 4
527  * https://fonts.google.com/specimen/Montserrat */
528 #define LV_FONT_MONTSERRAT_8  0
529 #define LV_FONT_MONTSERRAT_10 0
530 #define LV_FONT_MONTSERRAT_12 1
531 #define LV_FONT_MONTSERRAT_14 1
532 #define LV_FONT_MONTSERRAT_16 1
533 #define LV_FONT_MONTSERRAT_18 0
534 #define LV_FONT_MONTSERRAT_20 1
535 #define LV_FONT_MONTSERRAT_22 0
536 #define LV_FONT_MONTSERRAT_24 1
537 #define LV_FONT_MONTSERRAT_26 1
538 #define LV_FONT_MONTSERRAT_28 0
539 #define LV_FONT_MONTSERRAT_30 0
540 #define LV_FONT_MONTSERRAT_32 0
541 #define LV_FONT_MONTSERRAT_34 0
542 #define LV_FONT_MONTSERRAT_36 0
543 #define LV_FONT_MONTSERRAT_38 0
544 #define LV_FONT_MONTSERRAT_40 0
545 #define LV_FONT_MONTSERRAT_42 0
546 #define LV_FONT_MONTSERRAT_44 0
547 #define LV_FONT_MONTSERRAT_46 0
548 #define LV_FONT_MONTSERRAT_48 0
549 
550 /* Demonstrate special features */
551 #define LV_FONT_MONTSERRAT_28_COMPRESSED 0  /**< bpp = 3 */
552 #define LV_FONT_DEJAVU_16_PERSIAN_HEBREW 0  /**< Hebrew, Arabic, Persian letters and all their forms */
553 #define LV_FONT_SIMSUN_14_CJK            0  /**< 1000 most common CJK radicals */
554 #define LV_FONT_SIMSUN_16_CJK            0  /**< 1000 most common CJK radicals */
555 
556 /** Pixel perfect monospaced fonts */
557 #define LV_FONT_UNSCII_8  0
558 #define LV_FONT_UNSCII_16 0
559 
560 /** Optionally declare custom fonts here.
561  *
562  *  You can use any of these fonts as the default font too and they will be available
563  *  globally.  Example:
564  *
565  *  @code
566  *  #define LV_FONT_CUSTOM_DECLARE   LV_FONT_DECLARE(my_font_1) LV_FONT_DECLARE(my_font_2)
567  *  @endcode
568  */
569 #define LV_FONT_CUSTOM_DECLARE
570 
571 /** Always set a default font */
572 #define LV_FONT_DEFAULT &lv_font_montserrat_14
573 
574 /** Enable handling large font and/or fonts with a lot of characters.
575  *  The limit depends on the font size, font face and bpp.
576  *  A compiler error will be triggered if a font needs it. */
577 #define LV_FONT_FMT_TXT_LARGE 0
578 
579 /** Enables/disables support for compressed fonts. */
580 #define LV_USE_FONT_COMPRESSED 0
581 
582 /** Enable drawing placeholders when glyph dsc is not found. */
583 #define LV_USE_FONT_PLACEHOLDER 1
584 
585 /*=================
586  *  TEXT SETTINGS
587  *=================*/
588 
589 /**
590  * Select a character encoding for strings.
591  * Your IDE or editor should have the same character encoding.
592  * - LV_TXT_ENC_UTF8
593  * - LV_TXT_ENC_ASCII
594  */
595 #define LV_TXT_ENC LV_TXT_ENC_UTF8
596 
597 /** While rendering text strings, break (wrap) text on these chars. */
598 #define LV_TXT_BREAK_CHARS " ,.;:-_)]}"
599 
600 /** If a word is at least this long, will break wherever "prettiest".
601  *  To disable, set to a value <= 0. */
602 #define LV_TXT_LINE_BREAK_LONG_LEN 0
603 
604 /** Minimum number of characters in a long word to put on a line before a break.
605  *  Depends on LV_TXT_LINE_BREAK_LONG_LEN. */
606 #define LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN 3
607 
608 /** Minimum number of characters in a long word to put on a line after a break.
609  *  Depends on LV_TXT_LINE_BREAK_LONG_LEN. */
610 #define LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN 3
611 
612 /** Support bidirectional text. Allows mixing Left-to-Right and Right-to-Left text.
613  *  The direction will be processed according to the Unicode Bidirectional Algorithm:
614  *  https://www.w3.org/International/articles/inline-bidi-markup/uba-basics */
615 #define LV_USE_BIDI 0
616 #if LV_USE_BIDI
617     /*Set the default direction. Supported values:
618     *`LV_BASE_DIR_LTR` Left-to-Right
619     *`LV_BASE_DIR_RTL` Right-to-Left
620     *`LV_BASE_DIR_AUTO` detect text base direction*/
621     #define LV_BIDI_BASE_DIR_DEF LV_BASE_DIR_AUTO
622 #endif
623 
624 /** Enable Arabic/Persian processing
625  *  In these languages characters should be replaced with another form based on their position in the text */
626 #define LV_USE_ARABIC_PERSIAN_CHARS 0
627 
628 /*The control character to use for signaling text recoloring*/
629 #define LV_TXT_COLOR_CMD "#"
630 
631 /*==================
632  * WIDGETS
633  *================*/
634 /* Documentation for widgets can be found here: https://docs.lvgl.io/latest/en/html/widgets/index.html . */
635 
636 /** 1: Causes these widgets to be given default values at creation time.
637  *  - lv_buttonmatrix_t:  Get default maps:  {"Btn1", "Btn2", "Btn3", "\n", "Btn4", "Btn5", ""}, else map not set.
638  *  - lv_checkbox_t    :  String label set to "Check box", else set to empty string.
639  *  - lv_dropdown_t    :  Options set to "Option 1", "Option 2", "Option 3", else no values are set.
640  *  - lv_roller_t      :  Options set to "Option 1", "Option 2", "Option 3", "Option 4", "Option 5", else no values are set.
641  *  - lv_label_t       :  Text set to "Text", else empty string.
642  * */
643 #define LV_WIDGETS_HAS_DEFAULT_VALUE  1
644 
645 #define LV_USE_ANIMIMG    1
646 
647 #define LV_USE_ARC        1
648 
649 #define LV_USE_BAR        1
650 
651 #define LV_USE_BUTTON        1
652 
653 #define LV_USE_BUTTONMATRIX  1
654 
655 #define LV_USE_CALENDAR   1
656 #if LV_USE_CALENDAR
657     #define LV_CALENDAR_WEEK_STARTS_MONDAY 0
658     #if LV_CALENDAR_WEEK_STARTS_MONDAY
659         #define LV_CALENDAR_DEFAULT_DAY_NAMES {"Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"}
660     #else
661         #define LV_CALENDAR_DEFAULT_DAY_NAMES {"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"}
662     #endif
663 
664     #define LV_CALENDAR_DEFAULT_MONTH_NAMES {"January", "February", "March",  "April", "May",  "June", "July", "August", "September", "October", "November", "December"}
665     #define LV_USE_CALENDAR_HEADER_ARROW 1
666     #define LV_USE_CALENDAR_HEADER_DROPDOWN 1
667     #define LV_USE_CALENDAR_CHINESE 0
668 #endif  /*LV_USE_CALENDAR*/
669 
670 #define LV_USE_CANVAS     1
671 
672 #define LV_USE_CHART      1
673 
674 #define LV_USE_CHECKBOX   1
675 
676 #define LV_USE_DROPDOWN   1   /**< Requires: lv_label */
677 
678 #define LV_USE_IMAGE      1   /**< Requires: lv_label */
679 
680 #define LV_USE_IMAGEBUTTON     1
681 
682 #define LV_USE_KEYBOARD   1
683 
684 #define LV_USE_LABEL      1
685 #if LV_USE_LABEL
686     #define LV_LABEL_TEXT_SELECTION 1   /**< Enable selecting text of the label */
687     #define LV_LABEL_LONG_TXT_HINT 1    /**< Store some extra info in labels to speed up drawing of very long text */
688     #define LV_LABEL_WAIT_CHAR_COUNT 3  /**< The count of wait chart */
689 #endif
690 
691 #define LV_USE_LED        1
692 
693 #define LV_USE_LINE       1
694 
695 #define LV_USE_LIST       1
696 
697 #define LV_USE_LOTTIE     0  /**< Requires: lv_canvas, thorvg */
698 
699 #define LV_USE_MENU       1
700 
701 #define LV_USE_MSGBOX     1
702 
703 #define LV_USE_ROLLER     1   /**< Requires: lv_label */
704 
705 #define LV_USE_SCALE      1
706 
707 #define LV_USE_SLIDER     1   /**< Requires: lv_bar */
708 
709 #define LV_USE_SPAN       1
710 #if LV_USE_SPAN
711     /** A line of text can contain this maximum number of span descriptors. */
712     #define LV_SPAN_SNIPPET_STACK_SIZE 64
713 #endif
714 
715 #define LV_USE_SPINBOX    1
716 
717 #define LV_USE_SPINNER    1
718 
719 #define LV_USE_SWITCH     1
720 
721 #define LV_USE_TABLE      1
722 
723 #define LV_USE_TABVIEW    1
724 
725 #define LV_USE_TEXTAREA   1   /**< Requires: lv_label */
726 #if LV_USE_TEXTAREA != 0
727     #define LV_TEXTAREA_DEF_PWD_SHOW_TIME 1500    /**< [ms] */
728 #endif
729 
730 #define LV_USE_TILEVIEW   1
731 
732 #define LV_USE_WIN        1
733 
734 /*==================
735  * THEMES
736  *==================*/
737 /* Documentation for themes can be found here: https://docs.lvgl.io/master/overview/style.html#themes . */
738 
739 /** A simple, impressive and very complete theme */
740 #define LV_USE_THEME_DEFAULT 1
741 #if LV_USE_THEME_DEFAULT
742     /** 0: Light mode; 1: Dark mode */
743     #define LV_THEME_DEFAULT_DARK 0
744 
745     /** 1: Enable grow on press */
746     #define LV_THEME_DEFAULT_GROW 1
747 
748     /** Default transition time in ms. */
749     #define LV_THEME_DEFAULT_TRANSITION_TIME 80
750 #endif /*LV_USE_THEME_DEFAULT*/
751 
752 /** A very simple theme that is a good starting point for a custom theme */
753 #define LV_USE_THEME_SIMPLE 1
754 
755 /** A theme designed for monochrome displays */
756 #define LV_USE_THEME_MONO 1
757 
758 /*==================
759  * LAYOUTS
760  *==================*/
761 /* Documentation for layouts can be found here: https://docs.lvgl.io/master/layouts/index.html . */
762 
763 /** A layout similar to Flexbox in CSS. */
764 #define LV_USE_FLEX 1
765 
766 /** A layout similar to Grid in CSS. */
767 #define LV_USE_GRID 1
768 
769 /*====================
770  * 3RD PARTS LIBRARIES
771  *====================*/
772 /* Documentation for libraries can be found here: https://docs.lvgl.io/master/libs/index.html . */
773 
774 /* File system interfaces for common APIs */
775 
776 /** Setting a default driver letter allows skipping the driver prefix in filepaths. */
777 #define LV_FS_DEFAULT_DRIVER_LETTER '\0'
778 
779 /** API for fopen, fread, etc. */
780 #if LV_USE_FS_STDIO
781     #define LV_FS_STDIO_LETTER '\0'     /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */
782     #define LV_FS_STDIO_PATH ""         /**< Set the working directory. File/directory paths will be appended to it. */
783     #define LV_FS_STDIO_CACHE_SIZE 0    /**< >0 to cache this number of bytes in lv_fs_read() */
784 #endif
785 
786 /** API for open, read, etc. */
787 #if LV_USE_FS_POSIX
788     #define LV_FS_POSIX_LETTER '\0'     /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */
789     #define LV_FS_POSIX_PATH ""         /**< Set the working directory. File/directory paths will be appended to it. */
790     #define LV_FS_POSIX_CACHE_SIZE 0    /**< >0 to cache this number of bytes in lv_fs_read() */
791 #endif
792 
793 /** API for CreateFile, ReadFile, etc. */
794 #if LV_USE_FS_WIN32
795     #define LV_FS_WIN32_LETTER '\0'     /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */
796     #define LV_FS_WIN32_PATH ""         /**< Set the working directory. File/directory paths will be appended to it. */
797     #define LV_FS_WIN32_CACHE_SIZE 0    /**< >0 to cache this number of bytes in lv_fs_read() */
798 #endif
799 
800 /** API for FATFS (needs to be added separately). Uses f_open, f_read, etc. */
801 #if LV_USE_FS_FATFS
802     #define LV_FS_FATFS_LETTER '\0'     /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */
803     #define LV_FS_FATFS_CACHE_SIZE 0    /**< >0 to cache this number of bytes in lv_fs_read() */
804 #endif
805 
806 /** API for memory-mapped file access. */
807 #if LV_USE_FS_MEMFS
808     #define LV_FS_MEMFS_LETTER '\0'     /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */
809 #endif
810 
811 /** API for LittleFs. */
812 #if LV_USE_FS_LITTLEFS
813     #define LV_FS_LITTLEFS_LETTER '\0'  /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */
814 #endif
815 
816 /** API for Arduino LittleFs. */
817 #if LV_USE_FS_ARDUINO_ESP_LITTLEFS
818     #define LV_FS_ARDUINO_ESP_LITTLEFS_LETTER '\0'     /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */
819 #endif
820 
821 /** API for Arduino Sd. */
822 #if LV_USE_FS_ARDUINO_SD
823     #define LV_FS_ARDUINO_SD_LETTER '\0'          /**< Set an upper cased letter on which the drive will accessible (e.g. 'A') */
824 #endif
825 
826 /** GIF decoder library */
827 #if LV_USE_GIF
828     /** GIF decoder accelerate */
829     #define LV_GIF_CACHE_DECODE_DATA 0
830 #endif
831 
832 /** Decode bin images to RAM */
833 #define LV_BIN_DECODER_RAM_LOAD 0
834 
835 /** FreeType library */
836 #if LV_USE_FREETYPE
837     /** Let FreeType use LVGL memory and file porting */
838     #define LV_FREETYPE_USE_LVGL_PORT 0
839 
840     /** Cache count of glyphs in FreeType, i.e. number of glyphs that can be cached.
841      *  The higher the value, the more memory will be used. */
842     #define LV_FREETYPE_CACHE_FT_GLYPH_CNT 256
843 #endif
844 
845 /** Built-in TTF decoder */
846 #if LV_USE_TINY_TTF
847     /* Enable loading TTF data from files */
848     #define LV_TINY_TTF_FILE_SUPPORT 0
849     #define LV_TINY_TTF_CACHE_GLYPH_CNT 256
850 #endif
851 
852 /** Enable Vector Graphic APIs
853  *  - Requires `LV_USE_MATRIX = 1` */
854 /*Enable Vector Graphic APIs*/
855 #ifndef LV_USE_VECTOR_GRAPHIC
856 #   define LV_USE_VECTOR_GRAPHIC  0
857 
858 /* Enable ThorVG (vector graphics library) from the src/libs folder */
859 #   define LV_USE_THORVG_INTERNAL 0
860 
861 /* Enable ThorVG by assuming that its installed and linked to the project */
862 #   define LV_USE_THORVG_EXTERNAL 0
863 #endif
864 
865 /*Enable LZ4 compress/decompress lib*/
866 #ifndef LV_USE_LZ4
867 #   define LV_USE_LZ4  0
868 
869 /*Use lvgl built-in LZ4 lib*/
870 #   define LV_USE_LZ4_INTERNAL  0
871 
872 /*Use external LZ4 library*/
873 #   define LV_USE_LZ4_EXTERNAL  0
874 #endif
875 
876 /*SVG library
877  *  - Requires `LV_USE_VECTOR_GRAPHIC = 1` */
878 #define LV_USE_SVG_ANIMATION 0
879 #define LV_USE_SVG_DEBUG 0
880 
881 /** FFmpeg library for image decoding and playing videos.
882  *  Supports all major image formats so do not enable other image decoder with it. */
883 #if LV_USE_FFMPEG
884     /** Dump input information to stderr */
885     #define LV_FFMPEG_DUMP_FORMAT 0
886 #endif
887 
888 /*==================
889  * OTHERS
890  *==================*/
891 /* Documentation for several of the below items can be found here: https://docs.lvgl.io/master/others/index.html . */
892 
893 /** 1: Enable API to take snapshot for object */
894 #define LV_USE_SNAPSHOT 0
895 
896 /** 1: Enable system monitor component */
897 #define LV_USE_SYSMON   0
898 #if LV_USE_SYSMON
899     /** Get the idle percentage. E.g. uint32_t my_get_idle(void); */
900     #define LV_SYSMON_GET_IDLE lv_timer_get_idle
901 
902     /** 1: Show CPU usage and FPS count.
903      *  - Requires `LV_USE_SYSMON = 1` */
904     #define LV_USE_PERF_MONITOR 0
905     #if LV_USE_PERF_MONITOR
906         #define LV_USE_PERF_MONITOR_POS LV_ALIGN_BOTTOM_RIGHT
907 
908         /** 0: Displays performance data on the screen; 1: Prints performance data using log. */
909         #define LV_USE_PERF_MONITOR_LOG_MODE 0
910     #endif
911 
912     /** 1: Show used memory and memory fragmentation.
913      *     - Requires `LV_USE_STDLIB_MALLOC = LV_STDLIB_BUILTIN`
914      *     - Requires `LV_USE_SYSMON = 1`*/
915     #define LV_USE_MEM_MONITOR 0
916     #if LV_USE_MEM_MONITOR
917         #define LV_USE_MEM_MONITOR_POS LV_ALIGN_BOTTOM_LEFT
918     #endif
919 #endif /*LV_USE_SYSMON*/
920 
921 /** 1: Enable runtime performance profiler */
922 #define LV_USE_PROFILER 0
923 #if LV_USE_PROFILER
924     /** 1: Enable the built-in profiler */
925     #define LV_USE_PROFILER_BUILTIN 1
926     #if LV_USE_PROFILER_BUILTIN
927         /** Default profiler trace buffer size */
928         #define LV_PROFILER_BUILTIN_BUF_SIZE (16 * 1024)     /**< [bytes] */
929     #endif
930 
931     /** Header to include for profiler */
932     #define LV_PROFILER_INCLUDE "src/misc/lv_profiler_builtin.h"
933 
934     /** Profiler start point function */
935     #define LV_PROFILER_BEGIN    LV_PROFILER_BUILTIN_BEGIN
936 
937     /** Profiler end point function */
938     #define LV_PROFILER_END      LV_PROFILER_BUILTIN_END
939 
940     /** Profiler start point function with custom tag */
941     #define LV_PROFILER_BEGIN_TAG LV_PROFILER_BUILTIN_BEGIN_TAG
942 
943     /** Profiler end point function with custom tag */
944     #define LV_PROFILER_END_TAG   LV_PROFILER_BUILTIN_END_TAG
945 
946     /*Enable layout profiler*/
947     #define LV_PROFILER_LAYOUT 1
948 
949     /*Enable disp refr profiler*/
950     #define LV_PROFILER_REFR 1
951 
952     /*Enable draw profiler*/
953     #define LV_PROFILER_DRAW 1
954 
955     /*Enable indev profiler*/
956     #define LV_PROFILER_INDEV 1
957 
958     /*Enable decoder profiler*/
959     #define LV_PROFILER_DECODER 1
960 
961     /*Enable font profiler*/
962     #define LV_PROFILER_FONT 1
963 
964     /*Enable fs profiler*/
965     #define LV_PROFILER_FS 1
966 
967     /*Enable style profiler*/
968     #define LV_PROFILER_STYLE 0
969 
970     /*Enable timer profiler*/
971     #define LV_PROFILER_TIMER 1
972 
973     /*Enable cache profiler*/
974     #define LV_PROFILER_CACHE 1
975 #endif
976 
977 /** 1: Enable an observer pattern implementation */
978 #define LV_USE_OBSERVER 1
979 
980 /** 1: Enable Pinyin input method
981  *  - Requires: lv_keyboard */
982 #if LV_USE_IME_PINYIN
983     /** 1: Use default thesaurus.
984      *  @note  If you do not use the default thesaurus, be sure to use `lv_ime_pinyin` after setting the thesaurus. */
985     #define LV_IME_PINYIN_USE_DEFAULT_DICT 1
986     /** Set maximum number of candidate panels that can be displayed.
987      *  @note  This needs to be adjusted according to size of screen. */
988     #define LV_IME_PINYIN_CAND_TEXT_NUM 6
989 
990     /** Use 9-key input (k9). */
991     #define LV_IME_PINYIN_USE_K9_MODE      1
992     #if LV_IME_PINYIN_USE_K9_MODE == 1
993         #define LV_IME_PINYIN_K9_CAND_TEXT_NUM 3
994     #endif /*LV_IME_PINYIN_USE_K9_MODE*/
995 #endif
996 
997 /** 1: Enable file explorer.
998  *  - Requires: lv_table */
999 #if LV_USE_FILE_EXPLORER
1000     /** Maximum length of path */
1001     #define LV_FILE_EXPLORER_PATH_MAX_LEN        (128)
1002     /** Quick access bar, 1:use, 0:do not use.
1003      *  - Requires: lv_list */
1004     #define LV_FILE_EXPLORER_QUICK_ACCESS        1
1005 #endif
1006 
1007 /** 1: Enable freetype font manager
1008  *  - Requires: LV_USE_FREETYPE */
1009 #if LV_USE_FONT_MANAGER
1010 
1011 /*Font manager name max length*/
1012 #define LV_FONT_MANAGER_NAME_MAX_LEN            32
1013 
1014 #endif
1015 
1016 /*==================
1017  * DEVICES
1018  *==================*/
1019 
1020 /** Use SDL to open window on PC and handle mouse and keyboard. */
1021 #define LV_USE_SDL              0
1022 #if LV_USE_SDL
1023     #define LV_SDL_INCLUDE_PATH     <SDL2/SDL.h>
1024     #define LV_SDL_RENDER_MODE      LV_DISPLAY_RENDER_MODE_DIRECT   /**< LV_DISPLAY_RENDER_MODE_DIRECT is recommended for best performance */
1025     #define LV_SDL_BUF_COUNT        1    /**< 1 or 2 */
1026     #define LV_SDL_ACCELERATED      1    /**< 1: Use hardware acceleration*/
1027     #define LV_SDL_FULLSCREEN       0    /**< 1: Make the window full screen by default */
1028     #define LV_SDL_DIRECT_EXIT      1    /**< 1: Exit the application when all SDL windows are closed */
1029     #define LV_SDL_MOUSEWHEEL_MODE  LV_SDL_MOUSEWHEEL_MODE_ENCODER  /*LV_SDL_MOUSEWHEEL_MODE_ENCODER/CROWN*/
1030 #endif
1031 
1032 /** Use X11 to open window on Linux desktop and handle mouse and keyboard */
1033 #define LV_USE_X11              0
1034 #if LV_USE_X11
1035     #define LV_X11_DIRECT_EXIT         1  /**< Exit application when all X11 windows have been closed */
1036     #define LV_X11_DOUBLE_BUFFER       1  /**< Use double buffers for rendering */
1037     /* Select only 1 of the following render modes (LV_X11_RENDER_MODE_PARTIAL preferred!). */
1038     #define LV_X11_RENDER_MODE_PARTIAL 1  /**< Partial render mode (preferred) */
1039     #define LV_X11_RENDER_MODE_DIRECT  0  /**< Direct render mode */
1040     #define LV_X11_RENDER_MODE_FULL    0  /**< Full render mode */
1041 #endif
1042 
1043 /** Use Wayland to open a window and handle input on Linux or BSD desktops */
1044 #define LV_USE_WAYLAND          0
1045 #if LV_USE_WAYLAND
1046     #define LV_WAYLAND_WINDOW_DECORATIONS   0    /**< Draw client side window decorations only necessary on Mutter/GNOME */
1047     #define LV_WAYLAND_WL_SHELL             0    /**< Use the legacy wl_shell protocol instead of the default XDG shell */
1048 #endif
1049 
1050 /** Driver for /dev/fb */
1051 #if LV_USE_LINUX_FBDEV
1052     #define LV_LINUX_FBDEV_BSD           0
1053     #define LV_LINUX_FBDEV_RENDER_MODE   LV_DISPLAY_RENDER_MODE_PARTIAL
1054     #define LV_LINUX_FBDEV_BUFFER_COUNT  0
1055     #define LV_LINUX_FBDEV_BUFFER_SIZE   60
1056 #endif
1057 
1058 /** Use Nuttx to open window and handle touchscreen */
1059 #define LV_USE_NUTTX    0
1060 
1061 #if LV_USE_NUTTX
1062     #define LV_USE_NUTTX_INDEPENDENT_IMAGE_HEAP 0
1063 
1064     #define LV_USE_NUTTX_LIBUV    0
1065 
1066     /** Use Nuttx custom init API to open window and handle touchscreen */
1067     #define LV_USE_NUTTX_CUSTOM_INIT    0
1068 
1069     /** Driver for /dev/lcd */
1070     #define LV_USE_NUTTX_LCD      0
1071     #if LV_USE_NUTTX_LCD
1072         #define LV_NUTTX_LCD_BUFFER_COUNT    0
1073         #define LV_NUTTX_LCD_BUFFER_SIZE     60
1074     #endif
1075 
1076     /** Driver for /dev/input */
1077     #define LV_USE_NUTTX_TOUCHSCREEN    0
1078 #endif
1079 
1080 /** Driver for evdev input devices */
1081 #define LV_USE_EVDEV    0
1082 
1083 /** Driver for libinput input devices */
1084 #define LV_USE_LIBINPUT    0
1085 
1086 #if LV_USE_LIBINPUT
1087     #define LV_LIBINPUT_BSD    0
1088 
1089     /** Full keyboard support */
1090     #define LV_LIBINPUT_XKB             0
1091     #if LV_LIBINPUT_XKB
1092         /** "setxkbmap -query" can help find the right values for your keyboard */
1093         #define LV_LIBINPUT_XKB_KEY_MAP { .rules = NULL, .model = "pc101", .layout = "us", .variant = NULL, .options = NULL }
1094     #endif
1095 #endif
1096 
1097 /* Drivers for LCD devices connected via SPI/parallel port */
1098 #define LV_USE_GENERIC_MIPI (LV_USE_ST7735 | LV_USE_ST7789 | LV_USE_ST7796 | LV_USE_ILI9341)
1099 
1100 
1101 /** Driver for ST LTDC */
1102 #if LV_USE_ST_LTDC
1103     /* Only used for partial. */
1104     #define LV_ST_LTDC_USE_DMA2D_FLUSH 0
1105 #endif
1106 
1107 /** Use OpenGL to open window on PC and handle mouse and keyboard */
1108 #define LV_USE_OPENGLES   0
1109 #if LV_USE_OPENGLES
1110     #define LV_USE_OPENGLES_DEBUG        1    /**< Enable or disable debug for opengles */
1111 #endif
1112 
1113 /** QNX Screen display and input drivers */
1114 #define LV_USE_QNX              0
1115 #if LV_USE_QNX
1116     #define LV_QNX_BUF_COUNT        1    /**< 1 or 2 */
1117 #endif
1118 
1119 /*==================
1120 * EXAMPLES
1121 *==================*/
1122 
1123 /** Enable examples to be built with the library. */
1124 #define LV_BUILD_EXAMPLES 1
1125 
1126 /*===================
1127  * DEMO USAGE
1128  ====================*/
1129 
1130 /** Music player demo */
1131 #if LV_USE_DEMO_MUSIC
1132     #define LV_DEMO_MUSIC_SQUARE    0
1133     #define LV_DEMO_MUSIC_LANDSCAPE 0
1134     #define LV_DEMO_MUSIC_ROUND     0
1135     #define LV_DEMO_MUSIC_LARGE     0
1136     #define LV_DEMO_MUSIC_AUTO_PLAY 0
1137 #endif
1138 
1139 /*E-bike demo with Lottie animations (if LV_USE_LOTTIE is enabled)*/
1140 #define LV_USE_DEMO_EBIKE			0
1141 #if LV_USE_DEMO_EBIKE
1142 	#define LV_DEMO_EBIKE_PORTRAIT  0    /*0: for 480x270..480x320, 1: for 480x800..720x1280*/
1143 #endif
1144 
1145 /*--END OF LV_CONF_H--*/
1146 
1147 #endif /*LV_CONF_H*/
1148 
1149 #endif /*End of "Content enable"*/
1150