aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar fs <fs@opera.com>2015-05-20 00:52:17 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-05-20 00:52:17 -0700
commitd8b57717793f069db2ccd7c8174d0822bd7de6e1 (patch)
tree54dd4fd723fbb03b7b27d9036b5f41d820657343 /tests
parent8debd89f6360dbf4b19c17e32bb0328bd7a08576 (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.cpp8
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) },