#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

menuconfig GRAPHICS_LVGL
	bool "Littlev Graphic Library (LVGL)"
	default n
	---help---
		Enable support for the LVGL GUI libray.

if GRAPHICS_LVGL

config LV_MEM_SIZE
	int "Heap size of the graphics library"
	default 32768
	---help---
		The size of a memory pool where the grapohisc library
		dynamically allocates data

menu "Graphics settings"

config LV_HOR_RES
	int "Horizontal resolution."
	default 320
	---help---
		Number of pixels in horizontally.

config LV_VER_RES
	int "Vertical resolution."
	default 240
	---help---
		Number of pixels vertically. Double it if anti aliasing is used

config LV_DPI
	int "DPI (px/inch)"
	default 100
	---help---
		Number of pixels in 1 inch

config LV_VDB_SIZE
	int "Size of the internal graphics buffer (VDB) (0: no buffering)"
	default 10240

if LV_VDB_SIZE != 0

config LV_VDB_ADR
	int "Internal buffer's (VDB) memory address. 0: allocate automatically"
	default 0
	---help---
		You can place the graphics buffer int a specific memory location.
		E.g. into a mapped external RAM
		Zero to allocate automatically into the RAM
		Note: it's slower to access the data from a external memory

config LV_VDB_DOUBLE
	bool "Use 2 internal buffers. One to render and an other to flush data to frame buffer in background"
	default n
	---help---
		Enable to use one buffer for rendering an other to flush the
		ready content to the frame buffer.
		The flushing should be done by a hardware modul (e.g. DMA) to
		make rendering and flushing parallel

if LV_VDB_DOUBLE

config LV_VDB2_ADR
	int "Second internal buffer's (VDB) memory address. 0: allocate automatically"
	default 0
	---help---
		Similarly to LV_VDB_ADR. the second VDB address can be specified as well.

config LV_VDB_TRUE_DOUBLE_BUFFERED
	bool "Use true double buffering"
	default 0

endif   # LV_VDB_DOUBLE

config LV_ANTIALIAS
	bool "Anti aliasing of the screen"
	default n

endif # LV_VDB_SIZE != 0

config LV_REFR_PERIOD
	int "Refresh period in milliseconds"
	default 50
	---help---
		The graphics library will check for invalid areas an refresh
		them with this period time

config LV_INV_FIFO_SIZE
	int "Average number of object on the screen"
	default 32
	---help---
		If too much area is invalidated (greater then this number) then
		the whole screen will be refreshed

endmenu

menu "Input device settings"

config LV_INDEV_READ_PERIOD
	int "Input device read period in milliseconds"
	default 50

config LV_INDEV_POINT_MARKER
	int "Mark the pressed points on the screen"
	default 0

config LV_INDEV_DRAG_LIMIT
	int "Drag limit in pixels"
	default 10

config LV_INDEV_DRAG_THROW
	int "Slow down ration when throwing on object by drag [%]"
	default 20

config LV_INDEV_LONG_PRESS_TIME
	int "Long press time [ms]"
	default 400

config LV_INDEV_LONG_PRESS_REP_TIME
	int "Repeated trigger period in long press [ms]"
	default 100

endmenu

menu "Color settings"

config LV_COLOR_DEPTH
	int "Color depth (8/16/24)"
	default 16

config LV_COLOR_16_SWAP
	bool "Swap the 2 bytes of RGB565 color"
	depends on LV_COLOR_DEPTH = 16
	default 0

config LV_COLOR_SCREEN_TRANSP
	bool "Enable screen transparency."
	default 0

config LV_COLOR_TRANSP
	hex "Chroma key color (pixels with this color will be transparent on images)"
	default 0x00ff00

endmenu

menu "Text (font) settings"

config LV_TXT_UTF8
	bool "Unicode support"
	default n

config LV_TXT_BREAK_CHARS
	string "Characters where the words/line cab be wrapped"
	default " ,.;:-_"

endmenu

menu "Feature usage"
config USE_LV_ANIMATION
	bool "Enable animations"
	default y

config USE_LV_SHADOW
	bool "Enable shadows"
	default y

config USE_LV_GROUP
	bool "Enable object groups (for keyboard)"
	default y

config USE_LV_GPU
	bool "Enable GPU (hardware acceleration) API"
	default y

config USE_LV_REAL_DRAW
	bool "Enable function which draws directly to the frame buffer instead of VDB"
	default y

config USE_LV_FILESYSTEM
	bool "Enable filesystem (required for images, lv_img)"
	default y

config USE_LV_MULTI_LANG
	int "Number of languages for labels to store (0 to disable)"
	default 0

endmenu

menu "Log usage"

config USE_LV_LOG
	bool "Enable/disable the log module"
	default n

choice 
	prompt "Log level"
	depends on USE_LV_LOG
	default	LV_LOG_LEVEL_WARN

config LV_LOG_LEVEL_TRACE
	bool "Trace"

config LV_LOG_LEVEL_INFO
	bool "Info"

