• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2     Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org>
3                   2004, 2005 Rob Buis <buis@kde.org>
4     Copyright (C) Research In Motion Limited 2010. All rights reserved.
5 
6     Based on khtml code by:
7     Copyright (C) 2000-2003 Lars Knoll (knoll@kde.org)
8               (C) 2000 Antti Koivisto (koivisto@kde.org)
9               (C) 2000-2003 Dirk Mueller (mueller@kde.org)
10               (C) 2002-2003 Apple Computer, Inc.
11 
12     This library is free software; you can redistribute it and/or
13     modify it under the terms of the GNU Library General Public
14     License as published by the Free Software Foundation; either
15     version 2 of the License, or (at your option) any later version.
16 
17     This library is distributed in the hope that it will be useful,
18     but WITHOUT ANY WARRANTY; without even the implied warranty of
19     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20     Library General Public License for more details.
21 
22     You should have received a copy of the GNU Library General Public License
23     along with this library; see the file COPYING.LIB.  If not, write to
24     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
25     Boston, MA 02110-1301, USA.
26 */
27 
28 #ifndef SVGRenderStyleDefs_h
29 #define SVGRenderStyleDefs_h
30 
31 #include "core/svg/SVGLength.h"
32 #include "core/svg/SVGLengthList.h"
33 #include "core/svg/SVGPaint.h"
34 #include "wtf/OwnPtr.h"
35 #include "wtf/PassOwnPtr.h"
36 #include "wtf/RefCounted.h"
37 #include "wtf/RefPtr.h"
38 
39 namespace WebCore {
40 
41     enum EBaselineShift {
42         BS_BASELINE, BS_SUB, BS_SUPER, BS_LENGTH
43     };
44 
45     enum ETextAnchor {
46         TA_START, TA_MIDDLE, TA_END
47     };
48 
49     enum EColorInterpolation {
50         CI_AUTO, CI_SRGB, CI_LINEARRGB
51     };
52 
53     enum EColorRendering {
54         CR_AUTO, CR_OPTIMIZESPEED, CR_OPTIMIZEQUALITY
55     };
56     enum EShapeRendering {
57         SR_AUTO, SR_OPTIMIZESPEED, SR_CRISPEDGES, SR_GEOMETRICPRECISION
58     };
59 
60     enum SVGWritingMode {
61         WM_LRTB, WM_LR, WM_RLTB, WM_RL, WM_TBRL, WM_TB
62     };
63 
64     enum EGlyphOrientation {
65         GO_0DEG, GO_90DEG, GO_180DEG, GO_270DEG, GO_AUTO
66     };
67 
68     enum EAlignmentBaseline {
69         AB_AUTO, AB_BASELINE, AB_BEFORE_EDGE, AB_TEXT_BEFORE_EDGE,
70         AB_MIDDLE, AB_CENTRAL, AB_AFTER_EDGE, AB_TEXT_AFTER_EDGE,
71         AB_IDEOGRAPHIC, AB_ALPHABETIC, AB_HANGING, AB_MATHEMATICAL
72     };
73 
74     enum EDominantBaseline {
75         DB_AUTO, DB_USE_SCRIPT, DB_NO_CHANGE, DB_RESET_SIZE,
76         DB_IDEOGRAPHIC, DB_ALPHABETIC, DB_HANGING, DB_MATHEMATICAL,
77         DB_CENTRAL, DB_MIDDLE, DB_TEXT_AFTER_EDGE, DB_TEXT_BEFORE_EDGE
78     };
79 
80     enum EVectorEffect {
81         VE_NONE,
82         VE_NON_SCALING_STROKE
83     };
84 
85     enum EBufferedRendering {
86         BR_AUTO,
87         BR_DYNAMIC,
88         BR_STATIC
89     };
90 
91     enum EMaskType {
92         MT_LUMINANCE,
93         MT_ALPHA
94     };
95 
96     enum EPaintOrderType {
97         PT_NONE    = 0,
98         PT_FILL    = 1,
99         PT_STROKE  = 2,
100         PT_MARKERS = 3
101     };
102 
103     const int kPaintOrderBitwidth = 2;
104     typedef unsigned EPaintOrder;
105     const unsigned PO_NORMAL = PT_FILL | PT_STROKE << 2 | PT_MARKERS << 4;
106 
107     // Inherited/Non-Inherited Style Datastructures
108     class StyleFillData : public RefCounted<StyleFillData> {
109     public:
create()110         static PassRefPtr<StyleFillData> create() { return adoptRef(new StyleFillData); }
copy()111         PassRefPtr<StyleFillData> copy() const { return adoptRef(new StyleFillData(*this)); }
112 
113         bool operator==(const StyleFillData&) const;
114         bool operator!=(const StyleFillData& other) const
115         {
116             return !(*this == other);
117         }
118 
119         float opacity;
120         SVGPaint::SVGPaintType paintType;
121         Color paintColor;
122         String paintUri;
123         SVGPaint::SVGPaintType visitedLinkPaintType;
124         Color visitedLinkPaintColor;
125         String visitedLinkPaintUri;
126 
127     private:
128         StyleFillData();
129         StyleFillData(const StyleFillData&);
130     };
131 
132     class StyleStrokeData : public RefCounted<StyleStrokeData> {
133     public:
create()134         static PassRefPtr<StyleStrokeData> create() { return adoptRef(new StyleStrokeData); }
copy()135         PassRefPtr<StyleStrokeData> copy() const { return adoptRef(new StyleStrokeData(*this)); }
136 
137         bool operator==(const StyleStrokeData&) const;
138         bool operator!=(const StyleStrokeData& other) const
139         {
140             return !(*this == other);
141         }
142 
143         float opacity;
144         float miterLimit;
145 
146         RefPtr<SVGLength> width;
147         RefPtr<SVGLength> dashOffset;
148         RefPtr<SVGLengthList> dashArray;
149 
150         SVGPaint::SVGPaintType paintType;
151         Color paintColor;
152         String paintUri;
153         SVGPaint::SVGPaintType visitedLinkPaintType;
154         Color visitedLinkPaintColor;
155         String visitedLinkPaintUri;
156 
157     private:
158         StyleStrokeData();
159         StyleStrokeData(const StyleStrokeData&);
160     };
161 
162     class StyleStopData : public RefCounted<StyleStopData> {
163     public:
create()164         static PassRefPtr<StyleStopData> create() { return adoptRef(new StyleStopData); }
copy()165         PassRefPtr<StyleStopData> copy() const { return adoptRef(new StyleStopData(*this)); }
166 
167         bool operator==(const StyleStopData&) const;
168         bool operator!=(const StyleStopData& other) const
169         {
170             return !(*this == other);
171         }
172 
173         float opacity;
174         Color color;
175 
176     private:
177         StyleStopData();
178         StyleStopData(const StyleStopData&);
179     };
180 
181     // Note: the rule for this class is, *no inheritance* of these props
182     class StyleMiscData : public RefCounted<StyleMiscData> {
183     public:
create()184         static PassRefPtr<StyleMiscData> create() { return adoptRef(new StyleMiscData); }
copy()185         PassRefPtr<StyleMiscData> copy() const { return adoptRef(new StyleMiscData(*this)); }
186 
187         bool operator==(const StyleMiscData&) const;
188         bool operator!=(const StyleMiscData& other) const
189         {
190             return !(*this == other);
191         }
192 
193         Color floodColor;
194         float floodOpacity;
195         Color lightingColor;
196 
197         RefPtr<SVGLength> baselineShiftValue;
198 
199     private:
200         StyleMiscData();
201         StyleMiscData(const StyleMiscData&);
202     };
203 
204     // Non-inherited resources
205     class StyleResourceData : public RefCounted<StyleResourceData> {
206     public:
create()207         static PassRefPtr<StyleResourceData> create() { return adoptRef(new StyleResourceData); }
copy()208         PassRefPtr<StyleResourceData> copy() const { return adoptRef(new StyleResourceData(*this)); }
209 
210         bool operator==(const StyleResourceData&) const;
211         bool operator!=(const StyleResourceData& other) const
212         {
213             return !(*this == other);
214         }
215 
216         AtomicString clipper;
217         AtomicString filter;
218         AtomicString masker;
219 
220     private:
221         StyleResourceData();
222         StyleResourceData(const StyleResourceData&);
223     };
224 
225     // Inherited resources
226     class StyleInheritedResourceData : public RefCounted<StyleInheritedResourceData> {
227     public:
create()228         static PassRefPtr<StyleInheritedResourceData> create() { return adoptRef(new StyleInheritedResourceData); }
copy()229         PassRefPtr<StyleInheritedResourceData> copy() const { return adoptRef(new StyleInheritedResourceData(*this)); }
230 
231         bool operator==(const StyleInheritedResourceData&) const;
232         bool operator!=(const StyleInheritedResourceData& other) const
233         {
234             return !(*this == other);
235         }
236 
237         AtomicString markerStart;
238         AtomicString markerMid;
239         AtomicString markerEnd;
240 
241     private:
242         StyleInheritedResourceData();
243         StyleInheritedResourceData(const StyleInheritedResourceData&);
244     };
245 
246 } // namespace WebCore
247 
248 #endif // SVGRenderStyleDefs_h
249