Loading graphics/java/android/graphics/NinePatch.java +20 −7 Original line number Diff line number Diff line Loading @@ -45,15 +45,11 @@ public class NinePatch { int outlineLeft, int outlineTop, int outlineRight, int outlineBottom, float outlineRadius, int outlineAlpha, float decodeScale) { opticalRect = new Rect(opticalLeft, opticalTop, opticalRight, opticalBottom); outlineRect = new Rect(outlineLeft, outlineTop, outlineRight, outlineBottom); if (decodeScale != 1.0f) { // if bitmap was scaled when decoded, scale the insets from the metadata values opticalRect.scale(decodeScale); // round inward while scaling outline, as the outline should always be conservative outlineRect.scaleRoundIn(decodeScale); } outlineRect = scaleInsets(outlineLeft, outlineTop, outlineRight, outlineBottom, decodeScale); this.outlineRadius = outlineRadius * decodeScale; this.outlineAlpha = outlineAlpha / 255.0f; } Loading @@ -62,6 +58,23 @@ public class NinePatch { public final Rect outlineRect; public final float outlineRadius; public final float outlineAlpha; /** * Scales up the rect by the given scale, ceiling values, so actual outline Rect * grows toward the inside. */ public static Rect scaleInsets(int left, int top, int right, int bottom, float scale) { if (scale == 1.0f) { return new Rect(left, top, right, bottom); } Rect result = new Rect(); result.left = (int) Math.ceil(left * scale); result.top = (int) Math.ceil(top * scale); result.right = (int) Math.ceil(right * scale); result.bottom = (int) Math.ceil(bottom * scale); return result; } } private final Bitmap mBitmap; Loading graphics/java/android/graphics/Rect.java +0 −12 Original line number Diff line number Diff line Loading @@ -647,16 +647,4 @@ public final class Rect implements Parcelable { } } /** * Scales up the rect by the given scale, rounding values toward the inside. * @hide */ public void scaleRoundIn(float scale) { if (scale != 1.0f) { left = (int) Math.ceil(left * scale); top = (int) Math.ceil(top * scale); right = (int) Math.floor(right * scale); bottom = (int) Math.floor(bottom * scale); } } } graphics/java/android/graphics/drawable/NinePatchDrawable.java +3 −12 Original line number Diff line number Diff line Loading @@ -706,18 +706,9 @@ public class NinePatchDrawable extends Drawable { final NinePatch.InsetStruct insets = ninePatch.getBitmap().getNinePatchInsets(); if (insets != null) { if (mOutlineInsets == null) { mOutlineInsets = new Rect(); } final Rect outlineInsets = insets.outlineRect; mOutlineInsets.left = Drawable.scaleFromDensity( outlineInsets.left, sourceDensity, targetDensity, false); mOutlineInsets.top = Drawable.scaleFromDensity( outlineInsets.top, sourceDensity, targetDensity, false); mOutlineInsets.right = Drawable.scaleFromDensity( outlineInsets.right, sourceDensity, targetDensity, false); mOutlineInsets.bottom = Drawable.scaleFromDensity( outlineInsets.bottom, sourceDensity, targetDensity, false); Rect outlineRect = insets.outlineRect; mOutlineInsets = NinePatch.InsetStruct.scaleInsets(outlineRect.left, outlineRect.top, outlineRect.right, outlineRect.bottom, targetDensity / (float) sourceDensity); mOutlineRadius = Drawable.scaleFromDensity( insets.outlineRadius, sourceDensity, targetDensity); } else { Loading Loading
graphics/java/android/graphics/NinePatch.java +20 −7 Original line number Diff line number Diff line Loading @@ -45,15 +45,11 @@ public class NinePatch { int outlineLeft, int outlineTop, int outlineRight, int outlineBottom, float outlineRadius, int outlineAlpha, float decodeScale) { opticalRect = new Rect(opticalLeft, opticalTop, opticalRight, opticalBottom); outlineRect = new Rect(outlineLeft, outlineTop, outlineRight, outlineBottom); if (decodeScale != 1.0f) { // if bitmap was scaled when decoded, scale the insets from the metadata values opticalRect.scale(decodeScale); // round inward while scaling outline, as the outline should always be conservative outlineRect.scaleRoundIn(decodeScale); } outlineRect = scaleInsets(outlineLeft, outlineTop, outlineRight, outlineBottom, decodeScale); this.outlineRadius = outlineRadius * decodeScale; this.outlineAlpha = outlineAlpha / 255.0f; } Loading @@ -62,6 +58,23 @@ public class NinePatch { public final Rect outlineRect; public final float outlineRadius; public final float outlineAlpha; /** * Scales up the rect by the given scale, ceiling values, so actual outline Rect * grows toward the inside. */ public static Rect scaleInsets(int left, int top, int right, int bottom, float scale) { if (scale == 1.0f) { return new Rect(left, top, right, bottom); } Rect result = new Rect(); result.left = (int) Math.ceil(left * scale); result.top = (int) Math.ceil(top * scale); result.right = (int) Math.ceil(right * scale); result.bottom = (int) Math.ceil(bottom * scale); return result; } } private final Bitmap mBitmap; Loading
graphics/java/android/graphics/Rect.java +0 −12 Original line number Diff line number Diff line Loading @@ -647,16 +647,4 @@ public final class Rect implements Parcelable { } } /** * Scales up the rect by the given scale, rounding values toward the inside. * @hide */ public void scaleRoundIn(float scale) { if (scale != 1.0f) { left = (int) Math.ceil(left * scale); top = (int) Math.ceil(top * scale); right = (int) Math.floor(right * scale); bottom = (int) Math.floor(bottom * scale); } } }
graphics/java/android/graphics/drawable/NinePatchDrawable.java +3 −12 Original line number Diff line number Diff line Loading @@ -706,18 +706,9 @@ public class NinePatchDrawable extends Drawable { final NinePatch.InsetStruct insets = ninePatch.getBitmap().getNinePatchInsets(); if (insets != null) { if (mOutlineInsets == null) { mOutlineInsets = new Rect(); } final Rect outlineInsets = insets.outlineRect; mOutlineInsets.left = Drawable.scaleFromDensity( outlineInsets.left, sourceDensity, targetDensity, false); mOutlineInsets.top = Drawable.scaleFromDensity( outlineInsets.top, sourceDensity, targetDensity, false); mOutlineInsets.right = Drawable.scaleFromDensity( outlineInsets.right, sourceDensity, targetDensity, false); mOutlineInsets.bottom = Drawable.scaleFromDensity( outlineInsets.bottom, sourceDensity, targetDensity, false); Rect outlineRect = insets.outlineRect; mOutlineInsets = NinePatch.InsetStruct.scaleInsets(outlineRect.left, outlineRect.top, outlineRect.right, outlineRect.bottom, targetDensity / (float) sourceDensity); mOutlineRadius = Drawable.scaleFromDensity( insets.outlineRadius, sourceDensity, targetDensity); } else { Loading