@@ -1090,20 +1090,17 @@ class MCGContextEffectInvertedInnerShader: public SkShader
10901090#endif
10911091
10921092// Utility methods for drawing against a raster mask
1093- static void MCGMaskedFill (SkCanvas& p_canvas, const SkMask& p_mask, const SkPaint& p_paint)
1093+ static void MCGMaskedDeviceFill (SkCanvas& p_canvas, const SkMask& p_mask, const SkPaint& p_paint)
10941094{
10951095 SkRect t_bounds = SkRect::Make (p_mask.fBounds );
10961096 SkImageInfo t_info = SkImageInfo::MakeA8 (p_mask.fBounds .width (), p_mask.fBounds .height ());
10971097 SkBitmap t_mask_bitmap;
10981098 t_mask_bitmap.setInfo (t_info);
10991099 t_mask_bitmap.installMaskPixels (p_mask);
11001100
1101- SkPaint t_paint;
1102- t_paint.setBlendMode (SkBlendMode::kDstIn );
1103-
1104- p_canvas.saveLayer (&t_bounds, &p_paint);
1105- p_canvas.drawColor (SK_ColorWHITE);
1106- p_canvas.drawBitmap (t_mask_bitmap, p_mask.fBounds .left (), p_mask.fBounds .top (), &t_paint);
1101+ p_canvas.save ();
1102+ p_canvas.resetMatrix ();
1103+ p_canvas.drawBitmap (t_mask_bitmap, t_bounds.x (), t_bounds.y (), &p_paint);
11071104 p_canvas.restore ();
11081105}
11091106
@@ -1345,7 +1342,7 @@ static void MCGContextRenderEffect(MCGContextRef self, const SkMask& p_mask, MCG
13451342#endif
13461343
13471344 // Now paint.
1348- MCGMaskedFill (*self->layer ->canvas , t_blurred_mask, t_paint);
1345+ MCGMaskedDeviceFill (*self->layer ->canvas , t_blurred_mask, t_paint);
13491346
13501347 // Free the blurred mask.
13511348 SkMask::FreeImage (t_old_blurred_mask_fImage);
@@ -1435,7 +1432,7 @@ static void MCGContextRenderEffects(MCGContextRef self, MCGContextLayerRef p_chi
14351432
14361433 t_paint.setBlendMode (MCGBlendModeToSkBlendMode (p_effects.color_overlay .blend_mode ));
14371434
1438- MCGMaskedFill (*self->layer ->canvas , t_child_mask, t_paint);
1435+ MCGMaskedDeviceFill (*self->layer ->canvas , t_child_mask, t_paint);
14391436 }
14401437
14411438 SkMask::FreeImage (t_child_mask . fImage );
@@ -2726,7 +2723,7 @@ void MCGContextDrawDeviceMask(MCGContextRef self, MCGMaskRef p_mask, int32_t p_t
27262723 t_paint.setBlendMode (MCGBlendModeToSkBlendMode (self->state ->blend_mode ));
27272724
27282725 p_mask -> mask . fBounds . offset (p_tx, p_ty);
2729- MCGMaskedFill (*self->layer ->canvas , p_mask->mask , t_paint);
2726+ MCGMaskedDeviceFill (*self->layer ->canvas , p_mask->mask , t_paint);
27302727 p_mask -> mask . fBounds . offset (-p_tx, -p_ty);
27312728}
27322729
0 commit comments