config LV_LOG_LEVEL_WARN
	bool "Warn"

config LV_LOG_LEVEL_ERROR
	bool "Error"

endchoice

config LV_LOG_PRINTF
	bool "Use printf() for logging"
	depends on USE_LV_LOG
	default y

endmenu

menu "Theme usage"

config LV_THEME_LIVE_UPDATE
	bool "Allow theme switching at run time. Uses 8..10 kB of RAM"
	default n

config USE_LV_THEME_TEMPL
	bool "Use Template theme: just for test"
	default n

config USE_LV_THEME_DEFAULT
	bool "Use Default theme: uses the built-in style"
	default n

config USE_LV_THEME_ALIEN
	bool "Use Alien theme: dark futuristic theme"
	default n

config USE_LV_THEME_NIGHT
	bool "Use Night theme: dark elegant theme"
	default n

config USE_LV_THEME_MONO
	bool "Use Mono theme: mono color theme"
	default n
	
config USE_LV_THEME_MATERIAL
	bool "Use Material theme: material theme with bold colors"
	default n
	
config USE_LV_THEME_ZEN
	bool "Use Zen theme: light, peaceful theme"
	default n

config USE_LV_THEME_NEMO
	bool "Use Nemo theme: Water-like theme based on the movie 'Finding Nemo'"
	default n

endmenu

menu "Font usage"

# 10 PX FONTS

config USE_LV_FONT_DEJAVU_10
	int "Dejavu 10 px"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

config USE_LV_FONT_DEJAVU_10_LATIN_SUP
	int "Dejavu 10 px - latin supplement"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

config USE_LV_FONT_DEJAVU_10_CYRILLIC
	int "Dejavu 10 px - cyrillic"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

config USE_LV_FONT_SYMBOL_10
	int "Symbol 10 px"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

#20 PX FONTS

config USE_LV_FONT_DEJAVU_20
	int "Dejavu 20 px"
	default 4
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

config USE_LV_FONT_DEJAVU_20_LATIN_SUP
	int "Dejavu 20 px - latin supplement"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

config USE_LV_FONT_DEJAVU_20_CYRILLIC
	int "Dejavu 20 px - cyrillic"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

config USE_LV_FONT_SYMBOL_20
	int "Symbol 20 px"
	default 4
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

#30 PX FONTS

config USE_LV_FONT_DEJAVU_30
	int "Dejavu 30 px"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

config USE_LV_FONT_DEJAVU_30_LATIN_SUP
	int "Dejavu 30 px - latin supplement"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

config USE_LV_FONT_DEJAVU_30_CYRILLIC
	int "Dejavu 30 px - cyrillic"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

config USE_LV_FONT_SYMBOL_30
	int "Symbol 30 px"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

#40 PX FONTS

config USE_LV_FONT_DEJAVU_40
	int "Dejavu 40 px"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

config USE_LV_FONT_DEJAVU_40_LATIN_SUP
	int "Dejavu 40 px - latin supplement"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

config USE_LV_FONT_DEJAVU_40_CYRILLIC
	int "Dejavu 40 px - cyrillic"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

config USE_LV_FONT_SYMBOL_40
	int "Symbol 40 px"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

config USE_LV_FONT_MONOSPACE_8
	int "Monospace 8 px"
	default 0
	---help---
		0: disable
		1: 1 bit-per-pixel
		2: 2 bit-per-pixel
		4: 4 bit-per-pixel
		8: 8 bit-per-pixel

choice
	prompt "Default Font"
	default LV_FONT_DEFAULT_DEJAVU_20

config LV_FONT_DEFAULT_DEJAVU_10
	bool "Dejavu 10 px"
	depends on USE_LV_FONT_DEJAVU_10 != 0

config LV_FONT_DEFAULT_DEJAVU_20
	bool "Dejavu 20 px"
	depends on USE_LV_FONT_DEJAVU_20 != 0

config LV_FONT_DEFAULT_DEJAVU_30
	bool "Dejavu 30 px"
	depends on USE_LV_FONT_DEJAVU_30 != 0

config LV_FONT_DEFAULT_DEJAVU_40
	bool "Dejavu 40 px"
	depends on USE_LV_FONT_DEJAVU_40 != 0

config LV_FONT_DEFAULT_MONOSPACE_8
	bool "Monospace 8 px"
	depends on USE_LV_FONT_MONOSPACE_8 != 0

endchoice

endmenu

menu "Base object settings"

config LV_OBJ_FREE_PTR
	bool "Free pointer enable/disable"
	default y

config LV_OBJ_REALIGN
	bool "Enable `lv_obj_realaign()` based on `lv_obj_align()` parameters"
	default y

endmenu

menu "Object type usage settings"

config USE_LV_LABEL
	bool "Label usage"
	default y

config LV_LABEL_SCROLL_SPEED
	int "Hor, or ver. scroll speed [px/sec] in 'LV_LABEL_LONG_SCROLL/ROLL' mode"
	depends on USE_LV_LABEL
	default 25

