| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> |
| 3 * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org> |
| 4 * Copyright (C) 2010 Dirk Schulze <krit@webkit.org> | 4 * Copyright (C) 2010 Dirk Schulze <krit@webkit.org> |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 clearResourceReferences(); | 66 clearResourceReferences(); |
| 67 } | 67 } |
| 68 | 68 |
| 69 void SVGFEImageElement::clearResourceReferences() | 69 void SVGFEImageElement::clearResourceReferences() |
| 70 { | 70 { |
| 71 if (m_cachedImage) { | 71 if (m_cachedImage) { |
| 72 m_cachedImage->removeClient(this); | 72 m_cachedImage->removeClient(this); |
| 73 m_cachedImage = 0; | 73 m_cachedImage = 0; |
| 74 } | 74 } |
| 75 | 75 |
| 76 ASSERT(document()); | 76 document().accessSVGExtensions()->removeAllTargetReferencesForElement(this); |
| 77 document()->accessSVGExtensions()->removeAllTargetReferencesForElement(this)
; | |
| 78 } | 77 } |
| 79 | 78 |
| 80 void SVGFEImageElement::fetchImageResource() | 79 void SVGFEImageElement::fetchImageResource() |
| 81 { | 80 { |
| 82 FetchRequest request(ResourceRequest(ownerDocument()->completeURL(hrefCurren
tValue())), localName()); | 81 FetchRequest request(ResourceRequest(ownerDocument()->completeURL(hrefCurren
tValue())), localName()); |
| 83 m_cachedImage = document()->fetcher()->fetchImage(request); | 82 m_cachedImage = document().fetcher()->fetchImage(request); |
| 84 | 83 |
| 85 if (m_cachedImage) | 84 if (m_cachedImage) |
| 86 m_cachedImage->addClient(this); | 85 m_cachedImage->addClient(this); |
| 87 } | 86 } |
| 88 | 87 |
| 89 void SVGFEImageElement::buildPendingResource() | 88 void SVGFEImageElement::buildPendingResource() |
| 90 { | 89 { |
| 91 clearResourceReferences(); | 90 clearResourceReferences(); |
| 92 if (!inDocument()) | 91 if (!inDocument()) |
| 93 return; | 92 return; |
| 94 | 93 |
| 95 String id; | 94 String id; |
| 96 Element* target = SVGURIReference::targetElementFromIRIString(hrefCurrentVal
ue(), document(), &id); | 95 Element* target = SVGURIReference::targetElementFromIRIString(hrefCurrentVal
ue(), &document(), &id); |
| 97 if (!target) { | 96 if (!target) { |
| 98 if (id.isEmpty()) | 97 if (id.isEmpty()) |
| 99 fetchImageResource(); | 98 fetchImageResource(); |
| 100 else { | 99 else { |
| 101 document()->accessSVGExtensions()->addPendingResource(id, this); | 100 document().accessSVGExtensions()->addPendingResource(id, this); |
| 102 ASSERT(hasPendingResources()); | 101 ASSERT(hasPendingResources()); |
| 103 } | 102 } |
| 104 } else if (target->isSVGElement()) { | 103 } else if (target->isSVGElement()) { |
| 105 // Register us with the target in the dependencies map. Any change of hr
efElement | 104 // Register us with the target in the dependencies map. Any change of hr
efElement |
| 106 // that leads to relayout/repainting now informs us, so we can react to
it. | 105 // that leads to relayout/repainting now informs us, so we can react to
it. |
| 107 document()->accessSVGExtensions()->addElementReferencingTarget(this, toS
VGElement(target)); | 106 document().accessSVGExtensions()->addElementReferencingTarget(this, toSV
GElement(target)); |
| 108 } | 107 } |
| 109 | 108 |
| 110 invalidate(); | 109 invalidate(); |
| 111 } | 110 } |
| 112 | 111 |
| 113 bool SVGFEImageElement::isSupportedAttribute(const QualifiedName& attrName) | 112 bool SVGFEImageElement::isSupportedAttribute(const QualifiedName& attrName) |
| 114 { | 113 { |
| 115 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ()); | 114 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ()); |
| 116 if (supportedAttributes.isEmpty()) { | 115 if (supportedAttributes.isEmpty()) { |
| 117 SVGURIReference::addSupportedAttributes(supportedAttributes); | 116 SVGURIReference::addSupportedAttributes(supportedAttributes); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 return; | 193 return; |
| 195 | 194 |
| 196 if (RenderObject* renderer = this->renderer()) | 195 if (RenderObject* renderer = this->renderer()) |
| 197 RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer); | 196 RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer); |
| 198 } | 197 } |
| 199 | 198 |
| 200 PassRefPtr<FilterEffect> SVGFEImageElement::build(SVGFilterBuilder*, Filter* fil
ter) | 199 PassRefPtr<FilterEffect> SVGFEImageElement::build(SVGFilterBuilder*, Filter* fil
ter) |
| 201 { | 200 { |
| 202 if (m_cachedImage) | 201 if (m_cachedImage) |
| 203 return FEImage::createWithImage(filter, m_cachedImage->imageForRenderer(
renderer()), preserveAspectRatioCurrentValue()); | 202 return FEImage::createWithImage(filter, m_cachedImage->imageForRenderer(
renderer()), preserveAspectRatioCurrentValue()); |
| 204 return FEImage::createWithIRIReference(filter, document(), hrefCurrentValue(
), preserveAspectRatioCurrentValue()); | 203 return FEImage::createWithIRIReference(filter, &document(), hrefCurrentValue
(), preserveAspectRatioCurrentValue()); |
| 205 } | 204 } |
| 206 | 205 |
| 207 void SVGFEImageElement::addSubresourceAttributeURLs(ListHashSet<KURL>& urls) con
st | 206 void SVGFEImageElement::addSubresourceAttributeURLs(ListHashSet<KURL>& urls) con
st |
| 208 { | 207 { |
| 209 SVGFilterPrimitiveStandardAttributes::addSubresourceAttributeURLs(urls); | 208 SVGFilterPrimitiveStandardAttributes::addSubresourceAttributeURLs(urls); |
| 210 | 209 |
| 211 addSubresourceURL(urls, document()->completeURL(hrefCurrentValue())); | 210 addSubresourceURL(urls, document().completeURL(hrefCurrentValue())); |
| 212 } | 211 } |
| 213 | 212 |
| 214 } | 213 } |
| OLD | NEW |