microvg  8.0.3
microvg
vg_configuration.h
Go to the documentation of this file.
1 /*
2  * C
3  *
4  * Copyright 2020-2026 MicroEJ Corp. All rights reserved.
5  * MicroEJ Corp. PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
6  */
7 
15 #ifndef VG_CONFIGURATION_H
16 #define VG_CONFIGURATION_H
17 
18 #if defined __cplusplus
19 extern "C" {
20 #endif
21 
22 // -----------------------------------------------------------------------------
23 // Includes
24 // -----------------------------------------------------------------------------
25 
26 // Include VEE Port User configuration file
27 // (already included in ui_configuration.h of UI Pack 14.5.0 and higher)
28 #if defined __has_include
29  #if __has_include("veeport_configuration.h")
30  #include "veeport_configuration.h"
31  #endif // __has_include("veeport_configuration.h")
32 #else
33 // Ensure 'veeport_configuration.h' exists in your project for custom configurations.
34  #include "veeport_configuration.h"
35 #endif // defined __has_include
36 
37 #include "ui_configuration.h"
38 
39 // -----------------------------------------------------------------------------
40 // MicroVG's Path Options
41 // -----------------------------------------------------------------------------
42 
47 #define VG_FEATURE_PATH_SINGLE_ARRAY (1)
48 
53 #define VG_FEATURE_PATH_DUAL_ARRAY (2)
54 
55 // -----------------------------------------------------------------------------
56 // MicroVG's LinearGradient Options
57 // -----------------------------------------------------------------------------
58 
66 #define VG_FEATURE_GRADIENT_FULL (1)
67 
75 #define VG_FEATURE_GRADIENT_FIRST_COLOR (2)
76 
77 // -----------------------------------------------------------------------------
78 // MicroVG's VectorFont Options
79 // -----------------------------------------------------------------------------
80 
88 #define VG_FEATURE_FONT_FREETYPE_VECTOR (1)
89 
97 #define VG_FEATURE_FONT_FREETYPE_BITMAP (2)
98 
99 // -----------------------------------------------------------------------------
100 // MicroVG's Features Configuration
101 // -----------------------------------------------------------------------------
102 
114 #ifndef VG_FEATURE_PATH
115 #define VG_FEATURE_PATH VG_FEATURE_PATH_SINGLE_ARRAY
116 #endif
117 
129 #ifndef VG_FEATURE_GRADIENT
130 #define VG_FEATURE_GRADIENT VG_FEATURE_GRADIENT_FULL
131 #endif
132 
143 #ifndef VG_FEATURE_FONT
144 #define VG_FEATURE_FONT VG_FEATURE_FONT_FREETYPE_VECTOR
145 #endif
146 
150 #ifndef VG_FEATURE_FREETYPE_TTF
151 #define VG_FEATURE_FREETYPE_TTF (0)
152 #endif
153 
157 #ifndef VG_FEATURE_FREETYPE_OTF
158 #define VG_FEATURE_FREETYPE_OTF (0)
159 #endif
160 
164 #ifndef VG_FEATURE_FREETYPE_COLORED_EMOJI
165 #define VG_FEATURE_FREETYPE_COLORED_EMOJI (0)
166 #endif
167 
180 #ifndef VG_FEATURE_FONT_COMPLEX_LAYOUT
181 #define VG_FEATURE_FONT_COMPLEX_LAYOUT (0)
182 #endif
183 
195 #ifndef VG_FEATURE_FONT_EXTERNAL
196 #define VG_FEATURE_FONT_EXTERNAL (0)
197 #endif
198 
205 #ifndef VG_FEATURE_FREETYPE_HEAP_SIZE
206 #define VG_FEATURE_FREETYPE_HEAP_SIZE (80 * 1024)
207 #endif
208 
217 #if VG_FEATURE_FONT_COMPLEX_LAYOUT == 1
218 #define VG_FEATURE_FONT_COMPLEX_LAYOUT_HEAP_SIZE (80 * 1024)
219 #endif
220 
221 #if defined(UI_GC_SUPPORTED_FORMATS) && (UI_GC_SUPPORTED_FORMATS > 1)
222 
230 #ifndef VG_FEATURE_BUFFERED_VECTOR_IMAGE
231 #define VG_FEATURE_BUFFERED_VECTOR_IMAGE (0)
232 #endif
233 
238 #ifndef UI_DRAWING_IDENTIFIER_BVI_FORMAT
239 #define UI_DRAWING_IDENTIFIER_BVI_FORMAT 1
240 #endif
241 
242 #elif defined(VG_FEATURE_BUFFERED_VECTOR_IMAGE) && (VG_FEATURE_BUFFERED_VECTOR_IMAGE == 1)
243 #error "The BufferedVectorImage feature requires the support of several Graphics Context formats".
244 #endif // if defined(UI_GC_SUPPORTED_FORMATS) && (UI_GC_SUPPORTED_FORMATS > 1)
245 
246 // -----------------------------------------------------------------------------
247 // MicroVG's Log Options
248 // -----------------------------------------------------------------------------
249 
255 #ifndef VG_LOG_INFO_ENABLED
256 #define VG_LOG_INFO_ENABLED (0)
257 #endif
258 
259 /*
260  * The logs go through the VEE Port Essentials logger when veeport_logger.h is in the include path,
261  * and through "printf" otherwise, or when the toolchain does not support __has_include. Each macro
262  * below can be defined by the VEE Port to route the logs elsewhere.
263  */
264 #if defined __has_include
265 #if __has_include("veeport_logger.h")
266 #define VG_LOG_VEEPORT_LOGGER_FOUND
267 #endif
268 #endif
269 
270 #ifdef VG_LOG_VEEPORT_LOGGER_FOUND
271 
272 #include "veeport_logger.h"
273 
277 #ifndef VG_LOG_MODULE_NAME
278 #define VG_LOG_MODULE_NAME "vg"
279 #endif
280 
287 #ifndef VG_LOG_LEVEL
288 #define VG_LOG_LEVEL VEEPORT_LOGGER_LEVEL_INF
289 #endif
290 
294 #ifndef VG_LOG_DECLARE_MODULE
295 #define VG_LOG_DECLARE_MODULE() VEEPORT_LOGGER_DEFINE_MODULE(VG_LOG_MODULE_NAME, VG_LOG_LEVEL)
296 #endif
297 
301 #ifndef VG_LOG_ERROR_PRINT
302 #define VG_LOG_ERROR_PRINT(...) VEEPORT_LOGGER_LOG_ERR(__VA_ARGS__)
303 #endif
304 
308 #ifndef VG_LOG_INFO_PRINT
309 #define VG_LOG_INFO_PRINT(...) VEEPORT_LOGGER_LOG_INF(__VA_ARGS__)
310 #endif
311 
312 #else // VG_LOG_VEEPORT_LOGGER_FOUND
313 
319 #ifndef VG_LOG_DECLARE_MODULE
320 #define VG_LOG_DECLARE_MODULE()
321 #endif
322 
326 #ifndef VG_LOG_ERROR_PRINT
327 // cppcheck-suppress [misra-c2012-21.6] required to use "printf"
328 #include <stdio.h>
329 #define VG_LOG_ERROR_PRINT(fmt, ...) (void)printf("[ERROR - MICROVG] : " fmt "\n", ## __VA_ARGS__)
330 #endif
331 
335 #ifndef VG_LOG_INFO_PRINT
336 // cppcheck-suppress [misra-c2012-21.6] required to use "printf"
337 #include <stdio.h>
338 #define VG_LOG_INFO_PRINT(fmt, ...) (void)printf("[INFO - MICROVG] : " fmt "\n", ## __VA_ARGS__)
339 #endif
340 
341 #endif // VG_LOG_VEEPORT_LOGGER_FOUND
342 
343 // -----------------------------------------------------------------------------
344 // EOF
345 // -----------------------------------------------------------------------------
346 
347 #ifdef __cplusplus
348 }
349 #endif
350 
351 #endif // !defined VG_CONFIGURATION_H