diff options
Diffstat (limited to 'src/effects/shadows/SkAmbientShadowMaskFilter.cpp')
-rw-r--r-- | src/effects/shadows/SkAmbientShadowMaskFilter.cpp | 11 |
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); |