diff options
author | senorblanco <senorblanco@chromium.org> | 2015-12-05 05:59:41 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-05 05:59:41 -0800 |
commit | 50c044b9addac613189d6378641c65721e16b2ed (patch) | |
tree | e64a5acda2782543a98e111878d0a08d3e406308 /gm/matrixconvolution.cpp | |
parent | 22a517f71aa6a0ebe0fbe71cb95d7c341a9e84fe (diff) |
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
Diffstat (limited to 'gm/matrixconvolution.cpp')
-rw-r--r-- | gm/matrixconvolution.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
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: |