2 Copyright (C) 2007 Eric Seidel <eric@webkit.org>
3 Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
21 #ifndef SVGGlyphElement_h
22 #define SVGGlyphElement_h
25 #include "SVGStyledElement.h"
37 using khtml::AtomicString
;
40 // Describe a SVG <glyph> element
41 struct SVGGlyphIdentifier
{
48 // SVG Font depends on exactly this order.
63 , horizontalAdvanceX(0.0f
)
64 , verticalOriginX(0.0f
)
65 , verticalOriginY(0.0f
)
66 , verticalAdvanceY(0.0f
)
70 // Used to mark our float properties as "to be inherited from SVGFontData"
71 static float inheritedValue()
73 static float s_inheritedValue
= std::numeric_limits
<float>::infinity();
74 return s_inheritedValue
;
77 bool operator==(const SVGGlyphIdentifier
& other
) const
79 return isValid
== other
.isValid
&&
80 orientation
== other
.orientation
&&
81 arabicForm
== other
.arabicForm
&&
82 glyphName
== other
.glyphName
&&
83 horizontalAdvanceX
== other
.horizontalAdvanceX
&&
84 verticalOriginX
== other
.verticalOriginX
&&
85 verticalOriginY
== other
.verticalOriginY
&&
86 verticalAdvanceY
== other
.verticalAdvanceY
&&
87 pathData
.debugString() == other
.pathData
.debugString() &&
88 languages
== other
.languages
;
93 Orientation orientation
: 2;
94 ArabicForm arabicForm
: 3;
99 float horizontalAdvanceX
;
100 float verticalOriginX
;
101 float verticalOriginY
;
102 float verticalAdvanceY
;
105 Vector
<String
> languages
;
108 class SVGGlyphElement
: public SVGStyledElement
{
110 SVGGlyphElement(const QualifiedName
&, Document
*);
111 virtual ~SVGGlyphElement();
113 virtual void insertedIntoDocument();
114 virtual void removedFromDocument();
116 virtual bool rendererIsNeeded(RenderStyle
*) { return false; }
118 SVGGlyphIdentifier
buildGlyphIdentifier() const;
120 // Helper function used by SVGFont
121 static void inheritUnspecifiedAttributes(SVGGlyphIdentifier
&, const SVGFontData
*);
122 static String
querySVGFontLanguage(const SVGElement
*);
124 // Helper function shared between SVGGlyphElement & SVGMissingGlyphElement
125 static SVGGlyphIdentifier
buildGenericGlyphIdentifier(const SVGElement
*);
128 } // namespace WebCore
130 #endif // ENABLE(SVG_FONTS)