diff options
author | 2016-08-22 13:14:26 -0700 | |
---|---|---|
committer | 2016-08-22 13:14:26 -0700 | |
commit | 4f3a0ca85d28a8fc7fcc1ac5c4a1864c66bdea14 (patch) | |
tree | ba316c9abb2357106d8de60e52d446e030477ae3 /src/gpu/SkGpuDevice.cpp | |
parent | 4c261d0c1e46159d72b2a5351b3186f80bc69d91 (diff) |
GPU implementation of drawArc.
This adds analytic shaders for filled arcs and butt-cap stroked arcs where the center point is not used.
BUG=skia:5227
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2259323003
Review-Url: https://codereview.chromium.org/2259323003
Diffstat (limited to 'src/gpu/SkGpuDevice.cpp')
-rw-r--r-- | src/gpu/SkGpuDevice.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp index 258355e497..a6c8a1fc74 100644 --- a/src/gpu/SkGpuDevice.cpp +++ b/src/gpu/SkGpuDevice.cpp @@ -554,6 +554,25 @@ void SkGpuDevice::drawOval(const SkDraw& draw, const SkRect& oval, const SkPaint fDrawContext->drawOval(fClip, grPaint, *draw.fMatrix, oval, GrStyle(paint)); } +void SkGpuDevice::drawArc(const SkDraw& draw, const SkRect& oval, SkScalar startAngle, + SkScalar sweepAngle, bool useCenter, const SkPaint& paint) { + ASSERT_SINGLE_OWNER + GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice", "drawArc", fContext); + CHECK_SHOULD_DRAW(draw); + + if (paint.getMaskFilter()) { + this->INHERITED::drawArc(draw, oval, startAngle, sweepAngle, useCenter, paint); + return; + } + GrPaint grPaint; + if (!SkPaintToGrPaint(this->context(), fDrawContext.get(), paint, *draw.fMatrix, &grPaint)) { + return; + } + + fDrawContext->drawArc(fClip, grPaint, *draw.fMatrix, oval, startAngle, sweepAngle, useCenter, + GrStyle(paint)); +} + #include "SkMaskFilter.h" /////////////////////////////////////////////////////////////////////////////// |