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) {