* commit 'b27d881467869539a5c8ec2510e8415912abb617': Add missing native methods. [DO NOT MERGE]
This commit is contained in:
@@ -61,6 +61,7 @@ public final class Bitmap_Delegate {
|
|||||||
private final Config mConfig;
|
private final Config mConfig;
|
||||||
private BufferedImage mImage;
|
private BufferedImage mImage;
|
||||||
private boolean mHasAlpha = true;
|
private boolean mHasAlpha = true;
|
||||||
|
private boolean mHasMipMap = false; // TODO: check the default.
|
||||||
private int mGenerationId = 0;
|
private int mGenerationId = 0;
|
||||||
|
|
||||||
|
|
||||||
@@ -185,6 +186,10 @@ public final class Bitmap_Delegate {
|
|||||||
return mHasAlpha && mConfig != Config.RGB_565;
|
return mHasAlpha && mConfig != Config.RGB_565;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasMipMap() {
|
||||||
|
// TODO: check if more checks are required as in hasAlpha.
|
||||||
|
return mHasMipMap;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Update the generationId.
|
* Update the generationId.
|
||||||
*
|
*
|
||||||
@@ -335,6 +340,17 @@ public final class Bitmap_Delegate {
|
|||||||
return delegate.mHasAlpha;
|
return delegate.mHasAlpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@LayoutlibDelegate
|
||||||
|
/*package*/ static boolean nativeHasMipMap(int nativeBitmap) {
|
||||||
|
// get the delegate from the native int.
|
||||||
|
Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap);
|
||||||
|
if (delegate == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return delegate.mHasMipMap;
|
||||||
|
}
|
||||||
|
|
||||||
@LayoutlibDelegate
|
@LayoutlibDelegate
|
||||||
/*package*/ static int nativeGetPixel(int nativeBitmap, int x, int y) {
|
/*package*/ static int nativeGetPixel(int nativeBitmap, int x, int y) {
|
||||||
// get the delegate from the native int.
|
// get the delegate from the native int.
|
||||||
@@ -468,6 +484,17 @@ public final class Bitmap_Delegate {
|
|||||||
delegate.mHasAlpha = hasAlpha;
|
delegate.mHasAlpha = hasAlpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@LayoutlibDelegate
|
||||||
|
/*package*/ static void nativeSetHasMipMap(int nativeBitmap, boolean hasMipMap) {
|
||||||
|
// get the delegate from the native int.
|
||||||
|
Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap);
|
||||||
|
if (delegate == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
delegate.mHasMipMap = hasMipMap;
|
||||||
|
}
|
||||||
|
|
||||||
@LayoutlibDelegate
|
@LayoutlibDelegate
|
||||||
/*package*/ static boolean nativeSameAs(int nb0, int nb1) {
|
/*package*/ static boolean nativeSameAs(int nb0, int nb1) {
|
||||||
Bitmap_Delegate delegate1 = sManager.getDelegate(nb0);
|
Bitmap_Delegate delegate1 = sManager.getDelegate(nb0);
|
||||||
@@ -524,7 +551,7 @@ public final class Bitmap_Delegate {
|
|||||||
int nativeInt = sManager.addNewDelegate(delegate);
|
int nativeInt = sManager.addNewDelegate(delegate);
|
||||||
|
|
||||||
// and create/return a new Bitmap with it
|
// and create/return a new Bitmap with it
|
||||||
return new Bitmap(nativeInt, null /* buffer */, isMutable, null /*ninePatchChunk*/,
|
return new Bitmap(nativeInt, null /* buffer */, isMutable, null /*ninePatchChunk*/,
|
||||||
density);
|
density);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -330,20 +330,12 @@ public final class Canvas_Delegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@LayoutlibDelegate
|
@LayoutlibDelegate
|
||||||
/*package*/ static void native_setBitmap(int nativeCanvas, int bitmap) {
|
/*package*/ static void native_setBitmap(int nativeCanvas, int nativeBitmap) {
|
||||||
// get the delegate from the native int.
|
Bitmap_Delegate bitmapDelegate = Bitmap_Delegate.getDelegate(nativeBitmap);
|
||||||
Canvas_Delegate canvasDelegate = sManager.getDelegate(nativeCanvas);
|
Canvas_Delegate canvasDelegate = Canvas_Delegate.getDelegate(nativeCanvas);
|
||||||
if (canvasDelegate == null) {
|
if (canvasDelegate != null && bitmapDelegate != null) {
|
||||||
return;
|
canvasDelegate.setBitmap(bitmapDelegate);
|
||||||
}
|
}
|
||||||
|
|
||||||
// get the delegate from the native int.
|
|
||||||
Bitmap_Delegate bitmapDelegate = Bitmap_Delegate.getDelegate(bitmap);
|
|
||||||
if (bitmapDelegate == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
canvasDelegate.setBitmap(bitmapDelegate);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@LayoutlibDelegate
|
@LayoutlibDelegate
|
||||||
@@ -571,17 +563,15 @@ public final class Canvas_Delegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@LayoutlibDelegate
|
@LayoutlibDelegate
|
||||||
/*package*/ static boolean native_quickReject(int nativeCanvas,
|
/*package*/ static boolean native_quickReject(int nativeCanvas, RectF rect,
|
||||||
RectF rect,
|
int native_edgeType) {
|
||||||
int native_edgeType) {
|
|
||||||
// FIXME properly implement quickReject
|
// FIXME properly implement quickReject
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@LayoutlibDelegate
|
@LayoutlibDelegate
|
||||||
/*package*/ static boolean native_quickReject(int nativeCanvas,
|
/*package*/ static boolean native_quickReject(int nativeCanvas, int path,
|
||||||
int path,
|
int native_edgeType) {
|
||||||
int native_edgeType) {
|
|
||||||
// FIXME properly implement quickReject
|
// FIXME properly implement quickReject
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -994,6 +984,7 @@ public final class Canvas_Delegate {
|
|||||||
float x = startX;
|
float x = startX;
|
||||||
float y = startY;
|
float y = startY;
|
||||||
if (paintDelegate.getTextAlign() != Paint.Align.LEFT.nativeInt) {
|
if (paintDelegate.getTextAlign() != Paint.Align.LEFT.nativeInt) {
|
||||||
|
// TODO: check the value of bidiFlags.
|
||||||
float m = paintDelegate.measureText(text, index, count);
|
float m = paintDelegate.measureText(text, index, count);
|
||||||
if (paintDelegate.getTextAlign() == Paint.Align.CENTER.nativeInt) {
|
if (paintDelegate.getTextAlign() == Paint.Align.CENTER.nativeInt) {
|
||||||
x -= m / 2;
|
x -= m / 2;
|
||||||
|
|||||||
@@ -964,7 +964,8 @@ public class Paint_Delegate {
|
|||||||
@LayoutlibDelegate
|
@LayoutlibDelegate
|
||||||
/*package*/ static int native_getTextWidths(int native_object, String text, int start,
|
/*package*/ static int native_getTextWidths(int native_object, String text, int start,
|
||||||
int end, float[] widths) {
|
int end, float[] widths) {
|
||||||
return native_getTextWidths(native_object, text.toCharArray(), start, end - start, widths);
|
return native_getTextWidths(native_object, text.toCharArray(), start, end - start,
|
||||||
|
widths);
|
||||||
}
|
}
|
||||||
|
|
||||||
@LayoutlibDelegate
|
@LayoutlibDelegate
|
||||||
@@ -1068,7 +1069,8 @@ public class Paint_Delegate {
|
|||||||
@LayoutlibDelegate
|
@LayoutlibDelegate
|
||||||
/*package*/ static void nativeGetStringBounds(int nativePaint, String text, int start,
|
/*package*/ static void nativeGetStringBounds(int nativePaint, String text, int start,
|
||||||
int end, Rect bounds) {
|
int end, Rect bounds) {
|
||||||
nativeGetCharArrayBounds(nativePaint, text.toCharArray(), start, end - start, bounds);
|
nativeGetCharArrayBounds(nativePaint, text.toCharArray(), start, end - start,
|
||||||
|
bounds);
|
||||||
}
|
}
|
||||||
|
|
||||||
@LayoutlibDelegate
|
@LayoutlibDelegate
|
||||||
|
|||||||
@@ -15,6 +15,8 @@
|
|||||||
*/
|
*/
|
||||||
package android.os;
|
package android.os;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class allowing access to package-protected methods/fields.
|
* Class allowing access to package-protected methods/fields.
|
||||||
*/
|
*/
|
||||||
@@ -23,5 +25,23 @@ public class Looper_Accessor {
|
|||||||
public static void cleanupThread() {
|
public static void cleanupThread() {
|
||||||
// clean up the looper
|
// clean up the looper
|
||||||
Looper.sThreadLocal.remove();
|
Looper.sThreadLocal.remove();
|
||||||
|
try {
|
||||||
|
Field sMainLooper = Looper.class.getDeclaredField("sMainLooper");
|
||||||
|
sMainLooper.setAccessible(true);
|
||||||
|
sMainLooper.set(null, null);
|
||||||
|
} catch (SecurityException e) {
|
||||||
|
catchReflectionException();
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
catchReflectionException();
|
||||||
|
} catch (NoSuchFieldException e) {
|
||||||
|
catchReflectionException();
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
catchReflectionException();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void catchReflectionException() {
|
||||||
|
assert(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -428,7 +428,7 @@ public final class Bridge extends com.android.ide.common.rendering.api.Bridge {
|
|||||||
// we need to make sure the Looper has been initialized for this thread.
|
// we need to make sure the Looper has been initialized for this thread.
|
||||||
// this is required for View that creates Handler objects.
|
// this is required for View that creates Handler objects.
|
||||||
if (Looper.myLooper() == null) {
|
if (Looper.myLooper() == null) {
|
||||||
Looper.prepare();
|
Looper.prepareMainLooper();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user