17 this->setIn2(SkSVGAttributeParser::parse<SkSVGFeInputType>(
"in2",
name,
value)) ||
18 this->setK1(SkSVGAttributeParser::parse<SkSVGNumberType>(
"k1",
name,
value)) ||
19 this->setK2(SkSVGAttributeParser::parse<SkSVGNumberType>(
"k2",
name,
value)) ||
20 this->setK3(SkSVGAttributeParser::parse<SkSVGNumberType>(
"k3",
name,
value)) ||
21 this->setK4(SkSVGAttributeParser::parse<SkSVGNumberType>(
"k4",
name,
value)) ||
23 SkSVGAttributeParser::parse<SkSVGFeCompositeOperator>(
"operator",
name,
value));
54 constexpr bool enforcePMColor =
true;
56 fK1, fK2, fK3, fK4, enforcePMColor, background, foreground, cropRect);
59 BlendModeForOperator(fOperator), background, foreground, cropRect);
64 static constexpr std::tuple<const char*, SkSVGFeCompositeOperator> gOpMap[] = {
73 return this->parseEnumMap(gOpMap, op) && this->parseEOSToken();
@ kSrcOver
r = s + (1-sa)*d
@ kXor
r = s*(1-da) + d*(1-sa)
@ kSrcATop
r = s*da + d*(1-sa)
static sk_sp< SkImageFilter > Arithmetic(SkScalar k1, SkScalar k2, SkScalar k3, SkScalar k4, bool enforcePMColor, sk_sp< SkImageFilter > background, sk_sp< SkImageFilter > foreground, const CropRect &cropRect={})
static sk_sp< SkImageFilter > Blend(SkBlendMode mode, sk_sp< SkImageFilter > background, sk_sp< SkImageFilter > foreground=nullptr, const CropRect &cropRect={})
bool parse(SkSVGIntegerType *v)
sk_sp< SkImageFilter > onMakeImageFilter(const SkSVGRenderContext &, const SkSVGFilterContext &) const override
bool parseAndSetAttribute(const char *, const char *) override
SkRect resolveFilterSubregion(const SkSVGRenderContext &, const SkSVGFilterContext &) const
bool parseAndSetAttribute(const char *, const char *) override
virtual SkSVGColorspace resolveColorspace(const SkSVGRenderContext &, const SkSVGFilterContext &) const
sk_sp< SkImageFilter > resolveInput(const SkSVGRenderContext &, const SkSVGFeInputType &) const
DEF_SWITCHES_START aot vmservice shared library name