void SVGPatternElement::collectPatternAttributes(PatternAttributes& attributes) const { if (!attributes.hasX() && hasAttribute(SVGNames::xAttr)) attributes.setX(x()); if (!attributes.hasY() && hasAttribute(SVGNames::yAttr)) attributes.setY(y()); if (!attributes.hasWidth() && hasAttribute(SVGNames::widthAttr)) attributes.setWidth(width()); if (!attributes.hasHeight() && hasAttribute(SVGNames::heightAttr)) attributes.setHeight(height()); if (!attributes.hasViewBox() && hasAttribute(SVGNames::viewBoxAttr) && viewBoxIsValid()) attributes.setViewBox(viewBox()); if (!attributes.hasPreserveAspectRatio() && hasAttribute(SVGNames::preserveAspectRatioAttr)) attributes.setPreserveAspectRatio(preserveAspectRatio()); if (!attributes.hasPatternUnits() && hasAttribute(SVGNames::patternUnitsAttr)) attributes.setPatternUnits(patternUnits()); if (!attributes.hasPatternContentUnits() && hasAttribute(SVGNames::patternContentUnitsAttr)) attributes.setPatternContentUnits(patternContentUnits()); if (!attributes.hasPatternTransform() && hasAttribute(SVGNames::patternTransformAttr)) { AffineTransform transform; patternTransform().concatenate(transform); attributes.setPatternTransform(transform); } if (!attributes.hasPatternContentElement() && childElementCount()) attributes.setPatternContentElement(this); }
static void setPatternAttributes(const SVGPatternElement* element, PatternAttributes& attributes) { if (!attributes.hasX() && element->x()->isSpecified()) attributes.setX(element->x()->currentValue()); if (!attributes.hasY() && element->y()->isSpecified()) attributes.setY(element->y()->currentValue()); if (!attributes.hasWidth() && element->width()->isSpecified()) attributes.setWidth(element->width()->currentValue()); if (!attributes.hasHeight() && element->height()->isSpecified()) attributes.setHeight(element->height()->currentValue()); if (!attributes.hasViewBox() && element->viewBox()->isSpecified() && element->viewBox()->currentValue()->isValid()) attributes.setViewBox(element->viewBox()->currentValue()->value()); if (!attributes.hasPreserveAspectRatio() && element->preserveAspectRatio()->isSpecified()) attributes.setPreserveAspectRatio(element->preserveAspectRatio()->currentValue()); if (!attributes.hasPatternUnits() && element->patternUnits()->isSpecified()) attributes.setPatternUnits(element->patternUnits()->currentValue()->enumValue()); if (!attributes.hasPatternContentUnits() && element->patternContentUnits()->isSpecified()) attributes.setPatternContentUnits(element->patternContentUnits()->currentValue()->enumValue()); if (!attributes.hasPatternTransform() && element->patternTransform()->isSpecified()) { AffineTransform transform; element->patternTransform()->currentValue()->concatenate(transform); attributes.setPatternTransform(transform); } if (!attributes.hasPatternContentElement() && ElementTraversal::firstWithin(*element)) attributes.setPatternContentElement(element); }
static void setPatternAttributes(const SVGPatternElement& element, PatternAttributes& attributes) { if (!attributes.hasX() && element.hasAttribute(SVGNames::xAttr)) attributes.setX(element.x()); if (!attributes.hasY() && element.hasAttribute(SVGNames::yAttr)) attributes.setY(element.y()); if (!attributes.hasWidth() && element.hasAttribute(SVGNames::widthAttr)) attributes.setWidth(element.width()); if (!attributes.hasHeight() && element.hasAttribute(SVGNames::heightAttr)) attributes.setHeight(element.height()); if (!attributes.hasViewBox() && element.hasAttribute(SVGNames::viewBoxAttr) && element.viewBoxIsValid()) attributes.setViewBox(element.viewBox()); if (!attributes.hasPreserveAspectRatio() && element.hasAttribute(SVGNames::preserveAspectRatioAttr)) attributes.setPreserveAspectRatio(element.preserveAspectRatio()); if (!attributes.hasPatternUnits() && element.hasAttribute(SVGNames::patternUnitsAttr)) attributes.setPatternUnits(element.patternUnits()); if (!attributes.hasPatternContentUnits() && element.hasAttribute(SVGNames::patternContentUnitsAttr)) attributes.setPatternContentUnits(element.patternContentUnits()); if (!attributes.hasPatternTransform() && element.hasAttribute(SVGNames::patternTransformAttr)) { AffineTransform transform; element.patternTransform().concatenate(transform); attributes.setPatternTransform(transform); } if (!attributes.hasPatternContentElement() && element.childElementCount()) attributes.setPatternContentElement(&element); }