diff options
author | Greg Daniel <egdaniel@google.com> | 2018-04-04 08:59:20 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-04-04 14:05:01 +0000 |
commit | 75a130258da979809668344e4886b0068435b604 (patch) | |
tree | ebf7b6eb32c05ab13582661efba6b72df415b1e9 /src/gpu/ops/GrOvalOpFactory.cpp | |
parent | d40133092ae138b3d47a1158101faec3c53c6b1f (diff) |
Don't use the inner radius when not stroking in DIEllipse
Bug: skia:7769
Change-Id: Ida462aec8ad832f01aec07602d8be5735a9b0ca2
Reviewed-on: https://skia-review.googlesource.com/118582
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Diffstat (limited to 'src/gpu/ops/GrOvalOpFactory.cpp')
-rw-r--r-- | src/gpu/ops/GrOvalOpFactory.cpp | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/gpu/ops/GrOvalOpFactory.cpp b/src/gpu/ops/GrOvalOpFactory.cpp index b931869d53..76791513b3 100644 --- a/src/gpu/ops/GrOvalOpFactory.cpp +++ b/src/gpu/ops/GrOvalOpFactory.cpp @@ -1533,28 +1533,39 @@ private: SkScalar offsetDx = ellipse.fGeoDx / xRadius; SkScalar offsetDy = ellipse.fGeoDy / yRadius; - SkScalar innerRatioX = xRadius / ellipse.fInnerXRadius; - SkScalar innerRatioY = yRadius / ellipse.fInnerYRadius; - verts[0].fPos = SkPoint::Make(bounds.fLeft, bounds.fTop); verts[0].fColor = color; verts[0].fOuterOffset = SkPoint::Make(-1.0f - offsetDx, -1.0f - offsetDy); - verts[0].fInnerOffset = SkPoint::Make(-innerRatioX - offsetDx, -innerRatioY - offsetDy); + verts[0].fInnerOffset = SkPoint::Make(0.0f, 0.0f); verts[1].fPos = SkPoint::Make(bounds.fLeft, bounds.fBottom); verts[1].fColor = color; verts[1].fOuterOffset = SkPoint::Make(-1.0f - offsetDx, 1.0f + offsetDy); - verts[1].fInnerOffset = SkPoint::Make(-innerRatioX - offsetDx, innerRatioY + offsetDy); + verts[1].fInnerOffset = SkPoint::Make(0.0f, 0.0f); verts[2].fPos = SkPoint::Make(bounds.fRight, bounds.fTop); verts[2].fColor = color; verts[2].fOuterOffset = SkPoint::Make(1.0f + offsetDx, -1.0f - offsetDy); - verts[2].fInnerOffset = SkPoint::Make(innerRatioX + offsetDx, -innerRatioY - offsetDy); + verts[2].fInnerOffset = SkPoint::Make(0.0f, 0.0f); verts[3].fPos = SkPoint::Make(bounds.fRight, bounds.fBottom); verts[3].fColor = color; verts[3].fOuterOffset = SkPoint::Make(1.0f + offsetDx, 1.0f + offsetDy); - verts[3].fInnerOffset = SkPoint::Make(innerRatioX + offsetDx, innerRatioY + offsetDy); + verts[3].fInnerOffset = SkPoint::Make(0.0f, 0.0f); + + if (DIEllipseStyle::kStroke == this->style()) { + SkScalar innerRatioX = xRadius / ellipse.fInnerXRadius; + SkScalar innerRatioY = yRadius / ellipse.fInnerYRadius; + + verts[0].fInnerOffset = SkPoint::Make(-innerRatioX - offsetDx, + -innerRatioY - offsetDy); + verts[1].fInnerOffset = SkPoint::Make(-innerRatioX - offsetDx, + innerRatioY + offsetDy); + verts[2].fInnerOffset = SkPoint::Make(innerRatioX + offsetDx, + -innerRatioY - offsetDy); + verts[3].fInnerOffset = SkPoint::Make(innerRatioX + offsetDx, + innerRatioY + offsetDy); + } verts += kVerticesPerQuad; } |