2 Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org>
3 2004, 2005, 2006, 2007, 2008 Rob Buis <buis@kde.org>
5 This file is part of the KDE project
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public
9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version.
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Library General Public License for more details.
17 You should have received a copy of the GNU Library General Public License
18 along with this library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 Boston, MA 02110-1301, USA.
24 #include "wtf/Platform.h"
27 #include "SVGTextPositioningElement.h"
29 #include "SVGLengthList.h"
31 #include "SVGNumberList.h"
35 SVGTextPositioningElement::SVGTextPositioningElement(const QualifiedName
& tagName
, Document
* doc
)
36 : SVGTextContentElement(tagName
, doc
)
37 , m_x(SVGLengthList::create(SVGNames::xAttr
))
38 , m_y(SVGLengthList::create(SVGNames::yAttr
))
39 , m_dx(SVGLengthList::create(SVGNames::dxAttr
))
40 , m_dy(SVGLengthList::create(SVGNames::dyAttr
))
41 , m_rotate(SVGNumberList::create(SVGNames::rotateAttr
))
45 SVGTextPositioningElement::~SVGTextPositioningElement()
49 ANIMATED_PROPERTY_DEFINITIONS(SVGTextPositioningElement
, SVGLengthList
*, LengthList
, lengthList
, X
, x
, SVGNames::xAttr
, m_x
.get())
50 ANIMATED_PROPERTY_DEFINITIONS(SVGTextPositioningElement
, SVGLengthList
*, LengthList
, lengthList
, Y
, y
, SVGNames::yAttr
, m_y
.get())
51 ANIMATED_PROPERTY_DEFINITIONS(SVGTextPositioningElement
, SVGLengthList
*, LengthList
, lengthList
, Dx
, dx
, SVGNames::dxAttr
, m_dx
.get())
52 ANIMATED_PROPERTY_DEFINITIONS(SVGTextPositioningElement
, SVGLengthList
*, LengthList
, lengthList
, Dy
, dy
, SVGNames::dyAttr
, m_dy
.get())
53 ANIMATED_PROPERTY_DEFINITIONS(SVGTextPositioningElement
, SVGNumberList
*, NumberList
, numberList
, Rotate
, rotate
, SVGNames::rotateAttr
, m_rotate
.get())
55 void SVGTextPositioningElement::parseMappedAttribute(MappedAttribute
* attr
)
57 kDebug() << "parse:" << attr
->localName() << attr
->value() << endl
;
58 if (attr
->name() == SVGNames::xAttr
)
59 xBaseValue()->parse(attr
->value(), this, LengthModeWidth
);
60 else if (attr
->name() == SVGNames::yAttr
)
61 yBaseValue()->parse(attr
->value(), this, LengthModeHeight
);
62 else if (attr
->name() == SVGNames::dxAttr
)
63 dxBaseValue()->parse(attr
->value(), this, LengthModeWidth
);
64 else if (attr
->name() == SVGNames::dyAttr
)
65 dyBaseValue()->parse(attr
->value(), this, LengthModeHeight
);
66 else if (attr
->name() == SVGNames::rotateAttr
)
67 rotateBaseValue()->parse(attr
->value());
69 SVGTextContentElement::parseMappedAttribute(attr
);
72 bool SVGTextPositioningElement::isKnownAttribute(const QualifiedName
& attrName
)
74 return (attrName
.matches(SVGNames::xAttr
) ||
75 attrName
.matches(SVGNames::yAttr
) ||
76 attrName
.matches(SVGNames::dxAttr
) ||
77 attrName
.matches(SVGNames::dyAttr
) ||
78 attrName
.matches(SVGNames::rotateAttr
) ||
79 SVGTextContentElement::isKnownAttribute(attrName
));