Ensure Outline consistently sets the radius to be undefined
Radius should only be defined when the rect is also defined. Also updates ArcShape to not return an outline, since it may be convex. Bug: 27593976 Bug: 27592381 Change-Id: I99010b139361607af6ec8cab26c9aa1d4dcbba77
This commit is contained in:
@@ -32,13 +32,15 @@ import android.graphics.drawable.Drawable;
|
||||
* @see Drawable#getOutline(Outline)
|
||||
*/
|
||||
public final class Outline {
|
||||
private static final float RADIUS_UNDEFINED = -1.0f;
|
||||
|
||||
/** @hide */
|
||||
public Path mPath;
|
||||
|
||||
/** @hide */
|
||||
public Rect mRect;
|
||||
/** @hide */
|
||||
public float mRadius;
|
||||
public float mRadius = RADIUS_UNDEFINED;
|
||||
/** @hide */
|
||||
public float mAlpha;
|
||||
|
||||
@@ -63,7 +65,7 @@ public final class Outline {
|
||||
public void setEmpty() {
|
||||
mPath = null;
|
||||
mRect = null;
|
||||
mRadius = 0;
|
||||
mRadius = RADIUS_UNDEFINED;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -223,6 +225,7 @@ public final class Outline {
|
||||
mPath.reset();
|
||||
mPath.addOval(left, top, right, bottom, Path.Direction.CW);
|
||||
mRect = null;
|
||||
mRadius = RADIUS_UNDEFINED;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -249,7 +252,7 @@ public final class Outline {
|
||||
|
||||
mPath.set(convexPath);
|
||||
mRect = null;
|
||||
mRadius = -1.0f;
|
||||
mRadius = RADIUS_UNDEFINED;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package android.graphics.drawable.shapes;
|
||||
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Outline;
|
||||
import android.graphics.Paint;
|
||||
|
||||
/**
|
||||
@@ -46,5 +47,11 @@ public class ArcShape extends RectShape {
|
||||
public void draw(Canvas canvas, Paint paint) {
|
||||
canvas.drawArc(rect(), mStart, mSweep, true, paint);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getOutline(Outline outline) {
|
||||
// Since we don't support concave outlines, arc shape does not attempt
|
||||
// to provide an outline.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user