18 this->setX(SkSVGAttributeParser::parse<SkSVGLength>(
"x",
name,
value)) ||
19 this->setY(SkSVGAttributeParser::parse<SkSVGLength>(
"y",
name,
value)) ||
20 this->setWidth(SkSVGAttributeParser::parse<SkSVGLength>(
"width",
name,
value)) ||
21 this->setHeight(SkSVGAttributeParser::parse<SkSVGLength>(
"height",
name,
value)) ||
22 this->setFilterUnits(SkSVGAttributeParser::parse<SkSVGObjectBoundingBoxUnits>(
24 this->setPrimitiveUnits(SkSVGAttributeParser::parse<SkSVGObjectBoundingBoxUnits>(
42 const auto& feNode =
static_cast<const SkSVGFe&
>(*child);
43 const auto& feResultType = feNode.getResult();
50 feNode.applyProperties(&localChildCtx);
52 const SkRect filterSubregion = feNode.resolveFilterSubregion(localChildCtx, fctx);
53 cs = feNode.resolveColorspace(localChildCtx, fctx);
54 filter = feNode.makeImageFilter(localChildCtx, fctx);
56 if (!feResultType.isEmpty()) {
static sk_sp< SkColorFilter > LinearToSRGBGamma()
static sk_sp< SkImageFilter > ColorFilter(sk_sp< SkColorFilter > cf, sk_sp< SkImageFilter > input, const CropRect &cropRect={})
skia_private::STArray< 1, sk_sp< SkSVGNode >, true > fChildren
static bool IsFilterEffect(const sk_sp< SkSVGNode > &node)
void registerResult(const SkSVGStringType &, const sk_sp< SkImageFilter > &, const SkRect &, SkSVGColorspace)
void setPreviousResult(const sk_sp< SkImageFilter > &, const SkRect &, SkSVGColorspace)
bool parseAndSetAttribute(const char *, const char *) override
sk_sp< SkImageFilter > buildFilterDAG(const SkSVGRenderContext &) const
void applyProperties(SkSVGRenderContext *) const
virtual bool parseAndSetAttribute(const char *name, const char *value)
SkRect resolveOBBRect(const SkSVGLength &x, const SkSVGLength &y, const SkSVGLength &w, const SkSVGLength &h, SkSVGObjectBoundingBoxUnits) const
DEF_SWITCHES_START aot vmservice shared library name