Canvas: add drawLines

This commit is contained in:
Mis012
2025-02-15 21:36:03 +01:00
parent 453224cf31
commit 899805f23f
4 changed files with 39 additions and 0 deletions

View File

@@ -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");

View File

@@ -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);