Fixing drawing bug in ReactArt on Android

Summary: This change fixes rendering issues with arcs having an inner radius.  The root cause was a bug that lost the negative sign for counter-clockwise angles.  The previous code also incorrectly set the start angle to the end angle.

Differential Revision: D5298320

fbshipit-source-id: 4d11edfed5bdab0cf68313d22f94ef0e3711a1a8
This commit is contained in:
Nick Eddy 2017-06-23 09:29:44 -07:00 committed by Facebook Github Bot
parent 1ee602b655
commit a6607968c4
1 changed files with 6 additions and 6 deletions

View File

@ -195,8 +195,8 @@ public class ARTShapeShadowNode extends ARTVirtualNode {
case COLOR_TYPE_LINEAR_GRADIENT:
// For mBrushData format refer to LinearGradient and insertColorStopsIntoArray functions in ReactNativeART.js
if (mBrushData.length < 5) {
FLog.w(ReactConstants.TAG,
"[ARTShapeShadowNode setupFillPaint] expects 5 elements, received "
FLog.w(ReactConstants.TAG,
"[ARTShapeShadowNode setupFillPaint] expects 5 elements, received "
+ mBrushData.length);
return false;
}
@ -296,16 +296,16 @@ public class ARTShapeShadowNode extends ARTVirtualNode {
float start = (float) Math.toDegrees(data[i++]);
float end = (float) Math.toDegrees(data[i++]);
boolean clockwise = data[i++] == 1f;
boolean counterClockwise = !(data[i++] == 1f);
float sweep = end - start;
if (Math.abs(sweep) > 360) {
sweep = 360;
} else {
sweep = modulus(sweep, 360);
}
if (!clockwise && sweep < 360) {
start = end;
sweep = 360 - sweep;
if (counterClockwise && sweep < 360) {
// Counter-clockwise sweeps are negative
sweep = -1 * (360 - sweep);
}
RectF oval = new RectF(x - r, y - r, x + r, y + r);