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
add support for custom Java Drawables
This is made possible, by adding a second Canvas implementation which can be used to render directly to GdkSnapshot objects For now the only implemented method is drawBitmap(), this is already enough to make VectorDrawableCompat functional
This commit is contained in:
@@ -81,7 +81,7 @@ public class Canvas {
|
||||
* @param px The x-coord for the pivot point (unchanged by the rotation)
|
||||
* @param py The y-coord for the pivot point (unchanged by the rotation)
|
||||
*/
|
||||
public final void rotate(float degrees, float px, float py) {
|
||||
public void rotate(float degrees, float px, float py) {
|
||||
native_rotate_and_translate(skia_canvas, widget, degrees, px, py);
|
||||
}
|
||||
// ---
|
||||
|
||||
74
src/api-impl/android/graphics/GskCanvas.java
Normal file
74
src/api-impl/android/graphics/GskCanvas.java
Normal file
@@ -0,0 +1,74 @@
|
||||
package android.graphics;
|
||||
|
||||
/**
|
||||
* GskCanvas:
|
||||
* - implements Canvas for onscreen rendering inside GTKs snapshot function
|
||||
*/
|
||||
public class GskCanvas extends Canvas {
|
||||
private long snapshot;
|
||||
|
||||
public GskCanvas(long snapshot) {
|
||||
System.out.println("GskCanvas(" + snapshot + ")");
|
||||
this.snapshot = snapshot;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int save() {
|
||||
System.out.println("GskCanvas.save()");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restore() {
|
||||
System.out.println("GskCanvas.restore()");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void translate(float dx, float dy) {
|
||||
System.out.println("GskCanvas.translate(" + dx + ", " + dy + ")");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rotate(float degrees) {
|
||||
System.out.println("GskCanvas.rotate(" + degrees + ")");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) {
|
||||
native_drawBitmap(snapshot, bitmap.pixbuf, dst.left, dst.top, dst.width(), dst.height());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawPath(Path path, Paint paint) {
|
||||
System.out.println("GskCanvas.drawPath(" + path + ", " + paint + ")");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawRect(float left, float top, float right, float bottom, Paint paint) {
|
||||
System.out.println("GskCanvas.drawRect(" + left + ", " + top + ", " + right + ", " + bottom + ", " + paint + ")");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rotate(float degrees, float px, float py) {
|
||||
System.out.println("GskCanvas.rotate(" + degrees + ", " + px + ", " + py + ")");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawText(String text, float x, float y, Paint paint) {
|
||||
System.out.println("GskCanvas.drawText(" + text + ", " + x + ", " + y + ", " + paint + ")");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawLine(float startX, float startY, float stopX, float stopY, Paint paint) {
|
||||
System.out.println("GskCanvas.drawLine(" + startX + ", " + startY + ", " + stopX + ", " + stopY + ", " + paint + ")");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint) {
|
||||
Rect src = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
|
||||
Rect dst = new Rect((int)left, (int)top, (int)left + bitmap.getWidth(), (int)top + bitmap.getHeight());
|
||||
drawBitmap(bitmap, src, dst, paint);
|
||||
}
|
||||
|
||||
protected native void native_drawBitmap(long snapshot, long pixbuf, int x, int y, int width, int height);
|
||||
}
|
||||
@@ -28,7 +28,9 @@ public class Drawable {
|
||||
private int[] mStateSet = new int[0];
|
||||
public long paintable;
|
||||
|
||||
public Drawable() {}
|
||||
public Drawable() {
|
||||
this.paintable = native_constructor();
|
||||
}
|
||||
|
||||
public Drawable(long paintable) {
|
||||
this.paintable = paintable;
|
||||
@@ -180,4 +182,5 @@ public class Drawable {
|
||||
}
|
||||
|
||||
protected static native long native_paintable_from_path(String path);
|
||||
protected native long native_constructor();
|
||||
}
|
||||
|
||||
@@ -1,15 +1,7 @@
|
||||
package android.graphics.drawable;
|
||||
|
||||
import android.graphics.Canvas;
|
||||
|
||||
public class GradientDrawable extends Drawable {
|
||||
|
||||
@Override
|
||||
public void draw(Canvas canvas) {
|
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'draw'");
|
||||
}
|
||||
|
||||
public void setColor(int color) {}
|
||||
|
||||
public void setCornerRadius(float cornerRadius) {}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package android.graphics.drawable;
|
||||
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Rect;
|
||||
|
||||
public class InsetDrawable extends Drawable {
|
||||
@@ -9,12 +8,6 @@ public class InsetDrawable extends Drawable {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Canvas canvas) {
|
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'draw'");
|
||||
}
|
||||
|
||||
public boolean getPadding(Rect padding) { return false; }
|
||||
|
||||
}
|
||||
|
||||
@@ -1,15 +1,9 @@
|
||||
package android.graphics.drawable;
|
||||
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Canvas;
|
||||
|
||||
public class RippleDrawable extends Drawable {
|
||||
|
||||
public RippleDrawable(ColorStateList colorStateList, Drawable drawable, Drawable drawable2) {}
|
||||
|
||||
@Override
|
||||
public void draw(Canvas canvas) {
|
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'draw'");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package android.graphics.drawable;
|
||||
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.drawable.shapes.Shape;
|
||||
|
||||
@@ -9,11 +8,5 @@ public class ShapeDrawable extends Drawable {
|
||||
public ShapeDrawable(Shape shape) {}
|
||||
|
||||
public Paint getPaint() {return new Paint();}
|
||||
|
||||
@Override
|
||||
public void draw(Canvas canvas) {
|
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'draw'");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user