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 back graphics APIs for the previously working applications
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package android.graphics;
|
||||
|
||||
import android.util.DisplayMetrics;
|
||||
|
||||
/*
|
||||
* Bitmap is implemented as GdkTexture or GtkSnapshot. It can only be one of the two at a time.
|
||||
* The methods getTexture() and getSnapshot() automatically convert between the two as needed.
|
||||
@@ -9,12 +11,15 @@ public final class Bitmap {
|
||||
public enum Config {
|
||||
RGB_565,
|
||||
ARGB_8888,
|
||||
ARGB_4444,
|
||||
ALPHA_8,
|
||||
}
|
||||
|
||||
private int width;
|
||||
private int height;
|
||||
private long texture;
|
||||
private long snapshot;
|
||||
private Config config = Config.ARGB_8888;
|
||||
|
||||
Bitmap(long texture) {
|
||||
this.texture = texture;
|
||||
@@ -22,13 +27,46 @@ public final class Bitmap {
|
||||
this.height = native_get_height(texture);
|
||||
}
|
||||
|
||||
private Bitmap(int width, int height) {
|
||||
private Bitmap(int width, int height, Config config) {
|
||||
this.config = config;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
public static Bitmap createBitmap(int width, int height, Config config) {
|
||||
return new Bitmap(width, height);
|
||||
return new Bitmap(width, height, config);
|
||||
}
|
||||
|
||||
public static Bitmap createBitmap(DisplayMetrics metrics, int width, int height, Config config) {
|
||||
return new Bitmap(width, height, config);
|
||||
}
|
||||
|
||||
public static Bitmap createBitmap(DisplayMetrics metrics, int width, int height, Config config, boolean hasAlpha, ColorSpace colorSpace) {
|
||||
return new Bitmap(width, height, config);
|
||||
}
|
||||
|
||||
public static Bitmap createBitmap(Bitmap src, int x, int y, int width, int height) {
|
||||
Bitmap dest = new Bitmap(width, height, src.getConfig());
|
||||
new Canvas(dest).drawBitmap(src, new Rect(x, y, x + width, y + height), new Rect(0, 0, width, height), null);
|
||||
return dest;
|
||||
}
|
||||
|
||||
public static Bitmap createBitmap(Bitmap src, int x, int y, int width, int height, Matrix matrix, boolean filter) {
|
||||
Bitmap dest = new Bitmap(width, height, src.getConfig());
|
||||
Canvas canvas = new Canvas(dest);
|
||||
canvas.concat(matrix);
|
||||
canvas.drawBitmap(src, new Rect(x, y, x + width, y + height), new Rect(0, 0, width, height), null);
|
||||
return dest;
|
||||
}
|
||||
|
||||
public static Bitmap createBitmap(Bitmap src) {
|
||||
return new Bitmap(native_ref_texture(src.getTexture()));
|
||||
}
|
||||
|
||||
public static Bitmap createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter) {
|
||||
Bitmap dest = new Bitmap(dstWidth, dstHeight, src.getConfig());
|
||||
new Canvas(dest).drawBitmap(src, new Rect(0, 0, src.getWidth(), src.getHeight()), new Rect(0, 0, dstWidth, dstHeight), null);
|
||||
return dest;
|
||||
}
|
||||
|
||||
public int getWidth() {
|
||||
@@ -39,6 +77,10 @@ public final class Bitmap {
|
||||
return height;
|
||||
}
|
||||
|
||||
public Config getConfig() {
|
||||
return config;
|
||||
}
|
||||
|
||||
public synchronized long getTexture() {
|
||||
if (texture == 0) {
|
||||
texture = native_create_texture(snapshot, width, height);
|
||||
@@ -75,6 +117,32 @@ public final class Bitmap {
|
||||
getTexture();
|
||||
}
|
||||
|
||||
public void setDensity(int density) {}
|
||||
|
||||
public int getScaledWidth(int density) {
|
||||
return width;
|
||||
}
|
||||
|
||||
public int getScaledHeight(int density) {
|
||||
return height;
|
||||
}
|
||||
|
||||
public boolean isRecycled() {
|
||||
return texture == 0 && snapshot == 0;
|
||||
}
|
||||
|
||||
public void setHasAlpha(boolean hasAlpha) {}
|
||||
|
||||
public Bitmap copy(Bitmap.Config config, boolean hasAlpha) {
|
||||
Bitmap bitmap = new Bitmap(width, height, config);
|
||||
bitmap.texture = native_ref_texture(getTexture());
|
||||
return bitmap;
|
||||
}
|
||||
|
||||
public void getPixels(int[] pixels, int offset, int stride, int x, int y, int width, int height) {
|
||||
native_get_pixels(getTexture(), pixels, offset, stride, x, y, width, height);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
protected void finalize() throws Throwable {
|
||||
@@ -91,4 +159,6 @@ public final class Bitmap {
|
||||
private static native int native_get_height(long texture);
|
||||
private static native long native_erase_color(int color, int width, int height);
|
||||
private static native void native_recycle(long texture, long snapshot);
|
||||
private static native long native_ref_texture(long texture);
|
||||
private static native void native_get_pixels(long texture, int[] pixels, int offset, int stride, int x, int y, int width, int height);
|
||||
}
|
||||
|
||||
@@ -279,13 +279,8 @@ public class Canvas {
|
||||
* @param paint May be null. The paint used to draw the bitmap
|
||||
*/
|
||||
public void drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) {
|
||||
System.out.println("XXXXXXX bitmap(bitmap, src, dst, paint)");
|
||||
/*
|
||||
if (dst == null) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
native_drawBitmap(mNativeCanvas, bitmap.ni(), src, dst, paint != null ? paint.mNativePaint : 0, mScreenDensity, bitmap.mDensity);
|
||||
*/
|
||||
gsk_canvas.snapshot = this.bitmap.getSnapshot();
|
||||
gsk_canvas.drawBitmap(bitmap, src, dst, paint);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -9,6 +9,8 @@ public class Path {
|
||||
public enum FillType {
|
||||
WINDING,
|
||||
EVEN_ODD,
|
||||
INVERSE_WINDING,
|
||||
INVERSE_EVEN_ODD,
|
||||
}
|
||||
|
||||
public enum Direction {
|
||||
@@ -17,12 +19,16 @@ public class Path {
|
||||
}
|
||||
|
||||
public enum Op {
|
||||
DIFFERENCE,
|
||||
INTERSECT,
|
||||
UNION,
|
||||
XOR,
|
||||
REVERSE_DIFFERENCE,
|
||||
}
|
||||
|
||||
private long builder;
|
||||
private long path;
|
||||
private FillType fillType = FillType.WINDING;
|
||||
|
||||
public Path() {}
|
||||
|
||||
@@ -60,7 +66,13 @@ public class Path {
|
||||
native_close(getBuilder());
|
||||
}
|
||||
|
||||
public void setFillType(FillType fillType) {}
|
||||
public void setFillType(FillType fillType) {
|
||||
this.fillType = fillType;
|
||||
}
|
||||
|
||||
public FillType getFillType() {
|
||||
return fillType;
|
||||
}
|
||||
|
||||
public void moveTo(float x, float y) {
|
||||
native_move_to(getBuilder(), x, y);
|
||||
@@ -92,10 +104,20 @@ public class Path {
|
||||
native_rel_cubic_to(getBuilder(), x1, y1, x2, y2, x3, y3);
|
||||
}
|
||||
|
||||
public void rQuadTo(float x1, float y1, float x2, float y2) {
|
||||
native_rel_quad_to(getBuilder(), x1, y1, x2, y2);
|
||||
}
|
||||
|
||||
public void addPath(Path path, Matrix matrix) {
|
||||
native_add_path(getBuilder(), path.getGskPath(), matrix.ni());
|
||||
}
|
||||
|
||||
public void addPath(Path path, float deltaX, float deltaY) {
|
||||
Matrix matrix = new Matrix();
|
||||
matrix.setTranslate(deltaX, deltaY);
|
||||
addPath(path, matrix);
|
||||
}
|
||||
|
||||
public void addRect(RectF rect, Direction direction) {
|
||||
native_add_rect(getBuilder(), rect.left, rect.top, rect.right, rect.bottom);
|
||||
}
|
||||
@@ -104,7 +126,10 @@ public class Path {
|
||||
|
||||
public void addOval(RectF rect, Direction direction) {}
|
||||
|
||||
public void transform(Matrix matrix) {}
|
||||
public void transform(Matrix matrix) {
|
||||
builder = native_transform(getGskPath(), matrix.ni());
|
||||
path = 0;
|
||||
}
|
||||
|
||||
public void computeBounds(RectF bounds, boolean exact) {
|
||||
native_get_bounds(getGskPath(), bounds);
|
||||
@@ -114,10 +139,20 @@ public class Path {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean op(Path path, Path dst, Op op) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isEmpty() {
|
||||
return path == 0 && builder == 0;
|
||||
}
|
||||
|
||||
public void incReserve(int additionalPoints) {}
|
||||
|
||||
public boolean isConvex() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
protected void finalize() throws Throwable {
|
||||
@@ -140,7 +175,9 @@ public class Path {
|
||||
private static native void native_rel_move_to(long builder, float x, float y);
|
||||
private static native void native_rel_line_to(long builder, float x, float y);
|
||||
private static native void native_rel_cubic_to(long builder, float x1, float y1, float x2, float y2, float x3, float y3);
|
||||
private static native void native_rel_quad_to(long builder, float x1, float y1, float x2, float y2);
|
||||
private static native void native_add_path(long builder, long path, long matrix);
|
||||
private static native void native_add_rect(long builder, float left, float top, float right, float bottom);
|
||||
private static native void native_get_bounds(long path, RectF rect);
|
||||
private static native long native_transform(long path, long matrix);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user