• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2     Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
3 
4     This library is free software; you can redistribute it and/or
5     modify it under the terms of the GNU Library General Public
6     License as published by the Free Software Foundation; either
7     version 2 of the License, or (at your option) any later version.
8 
9     This library is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12     Library General Public License for more details.
13 
14     You should have received a copy of the GNU Library General Public License
15     along with this library; see the file COPYING.LIB.  If not, write to
16     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17     Boston, MA 02110-1301, USA.
18 */
19 
20 #ifndef SVGTextPathElement_h
21 #define SVGTextPathElement_h
22 
23 #if ENABLE(SVG)
24 #include "SVGTextContentElement.h"
25 
26 #include "SVGURIReference.h"
27 
28 namespace WebCore {
29     enum SVGTextPathMethodType {
30         SVG_TEXTPATH_METHODTYPE_UNKNOWN = 0,
31         SVG_TEXTPATH_METHODTYPE_ALIGN = 1,
32         SVG_TEXTPATH_METHODTYPE_STRETCH = 2
33     };
34 
35     enum SVGTextPathSpacingType {
36         SVG_TEXTPATH_SPACINGTYPE_UNKNOWN = 0,
37         SVG_TEXTPATH_SPACINGTYPE_AUTO = 1,
38         SVG_TEXTPATH_SPACINGTYPE_EXACT = 2
39     };
40 
41     class SVGTextPathElement : public SVGTextContentElement,
42                                public SVGURIReference {
43     public:
44         // Forward declare these enums in the w3c naming scheme, for IDL generation
45         enum {
46             TEXTPATH_METHODTYPE_UNKNOWN = SVG_TEXTPATH_METHODTYPE_UNKNOWN,
47             TEXTPATH_METHODTYPE_ALIGN = SVG_TEXTPATH_METHODTYPE_ALIGN,
48             TEXTPATH_METHODTYPE_STRETCH = SVG_TEXTPATH_METHODTYPE_STRETCH,
49             TEXTPATH_SPACINGTYPE_UNKNOWN = SVG_TEXTPATH_SPACINGTYPE_UNKNOWN,
50             TEXTPATH_SPACINGTYPE_AUTO = SVG_TEXTPATH_SPACINGTYPE_AUTO,
51             TEXTPATH_SPACINGTYPE_EXACT = SVG_TEXTPATH_SPACINGTYPE_EXACT
52         };
53 
54         SVGTextPathElement(const QualifiedName&, Document*);
55         virtual ~SVGTextPathElement();
56 
57         virtual void insertedIntoDocument();
58 
59         virtual void parseMappedAttribute(MappedAttribute*);
60         virtual void synchronizeProperty(const QualifiedName&);
rendererIsNeeded(RenderStyle * style)61         virtual bool rendererIsNeeded(RenderStyle* style) { return StyledElement::rendererIsNeeded(style); }
62         virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
63 
64         bool childShouldCreateRenderer(Node*) const;
65 
66     private:
67         DECLARE_ANIMATED_PROPERTY(SVGTextPathElement, SVGNames::startOffsetAttr, SVGLength, StartOffset, startOffset)
68         DECLARE_ANIMATED_PROPERTY(SVGTextPathElement, SVGNames::methodAttr, int, Method, method)
69         DECLARE_ANIMATED_PROPERTY(SVGTextPathElement, SVGNames::spacingAttr, int, Spacing, spacing)
70 
71         // SVGURIReference
72         DECLARE_ANIMATED_PROPERTY(SVGTextPathElement, XLinkNames::hrefAttr, String, Href, href)
73     };
74 
75 } // namespace WebCore
76 
77 #endif // ENABLE(SVG)
78 #endif
79