simplify handle-affine: subclass overrides just describe their leaf behavior
added new test case (that would have failed before) of blur with a colorfilter input
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1915943002
Review URL: https://codereview.chromium.org/1915943002
diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp
index 7aefd48..952e5e5 100644
--- a/tests/ImageFilterTest.cpp
+++ b/tests/ImageFilterTest.cpp
@@ -1711,11 +1711,11 @@
* Test that colorfilterimagefilter does not require its CTM to be decomposed when it has more
* than just scale/translate, but that other filters do.
*/
-DEF_TEST(ImageFilterDecomposeCTM, reporter) {
+DEF_TEST(ImageFilterComplexCTM, reporter) {
// just need a colorfilter to exercise the corresponding imagefilter
sk_sp<SkColorFilter> cf = SkColorFilter::MakeModeFilter(SK_ColorRED, SkXfermode::kSrcATop_Mode);
- sk_sp<SkImageFilter> cfif = SkColorFilterImageFilter::Make(cf, nullptr);
- sk_sp<SkImageFilter> blif = SkBlurImageFilter::Make(3, 3, nullptr);
+ sk_sp<SkImageFilter> cfif = SkColorFilterImageFilter::Make(cf, nullptr); // can handle
+ sk_sp<SkImageFilter> blif = SkBlurImageFilter::Make(3, 3, nullptr); // cannot handle
struct {
sk_sp<SkImageFilter> fFilter;
@@ -1724,13 +1724,17 @@
{ cfif, true },
{ SkColorFilterImageFilter::Make(cf, cfif), true },
{ SkMergeImageFilter::Make(cfif, cfif), true },
+ { SkComposeImageFilter::Make(cfif, cfif), true },
+
{ blif, false },
- { SkMergeImageFilter::Make(cfif, blif), false },
+ { SkBlurImageFilter::Make(3, 3, cfif), false },
{ SkColorFilterImageFilter::Make(cf, blif), false },
+ { SkMergeImageFilter::Make(cfif, blif), false },
+ { SkComposeImageFilter::Make(blif, cfif), false },
};
for (const auto& rec : recs) {
- const bool canHandle = rec.fFilter->canHandleAffine();
+ const bool canHandle = rec.fFilter->canHandleComplexCTM();
REPORTER_ASSERT(reporter, canHandle == rec.fExpectCanHandle);
}
}