OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 #include "core/animation/css/CSSAnimations.h" | 54 #include "core/animation/css/CSSAnimations.h" |
55 #include "core/css/CSSCalculationValue.h" | 55 #include "core/css/CSSCalculationValue.h" |
56 #include "core/css/CSSPrimitiveValue.h" | 56 #include "core/css/CSSPrimitiveValue.h" |
57 #include "core/css/CSSPrimitiveValueMappings.h" | 57 #include "core/css/CSSPrimitiveValueMappings.h" |
58 #include "core/rendering/style/RenderStyle.h" | 58 #include "core/rendering/style/RenderStyle.h" |
59 #include "platform/Length.h" | 59 #include "platform/Length.h" |
60 #include "platform/LengthBox.h" | 60 #include "platform/LengthBox.h" |
61 | 61 |
62 namespace WebCore { | 62 namespace WebCore { |
63 | 63 |
64 static PassRefPtr<AnimatableValue> createFromLength(const Length& length, const
RenderStyle* style) | 64 static PassRefPtr<AnimatableValue> createFromLength(const Length& length, const
RenderStyle& style) |
65 { | 65 { |
66 switch (length.type()) { | 66 switch (length.type()) { |
67 case Fixed: | 67 case Fixed: |
68 return AnimatableLength::create(adjustFloatForAbsoluteZoom(length.value(
), style), AnimatableLength::UnitTypePixels); | 68 return AnimatableLength::create(adjustFloatForAbsoluteZoom(length.value(
), style), AnimatableLength::UnitTypePixels); |
69 case Percent: | 69 case Percent: |
70 return AnimatableLength::create(length.value(), AnimatableLength::UnitTy
pePercentage); | 70 return AnimatableLength::create(length.value(), AnimatableLength::UnitTy
pePercentage); |
71 case ViewportPercentageWidth: | 71 case ViewportPercentageWidth: |
72 return AnimatableLength::create(length.value(), AnimatableLength::UnitTy
peViewportWidth); | 72 return AnimatableLength::create(length.value(), AnimatableLength::UnitTy
peViewportWidth); |
73 case ViewportPercentageHeight: | 73 case ViewportPercentageHeight: |
74 return AnimatableLength::create(length.value(), AnimatableLength::UnitTy
peViewportHeight); | 74 return AnimatableLength::create(length.value(), AnimatableLength::UnitTy
peViewportHeight); |
75 case ViewportPercentageMin: | 75 case ViewportPercentageMin: |
76 return AnimatableLength::create(length.value(), AnimatableLength::UnitTy
peViewportMin); | 76 return AnimatableLength::create(length.value(), AnimatableLength::UnitTy
peViewportMin); |
77 case ViewportPercentageMax: | 77 case ViewportPercentageMax: |
78 return AnimatableLength::create(length.value(), AnimatableLength::UnitTy
peViewportMax); | 78 return AnimatableLength::create(length.value(), AnimatableLength::UnitTy
peViewportMax); |
79 case Calculated: | 79 case Calculated: |
80 return AnimatableLength::create(CSSCalcValue::createExpressionNode(lengt
h.calculationValue()->expression(), style->effectiveZoom())); | 80 return AnimatableLength::create(CSSCalcValue::createExpressionNode(lengt
h.calculationValue()->expression(), style.effectiveZoom())); |
81 case Auto: | 81 case Auto: |
82 case Intrinsic: | 82 case Intrinsic: |
83 case MinIntrinsic: | 83 case MinIntrinsic: |
84 case MinContent: | 84 case MinContent: |
85 case MaxContent: | 85 case MaxContent: |
86 case FillAvailable: | 86 case FillAvailable: |
87 case FitContent: | 87 case FitContent: |
88 return AnimatableUnknown::create(CSSPrimitiveValue::create(length)); | 88 return AnimatableUnknown::create(CSSPrimitiveValue::create(length)); |
89 case Undefined: | 89 case Undefined: |
90 return AnimatableUnknown::create(CSSValueNone); | 90 return AnimatableUnknown::create(CSSValueNone); |
91 case ExtendToZoom: // Does not apply to elements. | 91 case ExtendToZoom: // Does not apply to elements. |
92 case Relative: // Does not get used by interpolable properties. | 92 case Relative: // Does not get used by interpolable properties. |
93 ASSERT_NOT_REACHED(); | 93 ASSERT_NOT_REACHED(); |
94 return 0; | 94 return 0; |
95 } | 95 } |
96 ASSERT_NOT_REACHED(); | 96 ASSERT_NOT_REACHED(); |
97 return 0; | 97 return 0; |
98 } | 98 } |
99 | 99 |
100 static PassRefPtr<AnimatableValue> createFromLineHeight(const Length& length, co
nst RenderStyle* style) | 100 static PassRefPtr<AnimatableValue> createFromLineHeight(const Length& length, co
nst RenderStyle& style) |
101 { | 101 { |
102 double value = length.value(); | 102 double value = length.value(); |
103 switch (length.type()) { | 103 switch (length.type()) { |
104 case Fixed: | 104 case Fixed: |
105 return AnimatableLength::create(adjustFloatForAbsoluteZoom(value, style)
, AnimatableLength::UnitTypePixels); | 105 return AnimatableLength::create(adjustFloatForAbsoluteZoom(value, style)
, AnimatableLength::UnitTypePixels); |
106 case Percent: | 106 case Percent: |
107 // -100% is used to represent "normal" line height. | 107 // -100% is used to represent "normal" line height. |
108 if (value == -100) | 108 if (value == -100) |
109 return AnimatableUnknown::create(CSSValueNormal); | 109 return AnimatableUnknown::create(CSSValueNormal); |
110 return AnimatableDouble::create(value); | 110 return AnimatableDouble::create(value); |
111 default: | 111 default: |
112 ASSERT_NOT_REACHED(); | 112 ASSERT_NOT_REACHED(); |
113 return 0; | 113 return 0; |
114 } | 114 } |
115 } | 115 } |
116 | 116 |
117 inline static PassRefPtr<AnimatableValue> createFromDouble(double value, Animata
bleDouble::Constraint constraint = AnimatableDouble::Unconstrained) | 117 inline static PassRefPtr<AnimatableValue> createFromDouble(double value, Animata
bleDouble::Constraint constraint = AnimatableDouble::Unconstrained) |
118 { | 118 { |
119 return AnimatableDouble::create(value, constraint); | 119 return AnimatableDouble::create(value, constraint); |
120 } | 120 } |
121 | 121 |
122 inline static PassRefPtr<AnimatableValue> createFromLengthBox(const LengthBox& l
engthBox, const RenderStyle* style) | 122 inline static PassRefPtr<AnimatableValue> createFromLengthBox(const LengthBox& l
engthBox, const RenderStyle& style) |
123 { | 123 { |
124 return AnimatableLengthBox::create( | 124 return AnimatableLengthBox::create( |
125 createFromLength(lengthBox.left(), style), | 125 createFromLength(lengthBox.left(), style), |
126 createFromLength(lengthBox.right(), style), | 126 createFromLength(lengthBox.right(), style), |
127 createFromLength(lengthBox.top(), style), | 127 createFromLength(lengthBox.top(), style), |
128 createFromLength(lengthBox.bottom(), style)); | 128 createFromLength(lengthBox.bottom(), style)); |
129 } | 129 } |
130 | 130 |
131 inline static PassRefPtr<AnimatableValue> createFromLengthBoxAndBool(const Lengt
hBox lengthBox, const bool flag, const RenderStyle *style) | 131 inline static PassRefPtr<AnimatableValue> createFromLengthBoxAndBool(const Lengt
hBox lengthBox, const bool flag, const RenderStyle& style) |
132 { | 132 { |
133 return AnimatableLengthBoxAndBool::create( | 133 return AnimatableLengthBoxAndBool::create( |
134 createFromLengthBox(lengthBox, style), | 134 createFromLengthBox(lengthBox, style), |
135 flag); | 135 flag); |
136 } | 136 } |
137 | 137 |
138 inline static PassRefPtr<AnimatableValue> createFromLengthPoint(const LengthPoin
t& lengthPoint, const RenderStyle* style) | 138 inline static PassRefPtr<AnimatableValue> createFromLengthPoint(const LengthPoin
t& lengthPoint, const RenderStyle& style) |
139 { | 139 { |
140 return AnimatableLengthPoint::create( | 140 return AnimatableLengthPoint::create( |
141 createFromLength(lengthPoint.x(), style), | 141 createFromLength(lengthPoint.x(), style), |
142 createFromLength(lengthPoint.y(), style)); | 142 createFromLength(lengthPoint.y(), style)); |
143 } | 143 } |
144 | 144 |
145 inline static PassRefPtr<AnimatableValue> createFromLengthSize(const LengthSize&
lengthSize, const RenderStyle* style) | 145 inline static PassRefPtr<AnimatableValue> createFromLengthSize(const LengthSize&
lengthSize, const RenderStyle& style) |
146 { | 146 { |
147 return AnimatableLengthSize::create( | 147 return AnimatableLengthSize::create( |
148 createFromLength(lengthSize.width(), style), | 148 createFromLength(lengthSize.width(), style), |
149 createFromLength(lengthSize.height(), style)); | 149 createFromLength(lengthSize.height(), style)); |
150 } | 150 } |
151 | 151 |
152 inline static PassRefPtr<AnimatableValue> createFromStyleImage(StyleImage* image
) | 152 inline static PassRefPtr<AnimatableValue> createFromStyleImage(StyleImage* image
) |
153 { | 153 { |
154 if (image) | 154 if (image) |
155 return AnimatableImage::create(image); | 155 return AnimatableImage::create(image); |
156 return AnimatableUnknown::create(CSSValueNone); | 156 return AnimatableUnknown::create(CSSValueNone); |
157 } | 157 } |
158 | 158 |
159 inline static PassRefPtr<AnimatableValue> createFromFillSize(const FillSize& fil
lSize, const RenderStyle* style) | 159 inline static PassRefPtr<AnimatableValue> createFromFillSize(const FillSize& fil
lSize, const RenderStyle& style) |
160 { | 160 { |
161 switch (fillSize.type) { | 161 switch (fillSize.type) { |
162 case SizeLength: | 162 case SizeLength: |
163 return createFromLengthSize(fillSize.size, style); | 163 return createFromLengthSize(fillSize.size, style); |
164 case Contain: | 164 case Contain: |
165 case Cover: | 165 case Cover: |
166 case SizeNone: | 166 case SizeNone: |
167 return AnimatableUnknown::create(CSSPrimitiveValue::create(fillSize.type
)); | 167 return AnimatableUnknown::create(CSSPrimitiveValue::create(fillSize.type
)); |
168 default: | 168 default: |
169 ASSERT_NOT_REACHED(); | 169 ASSERT_NOT_REACHED(); |
170 return 0; | 170 return 0; |
171 } | 171 } |
172 } | 172 } |
173 | 173 |
174 template<CSSPropertyID property> | 174 template<CSSPropertyID property> |
175 inline static PassRefPtr<AnimatableValue> createFromFillLayers(const FillLayer*
fillLayer, const RenderStyle* style) | 175 inline static PassRefPtr<AnimatableValue> createFromFillLayers(const FillLayer*
fillLayer, const RenderStyle& style) |
176 { | 176 { |
177 ASSERT(fillLayer); | 177 ASSERT(fillLayer); |
178 Vector<RefPtr<AnimatableValue> > values; | 178 Vector<RefPtr<AnimatableValue> > values; |
179 while (fillLayer) { | 179 while (fillLayer) { |
180 if (property == CSSPropertyBackgroundImage || property == CSSPropertyWeb
kitMaskImage) { | 180 if (property == CSSPropertyBackgroundImage || property == CSSPropertyWeb
kitMaskImage) { |
181 if (!fillLayer->isImageSet()) | 181 if (!fillLayer->isImageSet()) |
182 break; | 182 break; |
183 values.append(createFromStyleImage(fillLayer->image())); | 183 values.append(createFromStyleImage(fillLayer->image())); |
184 } else if (property == CSSPropertyBackgroundPositionX || property == CSS
PropertyWebkitMaskPositionX) { | 184 } else if (property == CSSPropertyBackgroundPositionX || property == CSS
PropertyWebkitMaskPositionX) { |
185 if (!fillLayer->isXPositionSet()) | 185 if (!fillLayer->isXPositionSet()) |
186 break; | 186 break; |
187 values.append(createFromLength(fillLayer->xPosition(), style)); | 187 values.append(createFromLength(fillLayer->xPosition(), style)); |
188 } else if (property == CSSPropertyBackgroundPositionY || property == CSS
PropertyWebkitMaskPositionY) { | 188 } else if (property == CSSPropertyBackgroundPositionY || property == CSS
PropertyWebkitMaskPositionY) { |
189 if (!fillLayer->isYPositionSet()) | 189 if (!fillLayer->isYPositionSet()) |
190 break; | 190 break; |
191 values.append(createFromLength(fillLayer->yPosition(), style)); | 191 values.append(createFromLength(fillLayer->yPosition(), style)); |
192 } else if (property == CSSPropertyBackgroundSize || property == CSSPrope
rtyWebkitMaskSize) { | 192 } else if (property == CSSPropertyBackgroundSize || property == CSSPrope
rtyWebkitMaskSize) { |
193 if (!fillLayer->isSizeSet()) | 193 if (!fillLayer->isSizeSet()) |
194 break; | 194 break; |
195 values.append(createFromFillSize(fillLayer->size(), style)); | 195 values.append(createFromFillSize(fillLayer->size(), style)); |
196 } else { | 196 } else { |
197 ASSERT_NOT_REACHED(); | 197 ASSERT_NOT_REACHED(); |
198 } | 198 } |
199 fillLayer = fillLayer->next(); | 199 fillLayer = fillLayer->next(); |
200 } | 200 } |
201 return AnimatableRepeatable::create(values); | 201 return AnimatableRepeatable::create(values); |
202 } | 202 } |
203 | 203 |
204 PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::createFromColor(CSSProper
tyID property, const RenderStyle* style) | 204 PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::createFromColor(CSSProper
tyID property, const RenderStyle& style) |
205 { | 205 { |
206 Color color = style->colorIncludingFallback(property, false); | 206 Color color = style.colorIncludingFallback(property, false); |
207 Color visitedLinkColor = style->colorIncludingFallback(property, true); | 207 Color visitedLinkColor = style.colorIncludingFallback(property, true); |
208 Color fallbackColor = style->color(); | 208 Color fallbackColor = style.color(); |
209 Color fallbackVisitedLinkColor = style->visitedLinkColor(); | 209 Color fallbackVisitedLinkColor = style.visitedLinkColor(); |
210 Color resolvedColor; | 210 Color resolvedColor; |
211 if (color.isValid()) | 211 if (color.isValid()) |
212 resolvedColor = color; | 212 resolvedColor = color; |
213 else | 213 else |
214 resolvedColor = fallbackColor; | 214 resolvedColor = fallbackColor; |
215 Color resolvedVisitedLinkColor; | 215 Color resolvedVisitedLinkColor; |
216 if (visitedLinkColor.isValid()) | 216 if (visitedLinkColor.isValid()) |
217 resolvedVisitedLinkColor = visitedLinkColor; | 217 resolvedVisitedLinkColor = visitedLinkColor; |
218 else | 218 else |
219 resolvedVisitedLinkColor = fallbackVisitedLinkColor; | 219 resolvedVisitedLinkColor = fallbackVisitedLinkColor; |
220 return AnimatableColor::create(resolvedColor, resolvedVisitedLinkColor); | 220 return AnimatableColor::create(resolvedColor, resolvedVisitedLinkColor); |
221 } | 221 } |
222 | 222 |
223 // FIXME: Generate this function. | 223 // FIXME: Generate this function. |
224 PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create(CSSPropertyID prop
erty, const RenderStyle* style) | 224 PassRefPtr<AnimatableValue> CSSAnimatableValueFactory::create(CSSPropertyID prop
erty, const RenderStyle& style) |
225 { | 225 { |
226 switch (property) { | 226 switch (property) { |
227 case CSSPropertyBackgroundColor: | 227 case CSSPropertyBackgroundColor: |
228 return createFromColor(property, style); | 228 return createFromColor(property, style); |
229 case CSSPropertyBackgroundImage: | 229 case CSSPropertyBackgroundImage: |
230 return createFromFillLayers<CSSPropertyBackgroundImage>(style->backgroun
dLayers(), style); | 230 return createFromFillLayers<CSSPropertyBackgroundImage>(style.background
Layers(), style); |
231 case CSSPropertyBackgroundPositionX: | 231 case CSSPropertyBackgroundPositionX: |
232 return createFromFillLayers<CSSPropertyBackgroundPositionX>(style->backg
roundLayers(), style); | 232 return createFromFillLayers<CSSPropertyBackgroundPositionX>(style.backgr
oundLayers(), style); |
233 case CSSPropertyBackgroundPositionY: | 233 case CSSPropertyBackgroundPositionY: |
234 return createFromFillLayers<CSSPropertyBackgroundPositionY>(style->backg
roundLayers(), style); | 234 return createFromFillLayers<CSSPropertyBackgroundPositionY>(style.backgr
oundLayers(), style); |
235 case CSSPropertyBackgroundSize: | 235 case CSSPropertyBackgroundSize: |
236 case CSSPropertyWebkitBackgroundSize: | 236 case CSSPropertyWebkitBackgroundSize: |
237 return createFromFillLayers<CSSPropertyBackgroundSize>(style->background
Layers(), style); | 237 return createFromFillLayers<CSSPropertyBackgroundSize>(style.backgroundL
ayers(), style); |
238 case CSSPropertyBaselineShift: | 238 case CSSPropertyBaselineShift: |
239 return AnimatableSVGLength::create(style->baselineShiftValue()); | 239 return AnimatableSVGLength::create(style.baselineShiftValue()); |
240 case CSSPropertyBorderBottomColor: | 240 case CSSPropertyBorderBottomColor: |
241 return createFromColor(property, style); | 241 return createFromColor(property, style); |
242 case CSSPropertyBorderBottomLeftRadius: | 242 case CSSPropertyBorderBottomLeftRadius: |
243 return createFromLengthSize(style->borderBottomLeftRadius(), style); | 243 return createFromLengthSize(style.borderBottomLeftRadius(), style); |
244 case CSSPropertyBorderBottomRightRadius: | 244 case CSSPropertyBorderBottomRightRadius: |
245 return createFromLengthSize(style->borderBottomRightRadius(), style); | 245 return createFromLengthSize(style.borderBottomRightRadius(), style); |
246 case CSSPropertyBorderBottomWidth: | 246 case CSSPropertyBorderBottomWidth: |
247 return createFromDouble(style->borderBottomWidth()); | 247 return createFromDouble(style.borderBottomWidth()); |
248 case CSSPropertyBorderImageOutset: | 248 case CSSPropertyBorderImageOutset: |
249 return createFromLengthBox(style->borderImageOutset(), style); | 249 return createFromLengthBox(style.borderImageOutset(), style); |
250 case CSSPropertyBorderImageSlice: | 250 case CSSPropertyBorderImageSlice: |
251 return createFromLengthBox(style->borderImageSlices(), style); | 251 return createFromLengthBox(style.borderImageSlices(), style); |
252 case CSSPropertyBorderImageSource: | 252 case CSSPropertyBorderImageSource: |
253 return createFromStyleImage(style->borderImageSource()); | 253 return createFromStyleImage(style.borderImageSource()); |
254 case CSSPropertyBorderImageWidth: | 254 case CSSPropertyBorderImageWidth: |
255 return createFromLengthBox(style->borderImageWidth(), style); | 255 return createFromLengthBox(style.borderImageWidth(), style); |
256 case CSSPropertyBorderLeftColor: | 256 case CSSPropertyBorderLeftColor: |
257 return createFromColor(property, style); | 257 return createFromColor(property, style); |
258 case CSSPropertyBorderLeftWidth: | 258 case CSSPropertyBorderLeftWidth: |
259 return createFromDouble(style->borderLeftWidth()); | 259 return createFromDouble(style.borderLeftWidth()); |
260 case CSSPropertyBorderRightColor: | 260 case CSSPropertyBorderRightColor: |
261 return createFromColor(property, style); | 261 return createFromColor(property, style); |
262 case CSSPropertyBorderRightWidth: | 262 case CSSPropertyBorderRightWidth: |
263 return createFromDouble(style->borderRightWidth()); | 263 return createFromDouble(style.borderRightWidth()); |
264 case CSSPropertyBorderTopColor: | 264 case CSSPropertyBorderTopColor: |
265 return createFromColor(property, style); | 265 return createFromColor(property, style); |
266 case CSSPropertyBorderTopLeftRadius: | 266 case CSSPropertyBorderTopLeftRadius: |
267 return createFromLengthSize(style->borderTopLeftRadius(), style); | 267 return createFromLengthSize(style.borderTopLeftRadius(), style); |
268 case CSSPropertyBorderTopRightRadius: | 268 case CSSPropertyBorderTopRightRadius: |
269 return createFromLengthSize(style->borderTopRightRadius(), style); | 269 return createFromLengthSize(style.borderTopRightRadius(), style); |
270 case CSSPropertyBorderTopWidth: | 270 case CSSPropertyBorderTopWidth: |
271 return createFromDouble(style->borderTopWidth()); | 271 return createFromDouble(style.borderTopWidth()); |
272 case CSSPropertyBottom: | 272 case CSSPropertyBottom: |
273 return createFromLength(style->bottom(), style); | 273 return createFromLength(style.bottom(), style); |
274 case CSSPropertyBoxShadow: | 274 case CSSPropertyBoxShadow: |
275 case CSSPropertyWebkitBoxShadow: | 275 case CSSPropertyWebkitBoxShadow: |
276 return AnimatableShadow::create(style->boxShadow()); | 276 return AnimatableShadow::create(style.boxShadow()); |
277 case CSSPropertyClip: | 277 case CSSPropertyClip: |
278 if (style->hasClip()) | 278 if (style.hasClip()) |
279 return createFromLengthBox(style->clip(), style); | 279 return createFromLengthBox(style.clip(), style); |
280 return AnimatableUnknown::create(CSSPrimitiveValue::create(CSSValueAuto)
); | 280 return AnimatableUnknown::create(CSSPrimitiveValue::create(CSSValueAuto)
); |
281 case CSSPropertyColor: | 281 case CSSPropertyColor: |
282 return createFromColor(property, style); | 282 return createFromColor(property, style); |
283 case CSSPropertyFillOpacity: | 283 case CSSPropertyFillOpacity: |
284 return createFromDouble(style->fillOpacity()); | 284 return createFromDouble(style.fillOpacity()); |
285 case CSSPropertyFill: | 285 case CSSPropertyFill: |
286 return AnimatableSVGPaint::create(style->svgStyle()->fillPaintType(), st
yle->svgStyle()->fillPaintColor(), style->svgStyle()->fillPaintUri()); | 286 return AnimatableSVGPaint::create(style.svgStyle()->fillPaintType(), sty
le.svgStyle()->fillPaintColor(), style.svgStyle()->fillPaintUri()); |
287 case CSSPropertyFlexGrow: | 287 case CSSPropertyFlexGrow: |
288 return createFromDouble(style->flexGrow(), AnimatableDouble::Interpolati
onIsNonContinuousWithZero); | 288 return createFromDouble(style.flexGrow(), AnimatableDouble::Interpolatio
nIsNonContinuousWithZero); |
289 case CSSPropertyFlexShrink: | 289 case CSSPropertyFlexShrink: |
290 return createFromDouble(style->flexShrink(), AnimatableDouble::Interpola
tionIsNonContinuousWithZero); | 290 return createFromDouble(style.flexShrink(), AnimatableDouble::Interpolat
ionIsNonContinuousWithZero); |
291 case CSSPropertyFlexBasis: | 291 case CSSPropertyFlexBasis: |
292 return createFromLength(style->flexBasis(), style); | 292 return createFromLength(style.flexBasis(), style); |
293 case CSSPropertyFloodColor: | 293 case CSSPropertyFloodColor: |
294 return createFromColor(property, style); | 294 return createFromColor(property, style); |
295 case CSSPropertyFloodOpacity: | 295 case CSSPropertyFloodOpacity: |
296 return createFromDouble(style->floodOpacity()); | 296 return createFromDouble(style.floodOpacity()); |
297 case CSSPropertyFontSize: | 297 case CSSPropertyFontSize: |
298 // Must pass a specified size to setFontSize if Text Autosizing is enabl
ed, but a computed size | 298 // Must pass a specified size to setFontSize if Text Autosizing is enabl
ed, but a computed size |
299 // if text zoom is enabled (if neither is enabled it's irrelevant as the
y're probably the same). | 299 // if text zoom is enabled (if neither is enabled it's irrelevant as the
y're probably the same). |
300 // FIXME: Should we introduce an option to pass the computed font size h
ere, allowing consumers to | 300 // FIXME: Should we introduce an option to pass the computed font size h
ere, allowing consumers to |
301 // enable text zoom rather than Text Autosizing? See http://crbug.com/22
7545. | 301 // enable text zoom rather than Text Autosizing? See http://crbug.com/22
7545. |
302 return createFromDouble(style->specifiedFontSize()); | 302 return createFromDouble(style.specifiedFontSize()); |
303 case CSSPropertyHeight: | 303 case CSSPropertyHeight: |
304 return createFromLength(style->height(), style); | 304 return createFromLength(style.height(), style); |
305 case CSSPropertyKerning: | 305 case CSSPropertyKerning: |
306 return AnimatableSVGLength::create(style->kerning()); | 306 return AnimatableSVGLength::create(style.kerning()); |
307 case CSSPropertyLightingColor: | 307 case CSSPropertyLightingColor: |
308 return createFromColor(property, style); | 308 return createFromColor(property, style); |
309 case CSSPropertyListStyleImage: | 309 case CSSPropertyListStyleImage: |
310 return createFromStyleImage(style->listStyleImage()); | 310 return createFromStyleImage(style.listStyleImage()); |
311 case CSSPropertyLeft: | 311 case CSSPropertyLeft: |
312 return createFromLength(style->left(), style); | 312 return createFromLength(style.left(), style); |
313 case CSSPropertyLetterSpacing: | 313 case CSSPropertyLetterSpacing: |
314 return createFromDouble(style->letterSpacing()); | 314 return createFromDouble(style.letterSpacing()); |
315 case CSSPropertyLineHeight: | 315 case CSSPropertyLineHeight: |
316 return createFromLineHeight(style->specifiedLineHeight(), style); | 316 return createFromLineHeight(style.specifiedLineHeight(), style); |
317 case CSSPropertyMarginBottom: | 317 case CSSPropertyMarginBottom: |
318 return createFromLength(style->marginBottom(), style); | 318 return createFromLength(style.marginBottom(), style); |
319 case CSSPropertyMarginLeft: | 319 case CSSPropertyMarginLeft: |
320 return createFromLength(style->marginLeft(), style); | 320 return createFromLength(style.marginLeft(), style); |
321 case CSSPropertyMarginRight: | 321 case CSSPropertyMarginRight: |
322 return createFromLength(style->marginRight(), style); | 322 return createFromLength(style.marginRight(), style); |
323 case CSSPropertyMarginTop: | 323 case CSSPropertyMarginTop: |
324 return createFromLength(style->marginTop(), style); | 324 return createFromLength(style.marginTop(), style); |
325 case CSSPropertyMaxHeight: | 325 case CSSPropertyMaxHeight: |
326 return createFromLength(style->maxHeight(), style); | 326 return createFromLength(style.maxHeight(), style); |
327 case CSSPropertyMaxWidth: | 327 case CSSPropertyMaxWidth: |
328 return createFromLength(style->maxWidth(), style); | 328 return createFromLength(style.maxWidth(), style); |
329 case CSSPropertyMinHeight: | 329 case CSSPropertyMinHeight: |
330 return createFromLength(style->minHeight(), style); | 330 return createFromLength(style.minHeight(), style); |
331 case CSSPropertyMinWidth: | 331 case CSSPropertyMinWidth: |
332 return createFromLength(style->minWidth(), style); | 332 return createFromLength(style.minWidth(), style); |
333 case CSSPropertyObjectPosition: | 333 case CSSPropertyObjectPosition: |
334 return createFromLengthPoint(style->objectPosition(), style); | 334 return createFromLengthPoint(style.objectPosition(), style); |
335 case CSSPropertyOpacity: | 335 case CSSPropertyOpacity: |
336 return createFromDouble(style->opacity()); | 336 return createFromDouble(style.opacity()); |
337 case CSSPropertyOrphans: | 337 case CSSPropertyOrphans: |
338 return createFromDouble(style->orphans()); | 338 return createFromDouble(style.orphans()); |
339 case CSSPropertyOutlineColor: | 339 case CSSPropertyOutlineColor: |
340 return createFromColor(property, style); | 340 return createFromColor(property, style); |
341 case CSSPropertyOutlineOffset: | 341 case CSSPropertyOutlineOffset: |
342 return createFromDouble(style->outlineOffset()); | 342 return createFromDouble(style.outlineOffset()); |
343 case CSSPropertyOutlineWidth: | 343 case CSSPropertyOutlineWidth: |
344 return createFromDouble(style->outlineWidth()); | 344 return createFromDouble(style.outlineWidth()); |
345 case CSSPropertyPaddingBottom: | 345 case CSSPropertyPaddingBottom: |
346 return createFromLength(style->paddingBottom(), style); | 346 return createFromLength(style.paddingBottom(), style); |
347 case CSSPropertyPaddingLeft: | 347 case CSSPropertyPaddingLeft: |
348 return createFromLength(style->paddingLeft(), style); | 348 return createFromLength(style.paddingLeft(), style); |
349 case CSSPropertyPaddingRight: | 349 case CSSPropertyPaddingRight: |
350 return createFromLength(style->paddingRight(), style); | 350 return createFromLength(style.paddingRight(), style); |
351 case CSSPropertyPaddingTop: | 351 case CSSPropertyPaddingTop: |
352 return createFromLength(style->paddingTop(), style); | 352 return createFromLength(style.paddingTop(), style); |
353 case CSSPropertyRight: | 353 case CSSPropertyRight: |
354 return createFromLength(style->right(), style); | 354 return createFromLength(style.right(), style); |
355 case CSSPropertyStrokeWidth: | 355 case CSSPropertyStrokeWidth: |
356 return AnimatableSVGLength::create(style->strokeWidth()); | 356 return AnimatableSVGLength::create(style.strokeWidth()); |
357 case CSSPropertyStopColor: | 357 case CSSPropertyStopColor: |
358 return createFromColor(property, style); | 358 return createFromColor(property, style); |
359 case CSSPropertyStopOpacity: | 359 case CSSPropertyStopOpacity: |
360 return createFromDouble(style->stopOpacity()); | 360 return createFromDouble(style.stopOpacity()); |
361 case CSSPropertyStrokeDasharray: | 361 case CSSPropertyStrokeDasharray: |
362 return AnimatableStrokeDasharrayList::create(style->strokeDashArray()); | 362 return AnimatableStrokeDasharrayList::create(style.strokeDashArray()); |
363 case CSSPropertyStrokeDashoffset: | 363 case CSSPropertyStrokeDashoffset: |
364 return AnimatableSVGLength::create(style->strokeDashOffset()); | 364 return AnimatableSVGLength::create(style.strokeDashOffset()); |
365 case CSSPropertyStrokeMiterlimit: | 365 case CSSPropertyStrokeMiterlimit: |
366 return createFromDouble(style->strokeMiterLimit()); | 366 return createFromDouble(style.strokeMiterLimit()); |
367 case CSSPropertyStrokeOpacity: | 367 case CSSPropertyStrokeOpacity: |
368 return createFromDouble(style->strokeOpacity()); | 368 return createFromDouble(style.strokeOpacity()); |
369 case CSSPropertyStroke: | 369 case CSSPropertyStroke: |
370 return AnimatableSVGPaint::create(style->svgStyle()->strokePaintType(),
style->svgStyle()->strokePaintColor(), style->svgStyle()->strokePaintUri()); | 370 return AnimatableSVGPaint::create(style.svgStyle()->strokePaintType(), s
tyle.svgStyle()->strokePaintColor(), style.svgStyle()->strokePaintUri()); |
371 case CSSPropertyTextDecorationColor: | 371 case CSSPropertyTextDecorationColor: |
372 return createFromColor(property, style); | 372 return createFromColor(property, style); |
373 case CSSPropertyTextIndent: | 373 case CSSPropertyTextIndent: |
374 return createFromLength(style->textIndent(), style); | 374 return createFromLength(style.textIndent(), style); |
375 case CSSPropertyTextShadow: | 375 case CSSPropertyTextShadow: |
376 return AnimatableShadow::create(style->textShadow()); | 376 return AnimatableShadow::create(style.textShadow()); |
377 case CSSPropertyTop: | 377 case CSSPropertyTop: |
378 return createFromLength(style->top(), style); | 378 return createFromLength(style.top(), style); |
379 case CSSPropertyWebkitBorderHorizontalSpacing: | 379 case CSSPropertyWebkitBorderHorizontalSpacing: |
380 return createFromDouble(style->horizontalBorderSpacing()); | 380 return createFromDouble(style.horizontalBorderSpacing()); |
381 case CSSPropertyWebkitBorderVerticalSpacing: | 381 case CSSPropertyWebkitBorderVerticalSpacing: |
382 return createFromDouble(style->verticalBorderSpacing()); | 382 return createFromDouble(style.verticalBorderSpacing()); |
383 case CSSPropertyWebkitClipPath: | 383 case CSSPropertyWebkitClipPath: |
384 return AnimatableClipPathOperation::create(style->clipPath()); | 384 return AnimatableClipPathOperation::create(style.clipPath()); |
385 case CSSPropertyWebkitColumnCount: | 385 case CSSPropertyWebkitColumnCount: |
386 return createFromDouble(style->columnCount()); | 386 return createFromDouble(style.columnCount()); |
387 case CSSPropertyWebkitColumnGap: | 387 case CSSPropertyWebkitColumnGap: |
388 return createFromDouble(style->columnGap()); | 388 return createFromDouble(style.columnGap()); |
389 case CSSPropertyWebkitColumnRuleColor: | 389 case CSSPropertyWebkitColumnRuleColor: |
390 return createFromColor(property, style); | 390 return createFromColor(property, style); |
391 case CSSPropertyWebkitColumnRuleWidth: | 391 case CSSPropertyWebkitColumnRuleWidth: |
392 return createFromDouble(style->columnRuleWidth()); | 392 return createFromDouble(style.columnRuleWidth()); |
393 case CSSPropertyWebkitColumnWidth: | 393 case CSSPropertyWebkitColumnWidth: |
394 return createFromDouble(style->columnWidth()); | 394 return createFromDouble(style.columnWidth()); |
395 case CSSPropertyWebkitFilter: | 395 case CSSPropertyWebkitFilter: |
396 return AnimatableFilterOperations::create(style->filter()); | 396 return AnimatableFilterOperations::create(style.filter()); |
397 case CSSPropertyWebkitMaskBoxImageOutset: | 397 case CSSPropertyWebkitMaskBoxImageOutset: |
398 return createFromLengthBox(style->maskBoxImageOutset(), style); | 398 return createFromLengthBox(style.maskBoxImageOutset(), style); |
399 case CSSPropertyWebkitMaskBoxImageSlice: | 399 case CSSPropertyWebkitMaskBoxImageSlice: |
400 return createFromLengthBoxAndBool(style->maskBoxImageSlices(), style->ma
skBoxImageSlicesFill(), style); | 400 return createFromLengthBoxAndBool(style.maskBoxImageSlices(), style.mask
BoxImageSlicesFill(), style); |
401 case CSSPropertyWebkitMaskBoxImageSource: | 401 case CSSPropertyWebkitMaskBoxImageSource: |
402 return createFromStyleImage(style->maskBoxImageSource()); | 402 return createFromStyleImage(style.maskBoxImageSource()); |
403 case CSSPropertyWebkitMaskBoxImageWidth: | 403 case CSSPropertyWebkitMaskBoxImageWidth: |
404 return createFromLengthBox(style->maskBoxImageWidth(), style); | 404 return createFromLengthBox(style.maskBoxImageWidth(), style); |
405 case CSSPropertyWebkitMaskImage: | 405 case CSSPropertyWebkitMaskImage: |
406 return createFromFillLayers<CSSPropertyWebkitMaskImage>(style->maskLayer
s(), style); | 406 return createFromFillLayers<CSSPropertyWebkitMaskImage>(style.maskLayers
(), style); |
407 case CSSPropertyWebkitMaskPositionX: | 407 case CSSPropertyWebkitMaskPositionX: |
408 return createFromFillLayers<CSSPropertyWebkitMaskPositionX>(style->maskL
ayers(), style); | 408 return createFromFillLayers<CSSPropertyWebkitMaskPositionX>(style.maskLa
yers(), style); |
409 case CSSPropertyWebkitMaskPositionY: | 409 case CSSPropertyWebkitMaskPositionY: |
410 return createFromFillLayers<CSSPropertyWebkitMaskPositionY>(style->maskL
ayers(), style); | 410 return createFromFillLayers<CSSPropertyWebkitMaskPositionY>(style.maskLa
yers(), style); |
411 case CSSPropertyWebkitMaskSize: | 411 case CSSPropertyWebkitMaskSize: |
412 return createFromFillLayers<CSSPropertyWebkitMaskSize>(style->maskLayers
(), style); | 412 return createFromFillLayers<CSSPropertyWebkitMaskSize>(style.maskLayers(
), style); |
413 case CSSPropertyWebkitPerspective: | 413 case CSSPropertyWebkitPerspective: |
414 return createFromDouble(style->perspective()); | 414 return createFromDouble(style.perspective()); |
415 case CSSPropertyWebkitPerspectiveOriginX: | 415 case CSSPropertyWebkitPerspectiveOriginX: |
416 return createFromLength(style->perspectiveOriginX(), style); | 416 return createFromLength(style.perspectiveOriginX(), style); |
417 case CSSPropertyWebkitPerspectiveOriginY: | 417 case CSSPropertyWebkitPerspectiveOriginY: |
418 return createFromLength(style->perspectiveOriginY(), style); | 418 return createFromLength(style.perspectiveOriginY(), style); |
419 case CSSPropertyShapeInside: | 419 case CSSPropertyShapeInside: |
420 return AnimatableShapeValue::create(style->shapeInside()); | 420 return AnimatableShapeValue::create(style.shapeInside()); |
421 case CSSPropertyShapeOutside: | 421 case CSSPropertyShapeOutside: |
422 return AnimatableShapeValue::create(style->shapeOutside()); | 422 return AnimatableShapeValue::create(style.shapeOutside()); |
423 case CSSPropertyShapeMargin: | 423 case CSSPropertyShapeMargin: |
424 return createFromLength(style->shapeMargin(), style); | 424 return createFromLength(style.shapeMargin(), style); |
425 case CSSPropertyWebkitTextStrokeColor: | 425 case CSSPropertyWebkitTextStrokeColor: |
426 return createFromColor(property, style); | 426 return createFromColor(property, style); |
427 case CSSPropertyWebkitTransform: | 427 case CSSPropertyWebkitTransform: |
428 return AnimatableTransform::create(style->transform()); | 428 return AnimatableTransform::create(style.transform()); |
429 case CSSPropertyWebkitTransformOriginX: | 429 case CSSPropertyWebkitTransformOriginX: |
430 return createFromLength(style->transformOriginX(), style); | 430 return createFromLength(style.transformOriginX(), style); |
431 case CSSPropertyWebkitTransformOriginY: | 431 case CSSPropertyWebkitTransformOriginY: |
432 return createFromLength(style->transformOriginY(), style); | 432 return createFromLength(style.transformOriginY(), style); |
433 case CSSPropertyWebkitTransformOriginZ: | 433 case CSSPropertyWebkitTransformOriginZ: |
434 return createFromDouble(style->transformOriginZ()); | 434 return createFromDouble(style.transformOriginZ()); |
435 case CSSPropertyWidows: | 435 case CSSPropertyWidows: |
436 return createFromDouble(style->widows()); | 436 return createFromDouble(style.widows()); |
437 case CSSPropertyWidth: | 437 case CSSPropertyWidth: |
438 return createFromLength(style->width(), style); | 438 return createFromLength(style.width(), style); |
439 case CSSPropertyWordSpacing: | 439 case CSSPropertyWordSpacing: |
440 return createFromDouble(style->wordSpacing()); | 440 return createFromDouble(style.wordSpacing()); |
441 case CSSPropertyVisibility: | 441 case CSSPropertyVisibility: |
442 return AnimatableVisibility::create(style->visibility()); | 442 return AnimatableVisibility::create(style.visibility()); |
443 case CSSPropertyZIndex: | 443 case CSSPropertyZIndex: |
444 return createFromDouble(style->zIndex()); | 444 return createFromDouble(style.zIndex()); |
445 case CSSPropertyZoom: | 445 case CSSPropertyZoom: |
446 return createFromDouble(style->zoom()); | 446 return createFromDouble(style.zoom()); |
447 default: | 447 default: |
448 ASSERT_WITH_MESSAGE(!CSSAnimations::isAnimatableProperty(property), "Web
Animations not yet implemented: Create AnimatableValue from render style: %s",
getPropertyNameString(property).utf8().data()); | 448 ASSERT_WITH_MESSAGE(!CSSAnimations::isAnimatableProperty(property), "Web
Animations not yet implemented: Create AnimatableValue from render style: %s",
getPropertyNameString(property).utf8().data()); |
449 ASSERT_NOT_REACHED(); | 449 ASSERT_NOT_REACHED(); |
450 // This return value is to avoid a release crash if possible. | 450 // This return value is to avoid a release crash if possible. |
451 return AnimatableUnknown::create(0); | 451 return AnimatableUnknown::create(0); |
452 } | 452 } |
453 } | 453 } |
454 | 454 |
455 } // namespace WebCore | 455 } // namespace WebCore |
OLD | NEW |