Remove SkShaders::Lerp

It's entirely unused, and trivial for clients to create with SkSL.

Change-Id: I197986232d3706f5af3a197f0fb8e744e1009e5f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/419796
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Mike Reed <reed@google.com>
diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt
index e671525..43bdc29 100644
--- a/RELEASE_NOTES.txt
+++ b/RELEASE_NOTES.txt
@@ -9,6 +9,9 @@
   * Removed SkPaint::getHash
     https://review.skia.org/419336
 
+  * Removed SkShaders::Lerp. It was unused (and easy to replicate with SkRuntimeEffect).
+    https://review.skia.org/419796
+
 * * *
 
 Milestone 92
diff --git a/gm/colorfilterimagefilter.cpp b/gm/colorfilterimagefilter.cpp
index cf1b1a6..3a9a51c 100644
--- a/gm/colorfilterimagefilter.cpp
+++ b/gm/colorfilterimagefilter.cpp
@@ -232,45 +232,3 @@
         canvas->translate(0, 150);
     }
 }
-
-template <typename Maker> void do_mixershader(SkCanvas* canvas, Maker&& maker) {
-    auto shaderA = GetResourceAsImage("images/mandrill_128.png")->makeShader(SkSamplingOptions());
-    const SkColor colors[] = { SK_ColorGREEN, 0 };
-    auto shaderB = SkGradientShader::MakeRadial({60, 60}, 55, colors, nullptr, 2,
-                                                SkTileMode::kClamp,
-                                                SkGradientShader::kInterpolateColorsInPremul_Flag,
-                                                nullptr);
-    const SkBlendMode modes[] = {
-        SkBlendMode::kSrc, SkBlendMode::kModulate, SkBlendMode::kColorBurn, SkBlendMode::kPlus,
-        SkBlendMode::kDstATop,
-    };
-    SkPaint paint;
-    SkRect r = SkRect::MakeWH(120, 120);
-
-    canvas->translate(10, 10);
-    for (auto mode : modes) {
-        canvas->save();
-        const int count = 6;
-        for (int x = 0; x < count; ++x) {
-            const float t = x * 1.0f / (count - 1);
-            paint.setShader(maker(shaderA, shaderB, mode, t));
-            canvas->drawRect(r, paint);
-            canvas->translate(r.width() + 10, 0);
-        }
-        canvas->restore();
-        canvas->translate(0, r.height() + 20);
-    }
-}
-
-DEF_SIMPLE_GM(mixershader, canvas, 800, 700) {
-    do_mixershader(canvas, [](sk_sp<SkShader> a, sk_sp<SkShader> b, SkBlendMode mode, float t) {
-        auto sh = SkShaders::Blend(mode, a, b);
-        return SkShaders::Lerp(t, a, sh);
-    });
-}
-
-DEF_SIMPLE_GM(mixershader2, canvas, 800, 700) {
-    do_mixershader(canvas, [](sk_sp<SkShader> a, sk_sp<SkShader> b, SkBlendMode mode, float t) {
-        return SkShaders::Lerp(t, a, SkShaders::Blend(mode, a, b));
-    });
-}
diff --git a/include/core/SkShader.h b/include/core/SkShader.h
index 94fc40a..eccb545 100644
--- a/include/core/SkShader.h
+++ b/include/core/SkShader.h
@@ -138,7 +138,6 @@
     static sk_sp<SkShader> Color(SkColor);
     static sk_sp<SkShader> Color(const SkColor4f&, sk_sp<SkColorSpace>);
     static sk_sp<SkShader> Blend(SkBlendMode mode, sk_sp<SkShader> dst, sk_sp<SkShader> src);
-    static sk_sp<SkShader> Lerp(float t, sk_sp<SkShader> dst, sk_sp<SkShader> src);
 
 private:
     SkShaders() = delete;
diff --git a/modules/canvaskit/CHANGELOG.md b/modules/canvaskit/CHANGELOG.md
index 0587fd6..519005a 100644
--- a/modules/canvaskit/CHANGELOG.md
+++ b/modules/canvaskit/CHANGELOG.md
@@ -21,6 +21,9 @@
    but can be an array, a TypedArray, or a MallocObj.
  - `CanvasKit.*Builder` have all been removed. Clients should use Malloc instead.
 
+### Removed
+ - `CanvasKit.Shader.MakeLerp`, the same effect can be easily generated with `RuntimeEffect`
+
 ### Known Bugs
  - On legacy (non-ANGLE) SwiftShader, certain paths that require tessellation may not be drawn
    correctly when using a WebGL-backed surface. (skbug.com/11965)
diff --git a/modules/canvaskit/canvaskit_bindings.cpp b/modules/canvaskit/canvaskit_bindings.cpp
index ee2b268..bce3796 100644
--- a/modules/canvaskit/canvaskit_bindings.cpp
+++ b/modules/canvaskit/canvaskit_bindings.cpp
@@ -1584,7 +1584,6 @@
                 return SkShaders::Color(ptrToSkColor4f(cPtr), colorSpace);
             })
         )
