diff --git a/src/api-impl-jni/android_graphics_Canvas.c b/src/api-impl-jni/android_graphics_Canvas.c index 5d7ae14c..0dc1a9de 100644 --- a/src/api-impl-jni/android_graphics_Canvas.c +++ b/src/api-impl-jni/android_graphics_Canvas.c @@ -121,3 +121,9 @@ JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1destroy_1canvas(JNIE sk_canvas_t *canvas = (sk_canvas_t *)_PTR(skia_canvas); sk_canvas_destroy(canvas); } + +JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1scale(JNIEnv *env, jclass class, jlong skia_canvas, jfloat sx, jfloat sy) +{ + sk_canvas_t *canvas = (sk_canvas_t *)_PTR(skia_canvas); + sk_canvas_scale(canvas, sx, sy); +} diff --git a/src/api-impl-jni/generated_headers/android_graphics_Canvas.h b/src/api-impl-jni/generated_headers/android_graphics_Canvas.h index 3351d048..93569114 100644 --- a/src/api-impl-jni/generated_headers/android_graphics_Canvas.h +++ b/src/api-impl-jni/generated_headers/android_graphics_Canvas.h @@ -97,6 +97,14 @@ JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1drawPath JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1destroy_1canvas (JNIEnv *, jclass, jlong); +/* + * Class: android_graphics_Canvas + * Method: native_scale + * Signature: (JFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1scale + (JNIEnv *, jclass, jlong, jfloat, jfloat); + #ifdef __cplusplus } #endif diff --git a/src/api-impl-jni/generated_headers/android_graphics_GskCanvas.h b/src/api-impl-jni/generated_headers/android_graphics_GskCanvas.h index f67212f1..0e296516 100644 --- a/src/api-impl-jni/generated_headers/android_graphics_GskCanvas.h +++ b/src/api-impl-jni/generated_headers/android_graphics_GskCanvas.h @@ -89,6 +89,14 @@ JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1drawText JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1drawRoundRect (JNIEnv *, jobject, jlong, jfloat, jfloat, jfloat, jfloat, jfloat, jfloat, jint, jfloat, jint); +/* + * Class: android_graphics_GskCanvas + * Method: native_scale + * Signature: (JFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1scale + (JNIEnv *, jobject, jlong, jfloat, jfloat); + #ifdef __cplusplus } #endif diff --git a/src/api-impl-jni/graphics/android_graphics_GskCanvas.c b/src/api-impl-jni/graphics/android_graphics_GskCanvas.c index fb38f596..662328db 100644 --- a/src/api-impl-jni/graphics/android_graphics_GskCanvas.c +++ b/src/api-impl-jni/graphics/android_graphics_GskCanvas.c @@ -154,3 +154,9 @@ JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1drawRoundRect(JNI gtk_snapshot_append_border(snapshot, &round_rect, widths, gdk_color); } } + +JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1scale(JNIEnv *env, jclass this_class, jlong snapshot_ptr, jfloat x, jfloat y) +{ + GdkSnapshot *snapshot = GTK_SNAPSHOT(_PTR(snapshot_ptr)); + gtk_snapshot_scale(snapshot, x, y); +} diff --git a/src/api-impl/android/graphics/Canvas.java b/src/api-impl/android/graphics/Canvas.java index 0ab8b1a5..581528a7 100644 --- a/src/api-impl/android/graphics/Canvas.java +++ b/src/api-impl/android/graphics/Canvas.java @@ -201,7 +201,9 @@ public class Canvas { * @param sx The amount to scale in X * @param sy The amount to scale in Y */ - public /*native*/ void scale(float sx, float sy) {/*used by gd*/} + public /*native*/ void scale(float sx, float sy) { + native_scale(skia_canvas, sx, sy); + } /** * Preconcat the current matrix with the specified scale. @@ -213,9 +215,9 @@ public class Canvas { */ public final void scale(float sx, float sy, float px, float py) { System.out.println("XXXXXXX scale(sx, sy, px, py)"); - /*translate(px, py); + translate(px, py); scale(sx, sy); - translate(-px, -py);*/ + translate(-px, -py); } // --- /** @@ -504,4 +506,5 @@ public class Canvas { private static native void native_rotate_and_translate(long skia_canvas, long widget, float angle, float tx, float ty); private static native void native_drawPath(long skia_canvas, long path, long skia_paint); private static native void native_destroy_canvas(long skia_canvas); + private static native void native_scale(long skia_canvas, float sx, float sy); } diff --git a/src/api-impl/android/graphics/GskCanvas.java b/src/api-impl/android/graphics/GskCanvas.java index d5b2ecbf..b86fcfa6 100644 --- a/src/api-impl/android/graphics/GskCanvas.java +++ b/src/api-impl/android/graphics/GskCanvas.java @@ -94,6 +94,11 @@ public class GskCanvas extends Canvas { native_drawRoundRect(snapshot, left, top, right, bottom, rx, ry, paint.getColor(), paint.getStrokeWidth(), paint.getStyle().nativeInt); } + @Override + public void scale(float sx, float sy) { + native_scale(snapshot, sx, sy); + } + protected native void native_drawBitmap(long snapshot, long texture, int x, int y, int width, int height, int color); protected native void native_drawRect(long snapshot, float left, float top, float right, float bottom, int color); protected native void native_drawPath(long snapshot, long path, long paint); @@ -104,4 +109,5 @@ public class GskCanvas extends Canvas { protected native void native_drawLine(long snapshot, float startX, float startY, float stopX, float stopY, long paint); protected native void native_drawText(long snapshot, String text, float x, float y, long paint, long font); protected native void native_drawRoundRect(long snapshot, float left, float top, float right, float bottom, float rx, float ry, int color, float strokeWidth, int style); + protected native void native_scale(long snapshot, float sx, float sy); }