From 6e93584e840fc769e804170aadf64177760ab569 Mon Sep 17 00:00:00 2001 From: csmartdalton Date: Wed, 8 Mar 2017 16:10:45 -0700 Subject: [PATCH] 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 --- src/core/SkGeometry.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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; } -- 2.7.4