| 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 |