microvg  3.0.1
microvg
vg_drawing.c
1 /*
2  * C
3  *
4  * Copyright 2023 MicroEJ Corp. All rights reserved.
5  * Use of this source code is governed by a BSD-style license that can be found with this software.
6  */
7 
8 /*
9  * @file
10  * @brief Redirection of all MicroVG library drawing functions. This file is required
11  * (must be compiled in the C project) but should not be modified (except when the VEE
12  * port uses more than 3 destination formats, see below).
13  *
14  * This file follows strictly the same concept as ui_drawing.c but for MicroVG
15  * library.
16  *
17  * @author MicroEJ Developer Team
18  * @version 3.0.1
19  * @see ui_drawing.c
20  */
21 
22 // -----------------------------------------------------------------------------
23 // Includes
24 // -----------------------------------------------------------------------------
25 
26 #include "vg_drawing.h"
27 #include "vg_drawing_stub.h"
28 #include "bsp_util.h"
29 
30 // --------------------------------------------------------------------------------
31 // Defines
32 // --------------------------------------------------------------------------------
33 
34 #if !defined(LLUI_GC_SUPPORTED_FORMATS) || (LLUI_GC_SUPPORTED_FORMATS <= 1)
35 
36 /*
37  * The fonction VG_DRAWING_DEFAULT_xxx() are directly called by LLVG_PAINTER_impl.c
38  * Another file can override each weak function independently to use a GPU.
39  */
40 
41 #define VG_DRAWING_DEFAULT_drawPath VG_DRAWING_drawPath
42 #define VG_DRAWING_DEFAULT_drawGradient VG_DRAWING_drawGradient
43 #define VG_DRAWING_DEFAULT_drawString VG_DRAWING_drawString
44 #define VG_DRAWING_DEFAULT_drawStringGradient VG_DRAWING_drawStringGradient
45 #define VG_DRAWING_DEFAULT_drawStringOnCircle VG_DRAWING_drawStringOnCircle
46 #define VG_DRAWING_DEFAULT_drawStringOnCircleGradient VG_DRAWING_drawStringOnCircleGradient
47 #define VG_DRAWING_DEFAULT_drawImage VG_DRAWING_drawImage
48 
49 #else // !defined(LLUI_GC_SUPPORTED_FORMATS) || (LLUI_GC_SUPPORTED_FORMATS <= 1)
50 
51 /*
52  * The fonctions VG_DRAWING_DEFAULT_xxx() are indirectly called through some tables.
53  * The functions have got the identifier "0" as suffix. Another file can override
54  * each weak function independently to use a GPU.
55  */
56 
57 #define VG_DRAWING_DEFAULT_drawPath VG_DRAWING_drawPath_0
58 #define VG_DRAWING_DEFAULT_drawGradient VG_DRAWING_drawGradient_0
59 #define VG_DRAWING_DEFAULT_drawString VG_DRAWING_drawString_0
60 #define VG_DRAWING_DEFAULT_drawStringGradient VG_DRAWING_drawStringGradient_0
61 #define VG_DRAWING_DEFAULT_drawStringOnCircle VG_DRAWING_drawStringOnCircle_0
62 #define VG_DRAWING_DEFAULT_drawStringOnCircleGradient VG_DRAWING_drawStringOnCircleGradient_0
63 #define VG_DRAWING_DEFAULT_drawImage VG_DRAWING_drawImage_0
64 
65 #endif // !defined(LLUI_GC_SUPPORTED_FORMATS) || (LLUI_GC_SUPPORTED_FORMATS <= 1)
66 
67 // --------------------------------------------------------------------------------
68 // Extern functions
69 // --------------------------------------------------------------------------------
70 
71 #if defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
72 
73 /*
74  * @brief Set of drawing functions according to the index of the destination format in
75  * the drawing tables ("0", "1" or "2").
76  *
77  * These functions must be declared in other H files.
78  */
79 
80 #if (LLUI_GC_SUPPORTED_FORMATS > 3)
81 #error "Increase the number of following functions and update the next tables"
82 #endif
83 
84 extern DRAWING_Status VG_DRAWING_drawPath_0(MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint blend, jint color);
85 extern DRAWING_Status VG_DRAWING_drawGradient_0(MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint alpha, jint blend, jint* gradient, jfloat* gradientMatrix);
86 extern DRAWING_Status VG_DRAWING_drawString_0(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing);
87 extern DRAWING_Status VG_DRAWING_drawStringGradient_0(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jint *gradientData, jfloat *gradientMatrix);
88 extern DRAWING_Status VG_DRAWING_drawStringOnCircle_0(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction);
89 extern DRAWING_Status VG_DRAWING_drawStringOnCircleGradient_0(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction, jint *gradientData, jfloat *gradientMatrix);
90 extern DRAWING_Status VG_DRAWING_drawImage_0(MICROUI_GraphicsContext* gc, void* image, jfloat *matrix, jint alpha, jlong elapsed, const float color_matrix[], jint* errno);
91 
92 extern DRAWING_Status VG_DRAWING_drawPath_1(MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint blend, jint color);
93 extern DRAWING_Status VG_DRAWING_drawGradient_1(MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint alpha, jint blend, jint* gradient, jfloat* gradientMatrix);
94 extern DRAWING_Status VG_DRAWING_drawString_1(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing);
95 extern DRAWING_Status VG_DRAWING_drawStringGradient_1(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jint *gradientData, jfloat *gradientMatrix);
96 extern DRAWING_Status VG_DRAWING_drawStringOnCircle_1(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction);
97 extern DRAWING_Status VG_DRAWING_drawStringOnCircleGradient_1(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction, jint *gradientData, jfloat *gradientMatrix);
98 extern DRAWING_Status VG_DRAWING_drawImage_1(MICROUI_GraphicsContext* gc, void* image, jfloat *matrix, jint alpha, jlong elapsed, const float color_matrix[], jint* errno);
99 
100 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
101 extern DRAWING_Status VG_DRAWING_drawPath_2(MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint blend, jint color);
102 extern DRAWING_Status VG_DRAWING_drawGradient_2(MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint alpha, jint blend, jint* gradient, jfloat* gradientMatrix);
103 extern DRAWING_Status VG_DRAWING_drawString_2(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing);
104 extern DRAWING_Status VG_DRAWING_drawStringGradient_2(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jint *gradientData, jfloat *gradientMatrix);
105 extern DRAWING_Status VG_DRAWING_drawStringOnCircle_2(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction);
106 extern DRAWING_Status VG_DRAWING_drawStringOnCircleGradient_2(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction, jint *gradientData, jfloat *gradientMatrix);
107 extern DRAWING_Status VG_DRAWING_drawImage_2(MICROUI_GraphicsContext* gc, void* image, jfloat *matrix, jint alpha, jlong elapsed, const float color_matrix[], jint* errno);
108 #endif // (LLUI_GC_SUPPORTED_FORMATS > 2)
109 
110 #endif // defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
111 
112 // --------------------------------------------------------------------------------
113 // Typedef of drawing functions
114 // --------------------------------------------------------------------------------
115 
116 #if defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
117 
118 /*
119  * @brief Typedef used by next tables. See the functions comments in vg_drawing.h
120  */
121 
122 typedef DRAWING_Status (* VG_DRAWING_drawPath_t) (MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint blend, jint color);
123 typedef DRAWING_Status (* VG_DRAWING_drawGradient_t) (MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint alpha, jint blend, jint* gradient, jfloat* gradientMatrix);
124 typedef DRAWING_Status (* VG_DRAWING_drawString_t) (MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing);
125 typedef DRAWING_Status (* VG_DRAWING_drawStringGradient_t) (MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jint *gradientData, jfloat *gradientMatrix);
126 typedef DRAWING_Status (* VG_DRAWING_drawStringOnCircle_t) (MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction);
127 typedef DRAWING_Status (* VG_DRAWING_drawStringOnCircleGradient_t) (MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction, jint *gradientData, jfloat *gradientMatrix);
128 typedef DRAWING_Status (* VG_DRAWING_drawImage_t) (MICROUI_GraphicsContext* gc, void* image, jfloat *matrix, jint alpha, jlong elapsed, const float color_matrix[], jint* errno);
129 
130 #endif // #if defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
131 
132 
133 // --------------------------------------------------------------------------------
134 // Tables according to the destination format.
135 // --------------------------------------------------------------------------------
136 
137 #if defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
138 
139 static const VG_DRAWING_drawPath_t VG_DRAWER_drawPath[] = {
140  &VG_DRAWING_drawPath_0,
141  &VG_DRAWING_drawPath_1,
142 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
143  &VG_DRAWING_drawPath_2,
144 #endif
145 };
146 
147 static const VG_DRAWING_drawGradient_t VG_DRAWER_drawGradient[] = {
148  &VG_DRAWING_drawGradient_0,
149  &VG_DRAWING_drawGradient_1,
150 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
151  &VG_DRAWING_drawGradient_2,
152 #endif
153 };
154 
155 static const VG_DRAWING_drawString_t VG_DRAWER_drawString[] = {
156  &VG_DRAWING_drawString_0,
157  &VG_DRAWING_drawString_1,
158 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
159  &VG_DRAWING_drawString_2,
160 #endif
161 };
162 
163 static const VG_DRAWING_drawStringGradient_t VG_DRAWER_drawStringGradient[] = {
164  &VG_DRAWING_drawStringGradient_0,
165  &VG_DRAWING_drawStringGradient_1,
166 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
167  &VG_DRAWING_drawStringGradient_2,
168 #endif
169 };
170 
171 static const VG_DRAWING_drawStringOnCircle_t VG_DRAWER_drawStringOnCircle[] = {
172  &VG_DRAWING_drawStringOnCircle_0,
173  &VG_DRAWING_drawStringOnCircle_1,
174 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
175  &VG_DRAWING_drawStringOnCircle_2,
176 #endif
177 };
178 
179 static const VG_DRAWING_drawStringOnCircleGradient_t VG_DRAWER_drawStringOnCircleGradient[] = {
180  &VG_DRAWING_drawStringOnCircleGradient_0,
181  &VG_DRAWING_drawStringOnCircleGradient_1,
182 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
183  &VG_DRAWING_drawStringOnCircleGradient_2,
184 #endif
185 };
186 
187 static const VG_DRAWING_drawImage_t VG_DRAWER_drawImage[] = {
188  &VG_DRAWING_drawImage_0,
189  &VG_DRAWING_drawImage_1,
190 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
191  &VG_DRAWING_drawImage_2,
192 #endif
193 };
194 
195 #endif
196 
197 // --------------------------------------------------------------------------------
198 // vg_drawing.h functions
199 // (the function names differ according to the available number of destination formats)
200 // --------------------------------------------------------------------------------
201 
202 // See the header file for the function documentation
203 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_DEFAULT_drawPath(MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint blend, jint color){
204  return VG_DRAWING_STUB_drawPath(gc, path, x, y, matrix, fillRule, blend, color);
205 }
206 
207 // See the header file for the function documentation
208 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_DEFAULT_drawGradient(MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint alpha, jint blend, jint* gradient, jfloat* gradientMatrix){
209  return VG_DRAWING_STUB_drawGradient(gc, path, x, y, matrix, fillRule, alpha, blend, gradient, gradientMatrix);
210 }
211 
212 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_DEFAULT_drawString(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing){
213  return VG_DRAWING_STUB_drawString(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing);
214 }
215 
216 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_DEFAULT_drawStringGradient(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jint *gradientData, jfloat *gradientMatrix){
217  return VG_DRAWING_STUB_drawStringGradient(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, gradientData, gradientMatrix);
218 }
219 
220 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_DEFAULT_drawStringOnCircle(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction){
221  return VG_DRAWING_STUB_drawStringOnCircle(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, radius, direction);
222 }
223 
224 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_DEFAULT_drawStringOnCircleGradient(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction, jint *gradientData, jfloat *gradientMatrix){
225  return VG_DRAWING_STUB_drawStringOnCircleGradient(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, radius, direction, gradientData, gradientMatrix);
226 }
227 
228 // See the header file for the function documentation
229 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_DEFAULT_drawImage(MICROUI_GraphicsContext* gc, void* sni_context, jfloat *matrix, jint alpha, jlong elapsed, const float color_matrix[], jint* errno) {
230  return VG_DRAWING_STUB_drawImage(gc, sni_context, matrix, alpha, elapsed, color_matrix, errno);
231 }
232 
233 #if defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
234 
235 /*
236  * The VEE port supports several destination formats. All drawing functions use a
237  * dedicated table to redirect to the right implementation.
238  *
239  * The "DEFAULT" functions (see upper) are used as element "0" of the tables (== display
240  * buffer format).
241  */
242 
243 // See the header file for the function documentation
244 BSP_DECLARE_WEAK_FCNT inline DRAWING_Status VG_DRAWING_drawPath(MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint blend, jint color){
245  return (*VG_DRAWER_drawPath[gc->drawer])(gc, path, x, y, matrix, fillRule, blend, color);
246 }
247 
248 // See the header file for the function documentation
249 BSP_DECLARE_WEAK_FCNT inline DRAWING_Status VG_DRAWING_drawGradient(MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint alpha, jint blend, jint* gradient, jfloat* gradientMatrix){
250  return (*VG_DRAWER_drawGradient[gc->drawer])(gc, path, x, y, matrix, fillRule, alpha, blend, gradient, gradientMatrix);
251 }
252 
253 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawString(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing){
254  return (*VG_DRAWER_drawString[gc->drawer])(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing);
255 }
256 
257 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawStringGradient(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jint *gradientData, jfloat *gradientMatrix){
258  return (*VG_DRAWER_drawStringGradient[gc->drawer])(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, gradientData, gradientMatrix);
259 }
260 
261 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawStringOnCircle(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction){
262  return (*VG_DRAWER_drawStringOnCircle[gc->drawer])(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, radius, direction);
263 }
264 
265 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawStringOnCircleGradient(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction, jint *gradientData, jfloat *gradientMatrix){
266  return (*VG_DRAWER_drawStringOnCircleGradient[gc->drawer])(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, radius, direction, gradientData, gradientMatrix);
267 }
268 
269 // See the header file for the function documentation
270 BSP_DECLARE_WEAK_FCNT inline DRAWING_Status VG_DRAWING_drawImage(MICROUI_GraphicsContext* gc, void* image, jfloat *matrix, jint alpha, jlong elapsed, const float color_matrix[], jint* errno) {
271  return (*VG_DRAWER_drawImage[gc->drawer])(gc, image, matrix, alpha, elapsed, color_matrix, errno);
272 }
273 
274 /*
275  * The next functions are used as elements "1" of the tables. They call STUB fonctions and should be
276  * overridden by the drawer that manages the format "1".
277  */
278 
279 // See the header file for the function documentation
280 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawPath_1(MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint blend, jint color){
281  return VG_DRAWING_STUB_drawPath(gc, path, x, y, matrix, fillRule, blend, color);
282 }
283 
284 // See the header file for the function documentation
285 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawGradient_1(MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint alpha, jint blend, jint* gradient, jfloat* gradientMatrix){
286  return VG_DRAWING_STUB_drawGradient(gc, path, x, y, matrix, fillRule, alpha, blend, gradient, gradientMatrix);
287 }
288 
289 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawString_1(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing){
290  return VG_DRAWING_STUB_drawString(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing);
291 }
292 
293 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawStringGradient_1(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jint *gradientData, jfloat *gradientMatrix){
294  return VG_DRAWING_STUB_drawStringGradient(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, gradientData, gradientMatrix);
295 }
296 
297 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawStringOnCircle_1(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction){
298  return VG_DRAWING_STUB_drawStringOnCircle(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, radius, direction);
299 }
300 
301 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawStringOnCircleGradient_1(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction, jint *gradientData, jfloat *gradientMatrix){
302  return VG_DRAWING_STUB_drawStringOnCircleGradient(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, radius, direction, gradientData, gradientMatrix);
303 }
304 
305 // See the header file for the function documentation
306 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawImage_1(MICROUI_GraphicsContext* gc, void* sni_context, jfloat *matrix, jint alpha, jlong elapsed, const float color_matrix[], jint* errno) {
307  return VG_DRAWING_STUB_drawImage(gc, sni_context, matrix, alpha, elapsed, color_matrix, errno);
308 }
309 
310 
311 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
312 
313 /*
314  * The next functions are used as elements "2" of the tables. They call STUB fonctions and should be
315  * overridden by the drawer that manages the format "2".
316  */
317 
318 // See the header file for the function documentation
319 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawPath_2(MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint blend, jint color){
320  return VG_DRAWING_STUB_drawPath(gc, path, x, y, matrix, fillRule, blend, color);
321 }
322 
323 // See the header file for the function documentation
324 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawGradient_2(MICROUI_GraphicsContext* gc, jbyte* path, jint x, jint y, jfloat* matrix, jint fillRule, jint alpha, jint blend, jint* gradient, jfloat* gradientMatrix){
325  return VG_DRAWING_STUB_drawGradient(gc, path, x, y, matrix, fillRule, alpha, blend, gradient, gradientMatrix);
326 }
327 
328 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawString_2(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing){
329  return VG_DRAWING_STUB_drawString(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing);
330 }
331 
332 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawStringGradient_2(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jint *gradientData, jfloat *gradientMatrix){
333  return VG_DRAWING_STUB_drawStringGradient(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, gradientData, gradientMatrix);
334 }
335 
336 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawStringOnCircle_2(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction){
337  return VG_DRAWING_STUB_drawStringOnCircle(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, radius, direction);
338 }
339 
340 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawStringOnCircleGradient_2(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction, jint *gradientData, jfloat *gradientMatrix){
341  return VG_DRAWING_STUB_drawStringOnCircleGradient(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, radius, direction, gradientData, gradientMatrix);
342 }
343 
344 // See the header file for the function documentation
345 BSP_DECLARE_WEAK_FCNT DRAWING_Status VG_DRAWING_drawImage_2(MICROUI_GraphicsContext* gc, void* sni_context, jfloat *matrix, jint alpha, jlong elapsed, const float color_matrix[], jint* errno) {
346  return VG_DRAWING_STUB_drawImage(gc, sni_context, matrix, alpha, elapsed, color_matrix, errno);
347 }
348 
349 #endif // (LLUI_GC_SUPPORTED_FORMATS > 2)
350 
351 #else // #if defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
352 
353 /*
354  * The VEE port supports only one destination format: the display buffer format. All
355  * drawing functions are redirected to the stub implementation by default. A
356  * third party implementation (often on a GPU) should replace each weak function independently.
357  */
358 
359 #endif // #if defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
360 
361 // -----------------------------------------------------------------------------
362 // EOF
363 // -----------------------------------------------------------------------------