void SVGFEImageElement::buildPendingResource() { clearResourceReferences(); if (!inDocument()) return; String id; Element* target = SVGURIReference::targetElementFromIRIString(href(), document(), &id); if (!target) { if (hasPendingResources()) return; if (id.isEmpty()) requestImageResource(); else { document()->accessSVGExtensions()->addPendingResource(id, this); ASSERT(hasPendingResources()); } } else if (target->isSVGElement()) { // Register us with the target in the dependencies map. Any change of hrefElement // that leads to relayout/repainting now informs us, so we can react to it. document()->accessSVGExtensions()->addElementReferencingTarget(this, static_cast<SVGElement*>(target)); } invalidate(); }
void SVGFEImageElement::parseMappedAttribute(Attribute* attr) { const String& value = attr->value(); if (attr->name() == SVGNames::preserveAspectRatioAttr) SVGPreserveAspectRatio::parsePreserveAspectRatio(this, value); else { if (SVGURIReference::parseMappedAttribute(attr)) { requestImageResource(); return; } if (SVGLangSpace::parseMappedAttribute(attr)) return; if (SVGExternalResourcesRequired::parseMappedAttribute(attr)) return; SVGFilterPrimitiveStandardAttributes::parseMappedAttribute(attr); } }
void SVGFEImageElement::buildPendingResource() { clearResourceReferences(); if (!inDocument()) return; String id; Element* target = SVGURIReference::targetElementFromIRIString(href(), document(), &id); if (!target) { if (hasPendingResources()) return; if (id.isEmpty()) requestImageResource(); else { document()->accessSVGExtensions()->addPendingResource(id, this); ASSERT(hasPendingResources()); } } invalidate(); }