diff options
author | fs <fs@opera.com> | 2015-05-20 00:52:17 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-05-20 00:52:17 -0700 |
commit | d8b57717793f069db2ccd7c8174d0822bd7de6e1 (patch) | |
tree | 54dd4fd723fbb03b7b27d9036b5f41d820657343 /tests | |
parent | 8debd89f6360dbf4b19c17e32bb0328bd7a08576 (diff) |
Don't fail SkMergeImageFilter if one of the inputs are empty
If one of the inputs to a SkMergeImageFilter was clipped away or
otherwise caused the filterImage(...) invocation for it to return
false, the entire effect would be "failed" and return false --
regardless of if it had produced a result or not.
Instead of returning false directly if filterImage(...) for a source
returned false, consider all the inputs, and then only return false if
all of them do.
BUG=chromium:489046
Review URL: https://codereview.chromium.org/1133523006
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ImageFilterTest.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp index 6c596156fe..0076ac56fb 100644 --- a/tests/ImageFilterTest.cpp +++ b/tests/ImageFilterTest.cpp @@ -442,6 +442,12 @@ DEF_TEST(ImageFilterDrawTiled, reporter) { SkAutoTUnref<SkImageFilter> rectShaderFilter(SkRectShaderImageFilter::Create(shader.get())); + SkAutoTUnref<SkShader> greenColorShader(SkShader::CreateColorShader(SK_ColorGREEN)); + SkImageFilter::CropRect leftSideCropRect(SkRect::MakeXYWH(0, 0, 32, 64)); + SkAutoTUnref<SkImageFilter> rectShaderFilterLeft(SkRectShaderImageFilter::Create(greenColorShader.get(), &leftSideCropRect)); + SkImageFilter::CropRect rightSideCropRect(SkRect::MakeXYWH(32, 0, 32, 64)); + SkAutoTUnref<SkImageFilter> rectShaderFilterRight(SkRectShaderImageFilter::Create(greenColorShader.get(), &rightSideCropRect)); + struct { const char* fName; SkImageFilter* fFilter; @@ -464,6 +470,8 @@ DEF_TEST(ImageFilterDrawTiled, reporter) { kernelSize, kernel, gain, bias, SkIPoint::Make(1, 1), SkMatrixConvolutionImageFilter::kRepeat_TileMode, false) }, { "merge", SkMergeImageFilter::Create(NULL, NULL, SkXfermode::kSrcOver_Mode) }, + { "merge with disjoint inputs", SkMergeImageFilter::Create( + rectShaderFilterLeft, rectShaderFilterRight, SkXfermode::kSrcOver_Mode) }, { "offset", SkOffsetImageFilter::Create(SK_Scalar1, SK_Scalar1) }, { "dilate", SkDilateImageFilter::Create(3, 2) }, { "erode", SkErodeImageFilter::Create(2, 3) }, |