Replace Outline#setConvexPath with Outline#setPath

Bug: 148544953
Test: No change in behavior, no new tests

setConvexPath no longer requires that the Path be Convex, so deprecate
the method and replace it with a name that does not imply it must be
Convex.

Update internal references to the Path being Convex as well.

Change-Id: I8935dc8ac7f7fb7db0d667e35fda67afdf2e6ac8
This commit is contained in:
Leon Scroggins III
2020-01-30 15:34:13 -05:00
parent b29730fc9b
commit a49beaaa69
11 changed files with 42 additions and 29 deletions

View File

@@ -43,7 +43,7 @@ public final class Outline {
/** @hide */
public static final int MODE_ROUND_RECT = 1;
/** @hide */
public static final int MODE_CONVEX_PATH = 2;
public static final int MODE_PATH = 2;
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@@ -51,7 +51,7 @@ public final class Outline {
value = {
MODE_EMPTY,
MODE_ROUND_RECT,
MODE_CONVEX_PATH,
MODE_PATH,
})
public @interface Mode {}
@@ -60,7 +60,7 @@ public final class Outline {
public int mMode = MODE_EMPTY;
/**
* Only guaranteed to be non-null when mode == MODE_CONVEX_PATH
* Only guaranteed to be non-null when mode == MODE_PATH
*
* @hide
*/
@@ -124,7 +124,7 @@ public final class Outline {
* @see android.view.View#setClipToOutline(boolean)
*/
public boolean canClip() {
return mMode != MODE_CONVEX_PATH;
return mMode != MODE_PATH;
}
/**
@@ -157,7 +157,7 @@ public final class Outline {
*/
public void set(@NonNull Outline src) {
mMode = src.mMode;
if (src.mMode == MODE_CONVEX_PATH) {
if (src.mMode == MODE_PATH) {
if (mPath == null) {
mPath = new Path();
}
@@ -194,7 +194,7 @@ public final class Outline {
return;
}
if (mMode == MODE_CONVEX_PATH) {
if (mMode == MODE_PATH) {
// rewind here to avoid thrashing the allocations, but could alternately clear ref
mPath.rewind();
}
@@ -213,7 +213,7 @@ public final class Outline {
/**
* Populates {@code outBounds} with the outline bounds, if set, and returns
* {@code true}. If no outline bounds are set, or if a path has been set
* via {@link #setConvexPath(Path)}, returns {@code false}.
* via {@link #setPath(Path)}, returns {@code false}.
*
* @param outRect the rect to populate with the outline bounds, if set
* @return {@code true} if {@code outBounds} was populated with outline
@@ -229,7 +229,7 @@ public final class Outline {
/**
* Returns the rounded rect radius, if set, or a value less than 0 if a path has
* been set via {@link #setConvexPath(Path)}. A return value of {@code 0}
* been set via {@link #setPath(Path)}. A return value of {@code 0}
* indicates a non-rounded rect.
*
* @return the rounded rect radius, or value < 0
@@ -259,7 +259,7 @@ public final class Outline {
mPath.rewind();
}
mMode = MODE_CONVEX_PATH;
mMode = MODE_PATH;
mPath.addOval(left, top, right, bottom, Path.Direction.CW);
mRect.setEmpty();
mRadius = RADIUS_UNDEFINED;
@@ -279,9 +279,21 @@ public final class Outline {
* @param convexPath used to construct the Outline. As of
* {@link android.os.Build.VERSION_CODES#Q}, it is no longer required to be
* convex.
*
* @deprecated The path is no longer required to be convex. Use {@link #setPath} instead.
*/
@Deprecated
public void setConvexPath(@NonNull Path convexPath) {
if (convexPath.isEmpty()) {
setPath(convexPath);
}
/**
* Sets the Outline to a {@link android.graphics.Path path}.
*
* @param path used to construct the Outline.
*/
public void setPath(@NonNull Path path) {
if (path.isEmpty()) {
setEmpty();
return;
}
@@ -290,8 +302,8 @@ public final class Outline {
mPath = new Path();
}
mMode = MODE_CONVEX_PATH;
mPath.set(convexPath);
mMode = MODE_PATH;
mPath.set(path);
mRect.setEmpty();
mRadius = RADIUS_UNDEFINED;
}
@@ -302,7 +314,7 @@ public final class Outline {
public void offset(int dx, int dy) {
if (mMode == MODE_ROUND_RECT) {
mRect.offset(dx, dy);
} else if (mMode == MODE_CONVEX_PATH) {
} else if (mMode == MODE_PATH) {
mPath.offset(dx, dy);
}
}

View File

@@ -687,8 +687,8 @@ public final class RenderNode {
outline.mRect.left, outline.mRect.top,
outline.mRect.right, outline.mRect.bottom,
outline.mRadius, outline.mAlpha);
case Outline.MODE_CONVEX_PATH:
return nSetOutlineConvexPath(mNativeRenderNode, outline.mPath.mNativePath,
case Outline.MODE_PATH:
return nSetOutlinePath(mNativeRenderNode, outline.mPath.mNativePath,
outline.mAlpha);
}
@@ -1620,7 +1620,7 @@ public final class RenderNode {
int right, int bottom, float radius, float alpha);
@CriticalNative
private static native boolean nSetOutlineConvexPath(long renderNode, long nativePath,
private static native boolean nSetOutlinePath(long renderNode, long nativePath,
float alpha);
@CriticalNative

View File

@@ -387,7 +387,7 @@ public class AdaptiveIconDrawable extends Drawable implements Drawable.Callback
@Override
public void getOutline(@NonNull Outline outline) {
outline.setConvexPath(mMask);
outline.setPath(mMask);
}
/** @hide */

View File

@@ -1915,7 +1915,7 @@ public class GradientDrawable extends Drawable {
case RECTANGLE:
if (st.mRadiusArray != null) {
buildPathIfDirty();
outline.setConvexPath(mPath);
outline.setPath(mPath);
return;
}

View File

@@ -94,7 +94,7 @@ public class RoundRectShape extends RectShape {
for (int i = 1; i < 8; i++) {
if (mOuterRadii[i] != radius) {
// can't call simple constructors, use path
outline.setConvexPath(mPath);
outline.setPath(mPath);
return;
}
}