config USE_LV_IMG
	bool "Image usage"
	default y

config LV_IMG_CF_INDEXED
	bool "Enable indexed (palette) images"
	depends on USE_LV_IMG
	default y

config LV_IMG_CF_ALPHA
	bool "Enable alpha indexed images"
	depends on USE_LV_IMG
	default y

config USE_LV_LINE
	bool "Line usage"
	default y

config USE_LV_ARC
	bool "Arc usage"
	default y

config USE_LV_CONT
	bool "Container usage"
	default y

config USE_LV_PAGE
	depends on USE_LV_CONT
	bool "Page usage"
	default y

config USE_LV_WIN
	depends on USE_LV_PAGE && USE_LV_LABEL && USE_LV_IMG && USE_LV_BTN
	bool "Window usage"
	default y

config USE_LV_TABVIEW
	depends on USE_LV_PAGE && USE_LV_BTNM
	bool "Tabview usage"
	default y

config LV_TABVIEW_ANIM_TIME
	int "Time of slide animation [ms] (0: no animation)"
	depends on USE_LV_TABVIEW
	default 300

config USE_LV_TILEVIEW
	depends on USE_LV_CONT && USE_LV_PAGE
	bool "Tileview usage"
	default y

config LV_TILEVIEW_ANIM_TIME
	int "Time of slide animation [ms] (0: no animation)"
	depends on USE_LV_TILEVIEW
	default 300

config USE_LV_BAR
	bool "Bar usage"
	default y

config USE_LV_LMETER
	depends on USE_LV_BAR
	bool "Line meter usage"
	default y

config USE_LV_GAUGE
	depends on USE_LV_BAR && USE_LV_LMETER
	bool "Gauge usage"
	default y

config USE_LV_CHART
	bool "Chart usage"
	default y

config USE_LV_TABLE
	bool "Table usage"
	depends on USE_LV_LABEL
	default y

config LV_TABLE_COL_MAX
	int "Maximum number of table columns"
	depends on USE_LV_TABLE
	default 12

config USE_LV_LED
	bool "LED usage"
	default y

config USE_LV_MBOX
	bool "Messagebox usage"
	depends on USE_LV_BTNM && USE_LV_LABEL
	default y

config USE_LV_TA
	bool "Text area usage"
	depends on USE_LV_LABEL && USE_LV_PAGE
	default y

config USE_LV_SPINBOX
	bool "Spinbox usage"
	depends on USE_LV_TA
	default y

config USE_LV_CALENDAR
	bool "Calendar usage"
	default y

config USE_LV_PRELOAD
	bool "Preload usage"
	depends on USE_LV_ARC
	default y

config LV_PRELOAD_DEF_ARC_LENGTH
	int "Degrees of arc length (default)"
	range 0 360
	depends on USE_LV_PRELOAD
	default 60

config LV_PRELOAD_DEF_SPIN_TIME
	int "Time (ms) preload spins (default)"
	depends on USE_LV_PRELOAD
	default 1000

choice
	prompt "Default preload animation"
	depends on USE_LV_PRELOAD
	default LV_PRELOAD_DEF_ANIM_SPINNING_ARC

config LV_PRELOAD_DEF_ANIM_SPINNING_ARC
	bool "Spinning Arc"

config LV_PRELOAD_DEF_ANIM_FILLSPIN_ARC
	bool "Fillspin Arc"	

endchoice

config USE_LV_CANVAS
	bool "Canvas usage"
	depends on USE_LV_IMG
	default n

config USE_LV_BTN
	bool "Button usage"
	depends on USE_LV_CONT
	default y

config LV_BTN_INK_EFFECT
	bool "Enable button-state animations"
	depends on USE_LV_BTN && USE_LV_ANIMATION
	default y

config USE_LV_IMGBTN
	depends on USE_LV_BTN
	bool "Image button usage"
	default y

config LV_IMGBTN_TILED
	bool "Tiled image button"
	depends on USE_LV_IMGBTN
	---help---
	The imgbtn requires left, mid and right parts and the width can be set freely

config USE_LV_BTNM
	bool "Button matrix usage"
	default y

config USE_LV_KB
	bool "Keyboard"
	depends on USE_LV_BTNM
	default y

config USE_LV_CB
	bool "Chekbox usage"
	depends on USE_LV_BTN
	default y

config USE_LV_SW
	bool "Switch usage"
	depends on USE_LV_BTN
	default y

config USE_LV_LIST
	bool "List usage"
	depends on USE_LV_BTN && USE_LV_PAGE
	default y

config USE_LV_DDLIST
	bool "Drop down list usage"
	depends on USE_LV_PAGE && USE_LV_LABEL
	default y

config USE_LV_ROLLER
	bool "Roller usage"
	depends on USE_LV_DDLIST
	default y

config USE_LV_SLIDER
	bool "Slider usage"
	depends on USE_LV_BAR
	default y

endmenu

endif # GRAPHICS_LVGL
