am b27d8814: am 21cf9843: am d1084cc0: Add missing native methods. [DO NOT MERGE]

* commit 'b27d881467869539a5c8ec2510e8415912abb617':
  Add missing native methods. [DO NOT MERGE]
This commit is contained in:
Deepanshu Gupta
2014-05-02 19:19:36 +00:00
committed by Android Git Automerger
5 changed files with 63 additions and 23 deletions

View File

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

View File

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

View File

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

View File

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

View File

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