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 527 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
538 return; | 538 return; |
539 if (!to) | 539 if (!to) |
540 to = CSSAnimatableValueFactory::create(id, style); | 540 to = CSSAnimatableValueFactory::create(id, style); |
541 | 541 |
542 RefPtr<AnimatableValue> from = CSSAnimatableValueFactory::create(id, oldStyl
e); | 542 RefPtr<AnimatableValue> from = CSSAnimatableValueFactory::create(id, oldStyl
e); |
543 // If we have multiple transitions on the same property, we will use the | 543 // If we have multiple transitions on the same property, we will use the |
544 // last one since we iterate over them in order. | 544 // last one since we iterate over them in order. |
545 if (AnimatableValue::usesDefaultInterpolation(to.get(), from.get())) | 545 if (AnimatableValue::usesDefaultInterpolation(to.get(), from.get())) |
546 return; | 546 return; |
547 | 547 |
| 548 Timing timing; |
| 549 bool isPaused; |
| 550 RefPtr<TimingFunction> timingFunction = timingFromAnimationData(anim, timing
, isPaused); |
| 551 ASSERT(!isPaused); |
| 552 // Note that the backwards part is required for delay to work. |
| 553 timing.fillMode = Timing::FillModeBoth; |
| 554 |
548 KeyframeEffectModel::KeyframeVector keyframes; | 555 KeyframeEffectModel::KeyframeVector keyframes; |
549 | 556 |
550 RefPtrWillBeRawPtr<Keyframe> startKeyframe = Keyframe::create(); | 557 RefPtrWillBeRawPtr<Keyframe> startKeyframe = Keyframe::create(); |
551 startKeyframe->setPropertyValue(id, from.get()); | 558 startKeyframe->setPropertyValue(id, from.get()); |
552 startKeyframe->setOffset(0); | 559 startKeyframe->setOffset(0); |
| 560 startKeyframe->setEasing(timingFunction); |
553 keyframes.append(startKeyframe); | 561 keyframes.append(startKeyframe); |
554 | 562 |
555 RefPtrWillBeRawPtr<Keyframe> endKeyframe = Keyframe::create(); | 563 RefPtrWillBeRawPtr<Keyframe> endKeyframe = Keyframe::create(); |
556 endKeyframe->setPropertyValue(id, to.get()); | 564 endKeyframe->setPropertyValue(id, to.get()); |
557 endKeyframe->setOffset(1); | 565 endKeyframe->setOffset(1); |
558 keyframes.append(endKeyframe); | 566 keyframes.append(endKeyframe); |
559 | 567 |
560 RefPtrWillBeRawPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create
(keyframes); | 568 RefPtrWillBeRawPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create
(keyframes); |
561 | 569 |
562 Timing timing; | |
563 bool isPaused; | |
564 RefPtr<TimingFunction> timingFunction = timingFromAnimationData(anim, timing
, isPaused); | |
565 ASSERT(!isPaused); | |
566 timing.timingFunction = timingFunction; | |
567 // Note that the backwards part is required for delay to work. | |
568 timing.fillMode = Timing::FillModeBoth; | |
569 | |
570 update->startTransition(id, from.get(), to.get(), InertAnimation::create(eff
ect, timing, isPaused)); | 570 update->startTransition(id, from.get(), to.get(), InertAnimation::create(eff
ect, timing, isPaused)); |
571 ASSERT(!element->activeAnimations() || !element->activeAnimations()->isAnima
tionStyleChange()); | 571 ASSERT(!element->activeAnimations() || !element->activeAnimations()->isAnima
tionStyleChange()); |
572 } | 572 } |
573 | 573 |
574 void CSSAnimations::calculateTransitionUpdate(CSSAnimationUpdate* update, const
Element* element, const RenderStyle& style) | 574 void CSSAnimations::calculateTransitionUpdate(CSSAnimationUpdate* update, const
Element* element, const RenderStyle& style) |
575 { | 575 { |
576 if (!element) | 576 if (!element) |
577 return; | 577 return; |
578 | 578 |
579 ActiveAnimations* activeAnimations = element->activeAnimations(); | 579 ActiveAnimations* activeAnimations = element->activeAnimations(); |
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
890 CSSPropertyID id = convertToCSSPropertyID(i); | 890 CSSPropertyID id = convertToCSSPropertyID(i); |
891 if (isAnimatableProperty(id)) | 891 if (isAnimatableProperty(id)) |
892 properties.append(id); | 892 properties.append(id); |
893 } | 893 } |
894 propertyShorthand = StylePropertyShorthand(CSSPropertyInvalid, propertie
s.begin(), properties.size()); | 894 propertyShorthand = StylePropertyShorthand(CSSPropertyInvalid, propertie
s.begin(), properties.size()); |
895 } | 895 } |
896 return propertyShorthand; | 896 return propertyShorthand; |
897 } | 897 } |
898 | 898 |
899 } // namespace WebCore | 899 } // namespace WebCore |
OLD | NEW |