Loading core/jni/android/graphics/BitmapFactory.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -598,7 +598,7 @@ int register_android_graphics_BitmapFactory(JNIEnv* env) { jclass bitmap_class = env->FindClass("android/graphics/Bitmap"); SkASSERT(bitmap_class); gBitmap_nativeBitmapFieldID = getFieldIDCheck(env, bitmap_class, "mNativeBitmap", "J"); gBitmap_layoutBoundsFieldID = getFieldIDCheck(env, bitmap_class, "mLayoutBounds", "[I"); gBitmap_layoutBoundsFieldID = getFieldIDCheck(env, bitmap_class, "mOpticalInsets", "[I"); int ret = AndroidRuntime::registerNativeMethods(env, "android/graphics/BitmapFactory$Options", gOptionsMethods, Loading graphics/java/android/graphics/Bitmap.java +16 −16 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.graphics; import android.annotation.NonNull; import android.os.Parcel; import android.os.Parcelable; import android.util.DisplayMetrics; Loading Loading @@ -73,7 +74,7 @@ public final class Bitmap implements Parcelable { private boolean mRequestPremultiplied; private byte[] mNinePatchChunk; // may be null private int[] mLayoutBounds; // may be null private int[] mOpticalInsets; // may be null private int mWidth; private int mHeight; private boolean mRecycled; Loading Loading @@ -110,7 +111,7 @@ public final class Bitmap implements Parcelable { @SuppressWarnings({"UnusedDeclaration"}) // called from JNI Bitmap(long nativeBitmap, byte[] buffer, int width, int height, int density, boolean isMutable, boolean requestPremultiplied, byte[] ninePatchChunk, int[] layoutBounds) { byte[] ninePatchChunk, int[] opticalInsets) { if (nativeBitmap == 0) { throw new RuntimeException("internal error: native bitmap is 0"); } Loading @@ -125,7 +126,7 @@ public final class Bitmap implements Parcelable { mFinalizer = new BitmapFinalizer(nativeBitmap); mNinePatchChunk = ninePatchChunk; mLayoutBounds = layoutBounds; mOpticalInsets = opticalInsets; if (density >= 0) { mDensity = density; } Loading Loading @@ -291,16 +292,6 @@ public final class Bitmap implements Parcelable { mNinePatchChunk = chunk; } /** * Sets the layout bounds as an array of left, top, right, bottom integers * @param bounds the array containing the padding values * * @hide */ public void setLayoutBounds(int[] bounds) { mLayoutBounds = bounds; } /** * Free the native object associated with this bitmap, and clear the * reference to the pixel data. This will not free the pixel data synchronously; Loading Loading @@ -949,11 +940,20 @@ public final class Bitmap implements Parcelable { } /** * Populates a rectangle with the bitmap's optical insets. * * @param outInsets Rect to populate with optical insets * @hide * @return the layout padding [left, right, top, bottom] */ public int[] getLayoutBounds() { return mLayoutBounds; public void getOpticalInsets(@NonNull Rect outInsets) { if (mOpticalInsets == null) { outInsets.setEmpty(); } else { outInsets.left = mOpticalInsets[0]; outInsets.top = mOpticalInsets[1]; outInsets.right = mOpticalInsets[2]; outInsets.bottom = mOpticalInsets[3]; } } /** Loading graphics/java/android/graphics/drawable/Drawable.java +4 −7 Original line number Diff line number Diff line Loading @@ -948,13 +948,10 @@ public abstract class Drawable { np = null; pad = null; } int[] layoutBounds = bm.getLayoutBounds(); Rect layoutBoundsRect = null; if (layoutBounds != null) { layoutBoundsRect = new Rect(layoutBounds[0], layoutBounds[1], layoutBounds[2], layoutBounds[3]); } return drawableFromBitmap(res, bm, np, pad, layoutBoundsRect, srcName); final Rect opticalInsets = new Rect(); bm.getOpticalInsets(opticalInsets); return drawableFromBitmap(res, bm, np, pad, opticalInsets, srcName); } return null; } Loading graphics/java/android/graphics/drawable/InsetDrawable.java +10 −0 Original line number Diff line number Diff line Loading @@ -188,6 +188,16 @@ public class InsetDrawable extends Drawable implements Drawable.Callback { } } /** @hide */ @Override public Insets getOpticalInsets() { final Insets contentInsets = super.getOpticalInsets(); return Insets.of(contentInsets.left + mInsetState.mInsetLeft, contentInsets.top + mInsetState.mInsetTop, contentInsets.right + mInsetState.mInsetRight, contentInsets.bottom + mInsetState.mInsetBottom); } @Override public void setHotspot(float x, float y) { mInsetState.mDrawable.setHotspot(x, y); Loading graphics/java/android/graphics/drawable/NinePatchDrawable.java +3 −2 Original line number Diff line number Diff line Loading @@ -23,12 +23,10 @@ import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorFilter; import android.graphics.Insets; import android.graphics.NinePatch; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.PixelFormat; import android.graphics.PorterDuff; import android.graphics.PorterDuff.Mode; Loading Loading @@ -419,6 +417,9 @@ public class NinePatchDrawable extends Drawable { ": <nine-patch> requires a valid 9-patch source image"); } // Hey, now might be a good time to actually load optical bounds! bitmap.getOpticalInsets(opticalInsets); state.mNinePatch = new NinePatch(bitmap, bitmap.getNinePatchChunk()); state.mPadding = padding; state.mOpticalInsets = Insets.of(opticalInsets); Loading Loading
core/jni/android/graphics/BitmapFactory.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -598,7 +598,7 @@ int register_android_graphics_BitmapFactory(JNIEnv* env) { jclass bitmap_class = env->FindClass("android/graphics/Bitmap"); SkASSERT(bitmap_class); gBitmap_nativeBitmapFieldID = getFieldIDCheck(env, bitmap_class, "mNativeBitmap", "J"); gBitmap_layoutBoundsFieldID = getFieldIDCheck(env, bitmap_class, "mLayoutBounds", "[I"); gBitmap_layoutBoundsFieldID = getFieldIDCheck(env, bitmap_class, "mOpticalInsets", "[I"); int ret = AndroidRuntime::registerNativeMethods(env, "android/graphics/BitmapFactory$Options", gOptionsMethods, Loading
graphics/java/android/graphics/Bitmap.java +16 −16 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.graphics; import android.annotation.NonNull; import android.os.Parcel; import android.os.Parcelable; import android.util.DisplayMetrics; Loading Loading @@ -73,7 +74,7 @@ public final class Bitmap implements Parcelable { private boolean mRequestPremultiplied; private byte[] mNinePatchChunk; // may be null private int[] mLayoutBounds; // may be null private int[] mOpticalInsets; // may be null private int mWidth; private int mHeight; private boolean mRecycled; Loading Loading @@ -110,7 +111,7 @@ public final class Bitmap implements Parcelable { @SuppressWarnings({"UnusedDeclaration"}) // called from JNI Bitmap(long nativeBitmap, byte[] buffer, int width, int height, int density, boolean isMutable, boolean requestPremultiplied, byte[] ninePatchChunk, int[] layoutBounds) { byte[] ninePatchChunk, int[] opticalInsets) { if (nativeBitmap == 0) { throw new RuntimeException("internal error: native bitmap is 0"); } Loading @@ -125,7 +126,7 @@ public final class Bitmap implements Parcelable { mFinalizer = new BitmapFinalizer(nativeBitmap); mNinePatchChunk = ninePatchChunk; mLayoutBounds = layoutBounds; mOpticalInsets = opticalInsets; if (density >= 0) { mDensity = density; } Loading Loading @@ -291,16 +292,6 @@ public final class Bitmap implements Parcelable { mNinePatchChunk = chunk; } /** * Sets the layout bounds as an array of left, top, right, bottom integers * @param bounds the array containing the padding values * * @hide */ public void setLayoutBounds(int[] bounds) { mLayoutBounds = bounds; } /** * Free the native object associated with this bitmap, and clear the * reference to the pixel data. This will not free the pixel data synchronously; Loading Loading @@ -949,11 +940,20 @@ public final class Bitmap implements Parcelable { } /** * Populates a rectangle with the bitmap's optical insets. * * @param outInsets Rect to populate with optical insets * @hide * @return the layout padding [left, right, top, bottom] */ public int[] getLayoutBounds() { return mLayoutBounds; public void getOpticalInsets(@NonNull Rect outInsets) { if (mOpticalInsets == null) { outInsets.setEmpty(); } else { outInsets.left = mOpticalInsets[0]; outInsets.top = mOpticalInsets[1]; outInsets.right = mOpticalInsets[2]; outInsets.bottom = mOpticalInsets[3]; } } /** Loading
graphics/java/android/graphics/drawable/Drawable.java +4 −7 Original line number Diff line number Diff line Loading @@ -948,13 +948,10 @@ public abstract class Drawable { np = null; pad = null; } int[] layoutBounds = bm.getLayoutBounds(); Rect layoutBoundsRect = null; if (layoutBounds != null) { layoutBoundsRect = new Rect(layoutBounds[0], layoutBounds[1], layoutBounds[2], layoutBounds[3]); } return drawableFromBitmap(res, bm, np, pad, layoutBoundsRect, srcName); final Rect opticalInsets = new Rect(); bm.getOpticalInsets(opticalInsets); return drawableFromBitmap(res, bm, np, pad, opticalInsets, srcName); } return null; } Loading
graphics/java/android/graphics/drawable/InsetDrawable.java +10 −0 Original line number Diff line number Diff line Loading @@ -188,6 +188,16 @@ public class InsetDrawable extends Drawable implements Drawable.Callback { } } /** @hide */ @Override public Insets getOpticalInsets() { final Insets contentInsets = super.getOpticalInsets(); return Insets.of(contentInsets.left + mInsetState.mInsetLeft, contentInsets.top + mInsetState.mInsetTop, contentInsets.right + mInsetState.mInsetRight, contentInsets.bottom + mInsetState.mInsetBottom); } @Override public void setHotspot(float x, float y) { mInsetState.mDrawable.setHotspot(x, y); Loading
graphics/java/android/graphics/drawable/NinePatchDrawable.java +3 −2 Original line number Diff line number Diff line Loading @@ -23,12 +23,10 @@ import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorFilter; import android.graphics.Insets; import android.graphics.NinePatch; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.PixelFormat; import android.graphics.PorterDuff; import android.graphics.PorterDuff.Mode; Loading Loading @@ -419,6 +417,9 @@ public class NinePatchDrawable extends Drawable { ": <nine-patch> requires a valid 9-patch source image"); } // Hey, now might be a good time to actually load optical bounds! bitmap.getOpticalInsets(opticalInsets); state.mNinePatch = new NinePatch(bitmap, bitmap.getNinePatchChunk()); state.mPadding = padding; state.mOpticalInsets = Insets.of(opticalInsets); Loading