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>
diff --git a/src/gpu/ops/GrOvalOpFactory.cpp b/src/gpu/ops/GrOvalOpFactory.cpp
index b931869..7679151 100644
--- a/src/gpu/ops/GrOvalOpFactory.cpp
+++ b/src/gpu/ops/GrOvalOpFactory.cpp
@@ -1533,28 +1533,39 @@
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;
}