diff options
author | 2018-02-07 11:59:57 -0500 | |
---|---|---|
committer | 2018-02-07 20:21:02 +0000 | |
commit | 2179b78ef221b6df73f1b8a085e5ca86e85a525b (patch) | |
tree | bd07101764aca42c91a44aa408f25c87621d115a /src/core | |
parent | eac2090b46a195880e85ef9c6f7a100ca9a37cdf (diff) |
extend savelayer_maskfilter to also have an imagefilter
Bug: skia:7597
Change-Id: I8af9c9f841c301212a4a452f9b42d03a20e36417
Reviewed-on: https://skia-review.googlesource.com/105220
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkBitmapDevice.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/core/SkBitmapDevice.cpp b/src/core/SkBitmapDevice.cpp index fe858989ff..3d66ba6dfc 100644 --- a/src/core/SkBitmapDevice.cpp +++ b/src/core/SkBitmapDevice.cpp @@ -379,12 +379,9 @@ void SkBitmapDevice::drawDevice(SkBaseDevice* device, int x, int y, const SkPain SkASSERT(!origPaint.getImageFilter()); // todo: can we unify with similar adjustment in SkGpuDevice? - const SkPaint* paint = &origPaint; - SkTLazy<SkPaint> lazyP; - if (origPaint.getMaskFilter()) { - lazyP.set(origPaint); - lazyP.get()->setMaskFilter(origPaint.getMaskFilter()->makeWithLocalMatrix(this->ctm())); - paint = lazyP.get(); + SkTCopyOnFirstWrite<SkPaint> paint(origPaint); + if (paint->getMaskFilter()) { + paint.writable()->setMaskFilter(paint->getMaskFilter()->makeWithLocalMatrix(this->ctm())); } BDDraw(this).drawSprite(static_cast<SkBitmapDevice*>(device)->fBitmap, x, y, *paint); @@ -443,6 +440,10 @@ void SkBitmapDevice::drawSpecial(SkSpecialImage* src, int x, int y, const SkPain y += offset.y(); } + if (paint->getMaskFilter()) { + paint.writable()->setMaskFilter(paint->getMaskFilter()->makeWithLocalMatrix(this->ctm())); + } + if (!clipImage) { SkBitmap resultBM; if (src->getROPixels(&resultBM)) { |