21 #include <LLVG_PAINTER_impl.h>
24 #include <LLUI_DISPLAY.h>
26 #include <LLVG_FONT_impl.h>
27 #include <LLVG_MATRIX_impl.h>
30 #include "vg_drawing.h"
39 jint LLVG_PAINTER_IMPL_drawPath(MICROUI_GraphicsContext *gc, jbyte *pathData, jint x, jint y, jfloat *matrix,
40 jint fillRule, jint blend, jint color) {
41 if (LLUI_DISPLAY_requestDrawing(gc, (SNI_callback) & LLVG_PAINTER_IMPL_drawPath)) {
42 VG_TRACE_DRAW_START(drawPathColor, gc, x, y);
43 jfloat translated_matrix[LLVG_MATRIX_SIZE];
44 VG_HELPER_prepare_matrix(translated_matrix, x, y, matrix);
45 DRAWING_Status status = VG_DRAWING_drawPath(gc, pathData, translated_matrix, fillRule, blend, color);
46 LLUI_DISPLAY_setDrawingStatus(status);
47 VG_TRACE_DRAW_END(drawPathColor, status);
53 jint LLVG_PAINTER_IMPL_drawGradient(MICROUI_GraphicsContext *gc, jbyte *pathData, jint x, jint y, jfloat *matrix,
54 jint fillRule, jint alpha, jint blend, jint *gradientData, jfloat *gradientMatrix) {
55 if (LLUI_DISPLAY_requestDrawing(gc, (SNI_callback) & LLVG_PAINTER_IMPL_drawGradient)) {
56 VG_TRACE_DRAW_START(drawPathGradient, gc, x, y);
57 jfloat translated_matrix[LLVG_MATRIX_SIZE];
58 VG_HELPER_prepare_matrix(translated_matrix, x, y, matrix);
59 DRAWING_Status status = VG_DRAWING_drawGradient(gc, pathData, translated_matrix, fillRule, alpha, blend,
60 gradientData, gradientMatrix);
61 LLUI_DISPLAY_setDrawingStatus(status);
62 VG_TRACE_DRAW_END(drawPathGradient, status);
68 jint LLVG_PAINTER_IMPL_drawString(MICROUI_GraphicsContext *gc, jchar *text, jint faceHandle, jfloat size, jfloat x,
69 jfloat y, jfloat *matrix, jint alpha, jint blend, jfloat letterSpacing) {
72 if (LLUI_DISPLAY_requestDrawing(gc, (SNI_callback) & (LLVG_PAINTER_IMPL_drawString))) {
73 DRAWING_Status status;
74 int length = (int)SNI_getArrayLength(text);
75 VG_TRACE_DRAW_START(drawStringColor, gc, length, (jint)x, (jint)y);
77 if (LLVG_FONT_UNLOADED != faceHandle) {
78 jfloat translated_matrix[LLVG_MATRIX_SIZE];
79 VG_HELPER_prepare_matrix(translated_matrix, x, y, matrix);
80 status = VG_DRAWING_drawString(gc, text, length, faceHandle, size, translated_matrix, alpha, blend,
82 ret = (jint)LLVG_SUCCESS;
84 status = DRAWING_DONE;
85 ret = (jint)LLVG_RESOURCE_CLOSED;
88 LLUI_DISPLAY_setDrawingStatus(status);
89 VG_TRACE_DRAW_END(drawStringColor, status);
96 jint LLVG_PAINTER_IMPL_drawStringGradient(MICROUI_GraphicsContext *gc, jchar *text, jint faceHandle, jfloat size,
97 jfloat x, jfloat y, jfloat *matrix, jint alpha, jint blend,
98 jfloat letterSpacing, jint *gradientData, jfloat *gradientMatrix) {
101 if (LLUI_DISPLAY_requestDrawing(gc, (SNI_callback) & (LLVG_PAINTER_IMPL_drawStringGradient))) {
102 DRAWING_Status status;
103 int length = (int)SNI_getArrayLength(text);
104 VG_TRACE_DRAW_START(drawStringGradient, gc, length, (jint)x, (jint)y);
106 if (LLVG_FONT_UNLOADED != faceHandle) {
107 jfloat translated_matrix[LLVG_MATRIX_SIZE];
108 VG_HELPER_prepare_matrix(translated_matrix, x, y, matrix);
109 status = VG_DRAWING_drawStringGradient(gc, text, length, faceHandle, size,
110 translated_matrix, alpha, blend, letterSpacing, gradientData,
112 ret = (jint)LLVG_SUCCESS;
114 status = DRAWING_DONE;
115 ret = (jint)LLVG_RESOURCE_CLOSED;
118 LLUI_DISPLAY_setDrawingStatus(status);
119 VG_TRACE_DRAW_END(drawStringGradient, status);
126 jint LLVG_PAINTER_IMPL_drawStringOnCircle(MICROUI_GraphicsContext *gc, jchar *text, jint faceHandle, jfloat size,
127 jint x, jint y, jfloat *matrix, jint alpha, jint blend, jfloat letterSpacing,
128 jfloat radius, jint direction) {
131 if (LLUI_DISPLAY_requestDrawing(gc, (SNI_callback) & (LLVG_PAINTER_IMPL_drawStringOnCircle))) {
132 DRAWING_Status status;
133 int length = (int)SNI_getArrayLength(text);
134 VG_TRACE_DRAW_START(drawStringOnCircleColor, gc, length, x, y, (uint32_t)radius, direction);
136 if (LLVG_FONT_UNLOADED != faceHandle) {
137 jfloat translated_matrix[LLVG_MATRIX_SIZE];
138 VG_HELPER_prepare_matrix(translated_matrix, x, y, matrix);
139 status = VG_DRAWING_drawStringOnCircle(gc, text, length, faceHandle, size,
140 translated_matrix, alpha, blend, letterSpacing, radius, direction);
141 ret = (jint)LLVG_SUCCESS;
143 status = DRAWING_DONE;
144 ret = (jint)LLVG_RESOURCE_CLOSED;
147 LLUI_DISPLAY_setDrawingStatus(status);
148 VG_TRACE_DRAW_END(drawStringOnCircleColor, status);
155 jint LLVG_PAINTER_IMPL_drawStringOnCircleGradient(MICROUI_GraphicsContext *gc, jchar *text, jint faceHandle,
156 jfloat size, jint x, jint y, jfloat *matrix, jint alpha, jint blend,
157 jfloat letterSpacing, jfloat radius, jint direction,
158 jint *gradientData, jfloat *gradientMatrix) {
161 if (LLUI_DISPLAY_requestDrawing(gc, (SNI_callback) & (LLVG_PAINTER_IMPL_drawStringOnCircleGradient))) {
162 DRAWING_Status status;
163 int length = (int)SNI_getArrayLength(text);
164 VG_TRACE_DRAW_START(drawStringOnCircleGradient, gc, length, x, y, (uint32_t)radius, direction);
166 if (LLVG_FONT_UNLOADED != faceHandle) {
167 jfloat translated_matrix[LLVG_MATRIX_SIZE];
168 VG_HELPER_prepare_matrix(translated_matrix, x, y, matrix);
169 status = VG_DRAWING_drawStringOnCircleGradient(gc, text, length, faceHandle, size,
170 translated_matrix, alpha, blend, letterSpacing, radius,
171 direction, gradientData, gradientMatrix);
172 ret = (jint)LLVG_SUCCESS;
174 status = DRAWING_DONE;
175 ret = (jint)LLVG_RESOURCE_CLOSED;
178 LLUI_DISPLAY_setDrawingStatus(status);
179 VG_TRACE_DRAW_END(drawStringOnCircleGradient, status);
186 jint LLVG_PAINTER_IMPL_drawImage(MICROUI_GraphicsContext *gc, MICROVG_Image *image, jint x, jint y, jfloat *matrix,
187 jint alpha, jlong elapsed,
const float color_matrix[]) {
188 jint error = LLVG_SUCCESS;
190 if (LLUI_DISPLAY_requestDrawing(gc, (SNI_callback) & LLVG_PAINTER_IMPL_drawImage)) {
191 DRAWING_Status status;
192 VG_TRACE_DRAW_START(drawImage, gc, VG_TRACE_IMAGE(image), x, y);
194 if (!VG_DRAWING_image_is_closed(image) && (alpha > (jint)0)) {
195 jfloat translated_matrix[LLVG_MATRIX_SIZE];
196 VG_HELPER_prepare_matrix(translated_matrix, x, y, matrix);
197 status = VG_DRAWING_drawImage(gc, image, translated_matrix, alpha, elapsed, color_matrix, &error);
202 if (LLVG_OUT_OF_MEMORY == error) {
203 error = LLVG_SUCCESS;
206 status = DRAWING_DONE;
208 LLUI_DISPLAY_setDrawingStatus(status);
209 VG_TRACE_DRAW_END(drawImage, status);
MicroEJ MicroVG library low level API: helper to implement library natives methods.