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" 37 #define LOG_DRAW_START(fn) LLUI_DISPLAY_logDrawingStart(CONCAT_DEFINES(LOG_MICROVG_, fn)) 38 #define LOG_DRAW_END(fn) LLUI_DISPLAY_logDrawingEnd(CONCAT_DEFINES(LOG_MICROVG_, fn)) 43 #define LOG_MICROVG_drawPath 1 44 #define LOG_MICROVG_drawGradient 2 45 #define LOG_MICROVG_drawString 3 46 #define LOG_MICROVG_drawStringOnCircle 4 47 #define LOG_MICROVG_drawImage 5 54 jint LLVG_PAINTER_IMPL_drawPath(MICROUI_GraphicsContext* gc, jbyte* pathData, jint x, jint y, jfloat* matrix, jint fillRule, jint blend, jint color) {
55 if (LLUI_DISPLAY_requestDrawing(gc, (SNI_callback)&LLVG_PAINTER_IMPL_drawPath)) {
56 LOG_DRAW_START(drawPath);
57 DRAWING_Status status = VG_DRAWING_drawPath(gc, pathData, x, y, matrix, fillRule, blend, color);
58 LLUI_DISPLAY_setDrawingStatus(status);
59 LOG_DRAW_END(drawPath);
65 jint LLVG_PAINTER_IMPL_drawGradient(MICROUI_GraphicsContext* gc, jbyte* pathData, jint x, jint y, jfloat* matrix, jint fillRule, jint alpha, jint blend, jint* gradientData, jfloat* gradientMatrix) {
66 if (LLUI_DISPLAY_requestDrawing(gc, (SNI_callback)&LLVG_PAINTER_IMPL_drawGradient)) {
67 LOG_DRAW_START(drawPath);
68 DRAWING_Status status = VG_DRAWING_drawGradient(gc, pathData, x, y, matrix, fillRule, alpha, blend, gradientData, gradientMatrix);
69 LLUI_DISPLAY_setDrawingStatus(status);
70 LOG_DRAW_END(drawPath);
76 jint LLVG_PAINTER_IMPL_drawString(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing){
79 if (LLVG_FONT_UNLOADED == faceHandle) {
80 ret = (jint)LLVG_RESOURCE_CLOSED;
83 if (LLUI_DISPLAY_requestDrawing(gc, (SNI_callback)&(LLVG_PAINTER_IMPL_drawString))){
84 LLUI_DISPLAY_setDrawingStatus(VG_DRAWING_drawString(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing));
86 ret = (jint)LLVG_SUCCESS;
92 jint LLVG_PAINTER_IMPL_drawStringGradient(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jfloat x, jfloat y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jint *gradientData, jfloat *gradientMatrix){
96 if (LLVG_FONT_UNLOADED == faceHandle) {
97 ret = (jint)LLVG_RESOURCE_CLOSED;
100 if (LLUI_DISPLAY_requestDrawing(gc, (SNI_callback)&(LLVG_PAINTER_IMPL_drawStringGradient))){
101 LLUI_DISPLAY_setDrawingStatus(VG_DRAWING_drawStringGradient(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, gradientData, gradientMatrix));
103 ret = (jint)LLVG_SUCCESS;
110 jint LLVG_PAINTER_IMPL_drawStringOnCircle(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction){
114 if (LLVG_FONT_UNLOADED == faceHandle) {
115 ret = (jint)LLVG_RESOURCE_CLOSED;
118 if (LLUI_DISPLAY_requestDrawing(gc, (SNI_callback)&(LLVG_PAINTER_IMPL_drawStringOnCircle))){
119 LLUI_DISPLAY_setDrawingStatus(VG_DRAWING_drawStringOnCircle(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, radius, direction));
121 ret = (jint)LLVG_SUCCESS;
128 jint LLVG_PAINTER_IMPL_drawStringOnCircleGradient(MICROUI_GraphicsContext* gc, jchar* text, jint faceHandle, jfloat size, jint x, jint y, jfloat* matrix, jint alpha, jint blend, jfloat letterSpacing, jfloat radius, jint direction, jint *gradientData, jfloat *gradientMatrix){
132 if (LLVG_FONT_UNLOADED == faceHandle) {
133 ret = (jint)LLVG_RESOURCE_CLOSED;
136 if (LLUI_DISPLAY_requestDrawing(gc, (SNI_callback)&(LLVG_PAINTER_IMPL_drawStringOnCircleGradient))){
137 LLUI_DISPLAY_setDrawingStatus(VG_DRAWING_drawStringOnCircleGradient(gc, text, faceHandle, size, x, y, matrix, alpha, blend, letterSpacing, radius, direction, gradientData, gradientMatrix));
139 ret = (jint)LLVG_SUCCESS;
146 jint LLVG_PAINTER_IMPL_drawImage(MICROUI_GraphicsContext* gc,
void* image, jint x, jint y, jfloat *matrix, jint alpha, jlong elapsed,
const float color_matrix[]){
148 jint error = LLVG_SUCCESS;
150 if (LLUI_DISPLAY_requestDrawing(gc, (SNI_callback)&LLVG_PAINTER_IMPL_drawImage)) {
151 DRAWING_Status status;
152 LOG_DRAW_START(drawImage);
153 if (alpha > (uint32_t)0){
156 jfloat local_matrix[LLVG_MATRIX_SIZE];
157 jfloat* drawing_matrix;
159 if((0 != x) || (0 != y)) {
161 LLVG_MATRIX_IMPL_setTranslate(local_matrix, x, y);
162 LLVG_MATRIX_IMPL_concatenate(local_matrix, matrix);
163 drawing_matrix = local_matrix;
167 drawing_matrix = matrix;
170 status = VG_DRAWING_drawImage(gc, image, drawing_matrix, alpha, elapsed, color_matrix, &error);
175 if (LLVG_OUT_OF_MEMORY == error) {
176 error = LLVG_SUCCESS;
180 status = DRAWING_DONE;
182 LLUI_DISPLAY_setDrawingStatus(status);
183 LOG_DRAW_END(drawImage);