From 50c044b9addac613189d6378641c65721e16b2ed Mon Sep 17 00:00:00 2001 From: senorblanco Date: Sat, 5 Dec 2015 05:59:41 -0800 Subject: Revert of Matrix convolution bounds fix; affectsTransparentBlack fixes. (patchset #4 id:60001 of https://codereview.chromium.org/1500923004/ ) Reason for revert: Introduced memory leak; pixel changes in Chrome. Original issue's description: > Matrix convolution bounds fix; affectsTransparentBlack fixes. > > Because the convolution kernel is (currently) applied in device space, > there's no way to know which object-space pixels will be touched. So > return false from canComputeFastBounds(). > > The results from the matrixconvolution GM were actually wrong, since > they were showing edge differences on the clip boundaries, where they > should really only show on crop boundaries. I added a crop to the GM > to keep the results the same (which are useful to test the different > convolution tile modes). > > While I was at it, SkImageFilter::affectsTransparentBlack() was > inapplicable on most things except color filters, and its use on > leaf nodes was confusing. So I removed it, and made > SkImageFilter::canComputeFastBounds() virtual instead. > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/8705ec80518ef551994b82ca5ccaeb0241d6adec TBR=reed@google.com,reed@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1497083005 --- gm/matrixconvolution.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'gm/matrixconvolution.cpp') diff --git a/gm/matrixconvolution.cpp b/gm/matrixconvolution.cpp index 3b159f455b..6d16f8dfa7 100644 --- a/gm/matrixconvolution.cpp +++ b/gm/matrixconvolution.cpp @@ -86,22 +86,21 @@ protected: void onDraw(SkCanvas* canvas) override { canvas->clear(SK_ColorBLACK); SkIPoint kernelOffset = SkIPoint::Make(1, 0); - SkImageFilter::CropRect rect(SkRect::Make(fBitmap.bounds())); for (int x = 10; x < 310; x += 100) { - this->draw(canvas, x, 10, kernelOffset, MCIF::kClamp_TileMode, true, &rect); - this->draw(canvas, x, 110, kernelOffset, MCIF::kClampToBlack_TileMode, true, &rect); - this->draw(canvas, x, 210, kernelOffset, MCIF::kRepeat_TileMode, true, &rect); + this->draw(canvas, x, 10, kernelOffset, MCIF::kClamp_TileMode, true); + this->draw(canvas, x, 110, kernelOffset, MCIF::kClampToBlack_TileMode, true); + this->draw(canvas, x, 210, kernelOffset, MCIF::kRepeat_TileMode, true); kernelOffset.fY++; } kernelOffset.fY = 1; - SkImageFilter::CropRect smallRect(SkRect::MakeXYWH(10, 5, 60, 60)); - this->draw(canvas, 310, 10, kernelOffset, MCIF::kClamp_TileMode, true, &smallRect); - this->draw(canvas, 310, 110, kernelOffset, MCIF::kClampToBlack_TileMode, true, &smallRect); - this->draw(canvas, 310, 210, kernelOffset, MCIF::kRepeat_TileMode, true, &smallRect); - - this->draw(canvas, 410, 10, kernelOffset, MCIF::kClamp_TileMode, false, &rect); - this->draw(canvas, 410, 110, kernelOffset, MCIF::kClampToBlack_TileMode, false, &rect); - this->draw(canvas, 410, 210, kernelOffset, MCIF::kRepeat_TileMode, false, &rect); + SkImageFilter::CropRect rect(SkRect::MakeXYWH(10, 5, 60, 60)); + this->draw(canvas, 310, 10, kernelOffset, MCIF::kClamp_TileMode, true, &rect); + this->draw(canvas, 310, 110, kernelOffset, MCIF::kClampToBlack_TileMode, true, &rect); + this->draw(canvas, 310, 210, kernelOffset, MCIF::kRepeat_TileMode, true, &rect); + + this->draw(canvas, 410, 10, kernelOffset, MCIF::kClamp_TileMode, false); + this->draw(canvas, 410, 110, kernelOffset, MCIF::kClampToBlack_TileMode, false); + this->draw(canvas, 410, 210, kernelOffset, MCIF::kRepeat_TileMode, false); } private: -- cgit v1.2.3