microui  3.1.0
microui
ui_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 MicroUI and Drawing libraries drawing functions. This file
11  * is required (must be compiled in the C project) but should not be modified (except when
12  * the VEE port uses more than 3 destination formats, see below).
13  *
14  * According to the available number of destination formats, this file redirects all drawings
15  * to the Graphics Engine software algorithms or uses some tables to target the right drawer
16  * according to the destination format.
17  *
18  * When only one destination format is available and no hardware acceleration (GPU) is
19  * available, the C compiler must just include this file. The default weak implementations
20  * call the Graphics Engine sofware algorithms.
21  *
22  * When only one destination format is available and a hardware acceleration (GPU) is
23  * available, a custom implementation over the GPU must override a set of these default
24  * weak implementations (function UI_DRAWING_xxx()). This allows to override only a set
25  * of functions which are GPU compatible.
26  *
27  * When several destination formats are available, this file uses some tables to target
28  * the right drawer. Each drawer (that targets a specific destination format) has to
29  * specify the table index and has to override a maximum of drawing functions. When a
30  * function is not overridden for a given destination format, the default weak implementation
31  * is used. This implementation uses the stub implementation.
32  *
33  * The BSP should specify the define "LLUI_GC_SUPPORTED_FORMATS". When not set or smaller than
34  * "2", this file considers only one destination format is available: the same format than
35  * the buffer of the display.
36  *
37  * When this define is "2" or "3", this file uses the tables indirections. The format "0" is
38  * reserved for the display buffer format (and for the GraphicsContext that uses the same
39  * format). The formats "1" and "2" are specific to the VEE Port.
40  *
41  * This file does not manages more than 3 destination formats ("0" == display buffer format
42  * and custom formats "1" and "2"). However the file can be easily modified to target more
43  * than 3 destination formats. See format "2" support and apply same patterns to add the
44  * format "3".
45  *
46  * @author MicroEJ Developer Team
47  * @version 3.1.0
48  * @see ui_drawing.h
49  */
50 
51 // -----------------------------------------------------------------------------
52 // Includes
53 // -----------------------------------------------------------------------------
54 
55 #include <LLUI_DISPLAY.h>
56 
57 #include "ui_drawing.h"
58 #include "ui_drawing_stub.h"
59 #include "ui_drawing_soft.h"
60 #include "dw_drawing_soft.h"
61 #include "ui_image_drawing.h"
62 #include "bsp_util.h"
63 
64 // --------------------------------------------------------------------------------
65 // Defines
66 // --------------------------------------------------------------------------------
67 
68 #if !defined(LLUI_GC_SUPPORTED_FORMATS) || (LLUI_GC_SUPPORTED_FORMATS <= 1)
69 
70 /*
71  * The functions UI_DRAWING_DEFAULT_xxx() are directly called by LLUI_DISPLAY_impl.c,
72  * LLUI_PAINTER_impl.c and LLDW_PAINTER_impl.c. Other files can override each weak
73  * function independently to use a GPU.
74  */
75 
76 #define UI_DRAWING_DEFAULT_writePixel UI_DRAWING_writePixel
77 #define UI_DRAWING_DEFAULT_drawLine UI_DRAWING_drawLine
78 #define UI_DRAWING_DEFAULT_drawHorizontalLine UI_DRAWING_drawHorizontalLine
79 #define UI_DRAWING_DEFAULT_drawVerticalLine UI_DRAWING_drawVerticalLine
80 #define UI_DRAWING_DEFAULT_drawRectangle UI_DRAWING_drawRectangle
81 #define UI_DRAWING_DEFAULT_fillRectangle UI_DRAWING_fillRectangle
82 #define UI_DRAWING_DEFAULT_drawRoundedRectangle UI_DRAWING_drawRoundedRectangle
83 #define UI_DRAWING_DEFAULT_fillRoundedRectangle UI_DRAWING_fillRoundedRectangle
84 #define UI_DRAWING_DEFAULT_drawCircleArc UI_DRAWING_drawCircleArc
85 #define UI_DRAWING_DEFAULT_drawEllipseArc UI_DRAWING_drawEllipseArc
86 #define UI_DRAWING_DEFAULT_fillCircleArc UI_DRAWING_fillCircleArc
87 #define UI_DRAWING_DEFAULT_fillEllipseArc UI_DRAWING_fillEllipseArc
88 #define UI_DRAWING_DEFAULT_drawEllipse UI_DRAWING_drawEllipse
89 #define UI_DRAWING_DEFAULT_fillEllipse UI_DRAWING_fillEllipse
90 #define UI_DRAWING_DEFAULT_drawCircle UI_DRAWING_drawCircle
91 #define UI_DRAWING_DEFAULT_fillCircle UI_DRAWING_fillCircle
92 #define UI_DRAWING_DEFAULT_drawImage UI_DRAWING_drawImage
93 #define UI_DRAWING_DEFAULT_copyImage UI_DRAWING_copyImage
94 #define UI_DRAWING_DEFAULT_drawRegion UI_DRAWING_drawRegion
95 
96 #define UI_DRAWING_DEFAULT_drawThickFadedPoint UI_DRAWING_drawThickFadedPoint
97 #define UI_DRAWING_DEFAULT_drawThickFadedLine UI_DRAWING_drawThickFadedLine
98 #define UI_DRAWING_DEFAULT_drawThickFadedCircle UI_DRAWING_drawThickFadedCircle
99 #define UI_DRAWING_DEFAULT_drawThickFadedCircleArc UI_DRAWING_drawThickFadedCircleArc
100 #define UI_DRAWING_DEFAULT_drawThickFadedEllipse UI_DRAWING_drawThickFadedEllipse
101 #define UI_DRAWING_DEFAULT_drawThickLine UI_DRAWING_drawThickLine
102 #define UI_DRAWING_DEFAULT_drawThickCircle UI_DRAWING_drawThickCircle
103 #define UI_DRAWING_DEFAULT_drawThickEllipse UI_DRAWING_drawThickEllipse
104 #define UI_DRAWING_DEFAULT_drawThickCircleArc UI_DRAWING_drawThickCircleArc
105 #define UI_DRAWING_DEFAULT_drawFlippedImage UI_DRAWING_drawFlippedImage
106 #define UI_DRAWING_DEFAULT_drawRotatedImageNearestNeighbor UI_DRAWING_drawRotatedImageNearestNeighbor
107 #define UI_DRAWING_DEFAULT_drawRotatedImageBilinear UI_DRAWING_drawRotatedImageBilinear
108 #define UI_DRAWING_DEFAULT_drawScaledImageNearestNeighbor UI_DRAWING_drawScaledImageNearestNeighbor
109 #define UI_DRAWING_DEFAULT_drawScaledImageBilinear UI_DRAWING_drawScaledImageBilinear
110 
111 #else // !defined(LLUI_GC_SUPPORTED_FORMATS) || (LLUI_GC_SUPPORTED_FORMATS <= 1)
112 
113 /*
114  * The functions UI_DRAWING_DEFAULT_xxx() are indirectly called through some tables.
115  * The functions have got the identifier "0" as suffix. Another file can override
116  * each weak function independently to use a GPU.
117  */
118 
119 #define UI_DRAWING_DEFAULT_writePixel UI_DRAWING_writePixel_0
120 #define UI_DRAWING_DEFAULT_drawLine UI_DRAWING_drawLine_0
121 #define UI_DRAWING_DEFAULT_drawHorizontalLine UI_DRAWING_drawHorizontalLine_0
122 #define UI_DRAWING_DEFAULT_drawVerticalLine UI_DRAWING_drawVerticalLine_0
123 #define UI_DRAWING_DEFAULT_drawRectangle UI_DRAWING_drawRectangle_0
124 #define UI_DRAWING_DEFAULT_fillRectangle UI_DRAWING_fillRectangle_0
125 #define UI_DRAWING_DEFAULT_drawRoundedRectangle UI_DRAWING_drawRoundedRectangle_0
126 #define UI_DRAWING_DEFAULT_fillRoundedRectangle UI_DRAWING_fillRoundedRectangle_0
127 #define UI_DRAWING_DEFAULT_drawCircleArc UI_DRAWING_drawCircleArc_0
128 #define UI_DRAWING_DEFAULT_drawEllipseArc UI_DRAWING_drawEllipseArc_0
129 #define UI_DRAWING_DEFAULT_fillCircleArc UI_DRAWING_fillCircleArc_0
130 #define UI_DRAWING_DEFAULT_fillEllipseArc UI_DRAWING_fillEllipseArc_0
131 #define UI_DRAWING_DEFAULT_drawEllipse UI_DRAWING_drawEllipse_0
132 #define UI_DRAWING_DEFAULT_fillEllipse UI_DRAWING_fillEllipse_0
133 #define UI_DRAWING_DEFAULT_drawCircle UI_DRAWING_drawCircle_0
134 #define UI_DRAWING_DEFAULT_fillCircle UI_DRAWING_fillCircle_0
135 #define UI_DRAWING_DEFAULT_drawImage UI_DRAWING_drawImage_0
136 #define UI_DRAWING_DEFAULT_copyImage UI_DRAWING_copyImage_0
137 #define UI_DRAWING_DEFAULT_drawRegion UI_DRAWING_drawRegion_0
138 
139 #define UI_DRAWING_DEFAULT_drawThickFadedPoint UI_DRAWING_drawThickFadedPoint_0
140 #define UI_DRAWING_DEFAULT_drawThickFadedLine UI_DRAWING_drawThickFadedLine_0
141 #define UI_DRAWING_DEFAULT_drawThickFadedCircle UI_DRAWING_drawThickFadedCircle_0
142 #define UI_DRAWING_DEFAULT_drawThickFadedCircleArc UI_DRAWING_drawThickFadedCircleArc_0
143 #define UI_DRAWING_DEFAULT_drawThickFadedEllipse UI_DRAWING_drawThickFadedEllipse_0
144 #define UI_DRAWING_DEFAULT_drawThickLine UI_DRAWING_drawThickLine_0
145 #define UI_DRAWING_DEFAULT_drawThickCircle UI_DRAWING_drawThickCircle_0
146 #define UI_DRAWING_DEFAULT_drawThickEllipse UI_DRAWING_drawThickEllipse_0
147 #define UI_DRAWING_DEFAULT_drawThickCircleArc UI_DRAWING_drawThickCircleArc_0
148 #define UI_DRAWING_DEFAULT_drawFlippedImage UI_DRAWING_drawFlippedImage_0
149 #define UI_DRAWING_DEFAULT_drawRotatedImageNearestNeighbor UI_DRAWING_drawRotatedImageNearestNeighbor_0
150 #define UI_DRAWING_DEFAULT_drawRotatedImageBilinear UI_DRAWING_drawRotatedImageBilinear_0
151 #define UI_DRAWING_DEFAULT_drawScaledImageNearestNeighbor UI_DRAWING_drawScaledImageNearestNeighbor_0
152 #define UI_DRAWING_DEFAULT_drawScaledImageBilinear UI_DRAWING_drawScaledImageBilinear_0
153 
154 #endif // !defined(LLUI_GC_SUPPORTED_FORMATS) || (LLUI_GC_SUPPORTED_FORMATS <= 1)
155 
156 // --------------------------------------------------------------------------------
157 // Extern functions
158 // --------------------------------------------------------------------------------
159 
160 #if defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
161 
162 /*
163  * @brief Set of drawing functions according to the index of the destination format in
164  * the drawing tables ("0", "1" or "2").
165  *
166  * These functions must be declared in other H files.
167  */
168 
169 #if (LLUI_GC_SUPPORTED_FORMATS > 3)
170 #error "Increase the number of following functions and update the next tables"
171 #endif
172 
173 extern DRAWING_Status UI_DRAWING_writePixel_0(MICROUI_GraphicsContext* gc, jint x, jint y);
174 extern DRAWING_Status UI_DRAWING_drawLine_0(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY);
175 extern DRAWING_Status UI_DRAWING_drawHorizontalLine_0(MICROUI_GraphicsContext* gc, jint x1, jint x2, jint y);
176 extern DRAWING_Status UI_DRAWING_drawVerticalLine_0(MICROUI_GraphicsContext* gc, jint x, jint y1, jint y2);
177 extern DRAWING_Status UI_DRAWING_drawRectangle_0(MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2);
178 extern DRAWING_Status UI_DRAWING_fillRectangle_0(MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2);
179 extern DRAWING_Status UI_DRAWING_drawRoundedRectangle_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight);
180 extern DRAWING_Status UI_DRAWING_fillRoundedRectangle_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight);
181 extern DRAWING_Status UI_DRAWING_drawCircleArc_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle);
182 extern DRAWING_Status UI_DRAWING_drawEllipseArc_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle);
183 extern DRAWING_Status UI_DRAWING_fillCircleArc_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle);
184 extern DRAWING_Status UI_DRAWING_fillEllipseArc_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle);
185 extern DRAWING_Status UI_DRAWING_drawEllipse_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height);
186 extern DRAWING_Status UI_DRAWING_fillEllipse_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height);
187 extern DRAWING_Status UI_DRAWING_drawCircle_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter);
188 extern DRAWING_Status UI_DRAWING_fillCircle_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter);
189 extern DRAWING_Status UI_DRAWING_drawImage_0(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha);
190 extern DRAWING_Status UI_DRAWING_copyImage_0(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y);
191 extern DRAWING_Status UI_DRAWING_drawRegion_0(MICROUI_GraphicsContext* gc, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha);
192 extern DRAWING_Status UI_DRAWING_drawThickFadedPoint_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint thickness, jint fade);
193 extern DRAWING_Status UI_DRAWING_drawThickFadedLine_0(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness, jint fade, DRAWING_Cap startCap, DRAWING_Cap endCap);
194 extern DRAWING_Status UI_DRAWING_drawThickFadedCircle_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness, jint fade);
195 extern DRAWING_Status UI_DRAWING_drawThickFadedCircleArc_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness, jint fade, DRAWING_Cap start, DRAWING_Cap end);
196 extern DRAWING_Status UI_DRAWING_drawThickFadedEllipse_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness, jint fade);
197 extern DRAWING_Status UI_DRAWING_drawThickLine_0(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness);
198 extern DRAWING_Status UI_DRAWING_drawThickCircle_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness);
199 extern DRAWING_Status UI_DRAWING_drawThickEllipse_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness);
200 extern DRAWING_Status UI_DRAWING_drawThickCircleArc_0(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness);
201 extern DRAWING_Status UI_DRAWING_drawFlippedImage_0(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, DRAWING_Flip transformation, jint alpha);
202 extern DRAWING_Status UI_DRAWING_drawRotatedImageNearestNeighbor_0(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha);
203 extern DRAWING_Status UI_DRAWING_drawRotatedImageBilinear_0(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha);
204 extern DRAWING_Status UI_DRAWING_drawScaledImageNearestNeighbor_0(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha);
205 extern DRAWING_Status UI_DRAWING_drawScaledImageBilinear_0(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha);
206 
207 extern uint32_t UI_DRAWING_getNewImageStrideInBytes_1(jbyte image_format, uint32_t width, uint32_t height, uint32_t default_stride);
208 extern void UI_DRAWING_adjustNewImageCharacteristics_1(jbyte image_format, uint32_t width, uint32_t height, uint32_t* data_size, uint32_t* data_alignment);
209 extern void UI_DRAWING_initializeNewImage_1(MICROUI_Image* image);
210 extern void UI_DRAWING_freeImageResources_1(MICROUI_Image* image);
211 extern DRAWING_Status UI_DRAWING_writePixel_1(MICROUI_GraphicsContext* gc, jint x, jint y);
212 extern DRAWING_Status UI_DRAWING_drawLine_1(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY);
213 extern DRAWING_Status UI_DRAWING_drawHorizontalLine_1(MICROUI_GraphicsContext* gc, jint x1, jint x2, jint y);
214 extern DRAWING_Status UI_DRAWING_drawVerticalLine_1(MICROUI_GraphicsContext* gc, jint x, jint y1, jint y2);
215 extern DRAWING_Status UI_DRAWING_drawRectangle_1(MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2);
216 extern DRAWING_Status UI_DRAWING_fillRectangle_1(MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2);
217 extern DRAWING_Status UI_DRAWING_drawRoundedRectangle_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight);
218 extern DRAWING_Status UI_DRAWING_fillRoundedRectangle_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight);
219 extern DRAWING_Status UI_DRAWING_drawCircleArc_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle);
220 extern DRAWING_Status UI_DRAWING_drawEllipseArc_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle);
221 extern DRAWING_Status UI_DRAWING_fillCircleArc_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle);
222 extern DRAWING_Status UI_DRAWING_fillEllipseArc_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle);
223 extern DRAWING_Status UI_DRAWING_drawEllipse_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height);
224 extern DRAWING_Status UI_DRAWING_fillEllipse_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height);
225 extern DRAWING_Status UI_DRAWING_drawCircle_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter);
226 extern DRAWING_Status UI_DRAWING_fillCircle_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter);
227 extern DRAWING_Status UI_DRAWING_drawImage_1(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha);
228 extern DRAWING_Status UI_DRAWING_copyImage_1(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y);
229 extern DRAWING_Status UI_DRAWING_drawRegion_1(MICROUI_GraphicsContext* gc, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha);
230 extern DRAWING_Status UI_DRAWING_drawThickFadedPoint_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint thickness, jint fade);
231 extern DRAWING_Status UI_DRAWING_drawThickFadedLine_1(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness, jint fade, DRAWING_Cap startCap, DRAWING_Cap endCap);
232 extern DRAWING_Status UI_DRAWING_drawThickFadedCircle_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness, jint fade);
233 extern DRAWING_Status UI_DRAWING_drawThickFadedCircleArc_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness, jint fade, DRAWING_Cap start, DRAWING_Cap end);
234 extern DRAWING_Status UI_DRAWING_drawThickFadedEllipse_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness, jint fade);
235 extern DRAWING_Status UI_DRAWING_drawThickLine_1(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness);
236 extern DRAWING_Status UI_DRAWING_drawThickCircle_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness);
237 extern DRAWING_Status UI_DRAWING_drawThickEllipse_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness);
238 extern DRAWING_Status UI_DRAWING_drawThickCircleArc_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness);
239 extern DRAWING_Status UI_DRAWING_drawFlippedImage_1(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, DRAWING_Flip transformation, jint alpha);
240 extern DRAWING_Status UI_DRAWING_drawRotatedImageNearestNeighbor_1(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha);
241 extern DRAWING_Status UI_DRAWING_drawRotatedImageBilinear_1(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha);
242 extern DRAWING_Status UI_DRAWING_drawScaledImageNearestNeighbor_1(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha);
243 extern DRAWING_Status UI_DRAWING_drawScaledImageBilinear_1(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha);
244 
245 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
246 extern uint32_t UI_DRAWING_getNewImageStrideInBytes_2(jbyte image_format, uint32_t width, uint32_t height, uint32_t default_stride);
247 extern void UI_DRAWING_adjustNewImageCharacteristics_2(jbyte image_format, uint32_t width, uint32_t height, uint32_t* data_size, uint32_t* data_alignment);
248 extern void UI_DRAWING_initializeNewImage_2(MICROUI_Image* image);
249 extern void UI_DRAWING_freeImageResources_2(MICROUI_Image* image);
250 extern DRAWING_Status UI_DRAWING_writePixel_2(MICROUI_GraphicsContext* gc, jint x, jint y);
251 extern DRAWING_Status UI_DRAWING_drawLine_2(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY);
252 extern DRAWING_Status UI_DRAWING_drawHorizontalLine_2(MICROUI_GraphicsContext* gc, jint x1, jint x2, jint y);
253 extern DRAWING_Status UI_DRAWING_drawVerticalLine_2(MICROUI_GraphicsContext* gc, jint x, jint y1, jint y2);
254 extern DRAWING_Status UI_DRAWING_drawRectangle_2(MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2);
255 extern DRAWING_Status UI_DRAWING_fillRectangle_2(MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2);
256 extern DRAWING_Status UI_DRAWING_drawRoundedRectangle_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight);
257 extern DRAWING_Status UI_DRAWING_fillRoundedRectangle_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight);
258 extern DRAWING_Status UI_DRAWING_drawCircleArc_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle);
259 extern DRAWING_Status UI_DRAWING_drawEllipseArc_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle);
260 extern DRAWING_Status UI_DRAWING_fillCircleArc_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle);
261 extern DRAWING_Status UI_DRAWING_fillEllipseArc_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle);
262 extern DRAWING_Status UI_DRAWING_drawEllipse_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height);
263 extern DRAWING_Status UI_DRAWING_fillEllipse_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height);
264 extern DRAWING_Status UI_DRAWING_drawCircle_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter);
265 extern DRAWING_Status UI_DRAWING_fillCircle_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter);
266 extern DRAWING_Status UI_DRAWING_drawImage_2(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha);
267 extern DRAWING_Status UI_DRAWING_copyImage_2(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y);
268 extern DRAWING_Status UI_DRAWING_drawRegion_2(MICROUI_GraphicsContext* gc, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha);
269 extern DRAWING_Status UI_DRAWING_drawThickFadedPoint_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint thickness, jint fade);
270 extern DRAWING_Status UI_DRAWING_drawThickFadedLine_2(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness, jint fade, DRAWING_Cap startCap, DRAWING_Cap endCap);
271 extern DRAWING_Status UI_DRAWING_drawThickFadedCircle_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness, jint fade);
272 extern DRAWING_Status UI_DRAWING_drawThickFadedCircleArc_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness, jint fade, DRAWING_Cap start, DRAWING_Cap end);
273 extern DRAWING_Status UI_DRAWING_drawThickFadedEllipse_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness, jint fade);
274 extern DRAWING_Status UI_DRAWING_drawThickLine_2(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness);
275 extern DRAWING_Status UI_DRAWING_drawThickCircle_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness);
276 extern DRAWING_Status UI_DRAWING_drawThickEllipse_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness);
277 extern DRAWING_Status UI_DRAWING_drawThickCircleArc_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness);
278 extern DRAWING_Status UI_DRAWING_drawFlippedImage_2(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, DRAWING_Flip transformation, jint alpha);
279 extern DRAWING_Status UI_DRAWING_drawRotatedImageNearestNeighbor_2(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha);
280 extern DRAWING_Status UI_DRAWING_drawRotatedImageBilinear_2(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha);
281 extern DRAWING_Status UI_DRAWING_drawScaledImageNearestNeighbor_2(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha);
282 extern DRAWING_Status UI_DRAWING_drawScaledImageBilinear_2(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha);
283 #endif // (LLUI_GC_SUPPORTED_FORMATS > 2)
284 
285 #endif // defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
286 
287 // --------------------------------------------------------------------------------
288 // Typedef of drawing functions
289 // --------------------------------------------------------------------------------
290 
291 #if defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
292 
293 /*
294  * @brief Typedef used by next tables. See the function comments in ui_drawing.h
295  */
296 
297 typedef uint32_t (* UI_DRAWING_getNewImageStrideInBytes_t) (jbyte image_format, uint32_t width, uint32_t height, uint32_t default_stride);
298 typedef void (* UI_DRAWING_adjustNewImageCharacteristics_t) (jbyte image_format, uint32_t width, uint32_t height, uint32_t* data_size, uint32_t* data_alignment);
299 typedef void (* UI_DRAWING_initializeNewImage_t) (MICROUI_Image* image);
300 typedef void (* UI_DRAWING_freeImageResources_t) (MICROUI_Image* image);
301 typedef DRAWING_Status (* UI_DRAWING_writePixel_t) (MICROUI_GraphicsContext* gc, jint x, jint y);
302 typedef DRAWING_Status (* UI_DRAWING_drawLine_t) (MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY);
303 typedef DRAWING_Status (* UI_DRAWING_drawHorizontalLine_t) (MICROUI_GraphicsContext* gc, jint x1, jint x2, jint y);
304 typedef DRAWING_Status (* UI_DRAWING_drawVerticalLine_t) (MICROUI_GraphicsContext* gc, jint x, jint y1, jint y2);
305 typedef DRAWING_Status (* UI_DRAWING_drawRectangle_t) (MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2);
306 typedef DRAWING_Status (* UI_DRAWING_fillRectangle_t) (MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2);
307 typedef DRAWING_Status (* UI_DRAWING_drawRoundedRectangle_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight);
308 typedef DRAWING_Status (* UI_DRAWING_fillRoundedRectangle_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight);
309 typedef DRAWING_Status (* UI_DRAWING_drawCircleArc_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle);
310 typedef DRAWING_Status (* UI_DRAWING_drawEllipseArc_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle);
311 typedef DRAWING_Status (* UI_DRAWING_fillCircleArc_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle);
312 typedef DRAWING_Status (* UI_DRAWING_fillEllipseArc_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle);
313 typedef DRAWING_Status (* UI_DRAWING_drawEllipse_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height);
314 typedef DRAWING_Status (* UI_DRAWING_fillEllipse_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height);
315 typedef DRAWING_Status (* UI_DRAWING_drawCircle_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter);
316 typedef DRAWING_Status (* UI_DRAWING_fillCircle_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter);
317 typedef DRAWING_Status (* UI_DRAWING_drawImage_t) (MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha);
318 typedef DRAWING_Status (* UI_DRAWING_copyImage_t) (MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y);
319 typedef DRAWING_Status (* UI_DRAWING_drawRegion_t) (MICROUI_GraphicsContext* gc, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha);
320 typedef DRAWING_Status (* UI_DRAWING_drawThickFadedPoint_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint thickness, jint fade);
321 typedef DRAWING_Status (* UI_DRAWING_drawThickFadedLine_t) (MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness, jint fade, DRAWING_Cap startCap, DRAWING_Cap endCap);
322 typedef DRAWING_Status (* UI_DRAWING_drawThickFadedCircle_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness, jint fade);
323 typedef DRAWING_Status (* UI_DRAWING_drawThickFadedCircleArc_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness, jint fade, DRAWING_Cap start, DRAWING_Cap end);
324 typedef DRAWING_Status (* UI_DRAWING_drawThickFadedEllipse_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness, jint fade);
325 typedef DRAWING_Status (* UI_DRAWING_drawThickLine_t) (MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness);
326 typedef DRAWING_Status (* UI_DRAWING_drawThickCircle_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness);
327 typedef DRAWING_Status (* UI_DRAWING_drawThickEllipse_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness);
328 typedef DRAWING_Status (* UI_DRAWING_drawThickCircleArc_t) (MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness);
329 typedef DRAWING_Status (* UI_DRAWING_drawFlippedImage_t) (MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, DRAWING_Flip transformation, jint alpha);
330 typedef DRAWING_Status (* UI_DRAWING_drawRotatedImageNearestNeighbor_t) (MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha);
331 typedef DRAWING_Status (* UI_DRAWING_drawRotatedImageBilinear_t) (MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha);
332 typedef DRAWING_Status (* UI_DRAWING_drawScaledImageNearestNeighbor_t) (MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha);
333 typedef DRAWING_Status (* UI_DRAWING_drawScaledImageBilinear_t) (MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha);
334 
335 #endif // #if defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
336 
337 // --------------------------------------------------------------------------------
338 // Tables according to the destination format.
339 // --------------------------------------------------------------------------------
340 
341 #if defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
342 
343 static const UI_DRAWING_getNewImageStrideInBytes_t UI_DRAWER_getNewImageStrideInBytes[] = {
344  &UI_DRAWING_getNewImageStrideInBytes,
345  &UI_DRAWING_getNewImageStrideInBytes_1,
346 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
347  &UI_DRAWING_getNewImageStrideInBytes_2,
348 #endif
349 };
350 
351 static const UI_DRAWING_adjustNewImageCharacteristics_t UI_DRAWER_adjustNewImageCharacteristics[] = {
352  &UI_DRAWING_adjustNewImageCharacteristics,
353  &UI_DRAWING_adjustNewImageCharacteristics_1,
354 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
355  &UI_DRAWING_adjustNewImageCharacteristics_2,
356 #endif
357 };
358 
359 static const UI_DRAWING_initializeNewImage_t UI_DRAWER_initializeNewImage[] = {
360  &UI_DRAWING_initializeNewImage,
361  &UI_DRAWING_initializeNewImage_1,
362 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
363  &UI_DRAWING_initializeNewImage_2,
364 #endif
365 };
366 
367 static const UI_DRAWING_freeImageResources_t UI_DRAWER_freeImageResources[] = {
368  &UI_DRAWING_freeImageResources,
369  &UI_DRAWING_freeImageResources_1,
370 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
371  &UI_DRAWING_freeImageResources_2,
372 #endif
373 };
374 
375 static const UI_DRAWING_writePixel_t UI_DRAWER_writePixel[] = {
376  &UI_DRAWING_writePixel_0,
377  &UI_DRAWING_writePixel_1,
378 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
379  &UI_DRAWING_writePixel_2,
380 #endif
381 };
382 
383 static const UI_DRAWING_drawLine_t UI_DRAWER_drawLine[] = {
384  &UI_DRAWING_drawLine_0,
385  &UI_DRAWING_drawLine_1,
386 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
387  &UI_DRAWING_drawLine_2,
388 #endif
389 };
390 
391 static const UI_DRAWING_drawHorizontalLine_t UI_DRAWER_drawHorizontalLine[] = {
392  &UI_DRAWING_drawHorizontalLine_0,
393  &UI_DRAWING_drawHorizontalLine_1,
394 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
395  &UI_DRAWING_drawHorizontalLine_2,
396 #endif
397 };
398 
399 static const UI_DRAWING_drawVerticalLine_t UI_DRAWER_drawVerticalLine[] = {
400  &UI_DRAWING_drawVerticalLine_0,
401  &UI_DRAWING_drawVerticalLine_1,
402 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
403  &UI_DRAWING_drawVerticalLine_2,
404 #endif
405 };
406 
407 static const UI_DRAWING_drawRectangle_t UI_DRAWER_drawRectangle[] = {
408  &UI_DRAWING_drawRectangle_0,
409  &UI_DRAWING_drawRectangle_1,
410 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
411  &UI_DRAWING_drawRectangle_2,
412 #endif
413 };
414 
415 static const UI_DRAWING_fillRectangle_t UI_DRAWER_fillRectangle[] = {
416  &UI_DRAWING_fillRectangle_0,
417  &UI_DRAWING_fillRectangle_1,
418 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
419  &UI_DRAWING_fillRectangle_2,
420 #endif
421 };
422 
423 static const UI_DRAWING_drawRoundedRectangle_t UI_DRAWER_drawRoundedRectangle[] = {
424  &UI_DRAWING_drawRoundedRectangle_0,
425  &UI_DRAWING_drawRoundedRectangle_1,
426 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
427  &UI_DRAWING_drawRoundedRectangle_2,
428 #endif
429 };
430 
431 static const UI_DRAWING_fillRoundedRectangle_t UI_DRAWER_fillRoundedRectangle[] = {
432  &UI_DRAWING_fillRoundedRectangle_0,
433  &UI_DRAWING_fillRoundedRectangle_1,
434 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
435  &UI_DRAWING_fillRoundedRectangle_2,
436 #endif
437 };
438 
439 static const UI_DRAWING_drawCircleArc_t UI_DRAWER_drawCircleArc[] = {
440  &UI_DRAWING_drawCircleArc_0,
441  &UI_DRAWING_drawCircleArc_1,
442 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
443  &UI_DRAWING_drawCircleArc_2,
444 #endif
445 };
446 
447 static const UI_DRAWING_drawEllipseArc_t UI_DRAWER_drawEllipseArc[] = {
448  &UI_DRAWING_drawEllipseArc_0,
449  &UI_DRAWING_drawEllipseArc_1,
450 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
451  &UI_DRAWING_drawEllipseArc_2,
452 #endif
453 };
454 
455 static const UI_DRAWING_fillCircleArc_t UI_DRAWER_fillCircleArc[] = {
456  &UI_DRAWING_fillCircleArc_0,
457  &UI_DRAWING_fillCircleArc_1,
458 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
459  &UI_DRAWING_fillCircleArc_2,
460 #endif
461 };
462 
463 static const UI_DRAWING_fillEllipseArc_t UI_DRAWER_fillEllipseArc[] = {
464  &UI_DRAWING_fillEllipseArc_0,
465  &UI_DRAWING_fillEllipseArc_1,
466 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
467  &UI_DRAWING_fillEllipseArc_2,
468 #endif
469 };
470 
471 static const UI_DRAWING_drawEllipse_t UI_DRAWER_drawEllipse[] = {
472  &UI_DRAWING_drawEllipse_0,
473  &UI_DRAWING_drawEllipse_1,
474 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
475  &UI_DRAWING_drawEllipse_2,
476 #endif
477 };
478 
479 static const UI_DRAWING_fillEllipse_t UI_DRAWER_fillEllipse[] = {
480  &UI_DRAWING_fillEllipse_0,
481  &UI_DRAWING_fillEllipse_1,
482 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
483  &UI_DRAWING_fillEllipse_2,
484 #endif
485 };
486 
487 static const UI_DRAWING_drawCircle_t UI_DRAWER_drawCircle[] = {
488  &UI_DRAWING_drawCircle_0,
489  &UI_DRAWING_drawCircle_1,
490 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
491  &UI_DRAWING_drawCircle_2,
492 #endif
493 };
494 
495 static const UI_DRAWING_fillCircle_t UI_DRAWER_fillCircle[] = {
496  &UI_DRAWING_fillCircle_0,
497  &UI_DRAWING_fillCircle_1,
498 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
499  &UI_DRAWING_fillCircle_2,
500 #endif
501 };
502 
503 static const UI_DRAWING_drawImage_t UI_DRAWER_drawImage[] = {
504  &UI_DRAWING_drawImage_0,
505  &UI_DRAWING_drawImage_1,
506 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
507  &UI_DRAWING_drawImage_2,
508 #endif
509 };
510 
511 static const UI_DRAWING_copyImage_t UI_DRAWER_copyImage[] = {
512  &UI_DRAWING_copyImage_0,
513  &UI_DRAWING_copyImage_1,
514 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
515  &UI_DRAWING_copyImage_2,
516 #endif
517 };
518 
519 static const UI_DRAWING_drawRegion_t UI_DRAWER_drawRegion[] = {
520  &UI_DRAWING_drawRegion_0,
521  &UI_DRAWING_drawRegion_1,
522 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
523  &UI_DRAWING_drawRegion_2,
524 #endif
525 };
526 
527 static const UI_DRAWING_drawThickFadedPoint_t UI_DRAWER_drawThickFadedPoint[] = {
528  &UI_DRAWING_drawThickFadedPoint_0,
529  &UI_DRAWING_drawThickFadedPoint_1,
530 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
531  &UI_DRAWING_drawThickFadedPoint_2,
532 #endif
533 };
534 
535 static const UI_DRAWING_drawThickFadedLine_t UI_DRAWER_drawThickFadedLine[] = {
536  &UI_DRAWING_drawThickFadedLine_0,
537  &UI_DRAWING_drawThickFadedLine_1,
538 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
539  &UI_DRAWING_drawThickFadedLine_2,
540 #endif
541 };
542 
543 static const UI_DRAWING_drawThickFadedCircle_t UI_DRAWER_drawThickFadedCircle[] = {
544  &UI_DRAWING_drawThickFadedCircle_0,
545  &UI_DRAWING_drawThickFadedCircle_1,
546 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
547  &UI_DRAWING_drawThickFadedCircle_2,
548 #endif
549 };
550 
551 static const UI_DRAWING_drawThickFadedCircleArc_t UI_DRAWER_drawThickFadedCircleArc[] = {
552  &UI_DRAWING_drawThickFadedCircleArc_0,
553  &UI_DRAWING_drawThickFadedCircleArc_1,
554 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
555  &UI_DRAWING_drawThickFadedCircleArc_2,
556 #endif
557 };
558 
559 static const UI_DRAWING_drawThickFadedEllipse_t UI_DRAWER_drawThickFadedEllipse[] = {
560  &UI_DRAWING_drawThickFadedEllipse_0,
561  &UI_DRAWING_drawThickFadedEllipse_1,
562 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
563  &UI_DRAWING_drawThickFadedEllipse_2,
564 #endif
565 };
566 
567 static const UI_DRAWING_drawThickLine_t UI_DRAWER_drawThickLine[] = {
568  &UI_DRAWING_drawThickLine_0,
569  &UI_DRAWING_drawThickLine_1,
570 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
571  &UI_DRAWING_drawThickLine_2,
572 #endif
573 };
574 
575 static const UI_DRAWING_drawThickCircle_t UI_DRAWER_drawThickCircle[] = {
576  &UI_DRAWING_drawThickCircle_0,
577  &UI_DRAWING_drawThickCircle_1,
578 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
579  &UI_DRAWING_drawThickCircle_2,
580 #endif
581 };
582 
583 static const UI_DRAWING_drawThickEllipse_t UI_DRAWER_drawThickEllipse[] = {
584  &UI_DRAWING_drawThickEllipse_0,
585  &UI_DRAWING_drawThickEllipse_1,
586 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
587  &UI_DRAWING_drawThickEllipse_2,
588 #endif
589 };
590 
591 static const UI_DRAWING_drawThickCircleArc_t UI_DRAWER_drawThickCircleArc[] = {
592  &UI_DRAWING_drawThickCircleArc_0,
593  &UI_DRAWING_drawThickCircleArc_1,
594 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
595  &UI_DRAWING_drawThickCircleArc_2,
596 #endif
597 };
598 
599 static const UI_DRAWING_drawFlippedImage_t UI_DRAWER_drawFlippedImage[] = {
600  &UI_DRAWING_drawFlippedImage_0,
601  &UI_DRAWING_drawFlippedImage_1,
602 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
603  &UI_DRAWING_drawFlippedImage_2,
604 #endif
605 };
606 
607 static const UI_DRAWING_drawRotatedImageNearestNeighbor_t UI_DRAWER_drawRotatedImageNearestNeighbor[] = {
608  &UI_DRAWING_drawRotatedImageNearestNeighbor_0,
609  &UI_DRAWING_drawRotatedImageNearestNeighbor_1,
610 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
611  &UI_DRAWING_drawRotatedImageNearestNeighbor_2,
612 #endif
613 };
614 
615 static const UI_DRAWING_drawRotatedImageBilinear_t UI_DRAWER_drawRotatedImageBilinear[] = {
616  &UI_DRAWING_drawRotatedImageBilinear_0,
617  &UI_DRAWING_drawRotatedImageBilinear_1,
618 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
619  &UI_DRAWING_drawRotatedImageBilinear_2,
620 #endif
621 };
622 
623 static const UI_DRAWING_drawScaledImageNearestNeighbor_t UI_DRAWER_drawScaledImageNearestNeighbor[] = {
624  &UI_DRAWING_drawScaledImageNearestNeighbor_0,
625  &UI_DRAWING_drawScaledImageNearestNeighbor_1,
626 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
627  &UI_DRAWING_drawScaledImageNearestNeighbor_2,
628 #endif
629 };
630 
631 static const UI_DRAWING_drawScaledImageBilinear_t UI_DRAWER_drawScaledImageBilinear[] = {
632  &UI_DRAWING_drawScaledImageBilinear_0,
633  &UI_DRAWING_drawScaledImageBilinear_1,
634 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
635  &UI_DRAWING_drawScaledImageBilinear_2,
636 #endif
637 };
638 
639 #endif // defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
640 
641 // --------------------------------------------------------------------------------
642 // LLUI_DISPLAY_impl.h functions that depend on image format
643 // (the functions are redirected to ui_drawing.h)
644 // --------------------------------------------------------------------------------
645 
646 #if !defined(LLUI_GC_SUPPORTED_FORMATS) || (LLUI_GC_SUPPORTED_FORMATS <= 1)
647 
648 /*
649  * The VEE port supports only one destination format: the displat buffer format. The
650  * application mutable images have the same format as the display buffer.
651  */
652 
653 // See the header file for the function documentation
654 int32_t LLUI_DISPLAY_IMPL_getDrawerIdentifier(jbyte image_format) {
655  return LLUI_DISPLAY_isDisplayFormat(image_format) ? 0 /* no error */ : -1 /* means invalid */;
656 }
657 
658 // See the header file for the function documentation
659 uint32_t LLUI_DISPLAY_IMPL_getNewImageStrideInBytes(jbyte image_format, uint32_t width, uint32_t height, uint32_t default_stride) {
660  // just make an indirection (useful for multi destination formats)
661  return UI_DRAWING_getNewImageStrideInBytes(image_format, width, height, default_stride);
662 }
663 
664 // See the header file for the function documentation
665 void LLUI_DISPLAY_IMPL_adjustNewImageCharacteristics(jbyte image_format, uint32_t width, uint32_t height, uint32_t* data_size, uint32_t* data_alignment) {
666  // just make an indirection (useful for multi destination formats)
667  UI_DRAWING_adjustNewImageCharacteristics(image_format, width, height, data_size, data_alignment);
668 }
669 
670 // See the header file for the function documentation
671 void LLUI_DISPLAY_IMPL_initializeNewImage(MICROUI_Image* image) {
672  // just make an indirection (useful for multi destination formats)
673  UI_DRAWING_initializeNewImage(image);
674 }
675 
676 // See the header file for the function documentation
677 void LLUI_DISPLAY_IMPL_freeImageResources(MICROUI_Image* image) {
678  // just make an indirection (useful for multi destination formats)
679  UI_DRAWING_freeImageResources(image);
680 }
681 
682 #else // #if !defined(LLUI_GC_SUPPORTED_FORMATS) || (LLUI_GC_SUPPORTED_FORMATS <= 1)
683 
684 /*
685  * The VEE port supports several destination formats. All drawing functions use a
686  * dedicated table to redirect to the right implementation. The VEE Port must implement
687  * the functions UI_DRAWING_is_drawer_X() to identify the right drawer according to
688  * the destination format.
689  *
690  * The "DEFAULT" functions (see below) are used as element "0" of the tables (this is the
691  * display buffer format).
692  */
693 
694 int32_t LLUI_DISPLAY_IMPL_getDrawerIdentifier(jbyte image_format) {
695 
696  int32_t index;
697 
698  if (LLUI_DISPLAY_isDisplayFormat(image_format)) {
699  index = 0;
700  } else if (UI_DRAWING_is_drawer_1(image_format)) {
701  index = 1;
702 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
703  } else if (UI_DRAWING_is_drawer_2(image_format)) {
704  index = 2;
705 #endif
706  }
707  else {
708  // unknown format
709  index = -1;
710  }
711 
712  return index;
713 }
714 
715 /*
716  * @brief See the header file for the function documentation
717  *
718  * Implementation details: The new image to create is an immutable image or a mutable image.
719  *
720  * - If it is a mutable image, that means a drawer is able to draw into it (see
721  * LLUI_DISPLAY_IMPL_getDrawerIdentifier()). In this case, this function redirects the
722  * implementation to the drawer (that should be able to adjust image characteristics if
723  * required).
724  *
725  * - If it is an immutable image (PNG decoder, automatic image format convert, etc.), that
726  * means (most of the time) no drawer can manage this image format. In such case, this function
727  * redirects the implementation to the default implementation (the indirection table
728  * UI_DRAWER_getNewImageStrideInBytes points to the default function at index 0).
729  *
730  * - In the case a drawer is available for this new immutable image, this function redirects
731  * to the drawer.
732  */
733 uint32_t LLUI_DISPLAY_IMPL_getNewImageStrideInBytes(jbyte image_format, uint32_t width, uint32_t height, uint32_t default_stride) {
734  int32_t drawer = LLUI_DISPLAY_IMPL_getDrawerIdentifier(image_format);
735  drawer = (drawer >= 0) ? drawer : 0;
736  return (*UI_DRAWER_getNewImageStrideInBytes[drawer])(image_format, width, height, default_stride);
737 }
738 
739 // See the header file foar the function documentation and implementation of
740 // LLUI_DISPLAY_IMPL_getNewImageStrideInBytes
741 void LLUI_DISPLAY_IMPL_adjustNewImageCharacteristics(jbyte image_format, uint32_t width, uint32_t height, uint32_t* data_size, uint32_t* data_alignment) {
742  int32_t drawer = LLUI_DISPLAY_IMPL_getDrawerIdentifier(image_format);
743  drawer = (drawer >= 0) ? drawer : 0;
744  (*UI_DRAWER_adjustNewImageCharacteristics[drawer])(image_format, width, height, data_size, data_alignment);
745 }
746 
747 // See the header file for the function documentation and implementation of
748 // LLUI_DISPLAY_IMPL_getNewImageStrideInBytes
749 void LLUI_DISPLAY_IMPL_initializeNewImage(MICROUI_Image* image) {
750  int32_t drawer = LLUI_DISPLAY_IMPL_getDrawerIdentifier(image->format);
751  drawer = (drawer >= 0) ? drawer : 0;
752  (*UI_DRAWER_initializeNewImage[drawer])(image);
753 }
754 
755 // See the header file for the function documentation and implementation of
756 // LLUI_DISPLAY_IMPL_getNewImageStrideInBytes
757 void LLUI_DISPLAY_IMPL_freeImageResources(MICROUI_Image* image) {
758  int32_t drawer = LLUI_DISPLAY_IMPL_getDrawerIdentifier(image->format);
759  drawer = (drawer >= 0) ? drawer : 0;
760  (*UI_DRAWER_freeImageResources[drawer])(image);
761 }
762 
763 #endif // #if !defined(LLUI_GC_SUPPORTED_FORMATS) || (LLUI_GC_SUPPORTED_FORMATS <= 1)
764 
765 // --------------------------------------------------------------------------------
766 // ui_drawing.h functions
767 // (the function names don't differ regardless of the available number of destination formats)
768 // --------------------------------------------------------------------------------
769 
770 // See the header file for the function documentation
771 BSP_DECLARE_WEAK_FCNT uint32_t UI_DRAWING_getNewImageStrideInBytes(jbyte image_format, uint32_t width, uint32_t height, uint32_t default_stride) {
772  (void)image_format;
773  (void)width;
774  (void)height;
775  // no specific stride by default
776  return default_stride;
777 }
778 
779 // See the header file for the function documentation
780 BSP_DECLARE_WEAK_FCNT void UI_DRAWING_adjustNewImageCharacteristics(jbyte image_format, uint32_t width, uint32_t height, uint32_t* data_size, uint32_t* data_alignment){
781  (void)image_format;
782  (void)width;
783  (void)height;
784  (void)data_size;
785  (void)data_alignment;
786  // nothing to adjust by default
787 }
788 
789 // See the header file for the function documentation
790 BSP_DECLARE_WEAK_FCNT void UI_DRAWING_initializeNewImage(MICROUI_Image* image){
791  (void)image;
792  // nothing to initialize by default
793 }
794 
795 // See the header file for the function documentation
796 BSP_DECLARE_WEAK_FCNT void UI_DRAWING_freeImageResources(MICROUI_Image* image){
797  (void)image;
798  // nothing to initialize by default
799 }
800 
801 // --------------------------------------------------------------------------------
802 // ui_drawing.h functions
803 // (the function names differ according to the available number of destination formats)
804 // --------------------------------------------------------------------------------
805 
806 // See the header file for the function documentation
807 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_writePixel(MICROUI_GraphicsContext* gc, jint x, jint y){
808  return UI_DRAWING_SOFT_writePixel(gc, x, y);
809 }
810 
811 // See the header file for the function documentation
812 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawLine(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY){
813  return UI_DRAWING_SOFT_drawLine(gc, startX, startY, endX, endY);
814 }
815 
816 // See the header file for the function documentation
817 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawHorizontalLine(MICROUI_GraphicsContext* gc, jint x1, jint x2, jint y){
818  return UI_DRAWING_SOFT_drawHorizontalLine(gc, x1, x2, y);
819 }
820 
821 // See the header file for the function documentation
822 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawVerticalLine(MICROUI_GraphicsContext* gc, jint x, jint y1, jint y2){
823  return UI_DRAWING_SOFT_drawVerticalLine(gc, x, y1, y2);
824 }
825 
826 // See the header file for the function documentation
827 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawRectangle(MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2){
828  return UI_DRAWING_SOFT_drawRectangle(gc, x1, y1, x2, y2);
829 }
830 
831 // See the header file for the function documentation
832 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_fillRectangle(MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2){
833  return UI_DRAWING_SOFT_fillRectangle(gc, x1, y1, x2, y2);
834 }
835 
836 // See the header file for the function documentation
837 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawRoundedRectangle(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight){
838  return UI_DRAWING_SOFT_drawRoundedRectangle(gc, x, y, width, height, cornerEllipseWidth, cornerEllipseHeight);
839 }
840 
841 // See the header file for the function documentation
842 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_fillRoundedRectangle(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight){
843  return UI_DRAWING_SOFT_fillRoundedRectangle(gc, x, y, width, height, cornerEllipseWidth, cornerEllipseHeight);
844 }
845 
846 // See the header file for the function documentation
847 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawCircleArc(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle){
848  return UI_DRAWING_SOFT_drawCircleArc(gc, x, y, diameter, startAngle, arcAngle);
849 }
850 
851 // See the header file for the function documentation
852 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawEllipseArc(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle){
853  return UI_DRAWING_SOFT_drawEllipseArc(gc, x, y, width, height, startAngle, arcAngle);
854 }
855 
856 // See the header file for the function documentation
857 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_fillCircleArc(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle){
858  return UI_DRAWING_SOFT_fillCircleArc(gc, x, y, diameter, startAngle, arcAngle);
859 }
860 
861 // See the header file for the function documentation
862 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_fillEllipseArc(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle){
863  return UI_DRAWING_SOFT_fillEllipseArc(gc, x, y, width, height, startAngle, arcAngle);
864 }
865 
866 // See the header file for the function documentation
867 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawEllipse(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height){
868  return UI_DRAWING_SOFT_drawEllipse(gc, x, y, width, height);
869 }
870 
871 // See the header file for the function documentation
872 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_fillEllipse(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height){
873  return UI_DRAWING_SOFT_fillEllipse(gc, x, y, width, height);
874 }
875 
876 // See the header file for the function documentation
877 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawCircle(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter){
878  return UI_DRAWING_SOFT_drawCircle(gc, x, y, diameter);
879 }
880 
881 // See the header file for the function documentation
882 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_fillCircle(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter){
883  return UI_DRAWING_SOFT_fillCircle(gc, x, y, diameter);
884 }
885 
886 // See the header file for the function documentation
887 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawImage(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha){
888 #if !defined(LLUI_IMAGE_CUSTOM_FORMATS)
889  return UI_DRAWING_SOFT_drawImage(gc, img, regionX, regionY, width, height, x, y, alpha);
890 #else
891  return UI_IMAGE_DRAWING_draw(gc, img, regionX, regionY, width, height, x, y, alpha);
892 #endif
893 }
894 
895 // See the header file for the function documentation
896 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_copyImage(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y){
897 #if !defined(LLUI_IMAGE_CUSTOM_FORMATS)
898  return UI_DRAWING_SOFT_copyImage(gc, img, regionX, regionY, width, height, x, y);
899 #else
900  return UI_IMAGE_DRAWING_copy(gc, img, regionX, regionY, width, height, x, y);
901 #endif
902 }
903 
904 // See the header file for the function documentation
905 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawRegion(MICROUI_GraphicsContext* gc, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha){
906 #if !defined(LLUI_IMAGE_CUSTOM_FORMATS)
907  return UI_DRAWING_SOFT_drawRegion(gc, regionX, regionY, width, height, x, y, alpha);
908 #else
909  return UI_IMAGE_DRAWING_drawRegion(gc, regionX, regionY, width, height, x, y, alpha);
910 #endif
911 }
912 
913 // See the header file for the function documentation
914 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawThickFadedPoint(MICROUI_GraphicsContext* gc, jint x, jint y, jint thickness, jint fade){
915  return DW_DRAWING_SOFT_drawThickFadedPoint(gc, x, y, thickness, fade);
916 }
917 
918 // See the header file for the function documentation
919 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawThickFadedLine(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness, jint fade, DRAWING_Cap startCap, DRAWING_Cap endCap){
920  return DW_DRAWING_SOFT_drawThickFadedLine(gc, startX, startY, endX, endY, thickness, fade, startCap, endCap);
921 }
922 
923 // See the header file for the function documentation
924 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawThickFadedCircle(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness, jint fade){
925  return DW_DRAWING_SOFT_drawThickFadedCircle(gc, x, y, diameter, thickness, fade);
926 }
927 
928 // See the header file for the function documentation
929 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawThickFadedCircleArc(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness, jint fade, DRAWING_Cap start, DRAWING_Cap end){
930  return DW_DRAWING_SOFT_drawThickFadedCircleArc(gc, x, y, diameter, startAngle, arcAngle, thickness, fade, start, end);
931 }
932 
933 // See the header file for the function documentation
934 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawThickFadedEllipse(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness, jint fade){
935  return DW_DRAWING_SOFT_drawThickFadedEllipse(gc, x, y, width, height, thickness, fade);
936 }
937 
938 // See the header file for the function documentation
939 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawThickLine(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness){
940  return DW_DRAWING_SOFT_drawThickLine(gc, startX, startY, endX, endY, thickness);
941 }
942 
943 // See the header file for the function documentation
944 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawThickCircle(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness){
945  return DW_DRAWING_SOFT_drawThickCircle(gc, x, y, diameter, thickness);
946 }
947 
948 // See the header file for the function documentation
949 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawThickEllipse(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness){
950  return DW_DRAWING_SOFT_drawThickEllipse(gc, x, y, width, height, thickness);
951 }
952 
953 // See the header file for the function documentation
954 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawThickCircleArc(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness){
955  return DW_DRAWING_SOFT_drawThickCircleArc(gc, x, y, diameter, startAngle, arcAngle, thickness);
956 }
957 
958 // See the header file for the function documentation
959 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawFlippedImage(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, DRAWING_Flip transformation, jint alpha){
960 #if !defined(LLUI_IMAGE_CUSTOM_FORMATS)
961  return DW_DRAWING_SOFT_drawFlippedImage(gc, img, regionX, regionY, width, height, x, y, transformation, alpha);
962 #else
963  return UI_IMAGE_DRAWING_drawFlipped(gc, img, regionX, regionY, width, height, x, y, transformation, alpha);
964 #endif
965 }
966 
967 // See the header file for the function documentation
968 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawRotatedImageNearestNeighbor(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha){
969 #if !defined(LLUI_IMAGE_CUSTOM_FORMATS)
970  return DW_DRAWING_SOFT_drawRotatedImageNearestNeighbor(gc, img, x, y, rotationX, rotationY, angle, alpha);
971 #else
972  return UI_IMAGE_DRAWING_drawRotatedNearestNeighbor(gc, img, x, y, rotationX, rotationY, angle, alpha);
973 #endif
974 }
975 
976 // See the header file for the function documentation
977 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawRotatedImageBilinear(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha){
978 #if !defined(LLUI_IMAGE_CUSTOM_FORMATS)
979  return DW_DRAWING_SOFT_drawRotatedImageBilinear(gc, img, x, y, rotationX, rotationY, angle, alpha);
980 #else
981  return UI_IMAGE_DRAWING_drawRotatedBilinear(gc, img, x, y, rotationX, rotationY, angle, alpha);
982 #endif
983 }
984 
985 // See the header file for the function documentation
986 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawScaledImageNearestNeighbor(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha){
987 #if !defined(LLUI_IMAGE_CUSTOM_FORMATS)
988  return DW_DRAWING_SOFT_drawScaledImageNearestNeighbor(gc, img, x, y, factorX, factorY, alpha);
989 #else
990  return UI_IMAGE_DRAWING_drawScaledNearestNeighbor(gc, img, x, y, factorX, factorY, alpha);
991 #endif
992 }
993 
994 // See the header file for the function documentation
995 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_DEFAULT_drawScaledImageBilinear(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha){
996 #if !defined(LLUI_IMAGE_CUSTOM_FORMATS)
997  return DW_DRAWING_SOFT_drawScaledImageBilinear(gc, img, x, y, factorX, factorY, alpha);
998 #else
999  return UI_IMAGE_DRAWING_drawScaledBilinear(gc, img, x, y, factorX, factorY, alpha);
1000 #endif
1001 }
1002 
1003 #if defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
1004 
1005 /*
1006  * The VEE port supports several destination formats. All drawing functions use a
1007  * dedicated table to redirect to the right implementation. The VEE Port must implement
1008  * the functions UI_DRAWING_is_drawer_X() to identify the right drawer according to
1009  * the destination format.
1010  *
1011  * The "DEFAULT" functions (see above) are used as element "0" of the tables (== display
1012  * buffer format).
1013  */
1014 
1015 // See the header file for the function documentation
1016 DRAWING_Status UI_DRAWING_writePixel(MICROUI_GraphicsContext* gc, jint x, jint y){
1017  return (*UI_DRAWER_writePixel[gc->drawer])(gc, x, y);
1018 }
1019 
1020 // See the header file for the function documentation
1021 DRAWING_Status UI_DRAWING_drawLine(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY){
1022  return (*UI_DRAWER_drawLine[gc->drawer])(gc, startX, startY, endX, endY);
1023 }
1024 
1025 // See the header file for the function documentation
1026 DRAWING_Status UI_DRAWING_drawHorizontalLine(MICROUI_GraphicsContext* gc, jint x1, jint x2, jint y){
1027  return (*UI_DRAWER_drawHorizontalLine[gc->drawer])(gc, x1, x2, y);
1028 }
1029 
1030 // See the header file for the function documentation
1031 DRAWING_Status UI_DRAWING_drawVerticalLine(MICROUI_GraphicsContext* gc, jint x, jint y1, jint y2){
1032  return (*UI_DRAWER_drawVerticalLine[gc->drawer])(gc, x, y1, y2);
1033 }
1034 
1035 // See the header file for the function documentation
1036 DRAWING_Status UI_DRAWING_drawRectangle(MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2){
1037  return (*UI_DRAWER_drawRectangle[gc->drawer])(gc, x1, y1, x2, y2);
1038 }
1039 
1040 // See the header file for the function documentation
1041 DRAWING_Status UI_DRAWING_fillRectangle(MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2){
1042  return (*UI_DRAWER_fillRectangle[gc->drawer])(gc, x1, y1, x2, y2);
1043 }
1044 
1045 // See the header file for the function documentation
1046 DRAWING_Status UI_DRAWING_drawRoundedRectangle(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight){
1047  return (*UI_DRAWER_drawRoundedRectangle[gc->drawer])(gc, x, y, width, height, cornerEllipseWidth, cornerEllipseHeight);
1048 }
1049 
1050 // See the header file for the function documentation
1051 DRAWING_Status UI_DRAWING_fillRoundedRectangle(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight){
1052  return (*UI_DRAWER_fillRoundedRectangle[gc->drawer])(gc, x, y, width, height, cornerEllipseWidth, cornerEllipseHeight);
1053 }
1054 
1055 // See the header file for the function documentation
1056 DRAWING_Status UI_DRAWING_drawCircleArc(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle){
1057  return (*UI_DRAWER_drawCircleArc[gc->drawer])(gc, x, y, diameter, startAngle, arcAngle);
1058 }
1059 
1060 // See the header file for the function documentation
1061 DRAWING_Status UI_DRAWING_drawEllipseArc(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle){
1062  return (*UI_DRAWER_drawEllipseArc[gc->drawer])(gc, x, y, width, height, startAngle, arcAngle);
1063 }
1064 
1065 // See the header file for the function documentation
1066 DRAWING_Status UI_DRAWING_fillCircleArc(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle){
1067  return (*UI_DRAWER_fillCircleArc[gc->drawer])(gc, x, y, diameter, startAngle, arcAngle);
1068 }
1069 
1070 // See the header file for the function documentation
1071 DRAWING_Status UI_DRAWING_fillEllipseArc(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle){
1072  return (*UI_DRAWER_fillEllipseArc[gc->drawer])(gc, x, y, width, height, startAngle, arcAngle);
1073 }
1074 
1075 // See the header file for the function documentation
1076 DRAWING_Status UI_DRAWING_drawEllipse(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height){
1077  return (*UI_DRAWER_drawEllipse[gc->drawer])(gc, x, y, width, height);
1078 }
1079 
1080 // See the header file for the function documentation
1081 DRAWING_Status UI_DRAWING_fillEllipse(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height){
1082  return (*UI_DRAWER_fillEllipse[gc->drawer])(gc, x, y, width, height);
1083 }
1084 
1085 // See the header file for the function documentation
1086 DRAWING_Status UI_DRAWING_drawCircle(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter){
1087  return (*UI_DRAWER_drawCircle[gc->drawer])(gc, x, y, diameter);
1088 }
1089 
1090 // See the header file for the function documentation
1091 DRAWING_Status UI_DRAWING_fillCircle(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter){
1092  return (*UI_DRAWER_fillCircle[gc->drawer])(gc, x, y, diameter);
1093 }
1094 
1095 // See the header file for the function documentation
1096 DRAWING_Status UI_DRAWING_drawImage(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha){
1097  return (*UI_DRAWER_drawImage[gc->drawer])(gc, img, regionX, regionY, width, height, x, y, alpha);
1098 }
1099 
1100 // See the header file for the function documentation
1101 DRAWING_Status UI_DRAWING_copyImage(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y){
1102  return (*UI_DRAWER_copyImage[gc->drawer])(gc, img, regionX, regionY, width, height, x, y);
1103 }
1104 
1105 // See the header file for the function documentation
1106 DRAWING_Status UI_DRAWING_drawRegion(MICROUI_GraphicsContext* gc, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha){
1107  return (*UI_DRAWER_drawRegion[gc->drawer])(gc, regionX, regionY, width, height, x, y, alpha);
1108 }
1109 
1110 // See the header file for the function documentation
1111 DRAWING_Status UI_DRAWING_drawThickFadedPoint(MICROUI_GraphicsContext* gc, jint x, jint y, jint thickness, jint fade){
1112  return (*UI_DRAWER_drawThickFadedPoint[gc->drawer])(gc, x, y, thickness, fade);
1113 }
1114 
1115 // See the header file for the function documentation
1116 DRAWING_Status UI_DRAWING_drawThickFadedLine(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness, jint fade, DRAWING_Cap startCap, DRAWING_Cap endCap){
1117  return (*UI_DRAWER_drawThickFadedLine[gc->drawer])(gc, startX, startY, endX, endY, thickness, fade, startCap, endCap);
1118 }
1119 
1120 // See the header file for the function documentation
1121 DRAWING_Status UI_DRAWING_drawThickFadedCircle(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness, jint fade){
1122  return (*UI_DRAWER_drawThickFadedCircle[gc->drawer])(gc, x, y, diameter, thickness, fade);
1123 }
1124 
1125 // See the header file for the function documentation
1126 DRAWING_Status UI_DRAWING_drawThickFadedCircleArc(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness, jint fade, DRAWING_Cap start, DRAWING_Cap end){
1127  return (*UI_DRAWER_drawThickFadedCircleArc[gc->drawer])(gc, x, y, diameter, startAngle, arcAngle, thickness, fade, start, end);
1128 }
1129 
1130 // See the header file for the function documentation
1131 DRAWING_Status UI_DRAWING_drawThickFadedEllipse(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness, jint fade){
1132  return (*UI_DRAWER_drawThickFadedEllipse[gc->drawer])(gc, x, y, width, height, thickness, fade);
1133 }
1134 
1135 // See the header file for the function documentation
1136 DRAWING_Status UI_DRAWING_drawThickLine(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness){
1137  return (*UI_DRAWER_drawThickLine[gc->drawer])(gc, startX, startY, endX, endY, thickness);
1138 }
1139 
1140 // See the header file for the function documentation
1141 DRAWING_Status UI_DRAWING_drawThickCircle(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness){
1142  return (*UI_DRAWER_drawThickCircle[gc->drawer])(gc, x, y, diameter, thickness);
1143 }
1144 
1145 // See the header file for the function documentation
1146 DRAWING_Status UI_DRAWING_drawThickEllipse(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness){
1147  return (*UI_DRAWER_drawThickEllipse[gc->drawer])(gc, x, y, width, height, thickness);
1148 }
1149 
1150 // See the header file for the function documentation
1151 DRAWING_Status UI_DRAWING_drawThickCircleArc(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness){
1152  return (*UI_DRAWER_drawThickCircleArc[gc->drawer])(gc, x, y, diameter, startAngle, arcAngle, thickness);
1153 }
1154 
1155 // See the header file for the function documentation
1156 DRAWING_Status UI_DRAWING_drawFlippedImage(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, DRAWING_Flip transformation, jint alpha){
1157  return (*UI_DRAWER_drawFlippedImage[gc->drawer])(gc, img, regionX, regionY, width, height, x, y, transformation, alpha);
1158 }
1159 
1160 // See the header file for the function documentation
1161 DRAWING_Status UI_DRAWING_drawRotatedImageNearestNeighbor(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha){
1162  return (*UI_DRAWER_drawRotatedImageNearestNeighbor[gc->drawer])(gc, img, x, y, rotationX, rotationY, angle, alpha);
1163 }
1164 
1165 // See the header file for the function documentation
1166 DRAWING_Status UI_DRAWING_drawRotatedImageBilinear(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha){
1167  return (*UI_DRAWER_drawRotatedImageBilinear[gc->drawer])(gc, img, x, y, rotationX, rotationY, angle, alpha);
1168 }
1169 
1170 // See the header file for the function documentation
1171 DRAWING_Status UI_DRAWING_drawScaledImageNearestNeighbor(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha){
1172  return (*UI_DRAWER_drawScaledImageNearestNeighbor[gc->drawer])(gc, img, x, y, factorX, factorY, alpha);
1173 }
1174 
1175 // See the header file for the function documentation
1176 DRAWING_Status UI_DRAWING_drawScaledImageBilinear(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha){
1177  return (*UI_DRAWER_drawScaledImageBilinear[gc->drawer])(gc, img, x, y, factorX, factorY, alpha);
1178 }
1179 
1180 /*
1181  * The next functions are used as elements "1" of the tables. They call STUB functions and should be
1182  * overridden by the drawer that manages the format identified by the index "1".
1183  *
1184  * Only the functions UI_DRAWING_adjustNewImageCharacteristics_1() and UI_DRAWING_initializeNewImage_1()
1185  * are mandatory. If the drawing engine (for the format identified by the index "1") does not override these
1186  * functions, the application will not be able to open an image with the associated format (the default functions
1187  * are implemented as weak functions in case there is no drawing engine for this format).
1188  *
1189  * If no engine supports the format identified by the index "1", the application will not be able to open
1190  * an image with the associated format.
1191  */
1192 
1193 BSP_DECLARE_WEAK_FCNT bool UI_DRAWING_is_drawer_1(jbyte image_format) {
1194  (void)image_format;
1195  // default behavior: format is not supported
1196  return false;
1197 }
1198 
1199 // See the header file for the function documentation
1200 BSP_DECLARE_WEAK_FCNT uint32_t UI_DRAWING_getNewImageStrideInBytes_1(jbyte image_format, uint32_t width, uint32_t height, uint32_t default_stride){
1201  (void)image_format;
1202  (void)width;
1203  (void)height;
1204  // does nothing and will throw an error if the application tries to open this kind of image.
1205  // see above.
1206  return default_stride;
1207 }
1208 
1209 // See the header file for the function documentation
1210 BSP_DECLARE_WEAK_FCNT void UI_DRAWING_adjustNewImageCharacteristics_1(jbyte image_format, uint32_t width, uint32_t height, uint32_t* data_size, uint32_t* data_alignment){
1211  (void)image_format;
1212  (void)width;
1213  (void)height;
1214  (void)data_size;
1215  (void)data_alignment;
1216  // does nothing and will throw an error if the application tries to open this kind of image.
1217  // see above.
1218 }
1219 
1220 // See the header file for the function documentation
1221 BSP_DECLARE_WEAK_FCNT void UI_DRAWING_initializeNewImage_1(MICROUI_Image* image){
1222  (void)image;
1223  // nothing to do
1224 }
1225 
1226 // See the header file for the function documentation
1227 BSP_DECLARE_WEAK_FCNT void UI_DRAWING_freeImageResources_1(MICROUI_Image* image){
1228  (void)image;
1229  // nothing to do
1230 }
1231 
1232 // See the header file for the function documentation
1233 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_writePixel_1(MICROUI_GraphicsContext* gc, jint x, jint y){
1234  return UI_DRAWING_STUB_writePixel(gc, x, y);
1235 }
1236 
1237 // See the header file for the function documentation
1238 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawLine_1(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY){
1239  return UI_DRAWING_STUB_drawLine(gc, startX, startY, endX, endY);
1240 }
1241 
1242 // See the header file for the function documentation
1243 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawHorizontalLine_1(MICROUI_GraphicsContext* gc, jint x1, jint x2, jint y){
1244  return UI_DRAWING_STUB_drawHorizontalLine(gc, x1, x2, y);
1245 }
1246 
1247 // See the header file for the function documentation
1248 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawVerticalLine_1(MICROUI_GraphicsContext* gc, jint x, jint y1, jint y2){
1249  return UI_DRAWING_STUB_drawVerticalLine(gc, x, y1, y2);
1250 }
1251 
1252 // See the header file for the function documentation
1253 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawRectangle_1(MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2){
1254  return UI_DRAWING_STUB_drawRectangle(gc, x1, y1, x2, y2);
1255 }
1256 
1257 // See the header file for the function documentation
1258 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_fillRectangle_1(MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2){
1259  return UI_DRAWING_STUB_fillRectangle(gc, x1, y1, x2, y2);
1260 }
1261 
1262 // See the header file for the function documentation
1263 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawRoundedRectangle_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight){
1264  return UI_DRAWING_STUB_drawRoundedRectangle(gc, x, y, width, height, cornerEllipseWidth, cornerEllipseHeight);
1265 }
1266 
1267 // See the header file for the function documentation
1268 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_fillRoundedRectangle_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight){
1269  return UI_DRAWING_STUB_fillRoundedRectangle(gc, x, y, width, height, cornerEllipseWidth, cornerEllipseHeight);
1270 }
1271 
1272 // See the header file for the function documentation
1273 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawCircleArc_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle){
1274  return UI_DRAWING_STUB_drawCircleArc(gc, x, y, diameter, startAngle, arcAngle);
1275 }
1276 
1277 // See the header file for the function documentation
1278 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawEllipseArc_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle){
1279  return UI_DRAWING_STUB_drawEllipseArc(gc, x, y, width, height, startAngle, arcAngle);
1280 }
1281 
1282 // See the header file for the function documentation
1283 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_fillCircleArc_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle){
1284  return UI_DRAWING_STUB_fillCircleArc(gc, x, y, diameter, startAngle, arcAngle);
1285 }
1286 
1287 // See the header file for the function documentation
1288 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_fillEllipseArc_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle){
1289  return UI_DRAWING_STUB_fillEllipseArc(gc, x, y, width, height, startAngle, arcAngle);
1290 }
1291 
1292 // See the header file for the function documentation
1293 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawEllipse_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height){
1294  return UI_DRAWING_STUB_drawEllipse(gc, x, y, width, height);
1295 }
1296 
1297 // See the header file for the function documentation
1298 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_fillEllipse_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height){
1299  return UI_DRAWING_STUB_fillEllipse(gc, x, y, width, height);
1300 }
1301 
1302 // See the header file for the function documentation
1303 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawCircle_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter){
1304  return UI_DRAWING_STUB_drawCircle(gc, x, y, diameter);
1305 }
1306 
1307 // See the header file for the function documentation
1308 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_fillCircle_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter){
1309  return UI_DRAWING_STUB_fillCircle(gc, x, y, diameter);
1310 }
1311 
1312 // See the header file for the function documentation
1313 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawImage_1(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha){
1314  return UI_IMAGE_DRAWING_draw(gc, img, regionX, regionY, width, height, x, y, alpha);
1315 }
1316 
1317 // See the header file for the function documentation
1318 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_copyImage_1(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y){
1319  return UI_IMAGE_DRAWING_copy(gc, img, regionX, regionY, width, height, x, y);
1320 }
1321 
1322 // See the header file for the function documentation
1323 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawRegion_1(MICROUI_GraphicsContext* gc, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha){
1324  return UI_IMAGE_DRAWING_drawRegion(gc, regionX, regionY, width, height, x, y, alpha);
1325 }
1326 
1327 // See the header file for the function documentation
1328 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickFadedPoint_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint thickness, jint fade){
1329  return UI_DRAWING_STUB_drawThickFadedPoint(gc, x, y, thickness, fade);
1330 }
1331 
1332 // See the header file for the function documentation
1333 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickFadedLine_1(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness, jint fade, DRAWING_Cap startCap, DRAWING_Cap endCap){
1334  return UI_DRAWING_STUB_drawThickFadedLine(gc, startX, startY, endX, endY, thickness, fade, startCap, endCap);
1335 }
1336 
1337 // See the header file for the function documentation
1338 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickFadedCircle_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness, jint fade){
1339  return UI_DRAWING_STUB_drawThickFadedCircle(gc, x, y, diameter, thickness, fade);
1340 }
1341 
1342 // See the header file for the function documentation
1343 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickFadedCircleArc_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness, jint fade, DRAWING_Cap start, DRAWING_Cap end){
1344  return UI_DRAWING_STUB_drawThickFadedCircleArc(gc, x, y, diameter, startAngle, arcAngle, thickness, fade, start, end);
1345 }
1346 
1347 // See the header file for the function documentation
1348 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickFadedEllipse_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness, jint fade){
1349  return UI_DRAWING_STUB_drawThickFadedEllipse(gc, x, y, width, height, thickness, fade);
1350 }
1351 
1352 // See the header file for the function documentation
1353 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickLine_1(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness){
1354  return UI_DRAWING_STUB_drawThickLine(gc, startX, startY, endX, endY, thickness);
1355 }
1356 
1357 // See the header file for the function documentation
1358 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickCircle_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness){
1359  return UI_DRAWING_STUB_drawThickCircle(gc, x, y, diameter, thickness);
1360 }
1361 
1362 // See the header file for the function documentation
1363 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickEllipse_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness){
1364  return UI_DRAWING_STUB_drawThickEllipse(gc, x, y, width, height, thickness);
1365 }
1366 
1367 // See the header file for the function documentation
1368 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickCircleArc_1(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness){
1369  return UI_DRAWING_STUB_drawThickCircleArc(gc, x, y, diameter, startAngle, arcAngle, thickness);
1370 }
1371 
1372 // See the header file for the function documentation
1373 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawFlippedImage_1(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, DRAWING_Flip transformation, jint alpha){
1374  return UI_IMAGE_DRAWING_drawFlipped(gc, img, regionX, regionY, width, height, x, y, transformation, alpha);
1375 }
1376 
1377 // See the header file for the function documentation
1378 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawRotatedImageNearestNeighbor_1(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha){
1379  return UI_IMAGE_DRAWING_drawRotatedNearestNeighbor(gc, img, x, y, rotationX, rotationY, angle, alpha);
1380 }
1381 
1382 // See the header file for the function documentation
1383 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawRotatedImageBilinear_1(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha){
1384  return UI_IMAGE_DRAWING_drawRotatedBilinear(gc, img, x, y, rotationX, rotationY, angle, alpha);
1385 }
1386 
1387 // See the header file for the function documentation
1388 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawScaledImageNearestNeighbor_1(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha){
1389  return UI_IMAGE_DRAWING_drawScaledNearestNeighbor(gc, img, x, y, factorX, factorY, alpha);
1390 }
1391 
1392 // See the header file for the function documentation
1393 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawScaledImageBilinear_1(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha){
1394  return UI_IMAGE_DRAWING_drawScaledBilinear(gc, img, x, y, factorX, factorY, alpha);
1395 }
1396 
1397 #if (LLUI_GC_SUPPORTED_FORMATS > 2)
1398 
1399 /*
1400  * The next functions are used as elements "2" of the tables. They call STUB functions and should be
1401  * overridden by the drawer that manages the format identified by the index "2".
1402  *
1403  * Only the functions UI_DRAWING_adjustNewImageCharacteristics_2() and UI_DRAWING_initializeNewImage_2()
1404  * are mandatory. If the drawing engine (for the format identified by the index "2") does not override these
1405  * functions, the application will not be able to open an image with the associated format (the default functions
1406  * are implemented as weak functions in case there is no drawing engine for this format).
1407  *
1408  * If no engine supports the format identified by the index "2", the application will not be able to open
1409  * an image with the associated format.
1410  */
1411 
1412 BSP_DECLARE_WEAK_FCNT bool UI_DRAWING_is_drawer_2(jbyte image_format) {
1413  (void)image_format;
1414  // default behavior: format is not supported
1415  return false;
1416 }
1417 
1418 // See the header file for the function documentation
1419 BSP_DECLARE_WEAK_FCNT uint32_t UI_DRAWING_getNewImageStrideInBytes_2(jbyte image_format, uint32_t width, uint32_t height, uint32_t default_stride){
1420  (void)image_format;
1421  (void)width;
1422  (void)height;
1423  // does nothing and will throw an error if the application tries to open this kind of image.
1424  // see above.
1425  return default_stride;
1426 }
1427 
1428 // See the header file for the function documentation
1429 BSP_DECLARE_WEAK_FCNT void UI_DRAWING_adjustNewImageCharacteristics_2(jbyte image_format, uint32_t width, uint32_t height, uint32_t* data_size, uint32_t* data_alignment){
1430  (void)image_format;
1431  (void)width;
1432  (void)height;
1433  (void)data_size;
1434  (void)data_alignment;
1435  // does nothing and will throw an error if the application tries to open this kind of image.
1436  // see above.
1437 }
1438 
1439 // See the header file for the function documentation
1440 BSP_DECLARE_WEAK_FCNT void UI_DRAWING_initializeNewImage_2(MICROUI_Image* image){
1441  (void)image;
1442  // nothing to do
1443 }
1444 
1445 // See the header file for the function documentation
1446 BSP_DECLARE_WEAK_FCNT void UI_DRAWING_freeImageResources_2(MICROUI_Image* image){
1447  (void)image;
1448  // nothing to do
1449 }
1450 
1451 // See the header file for the function documentation
1452 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_writePixel_2(MICROUI_GraphicsContext* gc, jint x, jint y){
1453  return UI_DRAWING_STUB_writePixel(gc, x, y);
1454 }
1455 
1456 // See the header file for the function documentation
1457 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawLine_2(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY){
1458  return UI_DRAWING_STUB_drawLine(gc, startX, startY, endX, endY);
1459 }
1460 
1461 // See the header file for the function documentation
1462 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawHorizontalLine_2(MICROUI_GraphicsContext* gc, jint x1, jint x2, jint y){
1463  return UI_DRAWING_STUB_drawHorizontalLine(gc, x1, x2, y);
1464 }
1465 
1466 // See the header file for the function documentation
1467 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawVerticalLine_2(MICROUI_GraphicsContext* gc, jint x, jint y1, jint y2){
1468  return UI_DRAWING_STUB_drawVerticalLine(gc, x, y1, y2);
1469 }
1470 
1471 // See the header file for the function documentation
1472 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawRectangle_2(MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2){
1473  return UI_DRAWING_STUB_drawRectangle(gc, x1, y1, x2, y2);
1474 }
1475 
1476 // See the header file for the function documentation
1477 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_fillRectangle_2(MICROUI_GraphicsContext* gc, jint x1, jint y1, jint x2, jint y2){
1478  return UI_DRAWING_STUB_fillRectangle(gc, x1, y1, x2, y2);
1479 }
1480 
1481 // See the header file for the function documentation
1482 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawRoundedRectangle_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight){
1483  return UI_DRAWING_STUB_drawRoundedRectangle(gc, x, y, width, height, cornerEllipseWidth, cornerEllipseHeight);
1484 }
1485 
1486 // See the header file for the function documentation
1487 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_fillRoundedRectangle_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint cornerEllipseWidth, jint cornerEllipseHeight){
1488  return UI_DRAWING_STUB_fillRoundedRectangle(gc, x, y, width, height, cornerEllipseWidth, cornerEllipseHeight);
1489 }
1490 
1491 // See the header file for the function documentation
1492 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawCircleArc_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle){
1493  return UI_DRAWING_STUB_drawCircleArc(gc, x, y, diameter, startAngle, arcAngle);
1494 }
1495 
1496 // See the header file for the function documentation
1497 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawEllipseArc_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle){
1498  return UI_DRAWING_STUB_drawEllipseArc(gc, x, y, width, height, startAngle, arcAngle);
1499 }
1500 
1501 // See the header file for the function documentation
1502 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_fillCircleArc_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle){
1503  return UI_DRAWING_STUB_fillCircleArc(gc, x, y, diameter, startAngle, arcAngle);
1504 }
1505 
1506 // See the header file for the function documentation
1507 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_fillEllipseArc_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jfloat startAngle, jfloat arcAngle){
1508  return UI_DRAWING_STUB_fillEllipseArc(gc, x, y, width, height, startAngle, arcAngle);
1509 }
1510 
1511 // See the header file for the function documentation
1512 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawEllipse_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height){
1513  return UI_DRAWING_STUB_drawEllipse(gc, x, y, width, height);
1514 }
1515 
1516 // See the header file for the function documentation
1517 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_fillEllipse_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height){
1518  return UI_DRAWING_STUB_fillEllipse(gc, x, y, width, height);
1519 }
1520 
1521 // See the header file for the function documentation
1522 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawCircle_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter){
1523  return UI_DRAWING_STUB_drawCircle(gc, x, y, diameter);
1524 }
1525 
1526 // See the header file for the function documentation
1527 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_fillCircle_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter){
1528  return UI_DRAWING_STUB_fillCircle(gc, x, y, diameter);
1529 }
1530 
1531 // See the header file for the function documentation
1532 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawImage_2(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha){
1533  return UI_IMAGE_DRAWING_draw(gc, img, regionX, regionY, width, height, x, y, alpha);
1534 }
1535 
1536 // See the header file for the function documentation
1537 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_copyImage_2(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y){
1538  return UI_IMAGE_DRAWING_copy(gc, img, regionX, regionY, width, height, x, y);
1539 }
1540 
1541 // See the header file for the function documentation
1542 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawRegion_2(MICROUI_GraphicsContext* gc, jint regionX, jint regionY, jint width, jint height, jint x, jint y, jint alpha){
1543  return UI_IMAGE_DRAWING_drawRegion(gc, regionX, regionY, width, height, x, y, alpha);
1544 }
1545 
1546 // See the header file for the function documentation
1547 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickFadedPoint_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint thickness, jint fade){
1548  return UI_DRAWING_STUB_drawThickFadedPoint(gc, x, y, thickness, fade);
1549 }
1550 
1551 // See the header file for the function documentation
1552 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickFadedLine_2(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness, jint fade, DRAWING_Cap startCap, DRAWING_Cap endCap){
1553  return UI_DRAWING_STUB_drawThickFadedLine(gc, startX, startY, endX, endY, thickness, fade, startCap, endCap);
1554 }
1555 
1556 // See the header file for the function documentation
1557 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickFadedCircle_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness, jint fade){
1558  return UI_DRAWING_STUB_drawThickFadedCircle(gc, x, y, diameter, thickness, fade);
1559 }
1560 
1561 // See the header file for the function documentation
1562 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickFadedCircleArc_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness, jint fade, DRAWING_Cap start, DRAWING_Cap end){
1563  return UI_DRAWING_STUB_drawThickFadedCircleArc(gc, x, y, diameter, startAngle, arcAngle, thickness, fade, start, end);
1564 }
1565 
1566 // See the header file for the function documentation
1567 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickFadedEllipse_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness, jint fade){
1568  return UI_DRAWING_STUB_drawThickFadedEllipse(gc, x, y, width, height, thickness, fade);
1569 }
1570 
1571 // See the header file for the function documentation
1572 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickLine_2(MICROUI_GraphicsContext* gc, jint startX, jint startY, jint endX, jint endY, jint thickness){
1573  return UI_DRAWING_STUB_drawThickLine(gc, startX, startY, endX, endY, thickness);
1574 }
1575 
1576 // See the header file for the function documentation
1577 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickCircle_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jint thickness){
1578  return UI_DRAWING_STUB_drawThickCircle(gc, x, y, diameter, thickness);
1579 }
1580 
1581 // See the header file for the function documentation
1582 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickEllipse_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint width, jint height, jint thickness){
1583  return UI_DRAWING_STUB_drawThickEllipse(gc, x, y, width, height, thickness);
1584 }
1585 
1586 // See the header file for the function documentation
1587 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawThickCircleArc_2(MICROUI_GraphicsContext* gc, jint x, jint y, jint diameter, jfloat startAngle, jfloat arcAngle, jint thickness){
1588  return UI_DRAWING_STUB_drawThickCircleArc(gc, x, y, diameter, startAngle, arcAngle, thickness);
1589 }
1590 
1591 // See the header file for the function documentation
1592 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawFlippedImage_2(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint regionX, jint regionY, jint width, jint height, jint x, jint y, DRAWING_Flip transformation, jint alpha){
1593  return UI_IMAGE_DRAWING_drawFlipped(gc, img, regionX, regionY, width, height, x, y, transformation, alpha);
1594 }
1595 
1596 // See the header file for the function documentation
1597 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawRotatedImageNearestNeighbor_2(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha){
1598  return UI_IMAGE_DRAWING_drawRotatedNearestNeighbor(gc, img, x, y, rotationX, rotationY, angle, alpha);
1599 }
1600 
1601 // See the header file for the function documentation
1602 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawRotatedImageBilinear_2(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jint rotationX, jint rotationY, jfloat angle, jint alpha){
1603  return UI_IMAGE_DRAWING_drawRotatedBilinear(gc, img, x, y, rotationX, rotationY, angle, alpha);
1604 }
1605 
1606 // See the header file for the function documentation
1607 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawScaledImageNearestNeighbor_2(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha){
1608  return UI_IMAGE_DRAWING_drawScaledNearestNeighbor(gc, img, x, y, factorX, factorY, alpha);
1609 }
1610 
1611 // See the header file for the function documentation
1612 BSP_DECLARE_WEAK_FCNT DRAWING_Status UI_DRAWING_drawScaledImageBilinear_2(MICROUI_GraphicsContext* gc, MICROUI_Image* img, jint x, jint y, jfloat factorX, jfloat factorY, jint alpha){
1613  return UI_IMAGE_DRAWING_drawScaledBilinear(gc, img, x, y, factorX, factorY, alpha);
1614 }
1615 
1616 #endif // (LLUI_GC_SUPPORTED_FORMATS > 2)
1617 
1618 #else // #if defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
1619 
1620 /*
1621  * The VEE port supports only one destination format: the display buffer format. The
1622  * application can only create immutable images or mutable images with the same format as
1623  * the display buffer. All drawing functions are redirected to the software implementation
1624  * by default. A third party implementation (often on a GPU) can replace each weak function
1625  * independently.
1626  *
1627  * The VEE Port can tune the new image characteristics to add a header before the pixel
1628  * array for instance.
1629  */
1630 
1631 #endif // #if defined(LLUI_GC_SUPPORTED_FORMATS) && (LLUI_GC_SUPPORTED_FORMATS > 1)
1632 
1633 // -----------------------------------------------------------------------------
1634 // EOF
1635 // -----------------------------------------------------------------------------