| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "config.h" | 5 #include "config.h" |
| 6 #include "core/animation/StringKeyframe.h" | 6 #include "core/animation/StringKeyframe.h" |
| 7 | 7 |
| 8 #include "core/animation/AngleSVGInterpolation.h" | 8 #include "core/animation/AngleSVGInterpolation.h" |
| 9 #include "core/animation/CSSValueInterpolationType.h" | 9 #include "core/animation/CSSValueInterpolationType.h" |
| 10 #include "core/animation/ColorStyleInterpolation.h" | 10 #include "core/animation/ColorStyleInterpolation.h" |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 const Vector<const InterpolationType*>* applicableTypesForProperty(CSSPropertyID
property) | 151 const Vector<const InterpolationType*>* applicableTypesForProperty(CSSPropertyID
property) |
| 152 { | 152 { |
| 153 using ApplicableTypesMap = HashMap<CSSPropertyID, const Vector<const Interpo
lationType*>*>; | 153 using ApplicableTypesMap = HashMap<CSSPropertyID, const Vector<const Interpo
lationType*>*>; |
| 154 DEFINE_STATIC_LOCAL(ApplicableTypesMap, applicableTypesMap, ()); | 154 DEFINE_STATIC_LOCAL(ApplicableTypesMap, applicableTypesMap, ()); |
| 155 auto entry = applicableTypesMap.find(property); | 155 auto entry = applicableTypesMap.find(property); |
| 156 if (entry != applicableTypesMap.end()) | 156 if (entry != applicableTypesMap.end()) |
| 157 return entry->value; | 157 return entry->value; |
| 158 | 158 |
| 159 auto applicableTypes = new Vector<const InterpolationType*>(); | 159 auto applicableTypes = new Vector<const InterpolationType*>(); |
| 160 switch (property) { | 160 switch (property) { |
| 161 case CSSPropertyBaselineShift: |
| 162 case CSSPropertyBorderBottomWidth: |
| 163 case CSSPropertyBorderLeftWidth: |
| 164 case CSSPropertyBorderRightWidth: |
| 165 case CSSPropertyBorderTopWidth: |
| 166 case CSSPropertyBottom: |
| 167 case CSSPropertyCx: |
| 168 case CSSPropertyCy: |
| 169 case CSSPropertyFlexBasis: |
| 170 case CSSPropertyHeight: |
| 161 case CSSPropertyLeft: | 171 case CSSPropertyLeft: |
| 172 case CSSPropertyLetterSpacing: |
| 173 case CSSPropertyMarginBottom: |
| 174 case CSSPropertyMarginLeft: |
| 175 case CSSPropertyMarginRight: |
| 176 case CSSPropertyMarginTop: |
| 177 case CSSPropertyMaxHeight: |
| 178 case CSSPropertyMaxWidth: |
| 179 case CSSPropertyMinHeight: |
| 180 case CSSPropertyMinWidth: |
| 181 case CSSPropertyMotionOffset: |
| 182 case CSSPropertyOutlineOffset: |
| 183 case CSSPropertyOutlineWidth: |
| 184 case CSSPropertyPaddingBottom: |
| 185 case CSSPropertyPaddingLeft: |
| 186 case CSSPropertyPaddingRight: |
| 187 case CSSPropertyPaddingTop: |
| 188 case CSSPropertyPerspective: |
| 189 case CSSPropertyR: |
| 190 case CSSPropertyRight: |
| 191 case CSSPropertyRx: |
| 192 case CSSPropertyRy: |
| 193 case CSSPropertyShapeMargin: |
| 194 case CSSPropertyStrokeDashoffset: |
| 195 case CSSPropertyStrokeWidth: |
| 196 case CSSPropertyTop: |
| 197 case CSSPropertyVerticalAlign: |
| 198 case CSSPropertyWebkitBorderHorizontalSpacing: |
| 199 case CSSPropertyWebkitBorderVerticalSpacing: |
| 200 case CSSPropertyWebkitColumnGap: |
| 201 case CSSPropertyWebkitColumnRuleWidth: |
| 202 case CSSPropertyWebkitColumnWidth: |
| 203 case CSSPropertyWebkitPerspectiveOriginX: |
| 204 case CSSPropertyWebkitPerspectiveOriginY: |
| 205 case CSSPropertyWebkitTransformOriginX: |
| 206 case CSSPropertyWebkitTransformOriginY: |
| 207 case CSSPropertyWebkitTransformOriginZ: |
| 208 case CSSPropertyWidth: |
| 209 case CSSPropertyWordSpacing: |
| 210 case CSSPropertyX: |
| 211 case CSSPropertyY: |
| 162 applicableTypes->append(new LengthInterpolationType(property)); | 212 applicableTypes->append(new LengthInterpolationType(property)); |
| 163 break; | 213 break; |
| 164 default: | 214 default: |
| 165 // TODO(alancutter): Support all interpolable CSS properties here so we
can stop falling back to the old StyleInterpolation implementation. | 215 // TODO(alancutter): Support all interpolable CSS properties here so we
can stop falling back to the old StyleInterpolation implementation. |
| 166 if (CSSPropertyMetadata::isInterpolableProperty(property)) { | 216 if (CSSPropertyMetadata::isInterpolableProperty(property)) { |
| 167 delete applicableTypes; | 217 delete applicableTypes; |
| 168 applicableTypesMap.add(property, nullptr); | 218 applicableTypesMap.add(property, nullptr); |
| 169 return nullptr; | 219 return nullptr; |
| 170 } | 220 } |
| 171 break; | 221 break; |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 return nullptr; | 273 return nullptr; |
| 224 } | 274 } |
| 225 | 275 |
| 226 if (fromCSSValue->isCSSWideKeyword() || toCSSValue->isCSSWideKeyword()) | 276 if (fromCSSValue->isCSSWideKeyword() || toCSSValue->isCSSWideKeyword()) |
| 227 return createLegacyStyleInterpolation(property, end, element, baseStyle)
; | 277 return createLegacyStyleInterpolation(property, end, element, baseStyle)
; |
| 228 | 278 |
| 229 switch (property) { | 279 switch (property) { |
| 230 case CSSPropertyLineHeight: | 280 case CSSPropertyLineHeight: |
| 231 if (LengthStyleInterpolation::canCreateFrom(*fromCSSValue) && LengthStyl
eInterpolation::canCreateFrom(*toCSSValue)) | 281 if (LengthStyleInterpolation::canCreateFrom(*fromCSSValue) && LengthStyl
eInterpolation::canCreateFrom(*toCSSValue)) |
| 232 return LengthStyleInterpolation::create(*fromCSSValue, *toCSSValue,
property, RangeNonNegative); | 282 return LengthStyleInterpolation::create(*fromCSSValue, *toCSSValue,
property, RangeNonNegative); |
| 233 | |
| 234 if (DoubleStyleInterpolation::canCreateFrom(*fromCSSValue) && DoubleStyl
eInterpolation::canCreateFrom(*toCSSValue)) | 283 if (DoubleStyleInterpolation::canCreateFrom(*fromCSSValue) && DoubleStyl
eInterpolation::canCreateFrom(*toCSSValue)) |
| 235 return DoubleStyleInterpolation::create(*fromCSSValue, *toCSSValue,
property, true, RangeNonNegative); | 284 return DoubleStyleInterpolation::create(*fromCSSValue, *toCSSValue,
property, true, RangeNonNegative); |
| 236 | 285 |
| 237 break; | 286 break; |
| 238 case CSSPropertyBorderBottomWidth: | 287 |
| 239 case CSSPropertyBorderLeftWidth: | |
| 240 case CSSPropertyBorderRightWidth: | |
| 241 case CSSPropertyBorderTopWidth: | |
| 242 case CSSPropertyFlexBasis: | |
| 243 case CSSPropertyFontSize: | 288 case CSSPropertyFontSize: |
| 244 case CSSPropertyHeight: | 289 if (LengthStyleInterpolation::canCreateFrom(*fromCSSValue) && LengthStyl
eInterpolation::canCreateFrom(*toCSSValue)) |
| 245 case CSSPropertyMaxHeight: | 290 return LengthStyleInterpolation::create(*fromCSSValue, *toCSSValue,
property, RangeNonNegative); |
| 246 case CSSPropertyMaxWidth: | |
| 247 case CSSPropertyMinHeight: | |
| 248 case CSSPropertyMinWidth: | |
| 249 case CSSPropertyOutlineWidth: | |
| 250 case CSSPropertyPaddingBottom: | |
| 251 case CSSPropertyPaddingLeft: | |
| 252 case CSSPropertyPaddingRight: | |
| 253 case CSSPropertyPaddingTop: | |
| 254 case CSSPropertyPerspective: | |
| 255 case CSSPropertyR: | |
| 256 case CSSPropertyRx: | |
| 257 case CSSPropertyRy: | |
| 258 case CSSPropertyShapeMargin: | |
| 259 case CSSPropertyStrokeWidth: | |
| 260 case CSSPropertyWebkitBorderHorizontalSpacing: | |
| 261 case CSSPropertyWebkitBorderVerticalSpacing: | |
| 262 case CSSPropertyWebkitColumnGap: | |
| 263 case CSSPropertyWebkitColumnWidth: | |
| 264 case CSSPropertyWidth: | |
| 265 range = RangeNonNegative; | |
| 266 // Fall through | |
| 267 case CSSPropertyBaselineShift: | |
| 268 case CSSPropertyBottom: | |
| 269 case CSSPropertyCx: | |
| 270 case CSSPropertyCy: | |
| 271 case CSSPropertyLeft: | |
| 272 case CSSPropertyLetterSpacing: | |
| 273 case CSSPropertyMarginBottom: | |
| 274 case CSSPropertyMarginLeft: | |
| 275 case CSSPropertyMarginRight: | |
| 276 case CSSPropertyMarginTop: | |
| 277 case CSSPropertyMotionOffset: | |
| 278 case CSSPropertyOutlineOffset: | |
| 279 case CSSPropertyRight: | |
| 280 case CSSPropertyStrokeDashoffset: | |
| 281 case CSSPropertyTop: | |
| 282 case CSSPropertyVerticalAlign: | |
| 283 case CSSPropertyWordSpacing: | |
| 284 case CSSPropertyWebkitColumnRuleWidth: | |
| 285 case CSSPropertyWebkitPerspectiveOriginX: | |
| 286 case CSSPropertyWebkitPerspectiveOriginY: | |
| 287 case CSSPropertyWebkitTransformOriginX: | |
| 288 case CSSPropertyWebkitTransformOriginY: | |
| 289 case CSSPropertyWebkitTransformOriginZ: | |
| 290 case CSSPropertyX: | |
| 291 case CSSPropertyY: | |
| 292 if (LengthStyleInterpolation::canCreateFrom(*fromCSSValue, property) &&
LengthStyleInterpolation::canCreateFrom(*toCSSValue, property)) | |
| 293 return LengthStyleInterpolation::create(*fromCSSValue, *toCSSValue,
property, range); | |
| 294 | 291 |
| 295 // FIXME: Handle keywords e.g. 'smaller', 'larger'. | 292 // FIXME: Handle keywords e.g. 'smaller', 'larger'. |
| 296 if (property == CSSPropertyFontSize) | 293 if (property == CSSPropertyFontSize) |
| 297 return createLegacyStyleInterpolation(property, end, element, baseSt
yle); | 294 return createLegacyStyleInterpolation(property, end, element, baseSt
yle); |
| 298 | 295 |
| 299 // FIXME: Handle keywords e.g. 'baseline', 'sub'. | 296 // FIXME: Handle keywords e.g. 'baseline', 'sub'. |
| 300 if (property == CSSPropertyBaselineShift) | 297 if (property == CSSPropertyBaselineShift) |
| 301 return createLegacyStyleInterpolation(property, end, element, baseSt
yle); | 298 return createLegacyStyleInterpolation(property, end, element, baseSt
yle); |
| 302 | 299 |
| 303 break; | 300 break; |
| 301 |
| 304 case CSSPropertyOrphans: | 302 case CSSPropertyOrphans: |
| 305 case CSSPropertyWidows: | 303 case CSSPropertyWidows: |
| 306 case CSSPropertyZIndex: | 304 case CSSPropertyZIndex: |
| 307 case CSSPropertyWebkitColumnCount: | 305 case CSSPropertyWebkitColumnCount: |
| 308 case CSSPropertyShapeImageThreshold: | 306 case CSSPropertyShapeImageThreshold: |
| 309 case CSSPropertyFillOpacity: | 307 case CSSPropertyFillOpacity: |
| 310 case CSSPropertyFloodOpacity: | 308 case CSSPropertyFloodOpacity: |
| 311 case CSSPropertyFontSizeAdjust: | 309 case CSSPropertyFontSizeAdjust: |
| 312 case CSSPropertyOpacity: | 310 case CSSPropertyOpacity: |
| 313 case CSSPropertyStopOpacity: | 311 case CSSPropertyStopOpacity: |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 580 RefPtrWillBeRawPtr<SVGPropertyBase> fromValue = attribute->currentValueBase(
)->cloneForAnimation(m_value); | 578 RefPtrWillBeRawPtr<SVGPropertyBase> fromValue = attribute->currentValueBase(
)->cloneForAnimation(m_value); |
| 581 RefPtrWillBeRawPtr<SVGPropertyBase> toValue = attribute->currentValueBase()-
>cloneForAnimation(toSVGPropertySpecificKeyframe(end).value()); | 579 RefPtrWillBeRawPtr<SVGPropertyBase> toValue = attribute->currentValueBase()-
>cloneForAnimation(toSVGPropertySpecificKeyframe(end).value()); |
| 582 | 580 |
| 583 if (!fromValue || !toValue) | 581 if (!fromValue || !toValue) |
| 584 return nullptr; | 582 return nullptr; |
| 585 | 583 |
| 586 return createSVGInterpolation(fromValue.get(), toValue.get(), attribute.get(
)); | 584 return createSVGInterpolation(fromValue.get(), toValue.get(), attribute.get(
)); |
| 587 } | 585 } |
| 588 | 586 |
| 589 } // namespace blink | 587 } // namespace blink |
| OLD | NEW |