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>
This commit is contained in:
parent
0eb35a9e35
commit
f62632c7c3
@ -9,6 +9,9 @@ Milestone 93
|
||||
* 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
|
||||
|
@ -232,45 +232,3 @@ DEF_SIMPLE_GM(colorfiltershader, canvas, 610, 610) {
|
||||
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));
|
||||
});
|
||||
}
|
||||
|
@ -138,7 +138,6 @@ public:
|
||||
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;
|
||||
|
@ -21,6 +21,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
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)
|
||||
|
@ -1584,7 +1584,6 @@ EMSCRIPTEN_BINDINGS(Skia) {
|
||||
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,
|
||||
|
@ -636,7 +636,6 @@ var CanvasKit = {
|
||||
MakeBlend: function() {},
|
||||
MakeColor: function() {},
|
||||
MakeFractalNoise: function() {},
|
||||
MakeLerp: function() {},
|
||||
MakeLinearGradient: function() {},
|
||||
MakeRadialGradient: function() {},
|
||||
MakeSweepGradient: function() {},
|
||||
|
@ -884,7 +884,6 @@ CanvasKit.onRuntimeInitialized = function() {
|
||||
// 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;
|
||||
|
@ -717,7 +717,6 @@ function shaderTests(CK: CanvasKit) {
|
||||
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(
|
||||
|
8
modules/canvaskit/npm_build/types/index.d.ts
vendored
8
modules/canvaskit/npm_build/types/index.d.ts
vendored
@ -3363,14 +3363,6 @@ export interface ShaderFactory {
|
||||
MakeFractalNoise(baseFreqX: number, baseFreqY: number, octaves: number, seed: number,
|
||||
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.
|
||||
|
@ -944,7 +944,6 @@ describe('Core canvas behavior', () => {
|
||||
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 @@ describe('Core canvas behavior', () => {
|
||||
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();
|
||||
});
|
||||
|
||||
|
@ -51,34 +51,6 @@ sk_sp<SkShader> SkShaders::Blend(SkBlendMode mode, sk_sp<SkShader> dst, sk_sp<Sk
|
||||
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) {
|
||||
|
Loading…
Reference in New Issue
Block a user