2006-09-25 Anders Carlsson <acarlsson@apple.com>
[WebKit-https.git] / WebCore / ksvg2 / css / SVGRenderStyleDefs.cpp
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) 1999 Antti Koivisto (koivisto@kde.org)
7     Copyright (C) 1999-2003 Lars Knoll (knoll@kde.org)
8     Copyright (C) 2002-2003 Dirk Mueller (mueller@kde.org)
9     Copyright (C) 2002 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 #include "config.h"
30 #ifdef SVG_SUPPORT
31 #include "ksvg.h"
32 #include "RenderStyle.h"
33 #include "SVGRenderStyle.h"
34 #include "SVGRenderStyleDefs.h"
35
36 using namespace WebCore;
37
38 StyleFillData::StyleFillData() : Shared<StyleFillData>()
39 {
40     paint = SVGRenderStyle::initialFillPaint();
41     opacity = SVGRenderStyle::initialFillOpacity();
42 }
43
44 StyleFillData::StyleFillData(const StyleFillData &other) : Shared<StyleFillData>()
45 {
46     paint = other.paint;
47     opacity = other.opacity;
48 }
49
50 bool StyleFillData::operator==(const StyleFillData &other) const
51 {
52     if(opacity != other.opacity)
53         return false;
54
55     if(!paint || !other.paint)
56         return paint == other.paint;
57
58     if(paint->paintType() != other.paint->paintType())
59         return false;
60
61     if(paint->paintType() == SVGPaint::SVG_PAINTTYPE_URI)
62         return paint->uri() == other.paint->uri();
63
64     if(paint->paintType() == SVGPaint::SVG_PAINTTYPE_RGBCOLOR)
65         return paint->color() == other.paint->color();
66
67     return (paint == other.paint) && (opacity == other.opacity);
68 }
69
70 StyleStrokeData::StyleStrokeData() : Shared<StyleStrokeData>()
71 {
72     width = SVGRenderStyle::initialStrokeWidth();
73     paint = SVGRenderStyle::initialStrokePaint();
74     opacity = SVGRenderStyle::initialStrokeOpacity();
75     miterLimit = SVGRenderStyle::initialStrokeMiterLimit();
76     dashOffset = SVGRenderStyle::initialStrokeDashOffset();
77     dashArray = SVGRenderStyle::initialStrokeDashArray();
78 }
79
80 StyleStrokeData::StyleStrokeData(const StyleStrokeData &other) : Shared<StyleStrokeData>()
81 {
82     width = other.width;
83     paint = other.paint;
84     opacity = other.opacity;
85     miterLimit = other.miterLimit;
86     dashOffset = other.dashOffset;
87     dashArray = other.dashArray;
88 }
89
90 bool StyleStrokeData::operator==(const StyleStrokeData &other) const
91 {
92     return (paint == other.paint) &&
93            (width == other.width) &&
94            (opacity == other.opacity) &&
95            (miterLimit == other.miterLimit) &&
96            (dashOffset == other.dashOffset) &&
97            (dashArray == other.dashArray);
98 }
99
100 StyleStopData::StyleStopData() : Shared<StyleStopData>()
101 {
102     color = SVGRenderStyle::initialStopColor();
103     opacity = SVGRenderStyle::initialStopOpacity();
104 }
105
106 StyleStopData::StyleStopData(const StyleStopData &other) : Shared<StyleStopData>()
107 {
108     color = other.color;
109     opacity = other.opacity;
110 }
111
112 bool StyleStopData::operator==(const StyleStopData &other) const
113 {
114     return (color == other.color) &&
115            (opacity == other.opacity);
116 }
117
118 StyleClipData::StyleClipData() : Shared<StyleClipData>()
119 {
120     clipPath = SVGRenderStyle::initialClipPath();
121 }
122
123 StyleClipData::StyleClipData(const StyleClipData &other) : Shared<StyleClipData>()
124 {
125     clipPath = other.clipPath;
126 }
127
128 bool StyleClipData::operator==(const StyleClipData &other) const
129 {
130     return (clipPath == other.clipPath);
131 }
132
133 StyleMaskData::StyleMaskData() : Shared<StyleMaskData>()
134 {
135     maskElement = SVGRenderStyle::initialMaskElement();
136 }
137
138 StyleMaskData::StyleMaskData(const StyleMaskData &other) : Shared<StyleMaskData>()
139 {
140     maskElement = other.maskElement;
141 }
142
143 bool StyleMaskData::operator==(const StyleMaskData &other) const
144 {
145     return (maskElement == other.maskElement);
146 }
147
148 StyleMarkerData::StyleMarkerData() : Shared<StyleMarkerData>()
149 {
150     startMarker = SVGRenderStyle::initialStartMarker();
151     midMarker = SVGRenderStyle::initialMidMarker();
152     endMarker = SVGRenderStyle::initialEndMarker();
153 }
154
155 StyleMarkerData::StyleMarkerData(const StyleMarkerData &other) : Shared<StyleMarkerData>()
156 {
157     startMarker = other.startMarker;
158     midMarker = other.midMarker;
159     endMarker = other.endMarker;
160 }
161
162 bool StyleMarkerData::operator==(const StyleMarkerData &other) const
163 {
164     return (startMarker == other.startMarker && midMarker == other.midMarker && endMarker == other.endMarker);
165 }
166
167 StyleMiscData::StyleMiscData() : Shared<StyleMiscData>()
168 {
169     floodColor = RenderStyle::initialColor();
170     floodOpacity = RenderStyle::initialOpacity();
171 }
172
173 StyleMiscData::StyleMiscData(const StyleMiscData &other) : Shared<StyleMiscData>()
174 {
175     filter = other.filter;
176     floodColor = other.floodColor;
177     floodOpacity = other.floodOpacity;
178 }
179
180 bool StyleMiscData::operator==(const StyleMiscData &other) const
181 {
182     return (filter == other.filter && floodOpacity == other.floodOpacity && floodColor == other.floodColor);
183 }
184
185 // vim:ts=4:noet
186 #endif // SVG_SUPPORT
187