OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> |
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Rob Buis <buis@kde.org> |
4 * Copyright (C) 2007 Apple Inc. All rights reserved. | 4 * Copyright (C) 2007 Apple Inc. All rights reserved. |
5 * Copyright (C) 2014 Google, Inc. | 5 * Copyright (C) 2014 Google, Inc. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 } else if (SVGZoomAndPan::parseAttribute(name, value)) { | 236 } else if (SVGZoomAndPan::parseAttribute(name, value)) { |
237 } else { | 237 } else { |
238 parseAttributeNew(name, value); | 238 parseAttributeNew(name, value); |
239 } | 239 } |
240 } | 240 } |
241 | 241 |
242 bool SVGSVGElement::isPresentationAttribute(const QualifiedName& name) const | 242 bool SVGSVGElement::isPresentationAttribute(const QualifiedName& name) const |
243 { | 243 { |
244 if (isOutermostSVGSVGElement() && (name == SVGNames::widthAttr || name == SV
GNames::heightAttr)) | 244 if (isOutermostSVGSVGElement() && (name == SVGNames::widthAttr || name == SV
GNames::heightAttr)) |
245 return true; | 245 return true; |
| 246 else if (name == SVGNames::xAttr || name == SVGNames::yAttr) |
| 247 return true; |
| 248 |
246 return SVGGraphicsElement::isPresentationAttribute(name); | 249 return SVGGraphicsElement::isPresentationAttribute(name); |
247 } | 250 } |
248 | 251 |
249 void SVGSVGElement::collectStyleForPresentationAttribute(const QualifiedName& na
me, const AtomicString& value, MutableStylePropertySet* style) | 252 void SVGSVGElement::collectStyleForPresentationAttribute(const QualifiedName& na
me, const AtomicString& value, MutableStylePropertySet* style) |
250 { | 253 { |
251 if (isOutermostSVGSVGElement() && (name == SVGNames::widthAttr || name == SV
GNames::heightAttr)) { | 254 RefPtrWillBeRawPtr<SVGAnimatedPropertyBase> property = propertyFromAttribute
(name); |
| 255 if (property == m_x) { |
| 256 addPropertyToPresentationAttributeStyle(style, CSSPropertyX, m_x->curren
tValue()->valueInSpecifiedUnits(), m_x->currentValue()->cssUnitTypeQuirk()); |
| 257 } else if (property == m_y) { |
| 258 addPropertyToPresentationAttributeStyle(style, CSSPropertyY, m_y->curren
tValue()->valueInSpecifiedUnits(), m_y->currentValue()->cssUnitTypeQuirk()); |
| 259 } else if (isOutermostSVGSVGElement() && (property == m_width || property ==
m_height)) { |
252 RefPtrWillBeRawPtr<SVGLength> length = SVGLength::create(LengthModeOther
); | 260 RefPtrWillBeRawPtr<SVGLength> length = SVGLength::create(LengthModeOther
); |
253 TrackExceptionState exceptionState; | 261 TrackExceptionState exceptionState; |
254 length->setValueAsString(value, exceptionState); | 262 length->setValueAsString(value, exceptionState); |
255 if (!exceptionState.hadException()) { | 263 if (!exceptionState.hadException()) { |
256 if (name == SVGNames::widthAttr) | 264 if (property == m_width) |
257 addPropertyToPresentationAttributeStyle(style, CSSPropertyWidth,
value); | 265 addPropertyToPresentationAttributeStyle(style, CSSPropertyWidth,
value); |
258 else if (name == SVGNames::heightAttr) | 266 else if (property == m_height) |
259 addPropertyToPresentationAttributeStyle(style, CSSPropertyHeight
, value); | 267 addPropertyToPresentationAttributeStyle(style, CSSPropertyHeight
, value); |
260 } | 268 } |
261 } else { | 269 } else { |
262 SVGGraphicsElement::collectStyleForPresentationAttribute(name, value, st
yle); | 270 SVGGraphicsElement::collectStyleForPresentationAttribute(name, value, st
yle); |
263 } | 271 } |
264 } | 272 } |
265 | 273 |
266 void SVGSVGElement::svgAttributeChanged(const QualifiedName& attrName) | 274 void SVGSVGElement::svgAttributeChanged(const QualifiedName& attrName) |
267 { | 275 { |
268 bool updateRelativeLengthsOrViewBox = false; | 276 bool updateRelativeLengthsOrViewBox = false; |
(...skipping 12 matching lines...) Expand all Loading... |
281 // | 289 // |
282 // FIXME: For width/height animated as XML attributes on SVG | 290 // FIXME: For width/height animated as XML attributes on SVG |
283 // roots, there is an attribute synchronization missing. See | 291 // roots, there is an attribute synchronization missing. See |
284 // http://crbug.com/364807 | 292 // http://crbug.com/364807 |
285 if (widthChanged || heightChanged) { | 293 if (widthChanged || heightChanged) { |
286 RenderObject* renderObject = renderer(); | 294 RenderObject* renderObject = renderer(); |
287 if (renderObject && renderObject->isSVGRoot()) { | 295 if (renderObject && renderObject->isSVGRoot()) { |
288 invalidateSVGPresentationAttributeStyle(); | 296 invalidateSVGPresentationAttributeStyle(); |
289 setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracin
g::create(StyleChangeReason::SVGContainerSizeChange)); | 297 setNeedsStyleRecalc(LocalStyleChange, StyleChangeReasonForTracin
g::create(StyleChangeReason::SVGContainerSizeChange)); |
290 } | 298 } |
| 299 } else { |
| 300 invalidateSVGPresentationAttributeStyle(); |
| 301 setNeedsStyleRecalc(LocalStyleChange, |
| 302 StyleChangeReasonForTracing::fromAttribute(attrName)); |
291 } | 303 } |
292 } | 304 } |
293 | 305 |
294 if (SVGFitToViewBox::isKnownAttribute(attrName)) { | 306 if (SVGFitToViewBox::isKnownAttribute(attrName)) { |
295 updateRelativeLengthsOrViewBox = true; | 307 updateRelativeLengthsOrViewBox = true; |
296 if (RenderObject* object = renderer()) | 308 if (RenderObject* object = renderer()) |
297 object->setNeedsTransformUpdate(); | 309 object->setNeedsTransformUpdate(); |
298 } | 310 } |
299 | 311 |
300 SVGElement::InvalidationGuard invalidationGuard(this); | 312 SVGElement::InvalidationGuard invalidationGuard(this); |
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
771 visitor->trace(m_width); | 783 visitor->trace(m_width); |
772 visitor->trace(m_height); | 784 visitor->trace(m_height); |
773 visitor->trace(m_translation); | 785 visitor->trace(m_translation); |
774 visitor->trace(m_timeContainer); | 786 visitor->trace(m_timeContainer); |
775 visitor->trace(m_viewSpec); | 787 visitor->trace(m_viewSpec); |
776 SVGGraphicsElement::trace(visitor); | 788 SVGGraphicsElement::trace(visitor); |
777 SVGFitToViewBox::trace(visitor); | 789 SVGFitToViewBox::trace(visitor); |
778 } | 790 } |
779 | 791 |
780 } // namespace blink | 792 } // namespace blink |
OLD | NEW |