From: csmartdalton Date: Wed, 8 Mar 2017 23:10:45 +0000 (-0700) Subject: Add tolerance to quadratic and linear cubic detection X-Git-Tag: accepted/tizen/5.0/unified/20181102.025319~46^2~634 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6e93584e840fc769e804170aadf64177760ab569;p=platform%2Fupstream%2FlibSkiaSharp.git Add tolerance to quadratic and linear cubic detection Otherwise these can be misclassified as cusps since there is already tolerance in the discriminant test. BUG=skia: Change-Id: Id02c12f671714cebf799953ebed5335ee4c4d52a Reviewed-on: https://skia-review.googlesource.com/9355 Reviewed-by: Cary Clark Commit-Queue: Chris Dalton --- diff --git a/src/core/SkGeometry.cpp b/src/core/SkGeometry.cpp index 175ea50..c2e9b60 100644 --- a/src/core/SkGeometry.cpp +++ b/src/core/SkGeometry.cpp @@ -550,8 +550,9 @@ static SkCubicType classify_cubic(const SkPoint p[4], const SkScalar d[3]) { } else if (discr < -SK_ScalarNearlyZero) { return kLoop_SkCubicType; } else { - if (0.f == d[0] && 0.f == d[1]) { - return (0.f == d[2] ? kLine_SkCubicType : kQuadratic_SkCubicType); + if (SkScalarAbs(d[0]) < SK_ScalarNearlyZero && SkScalarAbs(d[1]) < SK_ScalarNearlyZero) { + return ((SkScalarAbs(d[2]) < SK_ScalarNearlyZero) ? kLine_SkCubicType + : kQuadratic_SkCubicType); } else { return kCusp_SkCubicType; }