am 9aa600e7
: Merge "LayoutLib: fix crash when shadow size <=0." into lmp-mr1-dev
* commit '9aa600e79f8f68115e8e95f02933376e3da7d194': LayoutLib: fix crash when shadow size <=0.
This commit is contained in:
@ -19,6 +19,7 @@ package android.view;
|
||||
import com.android.layoutlib.bridge.impl.ResourceHelper;
|
||||
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Canvas_Delegate;
|
||||
import android.graphics.LinearGradient;
|
||||
import android.graphics.Outline;
|
||||
import android.graphics.Paint;
|
||||
@ -125,6 +126,9 @@ public class RectShadowPainter {
|
||||
|
||||
private static void sideShadow(Canvas canvas, Paint edgePaint,
|
||||
RectF edgeShadowRect, float dx, float dy, int rotations) {
|
||||
if (isRectEmpty(edgeShadowRect)) {
|
||||
return;
|
||||
}
|
||||
int saved = canvas.save();
|
||||
canvas.translate(dx, dy);
|
||||
canvas.rotate(rotations * PERPENDICULAR_ANGLE);
|
||||
@ -153,4 +157,15 @@ public class RectShadowPainter {
|
||||
canvas.drawPath(path, paint);
|
||||
canvas.restoreToCount(saved);
|
||||
}
|
||||
|
||||
/**
|
||||
* Differs from {@link RectF#isEmpty()} as this first converts the rect to int and then checks.
|
||||
* <p/>
|
||||
* This is required because {@link Canvas_Delegate#native_drawRect(long, float, float, float,
|
||||
* float, long)} casts the co-ordinates to int and we want to ensure that it doesn't end up
|
||||
* drawing empty rectangles, which results in IllegalArgumentException.
|
||||
*/
|
||||
private static boolean isRectEmpty(RectF rect) {
|
||||
return (int) rect.left >= (int) rect.right || (int) rect.top >= (int) rect.bottom;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user