18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
2dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
3dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *
4dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * This library is free software; you can redistribute it and/or
5dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * modify it under the terms of the GNU Library General Public
6dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * License as published by the Free Software Foundation; either
7dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * version 2 of the License, or (at your option) any later version.
8dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *
9dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * This library is distributed in the hope that it will be useful,
10dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of
11dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Library General Public License for more details.
13dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *
14dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * You should have received a copy of the GNU Library General Public License
15dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * along with this library; see the file COPYING.LIB.  If not, write to
16dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Boston, MA 02110-1301, USA.
18dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch */
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef SVGTextPathElement_h
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define SVGTextPathElement_h
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG)
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SVGTextContentElement.h"
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SVGURIReference.h"
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochnamespace WebCore {
29f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
30cad810f21b803229eb11403f9209855525a25d57Steve Blockenum SVGTextPathMethodType {
31f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    SVG_TEXTPATH_METHODTYPE_UNKNOWN = 0,
32f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    SVG_TEXTPATH_METHODTYPE_ALIGN = 1,
33f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    SVG_TEXTPATH_METHODTYPE_STRETCH = 2
34f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch};
35f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
36f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochenum SVGTextPathSpacingType {
37f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    SVG_TEXTPATH_SPACINGTYPE_UNKNOWN = 0,
38f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    SVG_TEXTPATH_SPACINGTYPE_AUTO = 1,
39f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    SVG_TEXTPATH_SPACINGTYPE_EXACT = 2
40f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch};
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
42f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochclass SVGTextPathElement : public SVGTextContentElement,
43f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch                           public SVGURIReference {
44f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochpublic:
45f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    // Forward declare these enums in the w3c naming scheme, for IDL generation
46f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    enum {
47f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        TEXTPATH_METHODTYPE_UNKNOWN = SVG_TEXTPATH_METHODTYPE_UNKNOWN,
48f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        TEXTPATH_METHODTYPE_ALIGN = SVG_TEXTPATH_METHODTYPE_ALIGN,
49f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        TEXTPATH_METHODTYPE_STRETCH = SVG_TEXTPATH_METHODTYPE_STRETCH,
50f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        TEXTPATH_SPACINGTYPE_UNKNOWN = SVG_TEXTPATH_SPACINGTYPE_UNKNOWN,
51f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        TEXTPATH_SPACINGTYPE_AUTO = SVG_TEXTPATH_SPACINGTYPE_AUTO,
52f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        TEXTPATH_SPACINGTYPE_EXACT = SVG_TEXTPATH_SPACINGTYPE_EXACT
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    };
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
55f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    static PassRefPtr<SVGTextPathElement> create(const QualifiedName&, Document*);
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
57f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochprivate:
58f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    SVGTextPathElement(const QualifiedName&, Document*);
595ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
60f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual void insertedIntoDocument();
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
62f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual void parseMappedAttribute(Attribute*);
63f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual void svgAttributeChanged(const QualifiedName&);
64f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual void synchronizeProperty(const QualifiedName&);
652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    virtual void fillAttributeToPropertyTypeMap();
662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    virtual AttributeToPropertyTypeMap& attributeToPropertyTypeMap();
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
68f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
69f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual bool childShouldCreateRenderer(Node*) const;
70f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual bool rendererIsNeeded(RenderStyle*);
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
72f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual bool selfHasRelativeLengths() const;
73ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
74f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    // Animated property declarations
75f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    DECLARE_ANIMATED_LENGTH(StartOffset, startOffset)
76f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    DECLARE_ANIMATED_ENUMERATION(Method, method)
77f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    DECLARE_ANIMATED_ENUMERATION(Spacing, spacing)
78f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
79f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    // SVGURIReference
80f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    DECLARE_ANIMATED_STRING(Href, href)
81f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch};
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(SVG)
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
87