1 /** * @file lv_conf_kconfig.h * Configs that need special handling when LVGL is used with Kconfig */
2 
3 #ifndef LV_CONF_KCONFIG_H
4 #define LV_CONF_KCONFIG_H
5 
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 
10 #ifdef LV_CONF_KCONFIG_EXTERNAL_INCLUDE
11 #  include LV_CONF_KCONFIG_EXTERNAL_INCLUDE
12 #else
13 
14 #  ifdef ESP_PLATFORM
15 #    include "sdkconfig.h"
16 #    include "esp_attr.h"
17 #  endif
18 
19 #  ifdef __NuttX__
20 #    include <nuttx/config.h>
21 /*
22  * Make sure version number in Kconfig file is correctly set.
23  * Mismatch can happen when user manually copy lvgl/Kconfig file to their project, like what NuttX does.
24  */
25 #    include "../lv_version.h"
26 
27 #    if CONFIG_LVGL_VERSION_MAJOR != LVGL_VERSION_MAJOR || CONFIG_LVGL_VERSION_MINOR != LVGL_VERSION_MINOR \
28         || CONFIG_LVGL_VERSION_PATCH != LVGL_VERSION_PATCH
29 #        warning "Version mismatch between Kconfig and lvgl/lv_version.h"
30 #    endif
31 #  elif defined(__RTTHREAD__)
32 #    define LV_CONF_INCLUDE_SIMPLE
33 #    include <lv_rt_thread_conf.h>
34 #  endif
35 
36 #endif /*LV_CONF_KCONFIG_EXTERNAL_INCLUDE*/
37 
38 /*******************
39  * LV_USE_STDLIB_MALLOC
40  *******************/
41 
42 #ifdef CONFIG_LV_USE_BUILTIN_MALLOC
43 #  define CONFIG_LV_USE_STDLIB_MALLOC LV_STDLIB_BUILTIN
44 #elif defined(CONFIG_LV_USE_CLIB_MALLOC)
45 #  define CONFIG_LV_USE_STDLIB_MALLOC LV_STDLIB_CLIB
46 #elif defined(CONFIG_LV_USE_MICROPYTHON_MALLOC)
47 #  define CONFIG_LV_USE_STDLIB_MALLOC LV_STDLIB_MICROPYTHON
48 #elif defined(CONFIG_LV_USE_RTTHREAD_MALLOC)
49 #  define CONFIG_LV_USE_STDLIB_MALLOC LV_STDLIB_RTTHREAD
50 #elif defined (CONFIG_LV_USE_CUSTOM_MALLOC)
51 #  define CONFIG_LV_USE_STDLIB_MALLOC LV_STDLIB_CUSTOM
52 #endif
53 
54 /*******************
55  * LV_USE_STDLIB_STRING
56  *******************/
57 
58 #ifdef CONFIG_LV_USE_BUILTIN_STRING
59 #  define CONFIG_LV_USE_STDLIB_STRING LV_STDLIB_BUILTIN
60 #elif defined(CONFIG_LV_USE_CLIB_STRING)
61 #  define CONFIG_LV_USE_STDLIB_STRING LV_STDLIB_CLIB
62 #elif defined(CONFIG_LV_USE_MICROPYTHON_STRING)
63 #  define CONFIG_LV_USE_STDLIB_STRING LV_STDLIB_MICROPYTHON
64 #elif defined(CONFIG_LV_USE_RTTHREAD_STRING)
65 #  define CONFIG_LV_USE_STDLIB_STRING LV_STDLIB_RTTHREAD
66 #elif defined (CONFIG_LV_USE_CUSTOM_STRING)
67 #  define CONFIG_LV_USE_STDLIB_STRING LV_STDLIB_CUSTOM
68 #endif
69 
70 /*******************
71  * LV_USE_STDLIB_SPRINTF
72  *******************/
73 
74 #ifdef CONFIG_LV_USE_BUILTIN_SPRINTF
75 #  define CONFIG_LV_USE_STDLIB_SPRINTF LV_STDLIB_BUILTIN
76 #elif defined(CONFIG_LV_USE_CLIB_SPRINTF)
77 #  define CONFIG_LV_USE_STDLIB_SPRINTF LV_STDLIB_CLIB
78 #elif defined(CONFIG_LV_USE_MICROPYTHON_SPRINTF)
79 #  define CONFIG_LV_USE_STDLIB_SPRINTF LV_STDLIB_MICROPYTHON
80 #elif defined(CONFIG_LV_USE_RTTHREAD_SPRINTF)
81 #  define CONFIG_LV_USE_STDLIB_SPRINTF LV_STDLIB_RTTHREAD
82 #elif defined (CONFIG_LV_USE_CUSTOM_SPRINTF)
83 #  define CONFIG_LV_USE_STDLIB_SPRINTF LV_STDLIB_CUSTOM
84 #endif
85 
86 /*******************
87  * LV_MEM_SIZE
88  *******************/
89 
90 #ifdef CONFIG_LV_MEM_SIZE_KILOBYTES
91 #  if(CONFIG_LV_MEM_SIZE_KILOBYTES < 2)
92 #    error "LV_MEM_SIZE >= 2kB is required"
93 #  endif
94 
95 #  define CONFIG_LV_MEM_SIZE (CONFIG_LV_MEM_SIZE_KILOBYTES * 1024U)
96 #endif
97 
98 #ifdef CONFIG_LV_MEM_POOL_EXPAND_SIZE_KILOBYTES
99 #  define CONFIG_LV_MEM_POOL_EXPAND_SIZE (CONFIG_LV_MEM_POOL_EXPAND_SIZE_KILOBYTES * 1024U)
100 #endif
101 
102 /*------------------
103  * MONITOR POSITION
104  *-----------------*/
105 
106 #ifdef CONFIG_LV_PERF_MONITOR_ALIGN_TOP_LEFT
107 #  define CONFIG_LV_USE_PERF_MONITOR_POS LV_ALIGN_TOP_LEFT
108 #elif defined(CONFIG_LV_USE_PERF_MONITOR_ALIGN_TOP_MID)
109 #  define CONFIG_LV_USE_PERF_MONITOR_POS LV_ALIGN_TOP_MID
110 #elif defined(CONFIG_LV_PERF_MONITOR_ALIGN_TOP_RIGHT)
111 #  define CONFIG_LV_USE_PERF_MONITOR_POS LV_ALIGN_TOP_RIGHT
112 #elif defined(CONFIG_LV_PERF_MONITOR_ALIGN_BOTTOM_LEFT)
113 #  define CONFIG_LV_USE_PERF_MONITOR_POS LV_ALIGN_BOTTOM_LEFT
114 #elif defined(CONFIG_LV_PERF_MONITOR_ALIGN_BOTTOM_MID)
115 #  define CONFIG_LV_USE_PERF_MONITOR_POS LV_ALIGN_BOTTOM_MID
116 #elif defined(CONFIG_LV_PERF_MONITOR_ALIGN_BOTTOM_RIGHT)
117 #  define CONFIG_LV_USE_PERF_MONITOR_POS LV_ALIGN_BOTTOM_RIGHT
118 #elif defined(CONFIG_LV_PERF_MONITOR_ALIGN_LEFT_MID)
119 #  define CONFIG_LV_USE_PERF_MONITOR_POS LV_ALIGN_LEFT_MID
120 #elif defined(CONFIG_LV_PERF_MONITOR_ALIGN_RIGHT_MID)
121 #  define CONFIG_LV_USE_PERF_MONITOR_POS LV_ALIGN_RIGHT_MID
122 #elif defined(CONFIG_LV_PERF_MONITOR_ALIGN_CENTER)
123 #  define CONFIG_LV_USE_PERF_MONITOR_POS LV_ALIGN_CENTER
124 #endif
125 
126 #ifdef CONFIG_LV_MEM_MONITOR_ALIGN_TOP_LEFT
127 #  define CONFIG_LV_USE_MEM_MONITOR_POS LV_ALIGN_TOP_LEFT
128 #elif defined(CONFIG_LV_USE_MEM_MONITOR_ALIGN_TOP_MID)
129 #  define CONFIG_LV_USE_MEM_MONITOR_POS LV_ALIGN_TOP_MID
130 #elif defined(CONFIG_LV_MEM_MONITOR_ALIGN_TOP_RIGHT)
131 #  define CONFIG_LV_USE_MEM_MONITOR_POS LV_ALIGN_TOP_RIGHT
132 #elif defined(CONFIG_LV_MEM_MONITOR_ALIGN_BOTTOM_LEFT)
133 #  define CONFIG_LV_USE_MEM_MONITOR_POS LV_ALIGN_BOTTOM_LEFT
134 #elif defined(CONFIG_LV_MEM_MONITOR_ALIGN_BOTTOM_MID)
135 #  define CONFIG_LV_USE_MEM_MONITOR_POS LV_ALIGN_BOTTOM_MID
136 #elif defined(CONFIG_LV_MEM_MONITOR_ALIGN_BOTTOM_RIGHT)
137 #  define CONFIG_LV_USE_MEM_MONITOR_POS LV_ALIGN_BOTTOM_RIGHT
138 #elif defined(CONFIG_LV_MEM_MONITOR_ALIGN_LEFT_MID)
139 #  define CONFIG_LV_USE_MEM_MONITOR_POS LV_ALIGN_LEFT_MID
140 #elif defined(CONFIG_LV_MEM_MONITOR_ALIGN_RIGHT_MID)
141 #  define CONFIG_LV_USE_MEM_MONITOR_POS LV_ALIGN_RIGHT_MID
142 #elif defined(CONFIG_LV_MEM_MONITOR_ALIGN_CENTER)
143 #  define CONFIG_LV_USE_MEM_MONITOR_POS LV_ALIGN_CENTER
144 #endif
145 
146 /********************
147  * FONT SELECTION
148  *******************/
149 
150 /**
151  * NOTE: In Kconfig instead of `LV_DEFAULT_FONT`
152  *       `CONFIG_LV_FONT_DEFAULT_<font_name>` is defined
153  *       hence the large selection with if-s
154  */
155 
156 /*------------------
157  * DEFAULT FONT
158  *-----------------*/
159 #ifdef CONFIG_LV_FONT_DEFAULT_MONTSERRAT_8
160 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_8
161 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_10)
162 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_10
163 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_12)
164 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_12
165 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_14)
166 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_14
167 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_16)
168 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_16
169 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_18)
170 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_18
171 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_20)
172 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_20
173 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_22)
174 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_22
175 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_24)
176 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_24
177 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_26)
178 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_26
179 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_28)
180 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_28
181 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_30)
182 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_30
183 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_32)
184 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_32
185 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_34)
186 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_34
187 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_36)
188 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_36
189 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_38)
190 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_38
191 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_40)
192 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_40
193 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_42)
194 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_42
195 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_44)
196 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_44
197 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_46)
198 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_46
199 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_48)
200 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_48
201 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_12_SUBPX)
202 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_12_subpx
203 #elif defined(CONFIG_LV_FONT_DEFAULT_MONTSERRAT_28_COMPRESSED)
204 #  define CONFIG_LV_FONT_DEFAULT &lv_font_montserrat_28_compressed
205 #elif defined(CONFIG_LV_FONT_DEFAULT_DEJAVU_16_PERSIAN_HEBREW)
206 #  define CONFIG_LV_FONT_DEFAULT &lv_font_dejavu_16_persian_hebrew
207 #elif defined(CONFIG_LV_FONT_DEFAULT_SIMSUN_14_CJK)
208 #  define CONFIG_LV_FONT_DEFAULT &lv_font_simsun_14_cjk
209 #elif defined(CONFIG_LV_FONT_DEFAULT_SIMSUN_16_CJK)
210 #  define CONFIG_LV_FONT_DEFAULT &lv_font_simsun_16_cjk
211 #elif defined(CONFIG_LV_FONT_DEFAULT_UNSCII_8)
212 #  define CONFIG_LV_FONT_DEFAULT &lv_font_unscii_8
213 #elif defined(CONFIG_LV_FONT_DEFAULT_UNSCII_16)
214 #  define CONFIG_LV_FONT_DEFAULT &lv_font_unscii_16
215 #endif
216 
217 /*------------------
218  * TEXT ENCODING
219  *-----------------*/
220 #ifdef CONFIG_LV_TXT_ENC_UTF8
221 #  define CONFIG_LV_TXT_ENC LV_TXT_ENC_UTF8
222 #elif defined(CONFIG_LV_TXT_ENC_ASCII)
223 #  define CONFIG_LV_TXT_ENC LV_TXT_ENC_ASCII
224 #endif
225 
226 /*------------------
227  * BIDI DIRECTION
228  *-----------------*/
229 
230 #ifdef CONFIG_LV_BASE_DIR_LTR
231 #  define CONFIG_LV_BIDI_BASE_DIR_DEF LV_BASE_DIR_LTR
232 #elif defined(CONFIG_LV_BASE_DIR_RTL)
233 #  define CONFIG_LV_BIDI_BASE_DIR_DEF LV_BASE_DIR_RTL
234 #elif defined(CONFIG_LV_BASE_DIR_AUTO)
235 #  define CONFIG_LV_BIDI_BASE_DIR_DEF LV_BASE_DIR_AUTO
236 #endif
237 
238 /*------------------
239  * SDL
240  *-----------------*/
241 
242 #ifdef CONFIG_LV_SDL_RENDER_MODE_PARTIAL
243 #  define CONFIG_LV_SDL_RENDER_MODE LV_DISPLAY_RENDER_MODE_PARTIAL
244 #elif defined(CONFIG_LV_SDL_RENDER_MODE_DIRECT)
245 #  define CONFIG_LV_SDL_RENDER_MODE LV_DISPLAY_RENDER_MODE_DIRECT
246 #elif defined(CONFIG_LV_SDL_RENDER_MODE_FULL)
247 #  define CONFIG_LV_SDL_RENDER_MODE LV_DISPLAY_RENDER_MODE_FULL
248 #endif
249 
250 /*------------------
251  * LINUX FBDEV
252  *-----------------*/
253 
254 #ifdef CONFIG_LV_LINUX_FBDEV_RENDER_MODE_PARTIAL
255 #  define CONFIG_LV_LINUX_FBDEV_RENDER_MODE LV_DISPLAY_RENDER_MODE_PARTIAL
256 #elif defined(CONFIG_LV_LINUX_FBDEV_RENDER_MODE_DIRECT)
257 #  define CONFIG_LV_LINUX_FBDEV_RENDER_MODE LV_DISPLAY_RENDER_MODE_DIRECT
258 #elif defined(CONFIG_LV_LINUX_FBDEV_RENDER_MODE_FULL)
259 #  define CONFIG_LV_LINUX_FBDEV_RENDER_MODE LV_DISPLAY_RENDER_MODE_FULL
260 #endif
261 
262 #ifdef __cplusplus
263 } /*extern "C"*/
264 #endif
265 
266 #endif /*LV_CONF_KCONFIG_H*/
267