diff options
Diffstat (limited to 'src/gpu/GrAAConvexPathRenderer.cpp')
-rw-r--r-- | src/gpu/GrAAConvexPathRenderer.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/gpu/GrAAConvexPathRenderer.cpp b/src/gpu/GrAAConvexPathRenderer.cpp index ed6bc6365b..fcf38ef7e7 100644 --- a/src/gpu/GrAAConvexPathRenderer.cpp +++ b/src/gpu/GrAAConvexPathRenderer.cpp @@ -15,6 +15,7 @@ #include "GrInvariantOutput.h" #include "GrProcessor.h" #include "GrPathUtils.h" +#include "SkGeometry.h" #include "SkString.h" #include "SkStrokeRec.h" #include "SkTraceEvent.h" @@ -307,6 +308,18 @@ static bool get_segments(const SkPath& path, update_degenerate_test(°enerateData, pts[2]); add_quad_segment(pts, segments, devBounds); break; + case SkPath::kConic_Verb: { + m.mapPoints(pts, 3); + SkScalar weight = iter.conicWeight(); + SkAutoConicToQuads converter; + const SkPoint* quadPts = converter.computeQuads(pts, weight, 0.5f); + for (int i = 0; i < converter.countQuads(); ++i) { + update_degenerate_test(°enerateData, quadPts[2*i + 1]); + update_degenerate_test(°enerateData, quadPts[2*i + 2]); + add_quad_segment(quadPts + 2*i, segments, devBounds); + } + break; + } case SkPath::kCubic_Verb: { m.mapPoints(pts, 4); update_degenerate_test(°enerateData, pts[1]); |