aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects/shadows/SkAmbientShadowMaskFilter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/effects/shadows/SkAmbientShadowMaskFilter.cpp')
-rw-r--r--src/effects/shadows/SkAmbientShadowMaskFilter.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/effects/shadows/SkAmbientShadowMaskFilter.cpp b/src/effects/shadows/SkAmbientShadowMaskFilter.cpp
index 4d5bc7cbd0..584dc747ae 100644
--- a/src/effects/shadows/SkAmbientShadowMaskFilter.cpp
+++ b/src/effects/shadows/SkAmbientShadowMaskFilter.cpp
@@ -219,11 +219,14 @@ bool SkAmbientShadowMaskFilterImpl::directFilterRRectMaskGPU(GrContext*,
SkScalar ambientPathOutset = 0.5f*srcSpaceStrokeWidth;
SkRRect ambientRRect;
- if (rrect.isRect()) {
- const SkRect temp = rrect.rect().makeOutset(ambientPathOutset, ambientPathOutset);
- ambientRRect = SkRRect::MakeRectXY(temp, ambientPathOutset, ambientPathOutset);
+ SkRect insetRect = rrect.rect().makeOutset(ambientPathOutset, ambientPathOutset);
+ // If the rrect was an oval then its outset will also be one.
+ // We set it explicitly to avoid errors.
+ if (rrect.isOval()) {
+ ambientRRect = SkRRect::MakeOval(insetRect);
} else {
- rrect.outset(ambientPathOutset, ambientPathOutset, &ambientRRect);
+ SkScalar insetRad = rrect.getSimpleRadii().fX + ambientPathOutset;
+ ambientRRect = SkRRect::MakeRectXY(insetRect, insetRad, insetRad);
}
GrPaint newPaint(paint);