Move new convex path towards the end of the path array in GM convexpaths. Makes triaging a lot easier. TBR=jvanverth@google.com Bug: skia:8928 Change-Id: Id800b8e90e94e41c3ce3faaae8f3e10b501f0e04 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/204784 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com> In GrAAConvexPathRenderer check whether middle quadtric control point is close to line segment between first and last control points and if so draw as a line. Previously we just checked whether the middle control point was close to either the first or last. No-Tree-Checks: true No-Try: true No-Presubmit: true Bug: skia:8928 Bug: chromium:945449 Change-Id: I1f7353623c29dcdc329812c44815b80898f83625 Reviewed-On: https://skia-review.googlesource.com/c/skia/+/204981 Reviewed-By: Jim Van Verth <jvanverth@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/205264 Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/gm/convexpaths.cpp b/gm/convexpaths.cpp index 6354832..ea0f690 100644 --- a/gm/convexpaths.cpp +++ b/gm/convexpaths.cpp
@@ -252,6 +252,16 @@ 0, 0, 100 * SK_Scalar1, 100 * SK_Scalar1); + // skbug.com/8928 + fPaths.push_back().moveTo(16.875f, 192.594f); + fPaths.back().cubicTo(45.625f, 192.594f, 74.375f, 192.594f, 103.125f, 192.594f); + fPaths.back().cubicTo(88.75f, 167.708f, 74.375f, 142.823f, 60, 117.938f); + fPaths.back().cubicTo(45.625f, 142.823f, 31.25f, 167.708f, 16.875f, 192.594f); + fPaths.back().close(); + SkMatrix m; + m.setAll(0.1f, 0, -1, 0, 0.115207f, -2.64977f, 0, 0, 1); + fPaths.back().transform(m); + // small circle. This is listed last so that it has device coords far // from the origin (small area relative to x,y values). fPaths.push_back().addCircle(0, 0, 1.2f);
diff --git a/src/gpu/ops/GrAAConvexPathRenderer.cpp b/src/gpu/ops/GrAAConvexPathRenderer.cpp index bb45932..fac181f 100644 --- a/src/gpu/ops/GrAAConvexPathRenderer.cpp +++ b/src/gpu/ops/GrAAConvexPathRenderer.cpp
@@ -242,8 +242,7 @@ static inline void add_quad_segment(const SkPoint pts[3], SegmentArray* segments) { - if (SkPointPriv::DistanceToSqd(pts[0], pts[1]) < kCloseSqd || - SkPointPriv::DistanceToSqd(pts[1], pts[2]) < kCloseSqd) { + if (SkPointPriv::DistanceToLineSegmentBetweenSqd(pts[1], pts[0], pts[2]) < kCloseSqd) { if (pts[0] != pts[2]) { add_line_to_segment(pts[2], segments); }