Paint: implement setAntiAlias, handle ANTI_ALIAS_FLAG

This commit is contained in:
Mis012
2024-04-09 18:58:05 +02:00
parent 540071e97e
commit 25325ca4e5
4 changed files with 69 additions and 4 deletions

View File

@@ -13,6 +13,13 @@ JNIEXPORT jlong JNICALL Java_android_graphics_Paint_native_1constructor(JNIEnv *
return _INTPTR(sk_paint_new()); return _INTPTR(sk_paint_new());
} }
JNIEXPORT void JNICALL Java_android_graphics_Paint_native_1set_1antialias(JNIEnv *env, jobject this, jlong skia_paint, jboolean aa)
{
sk_paint_t *paint = (sk_paint_t *)_PTR(skia_paint);
sk_paint_set_antialias(paint, aa);
}
/* NOTE: sk_color_t seems to have the same internal representation as android uses for color, so we just pass that directly */ /* NOTE: sk_color_t seems to have the same internal representation as android uses for color, so we just pass that directly */
JNIEXPORT void JNICALL Java_android_graphics_Paint_native_1set_1color(JNIEnv *env, jobject this, jlong skia_paint, jint color) JNIEXPORT void JNICALL Java_android_graphics_Paint_native_1set_1color(JNIEnv *env, jobject this, jlong skia_paint, jint color)
{ {

View File

@@ -7,6 +7,32 @@
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#undef android_graphics_Paint_ANTI_ALIAS_FLAG
#define android_graphics_Paint_ANTI_ALIAS_FLAG 1L
#undef android_graphics_Paint_FILTER_BITMAP_FLAG
#define android_graphics_Paint_FILTER_BITMAP_FLAG 2L
#undef android_graphics_Paint_DITHER_FLAG
#define android_graphics_Paint_DITHER_FLAG 4L
#undef android_graphics_Paint_UNDERLINE_TEXT_FLAG
#define android_graphics_Paint_UNDERLINE_TEXT_FLAG 8L
#undef android_graphics_Paint_STRIKE_THRU_TEXT_FLAG
#define android_graphics_Paint_STRIKE_THRU_TEXT_FLAG 16L
#undef android_graphics_Paint_FAKE_BOLD_TEXT_FLAG
#define android_graphics_Paint_FAKE_BOLD_TEXT_FLAG 32L
#undef android_graphics_Paint_LINEAR_TEXT_FLAG
#define android_graphics_Paint_LINEAR_TEXT_FLAG 64L
#undef android_graphics_Paint_SUBPIXEL_TEXT_FLAG
#define android_graphics_Paint_SUBPIXEL_TEXT_FLAG 128L
#undef android_graphics_Paint_DEV_KERN_TEXT_FLAG
#define android_graphics_Paint_DEV_KERN_TEXT_FLAG 256L
#undef android_graphics_Paint_LCD_RENDER_TEXT_FLAG
#define android_graphics_Paint_LCD_RENDER_TEXT_FLAG 512L
#undef android_graphics_Paint_EMBEDDED_BITMAP_TEXT_FLAG
#define android_graphics_Paint_EMBEDDED_BITMAP_TEXT_FLAG 1024L
#undef android_graphics_Paint_AUTO_HINTING_TEXT_FLAG
#define android_graphics_Paint_AUTO_HINTING_TEXT_FLAG 2048L
#undef android_graphics_Paint_VERTICAL_TEXT_FLAG
#define android_graphics_Paint_VERTICAL_TEXT_FLAG 4096L
/* /*
* Class: android_graphics_Paint * Class: android_graphics_Paint
* Method: native_constructor * Method: native_constructor
@@ -15,6 +41,14 @@ extern "C" {
JNIEXPORT jlong JNICALL Java_android_graphics_Paint_native_1constructor JNIEXPORT jlong JNICALL Java_android_graphics_Paint_native_1constructor
(JNIEnv *, jobject); (JNIEnv *, jobject);
/*
* Class: android_graphics_Paint
* Method: native_set_antialias
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_android_graphics_Paint_native_1set_1antialias
(JNIEnv *, jobject, jlong, jboolean);
/* /*
* Class: android_graphics_Paint * Class: android_graphics_Paint
* Method: native_set_color * Method: native_set_color

View File

@@ -1,6 +1,20 @@
package android.graphics; package android.graphics;
public class Paint { public class Paint {
public static final int ANTI_ALIAS_FLAG = (1 << 0);
public static final int FILTER_BITMAP_FLAG = (1 << 1);
public static final int DITHER_FLAG = (1 << 2);
public static final int UNDERLINE_TEXT_FLAG = (1 << 3);
public static final int STRIKE_THRU_TEXT_FLAG = (1 << 4);
public static final int FAKE_BOLD_TEXT_FLAG = (1 << 5);
public static final int LINEAR_TEXT_FLAG = (1 << 6);
public static final int SUBPIXEL_TEXT_FLAG = (1 << 7);
public static final int DEV_KERN_TEXT_FLAG = (1 << 8);
public static final int LCD_RENDER_TEXT_FLAG = (1 << 9);
public static final int EMBEDDED_BITMAP_TEXT_FLAG = (1 << 10);
public static final int AUTO_HINTING_TEXT_FLAG = (1 << 11);
public static final int VERTICAL_TEXT_FLAG = (1 << 12);
public long skia_paint = 0; public long skia_paint = 0;
private Typeface typeface = null; private Typeface typeface = null;
public long skia_font = 0; public long skia_font = 0;
@@ -29,7 +43,10 @@ public class Paint {
return native_get_color(skia_paint); return native_get_color(skia_paint);
} }
public void setAntiAlias(boolean aa) {} public void setAntiAlias(boolean aa) {
native_set_antialias(skia_paint, aa);
}
public void setStrokeWidth(float width) { public void setStrokeWidth(float width) {
native_set_stroke_width(skia_paint, width); native_set_stroke_width(skia_paint, width);
} }
@@ -51,11 +68,17 @@ public class Paint {
} }
public void getTextBounds(String text, int start, int end, Rect bounds) {} public void getTextBounds(String text, int start, int end, Rect bounds) {}
public void getTextBounds(char[] text, int index, int count, Rect bounds) {} public void getTextBounds(char[] text, int index, int count, Rect bounds) {}
public void setFlags(int flags) {}
public void setFilterBitmap(boolean filter) {} public void setFilterBitmap(boolean filter) {}
public void setFlags(int flags) {
if((flags & ANTI_ALIAS_FLAG) != 0)
setAntiAlias(true);
}
public void setStyle(Style style) { public void setStyle(Style style) {
native_set_style(skia_paint, style.nativeInt); native_set_style(skia_paint, style.nativeInt);
} }
public float ascent() { public float ascent() {
if(skia_font == 0) if(skia_font == 0)
return 0; return 0;
@@ -234,6 +257,7 @@ public class Paint {
} }
private native long native_constructor(); private native long native_constructor();
private native void native_set_antialias(long skia_paint, boolean aa);
private native void native_set_color(long skia_paint, int color); private native void native_set_color(long skia_paint, int color);
private native int native_get_color(long skia_paint); private native int native_get_color(long skia_paint);
private static native long native_create_font(); private static native long native_create_font();

View File

@@ -15,7 +15,7 @@ import android.content.res.TypedArray;
import android.util.AttributeSet; import android.util.AttributeSet;
public class VectorDrawable extends Drawable { public class VectorDrawable extends Drawable {
public VectorDrawable() { public VectorDrawable() {
super(); super();
} }
@@ -52,5 +52,5 @@ public class VectorDrawable extends Drawable {
Bitmap bm = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); Bitmap bm = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
this.paintable = BitmapDrawable.native_paintable_from_pixbuf(bm.pixbuf); this.paintable = BitmapDrawable.native_paintable_from_pixbuf(bm.pixbuf);
} }
} }