OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/animation/ColorPropertyFunctions.h" | 5 #include "core/animation/ColorPropertyFunctions.h" |
6 | 6 |
7 #include "core/style/ComputedStyle.h" | 7 #include "core/style/ComputedStyle.h" |
8 | 8 |
9 namespace blink { | 9 namespace blink { |
10 | 10 |
11 StyleColor ColorPropertyFunctions::getInitialColor(CSSPropertyID property) { | 11 bool ColorPropertyFunctions::getInitialColor(CSSPropertyID property, |
12 return getUnvisitedColor(property, ComputedStyle::initialStyle()); | 12 StyleColor& initialColor) { |
| 13 return getUnvisitedColor(property, ComputedStyle::initialStyle(), |
| 14 initialColor); |
13 } | 15 } |
14 | 16 |
15 StyleColor ColorPropertyFunctions::getUnvisitedColor( | 17 bool ColorPropertyFunctions::getUnvisitedColor(CSSPropertyID property, |
16 CSSPropertyID property, | 18 const ComputedStyle& style, |
17 const ComputedStyle& style) { | 19 StyleColor& color) { |
18 switch (property) { | 20 switch (property) { |
19 case CSSPropertyBackgroundColor: | 21 case CSSPropertyBackgroundColor: |
20 return style.backgroundColor(); | 22 color = style.backgroundColor(); |
| 23 break; |
21 case CSSPropertyBorderLeftColor: | 24 case CSSPropertyBorderLeftColor: |
22 return style.borderLeftColor(); | 25 color = style.borderLeftColor(); |
| 26 break; |
23 case CSSPropertyBorderRightColor: | 27 case CSSPropertyBorderRightColor: |
24 return style.borderRightColor(); | 28 color = style.borderRightColor(); |
| 29 break; |
25 case CSSPropertyBorderTopColor: | 30 case CSSPropertyBorderTopColor: |
26 return style.borderTopColor(); | 31 color = style.borderTopColor(); |
| 32 break; |
27 case CSSPropertyBorderBottomColor: | 33 case CSSPropertyBorderBottomColor: |
28 return style.borderBottomColor(); | 34 color = style.borderBottomColor(); |
| 35 break; |
| 36 case CSSPropertyCaretColor: |
| 37 if (style.caretColor().isAutoColor()) |
| 38 return false; |
| 39 color = style.caretColor().toStyleColor(); |
| 40 break; |
29 case CSSPropertyColor: | 41 case CSSPropertyColor: |
30 return style.color(); | 42 color = style.color(); |
| 43 break; |
31 case CSSPropertyOutlineColor: | 44 case CSSPropertyOutlineColor: |
32 return style.outlineColor(); | 45 color = style.outlineColor(); |
| 46 break; |
33 case CSSPropertyColumnRuleColor: | 47 case CSSPropertyColumnRuleColor: |
34 return style.columnRuleColor(); | 48 color = style.columnRuleColor(); |
| 49 break; |
35 case CSSPropertyWebkitTextEmphasisColor: | 50 case CSSPropertyWebkitTextEmphasisColor: |
36 return style.textEmphasisColor(); | 51 color = style.textEmphasisColor(); |
| 52 break; |
37 case CSSPropertyWebkitTextFillColor: | 53 case CSSPropertyWebkitTextFillColor: |
38 return style.textFillColor(); | 54 color = style.textFillColor(); |
| 55 break; |
39 case CSSPropertyWebkitTextStrokeColor: | 56 case CSSPropertyWebkitTextStrokeColor: |
40 return style.textStrokeColor(); | 57 color = style.textStrokeColor(); |
| 58 break; |
41 case CSSPropertyFloodColor: | 59 case CSSPropertyFloodColor: |
42 return style.floodColor(); | 60 color = style.floodColor(); |
| 61 break; |
43 case CSSPropertyLightingColor: | 62 case CSSPropertyLightingColor: |
44 return style.lightingColor(); | 63 color = style.lightingColor(); |
| 64 break; |
45 case CSSPropertyStopColor: | 65 case CSSPropertyStopColor: |
46 return style.stopColor(); | 66 color = style.stopColor(); |
| 67 break; |
47 case CSSPropertyWebkitTapHighlightColor: | 68 case CSSPropertyWebkitTapHighlightColor: |
48 return style.tapHighlightColor(); | 69 color = style.tapHighlightColor(); |
| 70 break; |
49 case CSSPropertyTextDecorationColor: | 71 case CSSPropertyTextDecorationColor: |
50 return style.textDecorationColor(); | 72 color = style.textDecorationColor(); |
| 73 break; |
51 default: | 74 default: |
52 NOTREACHED(); | 75 NOTREACHED(); |
53 return StyleColor::currentColor(); | 76 color = StyleColor::currentColor(); |
| 77 break; |
54 } | 78 } |
| 79 |
| 80 return true; |
55 } | 81 } |
56 | 82 |
57 StyleColor ColorPropertyFunctions::getVisitedColor(CSSPropertyID property, | 83 bool ColorPropertyFunctions::getVisitedColor(CSSPropertyID property, |
58 const ComputedStyle& style) { | 84 const ComputedStyle& style, |
| 85 StyleColor& color) { |
59 switch (property) { | 86 switch (property) { |
60 case CSSPropertyBackgroundColor: | 87 case CSSPropertyBackgroundColor: |
61 return style.visitedLinkBackgroundColor(); | 88 color = style.visitedLinkBackgroundColor(); |
| 89 break; |
62 case CSSPropertyBorderLeftColor: | 90 case CSSPropertyBorderLeftColor: |
63 return style.visitedLinkBorderLeftColor(); | 91 color = style.visitedLinkBorderLeftColor(); |
| 92 break; |
64 case CSSPropertyBorderRightColor: | 93 case CSSPropertyBorderRightColor: |
65 return style.visitedLinkBorderRightColor(); | 94 color = style.visitedLinkBorderRightColor(); |
| 95 break; |
66 case CSSPropertyBorderTopColor: | 96 case CSSPropertyBorderTopColor: |
67 return style.visitedLinkBorderTopColor(); | 97 color = style.visitedLinkBorderTopColor(); |
| 98 break; |
68 case CSSPropertyBorderBottomColor: | 99 case CSSPropertyBorderBottomColor: |
69 return style.visitedLinkBorderBottomColor(); | 100 color = style.visitedLinkBorderBottomColor(); |
| 101 break; |
| 102 case CSSPropertyCaretColor: |
| 103 if (style.visitedLinkCaretColor().isAutoColor()) |
| 104 return false; |
| 105 color = style.visitedLinkCaretColor().toStyleColor(); |
| 106 break; |
70 case CSSPropertyColor: | 107 case CSSPropertyColor: |
71 return style.visitedLinkColor(); | 108 color = style.visitedLinkColor(); |
| 109 break; |
72 case CSSPropertyOutlineColor: | 110 case CSSPropertyOutlineColor: |
73 return style.visitedLinkOutlineColor(); | 111 color = style.visitedLinkOutlineColor(); |
| 112 break; |
74 case CSSPropertyColumnRuleColor: | 113 case CSSPropertyColumnRuleColor: |
75 return style.visitedLinkColumnRuleColor(); | 114 color = style.visitedLinkColumnRuleColor(); |
| 115 break; |
76 case CSSPropertyWebkitTextEmphasisColor: | 116 case CSSPropertyWebkitTextEmphasisColor: |
77 return style.visitedLinkTextEmphasisColor(); | 117 color = style.visitedLinkTextEmphasisColor(); |
| 118 break; |
78 case CSSPropertyWebkitTextFillColor: | 119 case CSSPropertyWebkitTextFillColor: |
79 return style.visitedLinkTextFillColor(); | 120 color = style.visitedLinkTextFillColor(); |
| 121 break; |
80 case CSSPropertyWebkitTextStrokeColor: | 122 case CSSPropertyWebkitTextStrokeColor: |
81 return style.visitedLinkTextStrokeColor(); | 123 color = style.visitedLinkTextStrokeColor(); |
| 124 break; |
82 case CSSPropertyFloodColor: | 125 case CSSPropertyFloodColor: |
83 return style.floodColor(); | 126 color = style.floodColor(); |
| 127 break; |
84 case CSSPropertyLightingColor: | 128 case CSSPropertyLightingColor: |
85 return style.lightingColor(); | 129 color = style.lightingColor(); |
| 130 break; |
86 case CSSPropertyStopColor: | 131 case CSSPropertyStopColor: |
87 return style.stopColor(); | 132 color = style.stopColor(); |
| 133 break; |
88 case CSSPropertyWebkitTapHighlightColor: | 134 case CSSPropertyWebkitTapHighlightColor: |
89 return style.tapHighlightColor(); | 135 color = style.tapHighlightColor(); |
| 136 break; |
90 case CSSPropertyTextDecorationColor: | 137 case CSSPropertyTextDecorationColor: |
91 return style.visitedLinkTextDecorationColor(); | 138 color = style.visitedLinkTextDecorationColor(); |
| 139 break; |
92 default: | 140 default: |
93 NOTREACHED(); | 141 NOTREACHED(); |
94 return StyleColor::currentColor(); | 142 color = StyleColor::currentColor(); |
| 143 break; |
95 } | 144 } |
| 145 |
| 146 return true; |
96 } | 147 } |
97 | 148 |
98 void ColorPropertyFunctions::setUnvisitedColor(CSSPropertyID property, | 149 void ColorPropertyFunctions::setUnvisitedColor(CSSPropertyID property, |
99 ComputedStyle& style, | 150 ComputedStyle& style, |
100 const Color& color) { | 151 const Color& color) { |
101 switch (property) { | 152 switch (property) { |
102 case CSSPropertyBackgroundColor: | 153 case CSSPropertyBackgroundColor: |
103 style.setBackgroundColor(color); | 154 style.setBackgroundColor(color); |
104 return; | 155 return; |
105 case CSSPropertyBorderBottomColor: | 156 case CSSPropertyBorderBottomColor: |
106 style.setBorderBottomColor(color); | 157 style.setBorderBottomColor(color); |
107 return; | 158 return; |
108 case CSSPropertyBorderLeftColor: | 159 case CSSPropertyBorderLeftColor: |
109 style.setBorderLeftColor(color); | 160 style.setBorderLeftColor(color); |
110 return; | 161 return; |
111 case CSSPropertyBorderRightColor: | 162 case CSSPropertyBorderRightColor: |
112 style.setBorderRightColor(color); | 163 style.setBorderRightColor(color); |
113 return; | 164 return; |
114 case CSSPropertyBorderTopColor: | 165 case CSSPropertyBorderTopColor: |
115 style.setBorderTopColor(color); | 166 style.setBorderTopColor(color); |
116 return; | 167 return; |
| 168 case CSSPropertyCaretColor: |
| 169 return style.setCaretColor(color); |
117 case CSSPropertyColor: | 170 case CSSPropertyColor: |
118 style.setColor(color); | 171 style.setColor(color); |
119 return; | 172 return; |
120 case CSSPropertyFloodColor: | 173 case CSSPropertyFloodColor: |
121 style.setFloodColor(color); | 174 style.setFloodColor(color); |
122 return; | 175 return; |
123 case CSSPropertyLightingColor: | 176 case CSSPropertyLightingColor: |
124 style.setLightingColor(color); | 177 style.setLightingColor(color); |
125 return; | 178 return; |
126 case CSSPropertyOutlineColor: | 179 case CSSPropertyOutlineColor: |
(...skipping 29 matching lines...) Expand all Loading... |
156 return; | 209 return; |
157 case CSSPropertyBorderLeftColor: | 210 case CSSPropertyBorderLeftColor: |
158 style.setVisitedLinkBorderLeftColor(color); | 211 style.setVisitedLinkBorderLeftColor(color); |
159 return; | 212 return; |
160 case CSSPropertyBorderRightColor: | 213 case CSSPropertyBorderRightColor: |
161 style.setVisitedLinkBorderRightColor(color); | 214 style.setVisitedLinkBorderRightColor(color); |
162 return; | 215 return; |
163 case CSSPropertyBorderTopColor: | 216 case CSSPropertyBorderTopColor: |
164 style.setVisitedLinkBorderTopColor(color); | 217 style.setVisitedLinkBorderTopColor(color); |
165 return; | 218 return; |
| 219 case CSSPropertyCaretColor: |
| 220 return style.setVisitedLinkCaretColor(color); |
166 case CSSPropertyColor: | 221 case CSSPropertyColor: |
167 style.setVisitedLinkColor(color); | 222 style.setVisitedLinkColor(color); |
168 return; | 223 return; |
169 case CSSPropertyFloodColor: | 224 case CSSPropertyFloodColor: |
170 style.setFloodColor(color); | 225 style.setFloodColor(color); |
171 return; | 226 return; |
172 case CSSPropertyLightingColor: | 227 case CSSPropertyLightingColor: |
173 style.setLightingColor(color); | 228 style.setLightingColor(color); |
174 return; | 229 return; |
175 case CSSPropertyOutlineColor: | 230 case CSSPropertyOutlineColor: |
(...skipping 11 matching lines...) Expand all Loading... |
187 case CSSPropertyWebkitTextStrokeColor: | 242 case CSSPropertyWebkitTextStrokeColor: |
188 style.setVisitedLinkTextStrokeColor(color); | 243 style.setVisitedLinkTextStrokeColor(color); |
189 return; | 244 return; |
190 default: | 245 default: |
191 NOTREACHED(); | 246 NOTREACHED(); |
192 return; | 247 return; |
193 } | 248 } |
194 } | 249 } |
195 | 250 |
196 } // namespace blink | 251 } // namespace blink |
OLD | NEW |