diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:05:15 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:05:15 -0800 |
commit | 1cbdecfa9fc428ac2d8aca0fa91c9580b3d57353 (patch) | |
tree | 4457a7306ea5acb43fe05bfe0973b1f7faf97ba2 /WebCore/svg/SVGTextElement.cpp | |
parent | 9364f22aed35e1a1e9d07c121510f80be3ab0502 (diff) | |
download | external_webkit-1cbdecfa9fc428ac2d8aca0fa91c9580b3d57353.zip external_webkit-1cbdecfa9fc428ac2d8aca0fa91c9580b3d57353.tar.gz external_webkit-1cbdecfa9fc428ac2d8aca0fa91c9580b3d57353.tar.bz2 |
Code drop from //branches/cupcake/...@124589
Diffstat (limited to 'WebCore/svg/SVGTextElement.cpp')
-rw-r--r-- | WebCore/svg/SVGTextElement.cpp | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/WebCore/svg/SVGTextElement.cpp b/WebCore/svg/SVGTextElement.cpp index d316dd0..1ace1a9 100644 --- a/WebCore/svg/SVGTextElement.cpp +++ b/WebCore/svg/SVGTextElement.cpp @@ -1,6 +1,6 @@ /* Copyright (C) 2004, 2005, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> - 2004, 2005, 2006 Rob Buis <buis@kde.org> + 2004, 2005, 2006, 2008 Rob Buis <buis@kde.org> This file is part of the KDE project @@ -38,7 +38,7 @@ namespace WebCore { SVGTextElement::SVGTextElement(const QualifiedName& tagName, Document* doc) : SVGTextPositioningElement(tagName, doc) , SVGTransformable() - , m_transform(new SVGTransformList(SVGNames::transformAttr)) + , m_transform(this, SVGNames::transformAttr, SVGTransformList::create(SVGNames::transformAttr)) { } @@ -46,8 +46,6 @@ SVGTextElement::~SVGTextElement() { } -ANIMATED_PROPERTY_DEFINITIONS(SVGTextElement, SVGTransformList*, TransformList, transformList, Transform, transform, SVGNames::transformAttr, m_transform.get()) - void SVGTextElement::parseMappedAttribute(MappedAttribute* attr) { if (attr->name() == SVGNames::transformAttr) { @@ -94,7 +92,14 @@ AffineTransform SVGTextElement::getCTM() const AffineTransform SVGTextElement::animatedLocalTransform() const { - return transform()->concatenate().matrix(); + return m_supplementalTransform ? transform()->concatenate().matrix() * *m_supplementalTransform : transform()->concatenate().matrix(); +} + +AffineTransform* SVGTextElement::supplementalTransform() +{ + if (!m_supplementalTransform) + m_supplementalTransform.set(new AffineTransform()); + return m_supplementalTransform.get(); } RenderObject* SVGTextElement::createRenderer(RenderArena* arena, RenderStyle* style) @@ -104,12 +109,26 @@ RenderObject* SVGTextElement::createRenderer(RenderArena* arena, RenderStyle* st bool SVGTextElement::childShouldCreateRenderer(Node* child) const { - if (child->isTextNode() || child->hasTagName(SVGNames::tspanTag) || - child->hasTagName(SVGNames::trefTag) || child->hasTagName(SVGNames::aTag) || child->hasTagName(SVGNames::textPathTag)) + if (child->isTextNode() +#if ENABLE(SVG_FONTS) + || child->hasTagName(SVGNames::altGlyphTag) +#endif + || child->hasTagName(SVGNames::tspanTag) || child->hasTagName(SVGNames::trefTag) || child->hasTagName(SVGNames::aTag) || child->hasTagName(SVGNames::textPathTag)) return true; return false; } +void SVGTextElement::svgAttributeChanged(const QualifiedName& attrName) +{ + SVGTextPositioningElement::svgAttributeChanged(attrName); + + if (!renderer()) + return; + + if (SVGTextPositioningElement::isKnownAttribute(attrName)) + renderer()->setNeedsLayout(true); +} + } #endif // ENABLE(SVG) |