Chromium Code Reviews| Index: gm/matrixconvolution.cpp |
| diff --git a/gm/matrixconvolution.cpp b/gm/matrixconvolution.cpp |
| index 853b57be072b1a293e7feecfb9f6cd301e83cb3e..c3e8a32d734bd015f0437f16d1aa351bbfb43d6e 100644 |
| --- a/gm/matrixconvolution.cpp |
| +++ b/gm/matrixconvolution.cpp |
| @@ -44,10 +44,12 @@ protected: |
| } |
| virtual SkISize onISize() { |
| - return make_isize(400, 300); |
| + return make_isize(500, 300); |
| } |
| - void draw(SkCanvas* canvas, int x, int y, const SkIPoint& target, SkMatrixConvolutionImageFilter::TileMode tileMode, bool convolveAlpha) { |
| + void draw(SkCanvas* canvas, int x, int y, const SkIPoint& target, |
| + SkMatrixConvolutionImageFilter::TileMode tileMode, bool convolveAlpha, |
| + const SkImageFilter::CropRect* cropRect = NULL) { |
| SkScalar kernel[9] = { |
| SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1), |
| SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1), |
| @@ -56,15 +58,27 @@ protected: |
| SkISize kernelSize = SkISize::Make(3, 3); |
| SkScalar gain = SkFloatToScalar(0.3f), bias = SkIntToScalar(100); |
| SkPaint paint; |
| - SkAutoTUnref<SkImageFilter> filter(SkNEW_ARGS(SkMatrixConvolutionImageFilter, (kernelSize, kernel, gain, bias, target, tileMode, convolveAlpha))); |
| + SkAutoTUnref<SkImageFilter> filter( |
| + SkNEW_ARGS(SkMatrixConvolutionImageFilter, (kernelSize, |
| + kernel, |
| + gain, |
| + bias, |
| + target, |
| + tileMode, |
| + convolveAlpha, |
| + NULL, |
| + cropRect))); |
| paint.setImageFilter(filter); |
| canvas->save(); |
| - canvas->clipRect(SkRect::MakeXYWH(SkIntToScalar(x), SkIntToScalar(y), |
| - SkIntToScalar(fBitmap.width()), SkIntToScalar(fBitmap.height()))); |
| - canvas->drawBitmap(fBitmap, SkIntToScalar(x), SkIntToScalar(y), &paint); |
| + canvas->translate(SkIntToScalar(x), SkIntToScalar(y)); |
| + canvas->clipRect(SkRect::MakeWH(SkIntToScalar(fBitmap.width()), |
| + SkIntToScalar(fBitmap.height()))); |
| + canvas->drawBitmap(fBitmap, 0, 0, &paint); |
| canvas->restore(); |
| } |
| + typedef SkMatrixConvolutionImageFilter MCIF; |
|
bsalomon
2013/10/18 18:56:23
nice :)
|
| + |
| virtual void onDraw(SkCanvas* canvas) { |
| if (!fInitialized) { |
| make_bitmap(); |
| @@ -73,15 +87,20 @@ protected: |
| canvas->clear(0x00000000); |
| SkIPoint target = SkIPoint::Make(1, 0); |
| for (int x = 10; x < 310; x += 100) { |
| - draw(canvas, x, 10, target, SkMatrixConvolutionImageFilter::kClamp_TileMode, true); |
| - draw(canvas, x, 110, target, SkMatrixConvolutionImageFilter::kClampToBlack_TileMode, true); |
| - draw(canvas, x, 210, target, SkMatrixConvolutionImageFilter::kRepeat_TileMode, true); |
| + draw(canvas, x, 10, target, MCIF::kClamp_TileMode, true); |
| + draw(canvas, x, 110, target, MCIF::kClampToBlack_TileMode, true); |
| + draw(canvas, x, 210, target, MCIF::kRepeat_TileMode, true); |
| target.fY++; |
| } |
| target.fY = 1; |
| - draw(canvas, 310, 10, target, SkMatrixConvolutionImageFilter::kClamp_TileMode, false); |
| - draw(canvas, 310, 110, target, SkMatrixConvolutionImageFilter::kClampToBlack_TileMode, false); |
| - draw(canvas, 310, 210, target, SkMatrixConvolutionImageFilter::kRepeat_TileMode, false); |
| + SkImageFilter::CropRect rect(SkRect::MakeXYWH(10, 10, 60, 60)); |
| + draw(canvas, 310, 10, target, MCIF::kClamp_TileMode, true, &rect); |
|
bsalomon
2013/10/18 18:56:23
this->
Stephen White
2013/10/18 20:05:44
Done.
|
| + draw(canvas, 310, 110, target, MCIF::kClampToBlack_TileMode, true, &rect); |
| + draw(canvas, 310, 210, target, MCIF::kRepeat_TileMode, true, &rect); |
| + |
| + draw(canvas, 410, 10, target, MCIF::kClamp_TileMode, false); |
| + draw(canvas, 410, 110, target, MCIF::kClampToBlack_TileMode, false); |
| + draw(canvas, 410, 210, target, MCIF::kRepeat_TileMode, false); |
| } |
| private: |