-        .class_function("MakeLerp", select_overload<sk_sp<SkShader>(float, sk_sp<SkShader>, sk_sp<SkShader>)>(&SkShaders::Lerp))
         .class_function("MakeFractalNoise", optional_override([](
                                                 SkScalar baseFreqX, SkScalar baseFreqY,
                                                 int numOctaves, SkScalar seed,
diff --git a/modules/canvaskit/externs.js b/modules/canvaskit/externs.js
index 51484b8..0db23d8 100644
--- a/modules/canvaskit/externs.js
+++ b/modules/canvaskit/externs.js
@@ -636,7 +636,6 @@
     MakeBlend: function() {},
     MakeColor: function() {},
     MakeFractalNoise: function() {},
-    MakeLerp: function() {},
     MakeLinearGradient: function() {},
     MakeRadialGradient: function() {},
     MakeSweepGradient: function() {},
diff --git a/modules/canvaskit/interface.js b/modules/canvaskit/interface.js
index 7883665..c10aed0 100644
--- a/modules/canvaskit/interface.js
+++ b/modules/canvaskit/interface.js
@@ -884,7 +884,6 @@
   // TODO(kjlubick) remove deprecated names.
   CanvasKit.Shader.Blend = CanvasKit.Shader.MakeBlend;
   CanvasKit.Shader.Color = CanvasKit.Shader.MakeColor;
-  CanvasKit.Shader.Lerp = CanvasKit.Shader.MakeLerp;
 
   CanvasKit.Shader.MakeLinearGradient = function(start, end, colors, pos, mode, localMatrix, flags, colorSpace) {
     colorSpace = colorSpace || null;
diff --git a/modules/canvaskit/npm_build/types/canvaskit-wasm-tests.ts b/modules/canvaskit/npm_build/types/canvaskit-wasm-tests.ts
index c83d12f..a46c07a 100644
--- a/modules/canvaskit/npm_build/types/canvaskit-wasm-tests.ts
+++ b/modules/canvaskit/npm_build/types/canvaskit-wasm-tests.ts
@@ -717,7 +717,6 @@
     const s1 = CK.Shader.MakeColor([0.8, 0.2, 0.5, 0.9], // $ExpectType Shader
                                  CK.ColorSpace.SRGB);
     const s2 = CK.Shader.MakeBlend(CK.BlendMode.Src, s1, s1); // $ExpectType Shader
-    const s3 = CK.Shader.MakeLerp(0.3, s1, s2); // $ExpectType Shader
     const s4 = CK.Shader.MakeLinearGradient(// $ExpectType Shader
         [0, 0], [50, 100],
         Float32Array.of(
diff --git a/modules/canvaskit/npm_build/types/index.d.ts b/modules/canvaskit/npm_build/types/index.d.ts
index 397aaf2..4f4a154 100644
--- a/modules/canvaskit/npm_build/types/index.d.ts
+++ b/modules/canvaskit/npm_build/types/index.d.ts
@@ -3364,14 +3364,6 @@
                      tileW: number, tileH: number): Shader;
 
     /**
-     * Returns a shader is a linear interpolation combines the given shaders with a BlendMode.
-     * @param t - range of [0.0, 1.0], indicating how far we should be between one and two.
-     * @param one
-     * @param two
-     */
-    MakeLerp(t: number, one: Shader, two: Shader): Shader;
-
-    /**
      * Returns a shader that generates a linear gradient between the two specified points.
      * See SkGradientShader.h for more.
      * @param start
diff --git a/modules/canvaskit/tests/core.spec.js b/modules/canvaskit/tests/core.spec.js
index 4f5797e..056a4db 100644
--- a/modules/canvaskit/tests/core.spec.js
+++ b/modules/canvaskit/tests/core.spec.js
@@ -944,7 +944,6 @@
     gm('combined_shaders', (canvas) => {
         const rShader = CanvasKit.Shader.Color(CanvasKit.Color(255, 0, 0, 1.0)); // deprecated
         const gShader = CanvasKit.Shader.MakeColor(CanvasKit.Color(0, 255, 0, 0.6));
-        const bShader = CanvasKit.Shader.MakeColor(CanvasKit.Color(0, 0, 255, 1.0));
 
         const rgShader = CanvasKit.Shader.MakeBlend(CanvasKit.BlendMode.SrcOver, rShader, gShader);
 
@@ -952,15 +951,9 @@
         p.setShader(rgShader);
         canvas.drawPaint(p);
 
-        const gbShader = CanvasKit.Shader.MakeLerp(0.5, gShader, bShader);
-
-        p.setShader(gbShader);
-        canvas.drawRect(CanvasKit.LTRBRect(5, 100, 300, 400), p);
         rShader.delete();
         gShader.delete();
-        bShader.delete();
         rgShader.delete();
-        gbShader.delete();
         p.delete();
     });
 
diff --git a/src/shaders/SkComposeShader.cpp b/src/shaders/SkComposeShader.cpp
index 8edc0be..010c9cd 100644
--- a/src/shaders/SkComposeShader.cpp
+++ b/src/shaders/SkComposeShader.cpp
@@ -51,34 +51,6 @@
     return sk_sp<SkShader>(new SkShader_Blend(mode, std::move(dst), std::move(src)));
 }
 
-sk_sp<SkShader> SkShaders::Lerp(float weight, sk_sp<SkShader> dst, sk_sp<SkShader> src) {
-    if (SkScalarIsNaN(weight)) {
-        return nullptr;
-    }
-    if (dst == src || weight <= 0) {
-        return dst;
-    }
-    if (weight >= 1) {
-        return src;
-    }
-
-    sk_sp<SkRuntimeEffect> effect = SkMakeCachedRuntimeEffect(
-        SkRuntimeEffect::MakeForShader,
-        "uniform shader a;"
-        "uniform shader b;"
-        "uniform half w;"
-        "half4 main(float2 xy) { return mix(sample(a, xy), sample(b, xy), w); }"
-    );
-    SkASSERT(effect);
-
-    sk_sp<SkShader> inputs[] = {dst, src};
-    return effect->makeShader(SkData::MakeWithCopy(&weight, sizeof(weight)),
-                              inputs,
-                              SK_ARRAY_COUNT(inputs),
-                              nullptr,
-                              false);
-}
-
 ///////////////////////////////////////////////////////////////////////////////
 
 static bool append_shader_or_paint(const SkStageRec& rec, SkShader* shader) {