Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org> |
| 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Rob Buis <buis@kde.org> |
| 4 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 47 DEFINE_TRACE(SVGTextPositioningElement) | 47 DEFINE_TRACE(SVGTextPositioningElement) |
| 48 { | 48 { |
| 49 visitor->trace(m_x); | 49 visitor->trace(m_x); |
| 50 visitor->trace(m_y); | 50 visitor->trace(m_y); |
| 51 visitor->trace(m_dx); | 51 visitor->trace(m_dx); |
| 52 visitor->trace(m_dy); | 52 visitor->trace(m_dy); |
| 53 visitor->trace(m_rotate); | 53 visitor->trace(m_rotate); |
| 54 SVGTextContentElement::trace(visitor); | 54 SVGTextContentElement::trace(visitor); |
| 55 } | 55 } |
| 56 | 56 |
| 57 bool SVGTextPositioningElement::isSupportedAttribute(const QualifiedName& attrNa me) | |
| 58 { | |
| 59 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ()); | |
| 60 if (supportedAttributes.isEmpty()) { | |
| 61 supportedAttributes.add(SVGNames::xAttr); | |
| 62 supportedAttributes.add(SVGNames::yAttr); | |
| 63 supportedAttributes.add(SVGNames::dxAttr); | |
| 64 supportedAttributes.add(SVGNames::dyAttr); | |
| 65 supportedAttributes.add(SVGNames::rotateAttr); | |
| 66 } | |
| 67 return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName); | |
| 68 } | |
| 69 | |
| 70 void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName& attrNam e) | 57 void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName& attrNam e) |
| 71 { | 58 { |
| 72 if (!isSupportedAttribute(attrName)) { | |
| 73 SVGTextContentElement::svgAttributeChanged(attrName); | |
| 74 return; | |
| 75 } | |
| 76 | |
| 77 SVGElement::InvalidationGuard invalidationGuard(this); | |
| 78 | |
| 79 bool updateRelativeLengths = attrName == SVGNames::xAttr | 59 bool updateRelativeLengths = attrName == SVGNames::xAttr |
| 80 || attrName == SVGNames::yAttr | 60 || attrName == SVGNames::yAttr |
| 81 || attrName == SVGNames::dxAttr | 61 || attrName == SVGNames::dxAttr |
| 82 || attrName == SVGNames::dyAttr; | 62 || attrName == SVGNames::dyAttr; |
| 83 | 63 |
| 84 if (updateRelativeLengths) | 64 if (updateRelativeLengths) |
| 85 updateRelativeLengthsInformation(); | 65 updateRelativeLengthsInformation(); |
| 86 | 66 |
| 87 LayoutObject* renderer = this->layoutObject(); | 67 if (updateRelativeLengths || attrName == SVGNames::rotateAttr) { |
| 88 if (!renderer) | 68 SVGElement::InvalidationGuard invalidationGuard(this); |
| 69 | |
| 70 LayoutObject* renderer = this->layoutObject(); | |
| 71 if (!renderer) | |
| 72 return; | |
| 73 | |
| 74 if (LayoutSVGText* textRenderer = LayoutSVGText::locateLayoutSVGTextAnce stor(renderer)) | |
| 75 textRenderer->setNeedsPositioningValuesUpdate(); | |
| 76 markForLayoutAndParentResourceInvalidation(renderer); | |
| 77 | |
|
fs
2015/04/10 14:25:24
Drop.
Erik Dahlström (inactive)
2015/04/10 15:33:44
Done.
| |
| 89 return; | 78 return; |
| 79 } | |
| 90 | 80 |
| 91 ASSERT(updateRelativeLengths || attrName == SVGNames::rotateAttr); | 81 SVGTextContentElement::svgAttributeChanged(attrName); |
| 92 | |
| 93 if (LayoutSVGText* textRenderer = LayoutSVGText::locateLayoutSVGTextAncestor (renderer)) | |
| 94 textRenderer->setNeedsPositioningValuesUpdate(); | |
| 95 markForLayoutAndParentResourceInvalidation(renderer); | |
| 96 } | 82 } |
| 97 | 83 |
| 98 SVGTextPositioningElement* SVGTextPositioningElement::elementFromRenderer(Layout Object& renderer) | 84 SVGTextPositioningElement* SVGTextPositioningElement::elementFromRenderer(Layout Object& renderer) |
| 99 { | 85 { |
| 100 if (!renderer.isSVGText() && !renderer.isSVGInline()) | 86 if (!renderer.isSVGText() && !renderer.isSVGInline()) |
| 101 return 0; | 87 return 0; |
| 102 | 88 |
| 103 Node* node = renderer.node(); | 89 Node* node = renderer.node(); |
| 104 ASSERT(node); | 90 ASSERT(node); |
| 105 ASSERT(node->isSVGElement()); | 91 ASSERT(node->isSVGElement()); |
| 106 | 92 |
| 107 return isSVGTextPositioningElement(*node) ? toSVGTextPositioningElement(node ) : 0; | 93 return isSVGTextPositioningElement(*node) ? toSVGTextPositioningElement(node ) : 0; |
| 108 } | 94 } |
| 109 | 95 |
| 110 } | 96 } |
| OLD | NEW |