blob: b0ccc3f14e3b15148def795960fe8119410ccc98 [file] [log] [blame]
/*
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu>
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_LIB_GUI_LVGL_LV_CONF_H_
#define ZEPHYR_LIB_GUI_LVGL_LV_CONF_H_
/* Dynamic memory */
#define LV_MEM_CUSTOM 1
#ifdef CONFIG_LVGL_MEM_POOL_HEAP_KERNEL
#define LV_MEM_CUSTOM_INCLUDE "kernel.h"
#define LV_MEM_CUSTOM_ALLOC k_malloc
#define LV_MEM_CUSTOM_FREE k_free
#define LV_ENABLE_GC 0
#elif defined(CONFIG_LVGL_MEM_POOL_HEAP_LIB_C)
#define LV_MEM_CUSTOM_INCLUDE "stdlib.h"
#define LV_MEM_CUSTOM_ALLOC malloc
#define LV_MEM_CUSTOM_FREE free
#ifdef CONFIG_NEWLIB_LIBC
#define LV_ENABLE_GC 1
#define LV_MEM_CUSTOM_REALLOC realloc
#define LV_MEM_CUSTOM_GET_SIZE malloc_size
#define LV_GC_INCLUDE "stdlib.h"
#else
#define LV_ENABLE_GC 0
#endif
#else
#define LV_MEM_CUSTOM_INCLUDE "lvgl_mem.h"
#define LV_MEM_CUSTOM_ALLOC lvgl_malloc
#define LV_MEM_CUSTOM_FREE lvgl_free
#define LV_ENABLE_GC 0
#endif
/* Graphics settings */
#define LV_HOR_RES CONFIG_LVGL_HOR_RES
#define LV_VER_RES CONFIG_LVGL_VER_RES
#define LV_DPI CONFIG_LVGL_DPI
#ifdef CONFIG_LVGL_ANTIALIAS
#define LV_ANTIALIAS CONFIG_LVGL_ANTIALIAS
#else
#define LV_ANTIALIAS 0
#endif
#define LV_REFR_PERIOD CONFIG_LVGL_SCREEN_REFRESH_PERIOD
/* VDB settings */
#ifdef CONFIG_LVGL_TRUE_DOUBLE_BUFFERED
#define LV_VDB_SIZE (CONFIG_LVGL_VDB_SIZE * CONFIG_LVGL_HOR_RES)
#else
#define LV_VDB_SIZE (CONFIG_LVGL_VDB_SIZE * CONFIG_LVGL_HOR_RES \
* CONFIG_LVGL_VER_RES / 100)
#endif
#if CONFIG_LVGL_BITS_PER_PIXEL == 0
#define LV_VDB_PX_BPP LV_COLOR_SIZE
#else
#define LV_VDB_PX_BPP CONFIG_LVGL_BITS_PER_PIXEL
#endif
#ifdef CONFIG_LVGL_VDB_STATIC
#define LV_VDB_ADR 0
#else
#define LV_VDB_ADR LV_VDB_ADR_INV
#endif
#define LV_VDB_DOUBLE CONFIG_LVGL_DOUBLE_VDB
#ifdef CONFIG_LVGL_VDB_STATIC
#define LV_VDB2_ADR 0
#else
#define LV_VDB2_ADR LV_VDB_ADR_INV
#endif
#define LV_VDB_TRUE_DOUBLE_BUFFERED CONFIG_LVGL_TRUE_DOUBLE_BUFFERED
/* Miscellaneous setting */
#define LV_INDEV_READ_PERIOD CONFIG_LVGL_INPUT_REFRESH_PERIOD
#define LV_INDEV_POINT_MARKER CONFIG_LVGL_INPUT_MARK_PRESSED_POINTS
#define LV_INDEV_DRAG_LIMIT CONFIG_LVGL_INPUT_DRAG_THRESHOLD
#define LV_INDEV_DRAG_THROW CONFIG_LVGL_INPUT_DRAG_THROW_SLOW_DOWN
#define LV_INDEV_LONG_PRESS_TIME CONFIG_LVGL_INPUT_LONG_PRESS_TIME
#define LV_INDEV_LONG_PRESS_REP_TIME CONFIG_LVGL_INPUT_LONG_RESS_REPEAT_TIME
#ifdef CONFIG_LVGL_COLOR_DEPTH_32
#define LV_COLOR_DEPTH 32
#elif defined(CONFIG_LVGL_COLOR_DEPTH_16)
#define LV_COLOR_DEPTH 16
#elif defined(CONFIG_LVGL_COLOR_DEPTH_8)
#define LV_COLOR_DEPTH 8
#elif defined(CONFIG_LVGL_COLOR_DEPTH_1)
#define LV_COLOR_DEPTH 1
#else
#error No color depth defined
#endif
#define LV_COLOR_16_SWAP CONFIG_LVGL_COLOR_16_SWAP
#define LV_COLOR_SCREEN_TRANSP CONFIG_LVGL_COLOR_SCREEN_TRANSP
#ifdef CONFIG_LVGL_CHROMA_KEY_RED
#define LV_COLOR_TRANSP LV_COLOR_RED
#elif defined(CONFIG_LVGL_CHROMA_KEY_GREEN)
#define LV_COLOR_TRANSP LV_COLOR_LIME
#elif defined(CONFIG_LVGL_CHROMA_KEY_BLUE)
#define LV_COLOR_TRANSP LV_COLOR_BLUE
#elif defined(CONFIG_LVGL_CHROMA_KEY_CUSTOM)
#define LV_COLOR_TRANSP LV_COLOR_MAKE(CONFIG_LVGL_CUSTOM_CHROMA_KEY_RED, \
CONFIG_LVGL_CUSTOM_CHROMA_KEY_GREEN, \
CONFIG_LVGL_CUSTOM_CHROMA_KEY_BLUE)
#else
#error No chroma key defined
#endif
#define LV_TXT_UTF8 CONFIG_LVGL_UTF_8
#define LV_TXT_BREAK_CHARS CONFIG_LVGL_TEXT_BREAK_CHARACTERS
#define LV_TXT_LINE_BREAK_LONG_LEN CONFIG_LVGL_TEXT_BREAK_LONG_WORD_SIZE
#define LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN \
CONFIG_LVGL_TEXT_BREAK_LONG_WORD_PRE_MIN_LEN
#define LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN \
CONFIG_LVGL_TEXT_BREAK_LONG_WORD_POST_MIN_LEN
#define USE_LV_ANIMATION CONFIG_LVGL_ANIMATION
#define USE_LV_SHADOW CONFIG_LVGL_SHADOW
#define USE_LV_GROUP CONFIG_LVGL_GROUP
#define USE_LV_GPU CONFIG_LVGL_GPU
#define USE_LV_REAL_DRAW CONFIG_LVGL_DIRECT_DRAW
#define USE_LV_FILESYSTEM CONFIG_LVGL_FILESYSTEM
#ifdef LVGL_MULTI_LANGUAGE
#define USE_LV_MULTI_LANG CONFIG_LVGL_NBR_OF_LANGUAGES
#else
#define USE_LV_MULTI_LANG 0
#endif
#define LV_ATTRIBUTE_TICK_INC
#define LV_ATTRIBUTE_TASK_HANDLER
#define LV_COMPILER_VLA_SUPPORTED CONFIG_LVGL_VLA_SUPPORT
#define LV_COMPILER_NON_CONST_INIT_SUPPORTED \
CONFIG_LVGL_COMPILER_NON_CONST_INIT_SUPPORTED
#define LV_TICK_CUSTOM 1
#define LV_TICK_CUSTOM_INCLUDE "kernel.h"
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (k_uptime_get_32())
#if CONFIG_LVGL_LOG_LEVEL == 0
#define USE_LV_LOG 0
#else
#define USE_LV_LOG 1
#if CONFIG_LVGL_LOG_LEVEL == 1
#define LV_LOG_LEVEL LV_LOG_LEVEL_ERROR
#elif CONFIG_LVGL_LOG_LEVEL == 2
#define LV_LOG_LEVEL LV_LOG_LEVEL_WARN
#elif CONFIG_LVGL_LOG_LEVEL == 3
#define LV_LOG_LEVEL LV_LOG_LEVEL_INFO
#elif CONFIG_LVGL_LOG_LEVEL == 4
#define LV_LOG_LEVEL LV_LOG_LEVEL_TRACE
#else
#error Invalid log level defined
#endif
#define LV_LOG_PRINTF 0
#endif
/* Theme support */
#ifdef CONFIG_LVGL_THEMES
#define LV_THEME_LIVE_UPDATE CONFIG_LVGL_THEME_LIVE_UPDATE
#define USE_LV_THEME_TEMPL 0
#define USE_LV_THEME_DEFAULT CONFIG_LVGL_THEME_DEFAULT
#define USE_LV_THEME_ALIEN CONFIG_LVGL_THEME_ALIEN
#define USE_LV_THEME_NIGHT CONFIG_LVGL_THEME_NIGHT
#define USE_LV_THEME_MONO CONFIG_LVGL_THEME_MONO
#define USE_LV_THEME_MATERIAL CONFIG_LVGL_THEME_MATERIAL
#define USE_LV_THEME_ZEN CONFIG_LVGL_THEME_ZEN
#define USE_LV_THEME_NEMO CONFIG_LVGL_THEME_NEMO
#else
#define LV_THEME_LIVE_UPDATE 0
#define USE_LV_THEME_TEMPL 0
#define USE_LV_THEME_DEFAULT 0
#define USE_LV_THEME_ALIEN 0
#define USE_LV_THEME_NIGHT 0
#define USE_LV_THEME_MONO 0
#define USE_LV_THEME_MATERIAL 0
#define USE_LV_THEME_ZEN 0
#define USE_LV_THEME_NEMO 0
#endif
/* Font support */
#ifdef CONFIG_LVGL_DEFAULT_FONT_BUILD_IN_10_ASCII
#define LV_FONT_DEFAULT (&lv_font_dejavu_10)
#elif defined(CONFIG_LVGL_DEFAULT_FONT_BUILD_IN_20_ASCII)
#define LV_FONT_DEFAULT (&lv_font_dejavu_20)
#elif defined(CONFIG_LVGL_DEFAULT_FONT_BUILD_IN_30_ASCII)
#define LV_FONT_DEFAULT (&lv_font_dejavu_30)
#elif defined(CONFIG_LVGL_DEFAULT_FONT_BUILD_IN_40_ASCII)
#define LV_FONT_DEFAULT (&lv_font_dejavu_40)
#elif defined(CONFIG_LVGL_DEFAULT_FONT_BUILD_IN_MONOSPACE)
#define LV_FONT_DEFAULT (&lv_font_monospace_8)
#elif defined(CONFIG_LVGL_DEFAULT_FONT_CUSTOM)
extern void *lv_default_font_custom_ptr;
#define LV_FONT_DEFAULT ((lv_font_t *) lv_default_font_custom_ptr)
#else
#error No defulat font defined
#endif
#ifdef CONFIG_LVGL_BUILD_IN_FONT_10
#define USE_LV_FONT_DEJAVU_10 \
CONFIG_LVGL_BUILD_IN_FONT_10_ASCII_BPP
#define USE_LV_FONT_DEJAVU_10_LATIN_SUP \
CONFIG_LVGL_BUILD_IN_FONT_10_LATIN_SUP_BPP
#define USE_LV_FONT_DEJAVU_10_CYRILLIC \
CONFIG_LVGL_BUILD_IN_FONT_10_CYRILLIC_BPP
#define USE_LV_FONT_SYMBOL_10 \
CONFIG_LVGL_BUILD_IN_FONT_10_SYMBOL_BPP
#else
#define USE_LV_FONT_DEJAVU_10 0
#define USE_LV_FONT_DEJAVU_10_LATIN_SUP 0
#define USE_LV_FONT_DEJAVU_10_CYRILLIC 0
#define USE_LV_FONT_SYMBOL_10 0
#endif
#if CONFIG_LVGL_BUILD_IN_FONT_20
#define USE_LV_FONT_DEJAVU_20 \
CONFIG_LVGL_BUILD_IN_FONT_20_ASCII_BPP
#define USE_LV_FONT_DEJAVU_20_LATIN_SUP \
CONFIG_LVGL_BUILD_IN_FONT_20_LATIN_SUP_BPP
#define USE_LV_FONT_DEJAVU_20_CYRILLIC \
CONFIG_LVGL_BUILD_IN_FONT_20_CYRILLIC_BPP
#define USE_LV_FONT_SYMBOL_20 \
CONFIG_LVGL_BUILD_IN_FONT_20_SYMBOL_BPP
#else
#define USE_LV_FONT_DEJAVU_20 0
#define USE_LV_FONT_DEJAVU_20_LATIN_SUP 0
#define USE_LV_FONT_DEJAVU_20_CYRILLIC 0
#define USE_LV_FONT_SYMBOL_20 0
#endif
#if CONFIG_LVGL_BUILD_IN_FONT_30
#define USE_LV_FONT_DEJAVU_30 \
CONFIG_LVGL_BUILD_IN_FONT_30_ASCII_BPP
#define USE_LV_FONT_DEJAVU_30_LATIN_SUP \
CONFIG_LVGL_BUILD_IN_FONT_30_LATIN_SUP_BPP
#define USE_LV_FONT_DEJAVU_30_CYRILLIC \
CONFIG_LVGL_BUILD_IN_FONT_30_CYRILLIC_BPP
#define USE_LV_FONT_SYMBOL_30 \
CONFIG_LVGL_BUILD_IN_FONT_30_SYMBOL_BPP
#else
#define USE_LV_FONT_DEJAVU_30 0
#define USE_LV_FONT_DEJAVU_30_LATIN_SUP 0
#define USE_LV_FONT_DEJAVU_30_CYRILLIC 0
#define USE_LV_FONT_SYMBOL_30 0
#endif
#if CONFIG_LVGL_BUILD_IN_FONT_40
#define USE_LV_FONT_DEJAVU_40 \
CONFIG_LVGL_BUILD_IN_FONT_40_ASCII_BPP
#define USE_LV_FONT_DEJAVU_40_LATIN_SUP \
CONFIG_LVGL_BUILD_IN_FONT_40_LATIN_SUP_BPP
#define USE_LV_FONT_DEJAVU_40_CYRILLIC \
CONFIG_LVGL_BUILD_IN_FONT_40_CYRILLIC_BPP
#define USE_LV_FONT_SYMBOL_40 \
CONFIG_LVGL_BUILD_IN_FONT_40_SYMBOL_BPP
#else
#define USE_LV_FONT_DEJAVU_40 0
#define USE_LV_FONT_DEJAVU_40_LATIN_SUP 0
#define USE_LV_FONT_DEJAVU_40_CYRILLIC 0
#define USE_LV_FONT_SYMBOL_40 0
#endif
#define USE_LV_FONT_MONOSPACE_8 CONFIG_LVGL_BUILD_IN_FONT_MONOSPACE
#define LV_FONT_CUSTOM_DECLARE
/* Objects */
#define LV_OBJ_FREE_NUM_TYPE uint32_t
#define LV_OBJ_FREE_PTR 1
#define LV_OBJ_REALIGN CONFIG_LVGL_OBJ_REALIGN
#define USE_LV_LABEL CONFIG_LVGL_OBJ_LABEL
#if USE_LV_LABEL != 0
#define LV_LABEL_SCROLL_SPEED CONFIG_LVGL_OBJ_LABEL_SCROLL_SPEED
#endif
#define USE_LV_IMG CONFIG_LVGL_OBJ_IMAGE
#if USE_LV_IMG != 0
#define LV_IMG_CF_INDEXED CONFIG_LVGL_IMG_CF_INDEXED
#define LV_IMG_CF_ALPHA CONFIG_LVGL_IMG_CF_ALPHA
#endif
#define USE_LV_LINE CONFIG_LVGL_OBJ_LINE
#define USE_LV_ARC CONFIG_LVGL_OBJ_ARC
#define USE_LV_CONT CONFIG_LVGL_OBJ_CONTAINER
#define USE_LV_PAGE CONFIG_LVGL_OBJ_PAGE
#define USE_LV_WIN CONFIG_LVGL_OBJ_WINDOW
#define USE_LV_TABVIEW CONFIG_LVGL_OBJ_TAB_VIEW
#if USE_LV_TABVIEW != 0
#define LV_TABVIEW_ANIM_TIME CONFIG_LVGL_OBJ_TAB_VIEW_ANIMATION_TIME
#endif
#define USE_LV_TILEVIEW CONFIG_LVGL_OBJ_TILE_VIEW
#if USE_LV_TILEVIEW != 0
#define LV_TILEVIEW_ANIM_TIME CONFIG_LVGL_OBJ_TILE_VIEW_ANIMATION_TIME
#endif
#define USE_LV_CALENDAR CONFIG_LVGL_OBJ_CALENDAR
#define USE_LV_PRELOAD CONFIG_LVGL_OBJ_PRELOAD
#if USE_LV_PRELOAD != 0
#define LV_PRELOAD_DEF_ARC_LENGTH CONFIG_LVGL_OBJ_PRELOAD_DEF_ARC_LENGTH
#define LV_PRELOAD_DEF_SPIN_TIME CONFIG_LVGL_OBJ_PRELOAD_DEF_SPIN_TIME
#ifdef LVGL_OBJ_PRELOAD_DEF_ANIMATION_SPIN_ARC
#define LV_PRELOAD_DEF_ANIM LV_PRELOAD_TYPE_SPINNING_ARC
#endif
#ifdef LVGL_OBJ_PRELOAD_DEF_ANIMATION_FILL
#define LV_PRELOAD_DEF_ANIM LV_PRELOAD_TYPE_FILLSPIN_ARC
#endif
#endif
#define USE_LV_CANVAS CONFIG_LVGL_OBJ_CANVAS
#define USE_LV_BAR CONFIG_LVGL_OBJ_BAR
#define USE_LV_LMETER CONFIG_LVGL_OBJ_LINE_METER
#define USE_LV_GAUGE CONFIG_LVGL_OBJ_GAUGE
#define USE_LV_CHART CONFIG_LVGL_OBJ_CHART
#define USE_LV_TABLE CONFIG_LVGL_OBJ_TABLE
#if USE_LV_TABLE != 0
#define LV_TABLE_COL_MAX CONFIG_LVGL_OBJ_TABLE_COLUMN_MAX
#endif
#define USE_LV_LED CONFIG_LVGL_OBJ_LED
#define USE_LV_MBOX CONFIG_LVGL_OBJ_MSG_BOX
#define USE_LV_TA CONFIG_LVGL_OBJ_TEXT_AREA
#if USE_LV_TA != 0
#define LV_TA_CURSOR_BLINK_TIME \
CONFIG_LVGL_OBJ_TEXT_AREA_CURSOR_BLINK_TIME
#define LV_TA_PWD_SHOW_TIME \
CONFIG_LVGL_OBJ_TEXT_AREA_PWD_SHOW_TIME
#endif
#define USE_LV_SPINBOX CONFIG_LVGL_OBJ_SPINBOX
#define USE_LV_BTN CONFIG_LVGL_OBJ_BUTTON
#if USE_LV_BTN != 0
#define LV_BTN_INK_EFFECT CONFIG_LVGL_OBJ_BUTTON_INK_EFFECT
#endif
#define USE_LV_IMGBTN CONFIG_LVGL_OBJ_IMG_BUTTON
#if USE_LV_IMGBTN
#define LV_IMGBTN_TILED CONFIG_LVGL_OBJ_IMG_BUTTON_TILED
#endif
#define USE_LV_BTNM CONFIG_LVGL_OBJ_BUTTON_MATRIX
#define USE_LV_KB CONFIG_LVGL_OBJ_KEYBOARD
#define USE_LV_CB CONFIG_LVGL_OBJ_CHECK_BOX
#define USE_LV_LIST CONFIG_LVGL_OBJ_LIST
#if USE_LV_LIST != 0
#define LV_LIST_FOCUS_TIME CONFIG_LVGL_OBJ_LIST_FOCUS_TIME
#endif
#define USE_LV_DDLIST CONFIG_LVGL_OBJ_DROP_DOWN_LIST
#if USE_LV_DDLIST != 0
#define LV_DDLIST_ANIM_TIME CONFIG_LVGL_OBJ_DROP_DOWN_LIST_ANIM_TIME
#endif
#define USE_LV_ROLLER CONFIG_LVGL_OBJ_ROLLER
#if USE_LV_ROLLER != 0
#define LV_ROLLER_ANIM_TIME CONFIG_LVGL_OBJ_ROLLER_ANIM_TIME
#endif
#define USE_LV_SLIDER CONFIG_LVGL_OBJ_SLIDER
#define USE_LV_SW CONFIG_LVGL_OBJ_SWITCH
#endif /* ZEPHYR_LIB_GUI_LVGL_LV_CONF_H_ */