diff options
author | 2015-05-15 10:39:17 -0700 | |
---|---|---|
committer | 2015-05-15 10:39:17 -0700 | |
commit | daa57bfd4204f5a7d304c580bcf5ad99d0121e1f (patch) | |
tree | 3f3bb0b53b87ef4c5bf350b080f8122e9d2dd987 /src | |
parent | 0135a41e095a433414e21e37b277dab7dcbec373 (diff) |
Revert of antialias matrix-image-filter to get smooth diagonals (patchset #6 id:80002 of https://codereview.chromium.org/1134743003/)
Reason for revert:
likely affect layouttests, so need to add a guard
Original issue's description:
> antialias matrix-image-filter to get smooth diagonals
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/fa33f5a6b770130acdc55f2ffe19dd545665726a
TBR=senorblanco@google.com,robertphillips@google.com,bsalomon@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Review URL: https://codereview.chromium.org/1128823010
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkCanvas.cpp | 11 | ||||
-rw-r--r-- | src/core/SkDeviceImageFilterProxy.h | 2 | ||||
-rw-r--r-- | src/core/SkMatrixImageFilter.cpp | 8 | ||||
-rw-r--r-- | src/core/SkMatrixImageFilter.h | 2 |
4 files changed, 7 insertions, 16 deletions
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 8849aba915..34d6aaa0ab 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -992,8 +992,6 @@ void SkCanvas::internalSaveLayer(const SkRect* bounds, const SkPaint* paint, Sav flags |= kClipToLayer_SaveFlag; #endif - SkImageFilter* imgf = paint ? paint->getImageFilter() : NULL; - // do this before we create the layer. We don't call the public save() since // that would invoke a possibly overridden virtual this->internalSave(); @@ -1001,7 +999,7 @@ void SkCanvas::internalSaveLayer(const SkRect* bounds, const SkPaint* paint, Sav fDeviceCMDirty = true; SkIRect ir; - if (!this->clipRectBounds(bounds, flags, &ir, imgf)) { + if (!this->clipRectBounds(bounds, flags, &ir, paint ? paint->getImageFilter() : NULL)) { return; } @@ -1015,7 +1013,7 @@ void SkCanvas::internalSaveLayer(const SkRect* bounds, const SkPaint* paint, Sav SkPixelGeometry geo = fProps.pixelGeometry(); if (paint) { // TODO: perhaps add a query to filters so we might preserve opaqueness... - if (imgf || paint->getColorFilter()) { + if (paint->getImageFilter() || paint->getColorFilter()) { isOpaque = false; geo = kUnknown_SkPixelGeometry; } @@ -1031,10 +1029,7 @@ void SkCanvas::internalSaveLayer(const SkRect* bounds, const SkPaint* paint, Sav bool forceSpriteOnRestore = false; { - SkBaseDevice::TileUsage usage = SkBaseDevice::kNever_TileUsage; - if (imgf && imgf->mayDrawWithMatrix()) { - usage = SkBaseDevice::kPossible_TileUsage; - } + const SkBaseDevice::TileUsage usage = SkBaseDevice::kNever_TileUsage; const SkBaseDevice::CreateInfo createInfo = SkBaseDevice::CreateInfo(info, usage, geo); SkBaseDevice* newDev = device->onCreateDevice(createInfo, paint); if (NULL == newDev) { diff --git a/src/core/SkDeviceImageFilterProxy.h b/src/core/SkDeviceImageFilterProxy.h index d77f3f62cd..79ff957564 100644 --- a/src/core/SkDeviceImageFilterProxy.h +++ b/src/core/SkDeviceImageFilterProxy.h @@ -21,8 +21,6 @@ public: {} SkBaseDevice* createDevice(int w, int h) override { - // Our contract is to return a zero-initialized device, so we request iPremul_AlphaType - // which is the signal to the fDevice to perform this init. SkBaseDevice::CreateInfo cinfo(SkImageInfo::MakeN32Premul(w, h), SkBaseDevice::kNever_TileUsage, kUnknown_SkPixelGeometry, diff --git a/src/core/SkMatrixImageFilter.cpp b/src/core/SkMatrixImageFilter.cpp index 1e76362285..a61867e041 100644 --- a/src/core/SkMatrixImageFilter.cpp +++ b/src/core/SkMatrixImageFilter.cpp @@ -76,13 +76,13 @@ bool SkMatrixImageFilter::onFilterImage(Proxy* proxy, return false; } - SkPaint paint; - paint.setFilterQuality(fFilterQuality); - paint.setAntiAlias(true); // since we may be rotated, we definitely want a smooth edge - SkCanvas canvas(device.get()); canvas.translate(-SkIntToScalar(dstBounds.x()), -SkIntToScalar(dstBounds.y())); canvas.concat(matrix); + SkPaint paint; + + paint.setXfermodeMode(SkXfermode::kSrc_Mode); + paint.setFilterQuality(fFilterQuality); canvas.drawBitmap(src, srcRect.x(), srcRect.y(), &paint); *result = device.get()->accessBitmap(false); diff --git a/src/core/SkMatrixImageFilter.h b/src/core/SkMatrixImageFilter.h index 1f55685628..012a36057d 100644 --- a/src/core/SkMatrixImageFilter.h +++ b/src/core/SkMatrixImageFilter.h @@ -57,8 +57,6 @@ protected: SkIRect* dst) const override; private: - bool onMayDrawWithMatrix() const override { return true; } - SkMatrix fTransform; SkFilterQuality fFilterQuality; typedef SkImageFilter INHERITED; |