Move SkImageFilter functionality into private SkImageFilter_Base

Bug: skia:9281
Change-Id: I189dbf652580805641f8c4b9a6587cf15a9049dd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231256
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 02a29ba..fd6e093 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -28,7 +28,7 @@
 #include "src/core/SkDraw.h"
 #include "src/core/SkGlyphRun.h"
 #include "src/core/SkImageFilterCache.h"
-#include "src/core/SkImageFilterPriv.h"
+#include "src/core/SkImageFilter_Base.h"
 #include "src/core/SkLatticeIter.h"
 #include "src/core/SkMSAN.h"
 #include "src/core/SkMakeUnique.h"
@@ -907,7 +907,7 @@
         snapBounds = newBounds;
 
         SkMatrix localCTM;
-        sk_sp<SkImageFilter> modifiedFilter = SkApplyCTMToBackdropFilter(filter, ctm, &localCTM);
+        sk_sp<SkImageFilter> modifiedFilter = as_IFB(filter)->applyCTMForBackdrop(ctm, &localCTM);
         // Account for the origin offset in the CTM
         localCTM.postTranslate(-dstOrigin.x(), -dstOrigin.y());
 
@@ -915,7 +915,7 @@
         // since there's no device CTM stack that provides it to the image filter context.
         // FIXME skbug.com/9074 - once perspective is properly supported, drop the
         // localCTM.hasPerspective condition from assert.
-        SkASSERT(localCTM.isScaleTranslate() || filter->canHandleComplexCTM() ||
+        SkASSERT(localCTM.isScaleTranslate() || as_IFB(filter)->canHandleComplexCTM() ||
                  localCTM.hasPerspective());
         p.setImageFilter(modifiedFilter->makeWithLocalMatrix(localCTM));
     }
@@ -983,11 +983,11 @@
      */
     if (imageFilter) {
         SkMatrix modifiedCTM;
-        sk_sp<SkImageFilter> modifiedFilter = SkApplyCTMToFilter(imageFilter, stashedMatrix,
-                                                                 &modifiedCTM);
-        if (!SkIsSameFilter(modifiedFilter.get(), imageFilter)) {
+        sk_sp<SkImageFilter> modifiedFilter = as_IFB(imageFilter)->applyCTM(stashedMatrix,
+                                                                            &modifiedCTM);
+        if (as_IFB(modifiedFilter)->uniqueID() != as_IFB(imageFilter)->uniqueID()) {
             // The original filter couldn't support the CTM entirely
-            SkASSERT(modifiedCTM.isScaleTranslate() || imageFilter->canHandleComplexCTM());
+            SkASSERT(modifiedCTM.isScaleTranslate() || as_IFB(imageFilter)->canHandleComplexCTM());
             modifiedRec = fMCRec;
             this->internalSetMatrix(modifiedCTM);
             SkPaint* p = lazyP.set(*paint);