25 #if ENABLE(SVG) && ENABLE(SVG_FILTERS)
29 #include "CachedImage.h"
30 #include "DocLoader.h"
39 SVGFEImageElement::SVGFEImageElement(
const QualifiedName& tagName, Document* doc)
40 : SVGFilterPrimitiveStandardAttributes(tagName, doc)
43 , SVGExternalResourcesRequired()
44 , m_preserveAspectRatio(SVGPreserveAspectRatio::
create())
50 SVGFEImageElement::~SVGFEImageElement()
52 delete m_filterEffect;
54 m_cachedImage->removeClient(
this);
57 ANIMATED_PROPERTY_DEFINITIONS(SVGFEImageElement, SVGPreserveAspectRatio*, PreserveAspectRatio, preserveAspectRatio, PreserveAspectRatio, preserveAspectRatio,
SVGNames::preserveAspectRatioAttr, m_preserveAspectRatio.get())
59 void SVGFEImageElement::parseMappedAttribute(MappedAttribute* attr)
61 const String& value = attr->value();
64 const UChar*
end = c + value.length();
65 preserveAspectRatioBaseValue()->parsePreserveAspectRatio(c, end);
67 if (SVGURIReference::parseMappedAttribute(attr)) {
68 if (!href().startsWith(
"#")) {
71 m_cachedImage->removeClient(
this);
72 m_cachedImage = ownerDocument()->docLoader()->requestImage(href());
74 m_cachedImage->addClient(
this);
78 if (SVGLangSpace::parseMappedAttribute(attr))
80 if (SVGExternalResourcesRequired::parseMappedAttribute(attr))
83 SVGFilterPrimitiveStandardAttributes::parseMappedAttribute(attr);
87 void SVGFEImageElement::notifyFinished(CachedResource* finishedObj)
89 if (finishedObj == m_cachedImage && m_filterEffect)
90 m_filterEffect->setCachedImage(m_cachedImage);
93 SVGFEImage* SVGFEImageElement::filterEffect(SVGResourceFilter* filter)
const
96 m_filterEffect =
new SVGFEImage(filter);
100 m_filterEffect->setCachedImage(m_cachedImage);
102 setStandardAttributes(m_filterEffect);
103 return m_filterEffect;
106 void SVGFEImageElement::getSubresourceAttributeStrings(Vector<String>& urls)
const
113 #endif // ENABLE(SVG)