Loading tools/layoutlib/bridge/src/android/graphics/BitmapFactory_Delegate.java +0 −63 Original line number Diff line number Diff line Loading @@ -44,62 +44,13 @@ import java.util.Set; */ /*package*/ class BitmapFactory_Delegate { // ------ Java delegates ------ @LayoutlibDelegate /*package*/ static Bitmap finishDecode(Bitmap bm, Rect outPadding, Options opts) { if (bm == null || opts == null) { return bm; } final int density = opts.inDensity; if (density == 0) { return bm; } bm.setDensity(density); final int targetDensity = opts.inTargetDensity; if (targetDensity == 0 || density == targetDensity || density == opts.inScreenDensity) { return bm; } byte[] np = bm.getNinePatchChunk(); final boolean isNinePatch = np != null && NinePatch.isNinePatchChunk(np); // DELEGATE CHANGE: never scale 9-patch if (opts.inScaled && isNinePatch == false) { float scale = targetDensity / (float)density; // TODO: This is very inefficient and should be done in native by Skia final Bitmap oldBitmap = bm; bm = Bitmap.createScaledBitmap(oldBitmap, (int) (bm.getWidth() * scale + 0.5f), (int) (bm.getHeight() * scale + 0.5f), true); oldBitmap.recycle(); if (isNinePatch) { np = nativeScaleNinePatch(np, scale, outPadding); bm.setNinePatchChunk(np); } bm.setDensity(targetDensity); } return bm; } // ------ Native Delegates ------ @LayoutlibDelegate /*package*/ static Bitmap nativeDecodeStream(InputStream is, byte[] storage, Rect padding, Options opts) { return nativeDecodeStream(is, storage, padding, opts, false, 1.f); } @LayoutlibDelegate /*package*/ static Bitmap nativeDecodeStream(InputStream is, byte[] storage, Rect padding, Options opts, boolean applyScale, float scale) { Bitmap bm = null; //TODO support rescaling Density density = Density.MEDIUM; Set<BitmapCreateFlags> bitmapCreateFlags = EnumSet.of(BitmapCreateFlags.MUTABLE); if (opts != null) { Loading Loading @@ -156,13 +107,6 @@ import java.util.Set; return null; } @LayoutlibDelegate /*package*/ static Bitmap nativeDecodeAsset(long asset, Rect padding, Options opts, boolean applyScale, float scale) { opts.inBitmap = null; return null; } @LayoutlibDelegate /*package*/ static Bitmap nativeDecodeByteArray(byte[] data, int offset, int length, Options opts) { Loading @@ -170,13 +114,6 @@ import java.util.Set; return null; } @LayoutlibDelegate /*package*/ static byte[] nativeScaleNinePatch(byte[] chunk, float scale, Rect pad) { // don't scale for now. This should not be called anyway since we re-implement // BitmapFactory.finishDecode(); return chunk; } @LayoutlibDelegate /*package*/ static boolean nativeIsSeekable(FileDescriptor fd) { return true; Loading tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java +14 −26 Original line number Diff line number Diff line Loading @@ -313,6 +313,13 @@ public final class Bitmap_Delegate { return true; } @LayoutlibDelegate /*package*/ static void nativeReconfigure(long nativeBitmap, int width, int height, int config, int allocSize) { Bridge.getLog().error(LayoutLog.TAG_UNSUPPORTED, "Bitmap.reconfigure() is not supported", null /*data*/); } @LayoutlibDelegate /*package*/ static boolean nativeCompress(long nativeBitmap, int format, int quality, OutputStream stream, byte[] tempStorage) { Loading Loading @@ -341,28 +348,6 @@ public final class Bitmap_Delegate { } } @LayoutlibDelegate /*package*/ static int nativeWidth(long nativeBitmap) { // get the delegate from the native int. Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap); if (delegate == null) { return 0; } return delegate.mImage.getWidth(); } @LayoutlibDelegate /*package*/ static int nativeHeight(long nativeBitmap) { // get the delegate from the native int. Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap); if (delegate == null) { return 0; } return delegate.mImage.getHeight(); } @LayoutlibDelegate /*package*/ static int nativeRowBytes(long nativeBitmap) { // get the delegate from the native int. Loading Loading @@ -408,19 +393,21 @@ public final class Bitmap_Delegate { } @LayoutlibDelegate /*package*/ static int nativeGetPixel(long nativeBitmap, int x, int y) { /*package*/ static int nativeGetPixel(long nativeBitmap, int x, int y, boolean isPremultiplied) { // get the delegate from the native int. Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap); if (delegate == null) { return 0; } // TODO: Support isPremultiplied. return delegate.mImage.getRGB(x, y); } @LayoutlibDelegate /*package*/ static void nativeGetPixels(long nativeBitmap, int[] pixels, int offset, int stride, int x, int y, int width, int height) { int stride, int x, int y, int width, int height, boolean isPremultiplied) { Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap); if (delegate == null) { return; Loading @@ -431,7 +418,8 @@ public final class Bitmap_Delegate { @LayoutlibDelegate /*package*/ static void nativeSetPixel(long nativeBitmap, int x, int y, int color) { /*package*/ static void nativeSetPixel(long nativeBitmap, int x, int y, int color, boolean isPremultiplied) { Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap); if (delegate == null) { return; Loading @@ -442,7 +430,7 @@ public final class Bitmap_Delegate { @LayoutlibDelegate /*package*/ static void nativeSetPixels(long nativeBitmap, int[] colors, int offset, int stride, int x, int y, int width, int height) { int stride, int x, int y, int width, int height, boolean isPremultiplied) { Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap); if (delegate == null) { return; Loading tools/layoutlib/bridge/src/android/graphics/NinePatch_Delegate.java +1 −0 Original line number Diff line number Diff line Loading @@ -167,6 +167,7 @@ public final class NinePatch_Delegate { return sManager.addNewDelegate(newDelegate); } @LayoutlibDelegate /*package*/ static void nativeFinalize(long chunk) { sManager.removeJavaReferenceFor(chunk); } Loading tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java +9 −3 Original line number Diff line number Diff line Loading @@ -401,17 +401,17 @@ public final class Path_Delegate { } @LayoutlibDelegate /*package*/ static void native_addPath(long nPath, int src, float dx, float dy) { /*package*/ static void native_addPath(long nPath, long src, float dx, float dy) { addPath(nPath, src, AffineTransform.getTranslateInstance(dx, dy)); } @LayoutlibDelegate /*package*/ static void native_addPath(long nPath, int src) { /*package*/ static void native_addPath(long nPath, long src) { addPath(nPath, src, null /*transform*/); } @LayoutlibDelegate /*package*/ static void native_addPath(long nPath, int src, long matrix) { /*package*/ static void native_addPath(long nPath, long src, long matrix) { Matrix_Delegate matrixDelegate = Matrix_Delegate.getDelegate(matrix); if (matrixDelegate == null) { return; Loading Loading @@ -473,6 +473,12 @@ public final class Path_Delegate { native_transform(nPath, matrix, 0); } @LayoutlibDelegate /*package*/ static boolean native_op(long nPath1, long nPath2, int op, long result) { Bridge.getLog().error(LayoutLog.TAG_UNSUPPORTED, "Path.op() not supported", null); return false; } @LayoutlibDelegate /*package*/ static void finalizer(long nPath) { sManager.removeJavaReferenceFor(nPath); Loading tools/layoutlib/bridge/src/libcore/icu/DateIntervalFormat_Delegate.java +4 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import java.text.FieldPosition; import com.android.ide.common.rendering.api.LayoutLog; import com.android.layoutlib.bridge.Bridge; import com.android.layoutlib.bridge.impl.DelegateManager; import com.android.tools.layoutlib.annotations.LayoutlibDelegate; import com.ibm.icu.text.DateIntervalFormat; import com.ibm.icu.util.DateInterval; import com.ibm.icu.util.TimeZone; Loading @@ -38,6 +39,7 @@ public class DateIntervalFormat_Delegate { // ---- native methods ---- @LayoutlibDelegate /*package*/static String formatDateInterval(long address, long fromDate, long toDate) { DateIntervalFormat_Delegate delegate = sManager.getDelegate((int)address); if (delegate == null) { Loading @@ -52,6 +54,7 @@ public class DateIntervalFormat_Delegate { return sb.toString(); } @LayoutlibDelegate /*package*/ static long createDateIntervalFormat(String skeleton, String localeName, String tzName) { TimeZone prevDefaultTz = TimeZone.getDefault(); Loading @@ -63,6 +66,7 @@ public class DateIntervalFormat_Delegate { return sManager.addNewDelegate(newDelegate); } @LayoutlibDelegate /*package*/ static void destroyDateIntervalFormat(long address) { sManager.removeJavaReferenceFor((int)address); } Loading Loading
tools/layoutlib/bridge/src/android/graphics/BitmapFactory_Delegate.java +0 −63 Original line number Diff line number Diff line Loading @@ -44,62 +44,13 @@ import java.util.Set; */ /*package*/ class BitmapFactory_Delegate { // ------ Java delegates ------ @LayoutlibDelegate /*package*/ static Bitmap finishDecode(Bitmap bm, Rect outPadding, Options opts) { if (bm == null || opts == null) { return bm; } final int density = opts.inDensity; if (density == 0) { return bm; } bm.setDensity(density); final int targetDensity = opts.inTargetDensity; if (targetDensity == 0 || density == targetDensity || density == opts.inScreenDensity) { return bm; } byte[] np = bm.getNinePatchChunk(); final boolean isNinePatch = np != null && NinePatch.isNinePatchChunk(np); // DELEGATE CHANGE: never scale 9-patch if (opts.inScaled && isNinePatch == false) { float scale = targetDensity / (float)density; // TODO: This is very inefficient and should be done in native by Skia final Bitmap oldBitmap = bm; bm = Bitmap.createScaledBitmap(oldBitmap, (int) (bm.getWidth() * scale + 0.5f), (int) (bm.getHeight() * scale + 0.5f), true); oldBitmap.recycle(); if (isNinePatch) { np = nativeScaleNinePatch(np, scale, outPadding); bm.setNinePatchChunk(np); } bm.setDensity(targetDensity); } return bm; } // ------ Native Delegates ------ @LayoutlibDelegate /*package*/ static Bitmap nativeDecodeStream(InputStream is, byte[] storage, Rect padding, Options opts) { return nativeDecodeStream(is, storage, padding, opts, false, 1.f); } @LayoutlibDelegate /*package*/ static Bitmap nativeDecodeStream(InputStream is, byte[] storage, Rect padding, Options opts, boolean applyScale, float scale) { Bitmap bm = null; //TODO support rescaling Density density = Density.MEDIUM; Set<BitmapCreateFlags> bitmapCreateFlags = EnumSet.of(BitmapCreateFlags.MUTABLE); if (opts != null) { Loading Loading @@ -156,13 +107,6 @@ import java.util.Set; return null; } @LayoutlibDelegate /*package*/ static Bitmap nativeDecodeAsset(long asset, Rect padding, Options opts, boolean applyScale, float scale) { opts.inBitmap = null; return null; } @LayoutlibDelegate /*package*/ static Bitmap nativeDecodeByteArray(byte[] data, int offset, int length, Options opts) { Loading @@ -170,13 +114,6 @@ import java.util.Set; return null; } @LayoutlibDelegate /*package*/ static byte[] nativeScaleNinePatch(byte[] chunk, float scale, Rect pad) { // don't scale for now. This should not be called anyway since we re-implement // BitmapFactory.finishDecode(); return chunk; } @LayoutlibDelegate /*package*/ static boolean nativeIsSeekable(FileDescriptor fd) { return true; Loading
tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java +14 −26 Original line number Diff line number Diff line Loading @@ -313,6 +313,13 @@ public final class Bitmap_Delegate { return true; } @LayoutlibDelegate /*package*/ static void nativeReconfigure(long nativeBitmap, int width, int height, int config, int allocSize) { Bridge.getLog().error(LayoutLog.TAG_UNSUPPORTED, "Bitmap.reconfigure() is not supported", null /*data*/); } @LayoutlibDelegate /*package*/ static boolean nativeCompress(long nativeBitmap, int format, int quality, OutputStream stream, byte[] tempStorage) { Loading Loading @@ -341,28 +348,6 @@ public final class Bitmap_Delegate { } } @LayoutlibDelegate /*package*/ static int nativeWidth(long nativeBitmap) { // get the delegate from the native int. Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap); if (delegate == null) { return 0; } return delegate.mImage.getWidth(); } @LayoutlibDelegate /*package*/ static int nativeHeight(long nativeBitmap) { // get the delegate from the native int. Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap); if (delegate == null) { return 0; } return delegate.mImage.getHeight(); } @LayoutlibDelegate /*package*/ static int nativeRowBytes(long nativeBitmap) { // get the delegate from the native int. Loading Loading @@ -408,19 +393,21 @@ public final class Bitmap_Delegate { } @LayoutlibDelegate /*package*/ static int nativeGetPixel(long nativeBitmap, int x, int y) { /*package*/ static int nativeGetPixel(long nativeBitmap, int x, int y, boolean isPremultiplied) { // get the delegate from the native int. Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap); if (delegate == null) { return 0; } // TODO: Support isPremultiplied. return delegate.mImage.getRGB(x, y); } @LayoutlibDelegate /*package*/ static void nativeGetPixels(long nativeBitmap, int[] pixels, int offset, int stride, int x, int y, int width, int height) { int stride, int x, int y, int width, int height, boolean isPremultiplied) { Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap); if (delegate == null) { return; Loading @@ -431,7 +418,8 @@ public final class Bitmap_Delegate { @LayoutlibDelegate /*package*/ static void nativeSetPixel(long nativeBitmap, int x, int y, int color) { /*package*/ static void nativeSetPixel(long nativeBitmap, int x, int y, int color, boolean isPremultiplied) { Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap); if (delegate == null) { return; Loading @@ -442,7 +430,7 @@ public final class Bitmap_Delegate { @LayoutlibDelegate /*package*/ static void nativeSetPixels(long nativeBitmap, int[] colors, int offset, int stride, int x, int y, int width, int height) { int stride, int x, int y, int width, int height, boolean isPremultiplied) { Bitmap_Delegate delegate = sManager.getDelegate(nativeBitmap); if (delegate == null) { return; Loading
tools/layoutlib/bridge/src/android/graphics/NinePatch_Delegate.java +1 −0 Original line number Diff line number Diff line Loading @@ -167,6 +167,7 @@ public final class NinePatch_Delegate { return sManager.addNewDelegate(newDelegate); } @LayoutlibDelegate /*package*/ static void nativeFinalize(long chunk) { sManager.removeJavaReferenceFor(chunk); } Loading
tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java +9 −3 Original line number Diff line number Diff line Loading @@ -401,17 +401,17 @@ public final class Path_Delegate { } @LayoutlibDelegate /*package*/ static void native_addPath(long nPath, int src, float dx, float dy) { /*package*/ static void native_addPath(long nPath, long src, float dx, float dy) { addPath(nPath, src, AffineTransform.getTranslateInstance(dx, dy)); } @LayoutlibDelegate /*package*/ static void native_addPath(long nPath, int src) { /*package*/ static void native_addPath(long nPath, long src) { addPath(nPath, src, null /*transform*/); } @LayoutlibDelegate /*package*/ static void native_addPath(long nPath, int src, long matrix) { /*package*/ static void native_addPath(long nPath, long src, long matrix) { Matrix_Delegate matrixDelegate = Matrix_Delegate.getDelegate(matrix); if (matrixDelegate == null) { return; Loading Loading @@ -473,6 +473,12 @@ public final class Path_Delegate { native_transform(nPath, matrix, 0); } @LayoutlibDelegate /*package*/ static boolean native_op(long nPath1, long nPath2, int op, long result) { Bridge.getLog().error(LayoutLog.TAG_UNSUPPORTED, "Path.op() not supported", null); return false; } @LayoutlibDelegate /*package*/ static void finalizer(long nPath) { sManager.removeJavaReferenceFor(nPath); Loading
tools/layoutlib/bridge/src/libcore/icu/DateIntervalFormat_Delegate.java +4 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import java.text.FieldPosition; import com.android.ide.common.rendering.api.LayoutLog; import com.android.layoutlib.bridge.Bridge; import com.android.layoutlib.bridge.impl.DelegateManager; import com.android.tools.layoutlib.annotations.LayoutlibDelegate; import com.ibm.icu.text.DateIntervalFormat; import com.ibm.icu.util.DateInterval; import com.ibm.icu.util.TimeZone; Loading @@ -38,6 +39,7 @@ public class DateIntervalFormat_Delegate { // ---- native methods ---- @LayoutlibDelegate /*package*/static String formatDateInterval(long address, long fromDate, long toDate) { DateIntervalFormat_Delegate delegate = sManager.getDelegate((int)address); if (delegate == null) { Loading @@ -52,6 +54,7 @@ public class DateIntervalFormat_Delegate { return sb.toString(); } @LayoutlibDelegate /*package*/ static long createDateIntervalFormat(String skeleton, String localeName, String tzName) { TimeZone prevDefaultTz = TimeZone.getDefault(); Loading @@ -63,6 +66,7 @@ public class DateIntervalFormat_Delegate { return sManager.addNewDelegate(newDelegate); } @LayoutlibDelegate /*package*/ static void destroyDateIntervalFormat(long address) { sManager.removeJavaReferenceFor((int)address); } Loading