[CSS Parser] Unprefix -webkit-writing-mode
[WebKit-https.git] / Source / WebCore / rendering / style / SVGRenderStyleDefs.h
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     Copyright (C) 2014 Adobe Systems Incorporated. All rights reserved.
6
7     Based on khtml code by:
8     Copyright (C) 2000-2003 Lars Knoll (knoll@kde.org)
9               (C) 2000 Antti Koivisto (koivisto@kde.org)
10               (C) 2000-2003 Dirk Mueller (mueller@kde.org)
11               (C) 2002-2003 Apple Inc.
12
13     This library is free software; you can redistribute it and/or
14     modify it under the terms of the GNU Library General Public
15     License as published by the Free Software Foundation; either
16     version 2 of the License, or (at your option) any later version.
17
18     This library is distributed in the hope that it will be useful,
19     but WITHOUT ANY WARRANTY; without even the implied warranty of
20     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21     Library General Public License for more details.
22
23     You should have received a copy of the GNU Library General Public License
24     along with this library; see the file COPYING.LIB.  If not, write to
25     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
26     Boston, MA 02110-1301, USA.
27 */
28
29 #ifndef SVGRenderStyleDefs_h
30 #define SVGRenderStyleDefs_h
31
32 #include "Length.h"
33 #include "SVGLength.h"
34 #include "SVGPaint.h"
35 #include "ShadowData.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 EGlyphOrientation {
61         GO_0DEG, GO_90DEG, GO_180DEG, GO_270DEG, GO_AUTO
62     };
63
64     enum EAlignmentBaseline {
65         AB_AUTO, AB_BASELINE, AB_BEFORE_EDGE, AB_TEXT_BEFORE_EDGE,
66         AB_MIDDLE, AB_CENTRAL, AB_AFTER_EDGE, AB_TEXT_AFTER_EDGE,
67         AB_IDEOGRAPHIC, AB_ALPHABETIC, AB_HANGING, AB_MATHEMATICAL
68     };
69
70     enum EDominantBaseline {
71         DB_AUTO, DB_USE_SCRIPT, DB_NO_CHANGE, DB_RESET_SIZE,
72         DB_IDEOGRAPHIC, DB_ALPHABETIC, DB_HANGING, DB_MATHEMATICAL,
73         DB_CENTRAL, DB_MIDDLE, DB_TEXT_AFTER_EDGE, DB_TEXT_BEFORE_EDGE
74     };
75     
76     enum EVectorEffect {
77         VE_NONE,
78         VE_NON_SCALING_STROKE
79     };
80
81     enum EBufferedRendering {
82         BR_AUTO,
83         BR_DYNAMIC,
84         BR_STATIC
85     };
86
87     enum EMaskType {
88         MT_LUMINANCE,
89         MT_ALPHA
90     };
91
92     // These are all minimized combinations of paint-order.
93     enum PaintOrder {
94         PaintOrderNormal = 0,
95         PaintOrderFill = 1,
96         PaintOrderFillMarkers = 2,
97         PaintOrderStroke = 3,
98         PaintOrderStrokeMarkers = 4,
99         PaintOrderMarkers = 5,
100         PaintOrderMarkersStroke = 6
101     };
102
103     enum PaintType {
104         PaintTypeFill,
105         PaintTypeStroke,
106         PaintTypeMarkers
107     };
108
109     class CSSValue;
110     class CSSValueList;
111     class SVGPaint;
112
113     // Inherited/Non-Inherited Style Datastructures
114     class StyleFillData : public RefCounted<StyleFillData> {
115     public:
116         static Ref<StyleFillData> create() { return adoptRef(*new StyleFillData); }
117         Ref<StyleFillData> copy() const;
118
119         bool operator==(const StyleFillData&) const;
120         bool operator!=(const StyleFillData& other) const
121         {
122             return !(*this == other);
123         }
124
125         float opacity;
126         SVGPaint::SVGPaintType paintType;
127         Color paintColor;
128         String paintUri;
129         SVGPaint::SVGPaintType visitedLinkPaintType;
130         Color visitedLinkPaintColor;
131         String visitedLinkPaintUri;
132
133     private:
134         StyleFillData();
135         StyleFillData(const StyleFillData&);
136     };
137
138     class StyleStrokeData : public RefCounted<StyleStrokeData> {
139     public:
140         static Ref<StyleStrokeData> create() { return adoptRef(*new StyleStrokeData); }
141         Ref<StyleStrokeData> copy() const;
142
143         bool operator==(const StyleStrokeData&) const;
144         bool operator!=(const StyleStrokeData& other) const
145         {
146             return !(*this == other);
147         }
148
149         float opacity;
150         float miterLimit;
151
152         Length width;
153         Length dashOffset;
154         Vector<SVGLength> dashArray;
155
156         SVGPaint::SVGPaintType paintType;
157         Color paintColor;
158         String paintUri;
159         SVGPaint::SVGPaintType visitedLinkPaintType;
160         Color visitedLinkPaintColor;
161         String visitedLinkPaintUri;
162
163     private:        
164         StyleStrokeData();
165         StyleStrokeData(const StyleStrokeData&);
166     };
167
168     class StyleStopData : public RefCounted<StyleStopData> {
169     public:
170         static Ref<StyleStopData> create() { return adoptRef(*new StyleStopData); }
171         Ref<StyleStopData> copy() const;
172
173         bool operator==(const StyleStopData&) const;
174         bool operator!=(const StyleStopData& other) const
175         {
176             return !(*this == other);
177         }
178
179         float opacity;
180         Color color;
181
182     private:        
183         StyleStopData();
184         StyleStopData(const StyleStopData&);
185     };
186
187     class StyleTextData : public RefCounted<StyleTextData> {
188     public:
189         static Ref<StyleTextData> create() { return adoptRef(*new StyleTextData); }
190         Ref<StyleTextData> copy() const;
191         
192         bool operator==(const StyleTextData& other) const;
193         bool operator!=(const StyleTextData& other) const
194         {
195             return !(*this == other);
196         }
197
198         SVGLength kerning;
199
200     private:
201         StyleTextData();
202         StyleTextData(const StyleTextData&);
203     };
204
205     // Note: the rule for this class is, *no inheritance* of these props
206     class StyleMiscData : public RefCounted<StyleMiscData> {
207     public:
208         static Ref<StyleMiscData> create() { return adoptRef(*new StyleMiscData); }
209         Ref<StyleMiscData> copy() const;
210
211         bool operator==(const StyleMiscData&) const;
212         bool operator!=(const StyleMiscData& other) const
213         {
214             return !(*this == other);
215         }
216
217         Color floodColor;
218         float floodOpacity;
219         Color lightingColor;
220
221         // non-inherited text stuff lives here not in StyleTextData.
222         SVGLength baselineShiftValue;
223
224     private:
225         StyleMiscData();
226         StyleMiscData(const StyleMiscData&);
227     };
228
229     class StyleShadowSVGData : public RefCounted<StyleShadowSVGData> {
230     public:
231         static Ref<StyleShadowSVGData> create() { return adoptRef(*new StyleShadowSVGData); }
232         Ref<StyleShadowSVGData> copy() const;
233
234         bool operator==(const StyleShadowSVGData&) const;
235         bool operator!=(const StyleShadowSVGData& other) const
236         {
237             return !(*this == other);
238         }
239
240         std::unique_ptr<ShadowData> shadow;
241
242     private:
243         StyleShadowSVGData();
244         StyleShadowSVGData(const StyleShadowSVGData&);
245     };
246
247     // Non-inherited resources
248     class StyleResourceData : public RefCounted<StyleResourceData> {
249     public:
250         static Ref<StyleResourceData> create() { return adoptRef(*new StyleResourceData); }
251         Ref<StyleResourceData> copy() const;
252
253         bool operator==(const StyleResourceData&) const;
254         bool operator!=(const StyleResourceData& other) const
255         {
256             return !(*this == other);
257         }
258
259         String clipper;
260         String masker;
261
262     private:
263         StyleResourceData();
264         StyleResourceData(const StyleResourceData&);
265     };
266
267     // Inherited resources
268     class StyleInheritedResourceData : public RefCounted<StyleInheritedResourceData> {
269     public:
270         static Ref<StyleInheritedResourceData> create() { return adoptRef(*new StyleInheritedResourceData); }
271         Ref<StyleInheritedResourceData> copy() const;
272
273         bool operator==(const StyleInheritedResourceData&) const;
274         bool operator!=(const StyleInheritedResourceData& other) const
275         {
276             return !(*this == other);
277         }
278
279         String markerStart;
280         String markerMid;
281         String markerEnd;
282
283     private:
284         StyleInheritedResourceData();
285         StyleInheritedResourceData(const StyleInheritedResourceData&);
286     };
287
288     // Positioning and sizing properties.
289     class StyleLayoutData : public RefCounted<StyleLayoutData> {
290     public:
291         static Ref<StyleLayoutData> create() { return adoptRef(*new StyleLayoutData); }
292         Ref<StyleLayoutData> copy() const;
293
294         bool operator==(const StyleLayoutData&) const;
295         bool operator!=(const StyleLayoutData& other) const
296         {
297             return !(*this == other);
298         }
299
300         Length cx;
301         Length cy;
302         Length r;
303         Length rx;
304         Length ry;
305         Length x;
306         Length y;
307
308     private:        
309         StyleLayoutData();
310         StyleLayoutData(const StyleLayoutData&);
311     };
312
313 } // namespace WebCore
314
315 #endif // SVGRenderStyleDefs_h