• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org)
3  * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU Library General Public License
16  * along with this library; see the file COPYING.LIB.  If not, write to
17  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  * Boston, MA 02110-1301, USA.
19  *
20  */
21 
22 #include "config.h"
23 #include "StyleRareInheritedData.h"
24 
25 #include "CursorList.h"
26 #include "QuotesData.h"
27 #include "RenderStyle.h"
28 #include "RenderStyleConstants.h"
29 #include "ShadowData.h"
30 
31 namespace WebCore {
32 
StyleRareInheritedData()33 StyleRareInheritedData::StyleRareInheritedData()
34     : textStrokeWidth(RenderStyle::initialTextStrokeWidth())
35 #ifdef ANDROID_CSS_RING
36     , ringFillColor(RenderStyle::initialRingFillColor())
37     , ringInnerWidth(RenderStyle::initialRingInnerWidth())
38     , ringOuterWidth(RenderStyle::initialRingOuterWidth())
39     , ringOutset(RenderStyle::initialRingOutset())
40     , ringPressedInnerColor(RenderStyle::initialRingPressedInnerColor())
41     , ringPressedOuterColor(RenderStyle::initialRingPressedOuterColor())
42     , ringRadius(RenderStyle::initialRingRadius())
43     , ringSelectedInnerColor(RenderStyle::initialRingSelectedInnerColor())
44     , ringSelectedOuterColor(RenderStyle::initialRingSelectedOuterColor())
45 #endif
46 #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR
47     , tapHighlightColor(RenderStyle::initialTapHighlightColor())
48 #endif
49     , textShadow(0)
50     , indent(RenderStyle::initialTextIndent())
51     , m_effectiveZoom(RenderStyle::initialZoom())
52     , widows(RenderStyle::initialWidows())
53     , orphans(RenderStyle::initialOrphans())
54     , textSecurity(RenderStyle::initialTextSecurity())
55     , userModify(READ_ONLY)
56     , wordBreak(RenderStyle::initialWordBreak())
57     , wordWrap(RenderStyle::initialWordWrap())
58     , nbspMode(NBNORMAL)
59     , khtmlLineBreak(LBNORMAL)
60     , textSizeAdjust(RenderStyle::initialTextSizeAdjust())
61     , resize(RenderStyle::initialResize())
62     , userSelect(RenderStyle::initialUserSelect())
63     , colorSpace(ColorSpaceDeviceRGB)
64     , speak(SpeakNormal)
65     , hyphens(HyphensManual)
66     , textEmphasisFill(TextEmphasisFillFilled)
67     , textEmphasisMark(TextEmphasisMarkNone)
68     , textEmphasisPosition(TextEmphasisPositionOver)
69     , m_lineBoxContain(RenderStyle::initialLineBoxContain())
70     , hyphenationLimitBefore(-1)
71     , hyphenationLimitAfter(-1)
72 {
73 }
74 
StyleRareInheritedData(const StyleRareInheritedData & o)75 StyleRareInheritedData::StyleRareInheritedData(const StyleRareInheritedData& o)
76     : RefCounted<StyleRareInheritedData>()
77     , textStrokeColor(o.textStrokeColor)
78     , textStrokeWidth(o.textStrokeWidth)
79     , textFillColor(o.textFillColor)
80     , textEmphasisColor(o.textEmphasisColor)
81 #ifdef ANDROID_CSS_RING
82     , ringFillColor(o.ringFillColor)
83     , ringInnerWidth(o.ringInnerWidth)
84     , ringOuterWidth(o.ringOuterWidth)
85     , ringOutset(o.ringOutset)
86     , ringPressedInnerColor(o.ringPressedInnerColor)
87     , ringPressedOuterColor(o.ringPressedOuterColor)
88     , ringRadius(o.ringRadius)
89     , ringSelectedInnerColor(o.ringSelectedInnerColor)
90     , ringSelectedOuterColor(o.ringSelectedOuterColor)
91 #endif
92 #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR
93     , tapHighlightColor(o.tapHighlightColor)
94 #endif
95     , textShadow(o.textShadow ? new ShadowData(*o.textShadow) : 0)
96     , highlight(o.highlight)
97     , cursorData(o.cursorData)
98     , indent(o.indent)
99     , m_effectiveZoom(o.m_effectiveZoom)
100     , widows(o.widows)
101     , orphans(o.orphans)
102     , textSecurity(o.textSecurity)
103     , userModify(o.userModify)
104     , wordBreak(o.wordBreak)
105     , wordWrap(o.wordWrap)
106     , nbspMode(o.nbspMode)
107     , khtmlLineBreak(o.khtmlLineBreak)
108     , textSizeAdjust(o.textSizeAdjust)
109     , resize(o.resize)
110     , userSelect(o.userSelect)
111     , colorSpace(o.colorSpace)
112     , speak(o.speak)
113     , hyphens(o.hyphens)
114     , textEmphasisFill(o.textEmphasisFill)
115     , textEmphasisMark(o.textEmphasisMark)
116     , textEmphasisPosition(o.textEmphasisPosition)
117     , m_lineBoxContain(o.m_lineBoxContain)
118     , hyphenationString(o.hyphenationString)
119     , hyphenationLimitBefore(o.hyphenationLimitBefore)
120     , hyphenationLimitAfter(o.hyphenationLimitAfter)
121     , locale(o.locale)
122     , textEmphasisCustomMark(o.textEmphasisCustomMark)
123 {
124 }
125 
~StyleRareInheritedData()126 StyleRareInheritedData::~StyleRareInheritedData()
127 {
128     delete textShadow;
129 }
130 
cursorDataEquivalent(const CursorList * c1,const CursorList * c2)131 static bool cursorDataEquivalent(const CursorList* c1, const CursorList* c2)
132 {
133     if (c1 == c2)
134         return true;
135     if ((!c1 && c2) || (c1 && !c2))
136         return false;
137     return (*c1 == *c2);
138 }
139 
operator ==(const StyleRareInheritedData & o) const140 bool StyleRareInheritedData::operator==(const StyleRareInheritedData& o) const
141 {
142     return textStrokeColor == o.textStrokeColor
143         && textStrokeWidth == o.textStrokeWidth
144         && textFillColor == o.textFillColor
145         && textEmphasisColor == o.textEmphasisColor
146         && shadowDataEquivalent(o)
147         && highlight == o.highlight
148         && cursorDataEquivalent(cursorData.get(), o.cursorData.get())
149         && indent == o.indent
150         && m_effectiveZoom == o.m_effectiveZoom
151         && widows == o.widows
152         && orphans == o.orphans
153         && textSecurity == o.textSecurity
154         && userModify == o.userModify
155         && wordBreak == o.wordBreak
156         && wordWrap == o.wordWrap
157         && nbspMode == o.nbspMode
158         && khtmlLineBreak == o.khtmlLineBreak
159         && textSizeAdjust == o.textSizeAdjust
160 #ifdef ANDROID_CSS_RING
161         && ringFillColor == o.ringFillColor
162         && ringInnerWidth == o.ringInnerWidth
163         && ringOuterWidth == o.ringOuterWidth
164         && ringOutset == o.ringOutset
165         && ringPressedInnerColor == o.ringPressedInnerColor
166         && ringPressedOuterColor == o.ringPressedOuterColor
167         && ringRadius == o.ringRadius
168         && ringSelectedInnerColor == o.ringSelectedInnerColor
169         && ringSelectedOuterColor == o.ringSelectedOuterColor
170 #endif
171 #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR
172         && tapHighlightColor == o.tapHighlightColor
173 #endif
174         && resize == o.resize
175         && userSelect == o.userSelect
176         && colorSpace == o.colorSpace
177         && speak == o.speak
178         && hyphens == o.hyphens
179         && hyphenationLimitBefore == o.hyphenationLimitBefore
180         && hyphenationLimitAfter == o.hyphenationLimitAfter
181         && textEmphasisFill == o.textEmphasisFill
182         && textEmphasisMark == o.textEmphasisMark
183         && textEmphasisPosition == o.textEmphasisPosition
184         && m_lineBoxContain == o.m_lineBoxContain
185         && hyphenationString == o.hyphenationString
186         && locale == o.locale
187         && textEmphasisCustomMark == o.textEmphasisCustomMark
188         && *quotes == *o.quotes;
189 }
190 
shadowDataEquivalent(const StyleRareInheritedData & o) const191 bool StyleRareInheritedData::shadowDataEquivalent(const StyleRareInheritedData& o) const
192 {
193     if ((!textShadow && o.textShadow) || (textShadow && !o.textShadow))
194         return false;
195     if (textShadow && o.textShadow && (*textShadow != *o.textShadow))
196         return false;
197     return true;
198 }
199 
200 } // namespace WebCore
201