2006-09-25 Anders Carlsson <acarlsson@apple.com>
[WebKit-https.git] / WebCore / ksvg2 / css / SVGRenderStyleDefs.h
1 /*
2     Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
3                   2004, 2005 Rob Buis <buis@kde.org>
4
5     Based on khtml code by:
6     Copyright (C) 2000-2003 Lars Knoll (knoll@kde.org)
7               (C) 2000 Antti Koivisto (koivisto@kde.org)
8               (C) 2000-2003 Dirk Mueller (mueller@kde.org)
9               (C) 2002-2003 Apple Computer, Inc.
10
11     This file is part of the KDE project
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., 59 Temple Place - Suite 330,
26     Boston, MA 02111-1307, USA.
27 */
28
29 #ifndef SVGRenderStyleDefs_H
30 #define SVGRenderStyleDefs_H
31 #ifdef SVG_SUPPORT
32
33 #include "Path.h"
34
35 // Helper macros for 'SVGRenderStyle'
36 #define SVG_RS_DEFINE_ATTRIBUTE(Data, Type, Name, Initial) \
37     void set##Type(Data val) { svg_noninherited_flags.f._##Name = val; } \
38     Data Name() const { return (Data) svg_noninherited_flags.f._##Name; } \
39     static Data initial##Type() { return Initial; }
40
41 #define SVG_RS_DEFINE_ATTRIBUTE_INHERITED(Data, Type, Name, Initial) \
42     void set##Type(Data val) { svg_inherited_flags.f._##Name = val; } \
43     Data Name() const { return (Data) svg_inherited_flags.f._##Name; } \
44     static Data initial##Type() { return Initial; }
45
46 namespace WebCore {
47
48     enum ECapStyle {
49         CS_BUTT = 1, CS_ROUND = 2, CS_SQUARE = 3
50     };
51
52     enum EJoinStyle {
53         JS_MITER = 1, JS_ROUND = 2, JS_BEVEL = 3
54     };
55
56     enum ETextAnchor {
57         TA_START, TA_MIDDLE, TA_END
58     };
59
60     enum EColorInterpolation {
61         CI_AUTO, CI_SRGB, CI_LINEARRGB
62     };
63
64     enum EColorRendering {
65         CR_AUTO, CR_OPTIMIZESPEED, CR_OPTIMIZEQUALITY
66     };
67     
68     enum EImageRendering {
69         IR_AUTO, IR_OPTIMIZESPEED, IR_OPTIMIZEQUALITY
70     };
71
72     enum EShapeRendering {
73         SR_AUTO, SR_OPTIMIZESPEED, SR_CRISPEDGES, SR_GEOMETRICPRECISION
74     };
75
76     enum ETextRendering {
77         TR_AUTO, TR_OPTIMIZESPEED, TR_OPTIMIZELEGIBILITY, TR_GEOMETRICPRECISION
78     };
79
80     enum EWritingMode {
81         WM_LRTB, WM_LR, WM_RLTB, WM_RL, WM_TBRL, WM_TB
82     };
83     
84     enum EAlignmentBaseline {
85         AB_AUTO, AB_BASELINE, AB_BEFORE_EDGE, AB_TEXT_BEFORE_EDGE,
86         AB_MIDDLE, AB_CENTRAL, AB_AFTER_EDGE, AB_TEXT_AFTER_EDGE,
87         AB_IDEOGRAPHIC, AB_ALPHABETIC, AB_HANGING, AB_MATHEMATICAL
88     };
89
90     enum EDominantBaseline {
91         DB_AUTO, DB_USE_SCRIPT, DB_NO_CHANGE, DB_RESET_SIZE,
92         DB_IDEOGRAPHIC, DB_ALPHABETIC, DB_HANGING, DB_MATHEMATICAL,
93         DB_CENTRAL, DB_MIDDLE, DB_TEXT_AFTER_EDGE, DB_TEXT_BEFORE_EDGE
94     };
95
96     enum EPointerEvents {
97         PE_NONE, PE_STROKE, PE_FILL, PE_PAINTED, PE_VISIBLE,
98         PE_VISIBLE_STROKE, PE_VISIBLE_FILL, PE_VISIBLE_PAINTED, PE_ALL
99     };
100     
101     class CSSValue;
102     class CSSValueList;
103     class SVGPaint;
104
105     // Inherited/Non-Inherited Style Datastructures
106     class StyleFillData : public Shared<StyleFillData> {
107     public:
108         StyleFillData();
109         StyleFillData(const StyleFillData &other);
110
111         bool operator==(const StyleFillData &other) const;
112         bool operator!=(const StyleFillData &other) const
113         {
114             return !(*this == other);
115         }
116
117         float opacity;
118         SVGPaint *paint;
119
120     private:
121         StyleFillData &operator=(const StyleFillData &);
122     };
123
124     class StyleStrokeData : public Shared<StyleStrokeData> {
125     public:
126         StyleStrokeData();
127         StyleStrokeData(const StyleStrokeData &other);
128
129         bool operator==(const StyleStrokeData &other) const;
130         bool operator!=(const StyleStrokeData &other) const
131         {
132             return !(*this == other);
133         }
134
135         float opacity;
136         unsigned int miterLimit;
137
138         CSSValue* width;
139         CSSValue* dashOffset;
140
141         SVGPaint* paint;
142         CSSValueList* dashArray;
143
144     private:
145         StyleStrokeData &operator=(const StyleStrokeData &);
146     };
147
148     class StyleStopData : public Shared<StyleStopData> {
149     public:
150         StyleStopData();
151         StyleStopData(const StyleStopData &other);
152
153         bool operator==(const StyleStopData &other) const;
154         bool operator!=(const StyleStopData &other) const
155         {
156             return !(*this == other);
157         }
158
159         float opacity;
160         Color color;
161
162     private:
163         StyleStopData &operator=(const StyleStopData &);
164     };
165
166     class StyleClipData : public Shared<StyleClipData> {
167     public:
168         StyleClipData();
169         StyleClipData(const StyleClipData &other);
170
171         bool operator==(const StyleClipData &other) const;
172         bool operator!=(const StyleClipData &other) const
173         {
174             return !(*this == other);
175         }
176
177         String clipPath;
178
179     private:
180         StyleClipData &operator=(const StyleClipData &);
181     };
182
183     class StyleMaskData : public Shared<StyleMaskData> {
184     public:
185         StyleMaskData();
186         StyleMaskData(const StyleMaskData &other);
187
188         bool operator==(const StyleMaskData &other) const;
189         bool operator!=(const StyleMaskData &other) const { return !(*this == other); }
190
191         String maskElement;
192
193     private:
194         StyleMaskData &operator=(const StyleMaskData &);
195     };
196
197     class StyleMarkerData : public Shared<StyleMarkerData> {
198     public:
199         StyleMarkerData();
200         StyleMarkerData(const StyleMarkerData &other);
201
202         bool operator==(const StyleMarkerData &other) const;
203         bool operator!=(const StyleMarkerData &other) const
204         {
205             return !(*this == other);
206         }
207
208         String startMarker;
209         String midMarker;
210         String endMarker;
211
212     private:
213         StyleMarkerData &operator=(const StyleMarkerData &);
214     };
215
216     // Note : the rule for this class is, *no inheritance* of these props
217     class StyleMiscData : public Shared<StyleMiscData> {
218     public:
219         StyleMiscData();
220         StyleMiscData(const StyleMiscData &other);
221
222         bool operator==(const StyleMiscData &other) const;
223         bool operator!=(const StyleMiscData &other) const
224         {
225             return !(*this == other);
226         }
227
228         String filter;
229         Color floodColor;
230         float floodOpacity;
231
232     private:
233         StyleMiscData &operator=(const StyleMiscData &);
234     };
235
236 } // namespace WebCore
237
238 #endif // SVG_SUPPORT
239 #endif // KSVG_SVGRenderStyleDefs_H
240
241 // vim:ts=4:noet