aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/ops/GrOvalOpFactory.cpp
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2018-04-04 08:59:20 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-04-04 14:05:01 +0000
commit75a130258da979809668344e4886b0068435b604 (patch)
treeebf7b6eb32c05ab13582661efba6b72df415b1e9 /src/gpu/ops/GrOvalOpFactory.cpp
parentd40133092ae138b3d47a1158101faec3c53c6b1f (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.cpp25
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;
}