From b229d83ad894376959d7e40c8115404003b1bd71 Mon Sep 17 00:00:00 2001 From: Mis012 Date: Sun, 7 Apr 2024 21:49:40 +0200 Subject: [PATCH] GskCanvas: implement drawRect --- .../generated_headers/android_graphics_GskCanvas.h | 8 ++++++++ .../graphics/android_graphics_GskCanvas.c | 13 +++++++++++++ src/api-impl/android/graphics/GskCanvas.java | 3 ++- 3 files changed, 23 insertions(+), 1 deletion(-) 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 ebbdb355..3b2282e5 100644 --- a/src/api-impl-jni/generated_headers/android_graphics_GskCanvas.h +++ b/src/api-impl-jni/generated_headers/android_graphics_GskCanvas.h @@ -15,6 +15,14 @@ extern "C" { JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1drawBitmap (JNIEnv *, jobject, jlong, jlong, jint, jint, jint, jint, jint); +/* + * Class: android_graphics_GskCanvas + * Method: native_drawRect + * Signature: (JFFFFI)V + */ +JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1drawRect + (JNIEnv *, jobject, jlong, jfloat, jfloat, jfloat, jfloat, jint); + #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 c8729ae9..55958008 100644 --- a/src/api-impl-jni/graphics/android_graphics_GskCanvas.c +++ b/src/api-impl-jni/graphics/android_graphics_GskCanvas.c @@ -28,3 +28,16 @@ JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1drawBitmap(JNIEnv gtk_snapshot_pop(snapshot); g_object_unref(texture); } + +JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1drawRect(JNIEnv *env, jclass this_class, jlong snapshot_ptr, jfloat left, jfloat top, jfloat right, jfloat bottom, jint color) +{ + GdkSnapshot *snapshot = (GdkSnapshot *)_PTR(snapshot_ptr); + GdkRGBA gdk_color = { + (float)((color >> 16) & 0xff) / 0xff, + (float)((color >> 8) & 0xff) / 0xff, + (float)((color >> 0) & 0xff) / 0xff, + (float)((color >> 24) & 0xff) / 0xff, + }; + graphene_rect_t bounds = GRAPHENE_RECT_INIT(left, top, right - left, bottom - top); + gtk_snapshot_append_color(snapshot, &gdk_color, &bounds); +} diff --git a/src/api-impl/android/graphics/GskCanvas.java b/src/api-impl/android/graphics/GskCanvas.java index a0640106..b1b22ffb 100644 --- a/src/api-impl/android/graphics/GskCanvas.java +++ b/src/api-impl/android/graphics/GskCanvas.java @@ -49,7 +49,7 @@ public class GskCanvas extends Canvas { @Override public void drawRect(float left, float top, float right, float bottom, Paint paint) { - System.out.println("GskCanvas.drawRect(" + left + ", " + top + ", " + right + ", " + bottom + ", " + paint + ")"); + native_drawRect(snapshot, left, top, right, bottom, paint.getColor()); } @Override @@ -75,4 +75,5 @@ public class GskCanvas extends Canvas { } protected native void native_drawBitmap(long snapshot, long pixbuf, 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); }