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