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 | #pragma once |
30 | |
31 | #include "Length.h" |
32 | #include "SVGLengthValue.h" |
33 | #include "ShadowData.h" |
34 | #include <wtf/RefCounted.h> |
35 | #include <wtf/RefPtr.h> |
36 | |
37 | namespace WebCore { |
38 | |
39 | class CSSValue; |
40 | class CSSValueList; |
41 | class SVGPaint; |
42 | |
43 | enum class SVGPaintType : uint8_t { |
44 | RGBColor, |
45 | None, |
46 | CurrentColor, |
47 | URINone, |
48 | URICurrentColor, |
49 | URIRGBColor, |
50 | URI |
51 | }; |
52 | |
53 | enum class BaselineShift : uint8_t { |
54 | Baseline, |
55 | Sub, |
56 | Super, |
57 | Length |
58 | }; |
59 | |
60 | enum class TextAnchor : uint8_t { |
61 | Start, |
62 | Middle, |
63 | End |
64 | }; |
65 | |
66 | enum class ColorInterpolation : uint8_t { |
67 | Auto, |
68 | SRGB, |
69 | LinearRGB |
70 | }; |
71 | |
72 | enum class ColorRendering : uint8_t { |
73 | Auto, |
74 | OptimizeSpeed, |
75 | OptimizeQuality |
76 | }; |
77 | |
78 | enum class ShapeRendering : uint8_t { |
79 | Auto, |
80 | OptimizeSpeed, |
81 | CrispEdges, |
82 | GeometricPrecision |
83 | }; |
84 | |
85 | enum class GlyphOrientation : uint8_t { |
86 | Degrees0, |
87 | Degrees90, |
88 | Degrees180, |
89 | Degrees270, |
90 | Auto |
91 | }; |
92 | |
93 | enum class AlignmentBaseline : uint8_t { |
94 | Auto, |
95 | Baseline, |
96 | BeforeEdge, |
97 | TextBeforeEdge, |
98 | Middle, |
99 | Central, |
100 | AfterEdge, |
101 | TextAfterEdge, |
102 | Ideographic, |
103 | Alphabetic, |
104 | Hanging, |
105 | Mathematical |
106 | }; |
107 | |
108 | enum class DominantBaseline : uint8_t { |
109 | Auto, |
110 | UseScript, |
111 | NoChange, |
112 | ResetSize, |
113 | Ideographic, |
114 | Alphabetic, |
115 | Hanging, |
116 | Mathematical, |
117 | Central, |
118 | Middle, |
119 | TextAfterEdge, |
120 | TextBeforeEdge |
121 | }; |
122 | |
123 | enum class VectorEffect : uint8_t { |
124 | None, |
125 | NonScalingStroke |
126 | }; |
127 | |
128 | enum class BufferedRendering : uint8_t { |
129 | Auto, |
130 | Dynamic, |
131 | Static |
132 | }; |
133 | |
134 | enum class MaskType : uint8_t { |
135 | Luminance, |
136 | Alpha |
137 | }; |
138 | |
139 | // Inherited/Non-Inherited Style Datastructures |
140 | class StyleFillData : public RefCounted<StyleFillData> { |
141 | public: |
142 | static Ref<StyleFillData> create() { return adoptRef(*new StyleFillData); } |
143 | Ref<StyleFillData> copy() const; |
144 | |
145 | bool operator==(const StyleFillData&) const; |
146 | bool operator!=(const StyleFillData& other) const |
147 | { |
148 | return !(*this == other); |
149 | } |
150 | |
151 | float opacity; |
152 | Color paintColor; |
153 | Color visitedLinkPaintColor; |
154 | String paintUri; |
155 | String visitedLinkPaintUri; |
156 | SVGPaintType paintType; |
157 | SVGPaintType visitedLinkPaintType; |
158 | |
159 | private: |
160 | StyleFillData(); |
161 | StyleFillData(const StyleFillData&); |
162 | }; |
163 | |
164 | class StyleStrokeData : public RefCounted<StyleStrokeData> { |
165 | public: |
166 | static Ref<StyleStrokeData> create() { return adoptRef(*new StyleStrokeData); } |
167 | Ref<StyleStrokeData> copy() const; |
168 | |
169 | bool operator==(const StyleStrokeData&) const; |
170 | bool operator!=(const StyleStrokeData& other) const |
171 | { |
172 | return !(*this == other); |
173 | } |
174 | |
175 | float opacity; |
176 | |
177 | Color paintColor; |
178 | Color visitedLinkPaintColor; |
179 | |
180 | String paintUri; |
181 | String visitedLinkPaintUri; |
182 | |
183 | Length dashOffset; |
184 | Vector<SVGLengthValue> dashArray; |
185 | |
186 | SVGPaintType paintType; |
187 | SVGPaintType visitedLinkPaintType; |
188 | |
189 | private: |
190 | StyleStrokeData(); |
191 | StyleStrokeData(const StyleStrokeData&); |
192 | }; |
193 | |
194 | class StyleStopData : public RefCounted<StyleStopData> { |
195 | public: |
196 | static Ref<StyleStopData> create() { return adoptRef(*new StyleStopData); } |
197 | Ref<StyleStopData> copy() const; |
198 | |
199 | bool operator==(const StyleStopData&) const; |
200 | bool operator!=(const StyleStopData& other) const |
201 | { |
202 | return !(*this == other); |
203 | } |
204 | |
205 | float opacity; |
206 | Color color; |
207 | |
208 | private: |
209 | StyleStopData(); |
210 | StyleStopData(const StyleStopData&); |
211 | }; |
212 | |
213 | class StyleTextData : public RefCounted<StyleTextData> { |
214 | public: |
215 | static Ref<StyleTextData> create() { return adoptRef(*new StyleTextData); } |
216 | Ref<StyleTextData> copy() const; |
217 | |
218 | bool operator==(const StyleTextData& other) const; |
219 | bool operator!=(const StyleTextData& other) const |
220 | { |
221 | return !(*this == other); |
222 | } |
223 | |
224 | SVGLengthValue kerning; |
225 | |
226 | private: |
227 | StyleTextData(); |
228 | StyleTextData(const StyleTextData&); |
229 | }; |
230 | |
231 | // Note: the rule for this class is, *no inheritance* of these props |
232 | class StyleMiscData : public RefCounted<StyleMiscData> { |
233 | public: |
234 | static Ref<StyleMiscData> create() { return adoptRef(*new StyleMiscData); } |
235 | Ref<StyleMiscData> copy() const; |
236 | |
237 | bool operator==(const StyleMiscData&) const; |
238 | bool operator!=(const StyleMiscData& other) const |
239 | { |
240 | return !(*this == other); |
241 | } |
242 | |
243 | float floodOpacity; |
244 | Color floodColor; |
245 | Color lightingColor; |
246 | |
247 | // non-inherited text stuff lives here not in StyleTextData. |
248 | SVGLengthValue baselineShiftValue; |
249 | |
250 | private: |
251 | StyleMiscData(); |
252 | StyleMiscData(const StyleMiscData&); |
253 | }; |
254 | |
255 | class StyleShadowSVGData : public RefCounted<StyleShadowSVGData> { |
256 | public: |
257 | static Ref<StyleShadowSVGData> create() { return adoptRef(*new StyleShadowSVGData); } |
258 | Ref<StyleShadowSVGData> copy() const; |
259 | |
260 | bool operator==(const StyleShadowSVGData&) const; |
261 | bool operator!=(const StyleShadowSVGData& other) const |
262 | { |
263 | return !(*this == other); |
264 | } |
265 | |
266 | std::unique_ptr<ShadowData> shadow; |
267 | |
268 | private: |
269 | StyleShadowSVGData(); |
270 | StyleShadowSVGData(const StyleShadowSVGData&); |
271 | }; |
272 | |
273 | // Non-inherited resources |
274 | class StyleResourceData : public RefCounted<StyleResourceData> { |
275 | public: |
276 | static Ref<StyleResourceData> create() { return adoptRef(*new StyleResourceData); } |
277 | Ref<StyleResourceData> copy() const; |
278 | |
279 | bool operator==(const StyleResourceData&) const; |
280 | bool operator!=(const StyleResourceData& other) const |
281 | { |
282 | return !(*this == other); |
283 | } |
284 | |
285 | String clipper; |
286 | String masker; |
287 | |
288 | private: |
289 | StyleResourceData(); |
290 | StyleResourceData(const StyleResourceData&); |
291 | }; |
292 | |
293 | // Inherited resources |
294 | class StyleInheritedResourceData : public RefCounted<StyleInheritedResourceData> { |
295 | public: |
296 | static Ref<StyleInheritedResourceData> create() { return adoptRef(*new StyleInheritedResourceData); } |
297 | Ref<StyleInheritedResourceData> copy() const; |
298 | |
299 | bool operator==(const StyleInheritedResourceData&) const; |
300 | bool operator!=(const StyleInheritedResourceData& other) const |
301 | { |
302 | return !(*this == other); |
303 | } |
304 | |
305 | String markerStart; |
306 | String markerMid; |
307 | String markerEnd; |
308 | |
309 | private: |
310 | StyleInheritedResourceData(); |
311 | StyleInheritedResourceData(const StyleInheritedResourceData&); |
312 | }; |
313 | |
314 | // Positioning and sizing properties. |
315 | class StyleLayoutData : public RefCounted<StyleLayoutData> { |
316 | public: |
317 | static Ref<StyleLayoutData> create() { return adoptRef(*new StyleLayoutData); } |
318 | Ref<StyleLayoutData> copy() const; |
319 | |
320 | bool operator==(const StyleLayoutData&) const; |
321 | bool operator!=(const StyleLayoutData& other) const |
322 | { |
323 | return !(*this == other); |
324 | } |
325 | |
326 | Length cx; |
327 | Length cy; |
328 | Length r; |
329 | Length rx; |
330 | Length ry; |
331 | Length x; |
332 | Length y; |
333 | |
334 | private: |
335 | StyleLayoutData(); |
336 | StyleLayoutData(const StyleLayoutData&); |
337 | }; |
338 | |
339 | } // namespace WebCore |
340 | |