OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006, 2008 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 2006, 2008 Nikolas Zimmermann <zimmermann@kde.org> |
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Rob Buis <buis@kde.org> |
4 * Copyright (C) 2006 Alexander Kellett <lypanov@kde.org> | 4 * Copyright (C) 2006 Alexander Kellett <lypanov@kde.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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 | 68 |
69 PassRefPtr<SVGImageElement> SVGImageElement::create(const QualifiedName& tagName
, Document* document) | 69 PassRefPtr<SVGImageElement> SVGImageElement::create(const QualifiedName& tagName
, Document* document) |
70 { | 70 { |
71 return adoptRef(new SVGImageElement(tagName, document)); | 71 return adoptRef(new SVGImageElement(tagName, document)); |
72 } | 72 } |
73 | 73 |
74 bool SVGImageElement::isSupportedAttribute(const QualifiedName& attrName) | 74 bool SVGImageElement::isSupportedAttribute(const QualifiedName& attrName) |
75 { | 75 { |
76 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ()); | 76 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ()); |
77 if (supportedAttributes.isEmpty()) { | 77 if (supportedAttributes.isEmpty()) { |
78 SVGTests::addSupportedAttributes(supportedAttributes); | |
79 SVGLangSpace::addSupportedAttributes(supportedAttributes); | 78 SVGLangSpace::addSupportedAttributes(supportedAttributes); |
80 SVGExternalResourcesRequired::addSupportedAttributes(supportedAttributes
); | 79 SVGExternalResourcesRequired::addSupportedAttributes(supportedAttributes
); |
81 SVGURIReference::addSupportedAttributes(supportedAttributes); | 80 SVGURIReference::addSupportedAttributes(supportedAttributes); |
82 supportedAttributes.add(SVGNames::xAttr); | 81 supportedAttributes.add(SVGNames::xAttr); |
83 supportedAttributes.add(SVGNames::yAttr); | 82 supportedAttributes.add(SVGNames::yAttr); |
84 supportedAttributes.add(SVGNames::widthAttr); | 83 supportedAttributes.add(SVGNames::widthAttr); |
85 supportedAttributes.add(SVGNames::heightAttr); | 84 supportedAttributes.add(SVGNames::heightAttr); |
86 supportedAttributes.add(SVGNames::preserveAspectRatioAttr); | 85 supportedAttributes.add(SVGNames::preserveAspectRatioAttr); |
87 } | 86 } |
88 return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName); | 87 return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName); |
(...skipping 27 matching lines...) Expand all Loading... |
116 else if (name == SVGNames::yAttr) | 115 else if (name == SVGNames::yAttr) |
117 setYBaseValue(SVGLength::construct(LengthModeHeight, value, parseError))
; | 116 setYBaseValue(SVGLength::construct(LengthModeHeight, value, parseError))
; |
118 else if (name == SVGNames::preserveAspectRatioAttr) { | 117 else if (name == SVGNames::preserveAspectRatioAttr) { |
119 SVGPreserveAspectRatio preserveAspectRatio; | 118 SVGPreserveAspectRatio preserveAspectRatio; |
120 preserveAspectRatio.parse(value); | 119 preserveAspectRatio.parse(value); |
121 setPreserveAspectRatioBaseValue(preserveAspectRatio); | 120 setPreserveAspectRatioBaseValue(preserveAspectRatio); |
122 } else if (name == SVGNames::widthAttr) | 121 } else if (name == SVGNames::widthAttr) |
123 setWidthBaseValue(SVGLength::construct(LengthModeWidth, value, parseErro
r, ForbidNegativeLengths)); | 122 setWidthBaseValue(SVGLength::construct(LengthModeWidth, value, parseErro
r, ForbidNegativeLengths)); |
124 else if (name == SVGNames::heightAttr) | 123 else if (name == SVGNames::heightAttr) |
125 setHeightBaseValue(SVGLength::construct(LengthModeHeight, value, parseEr
ror, ForbidNegativeLengths)); | 124 setHeightBaseValue(SVGLength::construct(LengthModeHeight, value, parseEr
ror, ForbidNegativeLengths)); |
126 else if (SVGTests::parseAttribute(name, value) | 125 else if (SVGLangSpace::parseAttribute(name, value) |
127 || SVGLangSpace::parseAttribute(name, value) | |
128 || SVGExternalResourcesRequired::parseAttribute(name, value) | 126 || SVGExternalResourcesRequired::parseAttribute(name, value) |
129 || SVGURIReference::parseAttribute(name, value)) { | 127 || SVGURIReference::parseAttribute(name, value)) { |
130 } else | 128 } else |
131 ASSERT_NOT_REACHED(); | 129 ASSERT_NOT_REACHED(); |
132 | 130 |
133 reportAttributeParsingError(parseError, name, value); | 131 reportAttributeParsingError(parseError, name, value); |
134 } | 132 } |
135 | 133 |
136 void SVGImageElement::svgAttributeChanged(const QualifiedName& attrName) | 134 void SVGImageElement::svgAttributeChanged(const QualifiedName& attrName) |
137 { | 135 { |
138 if (!isSupportedAttribute(attrName)) { | 136 if (!isSupportedAttribute(attrName)) { |
139 SVGGraphicsElement::svgAttributeChanged(attrName); | 137 SVGGraphicsElement::svgAttributeChanged(attrName); |
140 return; | 138 return; |
141 } | 139 } |
142 | 140 |
143 SVGElementInstance::InvalidationGuard invalidationGuard(this); | 141 SVGElementInstance::InvalidationGuard invalidationGuard(this); |
144 | 142 |
145 bool isLengthAttribute = attrName == SVGNames::xAttr | 143 bool isLengthAttribute = attrName == SVGNames::xAttr |
146 || attrName == SVGNames::yAttr | 144 || attrName == SVGNames::yAttr |
147 || attrName == SVGNames::widthAttr | 145 || attrName == SVGNames::widthAttr |
148 || attrName == SVGNames::heightAttr; | 146 || attrName == SVGNames::heightAttr; |
149 | 147 |
150 if (isLengthAttribute) | 148 if (isLengthAttribute) |
151 updateRelativeLengthsInformation(); | 149 updateRelativeLengthsInformation(); |
152 | 150 |
153 if (SVGTests::handleAttributeChange(this, attrName)) | |
154 return; | |
155 | |
156 if (SVGURIReference::isKnownAttribute(attrName)) { | 151 if (SVGURIReference::isKnownAttribute(attrName)) { |
157 m_imageLoader.updateFromElementIgnoringPreviousError(); | 152 m_imageLoader.updateFromElementIgnoringPreviousError(); |
158 return; | 153 return; |
159 } | 154 } |
160 | 155 |
161 RenderObject* renderer = this->renderer(); | 156 RenderObject* renderer = this->renderer(); |
162 if (!renderer) | 157 if (!renderer) |
163 return; | 158 return; |
164 | 159 |
165 if (isLengthAttribute) { | 160 if (isLengthAttribute) { |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 addSubresourceURL(urls, document()->completeURL(href())); | 226 addSubresourceURL(urls, document()->completeURL(href())); |
232 } | 227 } |
233 | 228 |
234 void SVGImageElement::didMoveToNewDocument(Document* oldDocument) | 229 void SVGImageElement::didMoveToNewDocument(Document* oldDocument) |
235 { | 230 { |
236 m_imageLoader.elementDidMoveToNewDocument(); | 231 m_imageLoader.elementDidMoveToNewDocument(); |
237 SVGGraphicsElement::didMoveToNewDocument(oldDocument); | 232 SVGGraphicsElement::didMoveToNewDocument(oldDocument); |
238 } | 233 } |
239 | 234 |
240 } | 235 } |
OLD | NEW |