2006-09-25 Anders Carlsson <acarlsson@apple.com>
[WebKit-https.git] / WebCore / ksvg2 / css / SVGRenderStyle.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 "SVGRenderStyle.h"
32
33 namespace WebCore {
34
35 SVGRenderStyle *SVGRenderStyle::s_defaultStyle = 0;
36
37 SVGRenderStyle::SVGRenderStyle()
38 {
39     if(!s_defaultStyle)    
40         s_defaultStyle = new SVGRenderStyle(true);
41
42     fill = s_defaultStyle->fill;
43     stroke = s_defaultStyle->stroke;
44     stops = s_defaultStyle->stops;
45     clip = s_defaultStyle->clip;
46     mask = s_defaultStyle->mask;
47     misc = s_defaultStyle->misc;
48     markers = s_defaultStyle->markers;
49
50     setBitDefaults();
51 }
52
53 SVGRenderStyle::SVGRenderStyle(bool)
54 {
55     setBitDefaults();
56
57     fill.init();
58     stroke.init();
59     stops.init();
60     clip.init();
61     mask.init();
62     misc.init();
63     markers.init();
64 }
65
66 SVGRenderStyle::SVGRenderStyle(const SVGRenderStyle &other) : Shared<SVGRenderStyle>()
67 {
68     fill = other.fill;
69     stroke = other.stroke;
70     stops = other.stops;
71     clip = other.clip;
72     mask = other.mask;
73     misc = other.misc;
74     markers = other.markers;
75
76     svg_inherited_flags = other.svg_inherited_flags;
77     svg_noninherited_flags = other.svg_noninherited_flags;
78 }
79
80 SVGRenderStyle::~SVGRenderStyle()
81 {
82 }
83
84 bool SVGRenderStyle::operator==(const SVGRenderStyle& o) const
85 {
86     return (fill == o.fill && stroke == o.stroke &&
87         stops == o.stops && clip == o.clip && mask == o.mask &&
88         misc == o.misc && markers == o.markers &&
89         svg_inherited_flags == o.svg_inherited_flags &&
90         svg_noninherited_flags == o.svg_noninherited_flags);
91 }
92
93 bool SVGRenderStyle::inheritedNotEqual(const SVGRenderStyle *other) const
94 {
95     return (fill != other->fill || stroke != other->stroke ||
96         stops != other->stops || misc != other->misc ||
97         markers != other->markers || svg_inherited_flags != other->svg_inherited_flags);
98 }
99
100 void SVGRenderStyle::inheritFrom(const SVGRenderStyle *svgInheritParent)
101 {
102     if(!svgInheritParent)
103         return;
104
105     fill = svgInheritParent->fill;
106     stroke = svgInheritParent->stroke;
107     stops = svgInheritParent->stops;
108     markers = svgInheritParent->markers;
109
110     svg_inherited_flags = svgInheritParent->svg_inherited_flags;
111 }
112
113 }
114
115 // vim:ts=4:noet
116 #endif // SVG_SUPPORT
117