You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
Canvas: add drawLines
This commit is contained in:
@@ -73,6 +73,14 @@ JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1restore
|
||||
JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1drawLine
|
||||
(JNIEnv *, jobject, jlong, jfloat, jfloat, jfloat, jfloat, jlong);
|
||||
|
||||
/*
|
||||
* Class: android_graphics_GskCanvas
|
||||
* Method: native_drawLines
|
||||
* Signature: (J[FIIJ)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1drawLines
|
||||
(JNIEnv *, jobject, jlong, jfloatArray, jint, jint, jlong);
|
||||
|
||||
/*
|
||||
* Class: android_graphics_GskCanvas
|
||||
* Method: native_drawText
|
||||
|
||||
@@ -82,6 +82,15 @@ JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1drawLine(JNIEnv *
|
||||
gtk_snapshot_restore(snapshot);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1drawLines(JNIEnv *env, jclass this_class, jlong snapshot_ptr, jfloatArray points_arr, jint offset, jint count, jlong paint_ptr)
|
||||
{
|
||||
jfloat *points = (*env)->GetFloatArrayElements(env, points_arr, NULL);
|
||||
for(int i = offset; i < count; i++)
|
||||
Java_android_graphics_GskCanvas_native_1drawLine(env, this_class, snapshot_ptr, points[i + 0], points[i + 1], points[i + 2], points[i + 3], paint_ptr);
|
||||
(*env)->ReleaseFloatArrayElements(env, points_arr, points, 0);
|
||||
}
|
||||
|
||||
|
||||
extern GtkWidget *window;
|
||||
|
||||
JNIEXPORT void JNICALL Java_android_graphics_GskCanvas_native_1drawText(JNIEnv *env, jclass this_class, jlong snapshot_ptr, jstring text, jfloat x, jfloat y, jlong paint_ptr)
|
||||
|
||||
@@ -378,6 +378,15 @@ public class Canvas {
|
||||
gsk_canvas.drawLine(startX, startY, stopX, stopY, paint);
|
||||
}
|
||||
|
||||
public void drawLines(float[] points, Paint paint) {
|
||||
drawLines(points, 0, points.length, paint);
|
||||
}
|
||||
|
||||
public void drawLines(float[] points, int offset, int count, Paint paint) {
|
||||
gsk_canvas.snapshot = bitmap.getSnapshot();
|
||||
gsk_canvas.drawLines(points, offset, count, paint);
|
||||
}
|
||||
|
||||
public void setBitmap(Bitmap bitmap) {
|
||||
if (bitmap != null && !bitmap.isMutable()) {
|
||||
throw new IllegalStateException("Bitmap must be mutable");
|
||||
|
||||
@@ -78,6 +78,18 @@ public class GskCanvas extends Canvas {
|
||||
native_drawLine(snapshot, startX, startY, stopX, stopY, paint != null ? paint.paint : default_paint.paint);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawLines(float[] points, Paint paint) {
|
||||
drawLines(points, 0, points.length, paint);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawLines(float[] points, int offset, int count, Paint paint) {
|
||||
if (offset + count < 0 /* overflow */ || offset + count > points.length)
|
||||
throw new IndexOutOfBoundsException();
|
||||
native_drawLines(snapshot, points, offset, count, paint != null ? paint.paint : default_paint.paint);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint) {
|
||||
Rect src = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
|
||||
@@ -122,6 +134,7 @@ public class GskCanvas extends Canvas {
|
||||
protected native void native_save(long snapshot);
|
||||
protected native void native_restore(long snapshot);
|
||||
protected native void native_drawLine(long snapshot, float startX, float startY, float stopX, float stopY, long paint);
|
||||
protected native void native_drawLines(long snapshot, float[] points, int offset, int count, long paint);
|
||||
protected native void native_drawText(long snapshot, String text, float x, float y, long paint);
|
||||
protected native void native_drawRoundRect(long snapshot, float left, float top, float right, float bottom, float rx, float ry, long paint);
|
||||
protected native void native_scale(long snapshot, float sx, float sy);
|
||||
|
||||
Reference in New Issue
Block a user