123 {
131 };
132 struct {
135 } shaders[] = {
136 { nullptr, nullptr },
137 { nullptr, fGr2 },
138 { fGr1, nullptr },
139 { fGr1, fGr2 },
140 };
141
143 for (size_t i = 0; i < std::size(modes); ++i) {
146 }
147
148 for (size_t i = 0; i < std::size(shaders); ++i) {
151 for (
size_t m = 0;
m < std::size(modes); ++
m) {
152 draw_scene(canvas, fFilter, modes[m], shaders[i].fShader1,
153 shaders[i].fShader2);
155 }
157 }
158 }
SK_API const char * SkBlendMode_Name(SkBlendMode blendMode)
@ kSrcOver
r = s + (1-sa)*d
@ kSrcATop
r = s*da + d*(1-sa)
@ kDstATop
r = d*sa + s*(1-da)
@ kDstOver
r = d + (1-da)*s
void translate(SkScalar dx, SkScalar dy)
static void draw_scene(SkCanvas *canvas, const sk_sp< SkColorFilter > &filter, SkBlendMode mode, const sk_sp< SkShader > &s1, const sk_sp< SkShader > &s2)
static void draw_label(SkCanvas *canvas, const char *label, const SkPoint &offset)
static constexpr SkPoint Make(float x, float y)