summaryrefslogtreecommitdiffstats
path: root/WebCore/svg/SVGTextElement.cpp
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2008-12-17 18:05:15 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2008-12-17 18:05:15 -0800
commit1cbdecfa9fc428ac2d8aca0fa91c9580b3d57353 (patch)
tree4457a7306ea5acb43fe05bfe0973b1f7faf97ba2 /WebCore/svg/SVGTextElement.cpp
parent9364f22aed35e1a1e9d07c121510f80be3ab0502 (diff)
downloadexternal_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.cpp33
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)