Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Side by Side Diff: Source/core/animation/css/CSSAnimations.cpp

Issue 1329843002: Support per property CSS Animation stacks (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Lint Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/animation/css/CSSAnimations.h ('k') | Source/core/css/resolver/StyleResolver.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 594 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 m_transitions.clear(); 605 m_transitions.clear();
606 clearPendingUpdate(); 606 clearPendingUpdate();
607 } 607 }
608 608
609 void CSSAnimations::calculateAnimationActiveInterpolations(CSSAnimationUpdate& u pdate, const Element* animatingElement, double timelineCurrentTime) 609 void CSSAnimations::calculateAnimationActiveInterpolations(CSSAnimationUpdate& u pdate, const Element* animatingElement, double timelineCurrentTime)
610 { 610 {
611 ElementAnimations* elementAnimations = animatingElement ? animatingElement-> elementAnimations() : nullptr; 611 ElementAnimations* elementAnimations = animatingElement ? animatingElement-> elementAnimations() : nullptr;
612 AnimationStack* animationStack = elementAnimations ? &elementAnimations->def aultStack() : nullptr; 612 AnimationStack* animationStack = elementAnimations ? &elementAnimations->def aultStack() : nullptr;
613 613
614 if (update.newAnimations().isEmpty() && update.suppressedAnimations().isEmpt y()) { 614 if (update.newAnimations().isEmpty() && update.suppressedAnimations().isEmpt y()) {
615 ActiveInterpolationMap activeInterpolationsForAnimations(AnimationStack: :activeInterpolations(animationStack, 0, 0, KeyframeEffect::DefaultPriority, tim elineCurrentTime)); 615 ActiveInterpolationsMap activeInterpolationsForAnimations(AnimationStack ::activeInterpolations(animationStack, 0, 0, KeyframeEffect::DefaultPriority, ti melineCurrentTime));
616 update.adoptActiveInterpolationsForAnimations(activeInterpolationsForAni mations); 616 update.adoptActiveInterpolationsForAnimations(activeInterpolationsForAni mations);
617 return; 617 return;
618 } 618 }
619 619
620 HeapVector<Member<InertEffect>> newEffects; 620 HeapVector<Member<InertEffect>> newEffects;
621 for (const auto& newAnimation : update.newAnimations()) 621 for (const auto& newAnimation : update.newAnimations())
622 newEffects.append(newAnimation.effect.get()); 622 newEffects.append(newAnimation.effect.get());
623 for (const auto& updatedAnimation : update.animationsWithUpdates()) 623 for (const auto& updatedAnimation : update.animationsWithUpdates())
624 newEffects.append(updatedAnimation.effect.get()); // Animations with upd ates use a temporary InertEffect for the current frame. 624 newEffects.append(updatedAnimation.effect.get()); // Animations with upd ates use a temporary InertEffect for the current frame.
625 625
626 ActiveInterpolationMap activeInterpolationsForAnimations(AnimationStack::act iveInterpolations(animationStack, &newEffects, &update.suppressedAnimations(), K eyframeEffect::DefaultPriority, timelineCurrentTime)); 626 ActiveInterpolationsMap activeInterpolationsForAnimations(AnimationStack::ac tiveInterpolations(animationStack, &newEffects, &update.suppressedAnimations(), KeyframeEffect::DefaultPriority, timelineCurrentTime));
627 update.adoptActiveInterpolationsForAnimations(activeInterpolationsForAnimati ons); 627 update.adoptActiveInterpolationsForAnimations(activeInterpolationsForAnimati ons);
628 } 628 }
629 629
630 void CSSAnimations::calculateTransitionActiveInterpolations(CSSAnimationUpdate& update, const Element* animatingElement, double timelineCurrentTime) 630 void CSSAnimations::calculateTransitionActiveInterpolations(CSSAnimationUpdate& update, const Element* animatingElement, double timelineCurrentTime)
631 { 631 {
632 ElementAnimations* elementAnimations = animatingElement ? animatingElement-> elementAnimations() : nullptr; 632 ElementAnimations* elementAnimations = animatingElement ? animatingElement-> elementAnimations() : nullptr;
633 AnimationStack* animationStack = elementAnimations ? &elementAnimations->def aultStack() : nullptr; 633 AnimationStack* animationStack = elementAnimations ? &elementAnimations->def aultStack() : nullptr;
634 634
635 ActiveInterpolationMap activeInterpolationsForTransitions; 635 ActiveInterpolationsMap activeInterpolationsForTransitions;
636 if (update.newTransitions().isEmpty() && update.cancelledTransitions().isEmp ty()) { 636 if (update.newTransitions().isEmpty() && update.cancelledTransitions().isEmp ty()) {
637 activeInterpolationsForTransitions = AnimationStack::activeInterpolation s(animationStack, 0, 0, KeyframeEffect::TransitionPriority, timelineCurrentTime) ; 637 activeInterpolationsForTransitions = AnimationStack::activeInterpolation s(animationStack, 0, 0, KeyframeEffect::TransitionPriority, timelineCurrentTime) ;
638 } else { 638 } else {
639 HeapVector<Member<InertEffect>> newTransitions; 639 HeapVector<Member<InertEffect>> newTransitions;
640 for (const auto& entry : update.newTransitions()) 640 for (const auto& entry : update.newTransitions())
641 newTransitions.append(entry.value.effect.get()); 641 newTransitions.append(entry.value.effect.get());
642 642
643 HeapHashSet<Member<const Animation>> cancelledAnimations; 643 HeapHashSet<Member<const Animation>> cancelledAnimations;
644 if (!update.cancelledTransitions().isEmpty()) { 644 if (!update.cancelledTransitions().isEmpty()) {
645 ASSERT(elementAnimations); 645 ASSERT(elementAnimations);
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 } 793 }
794 794
795 DEFINE_TRACE(CSSAnimations) 795 DEFINE_TRACE(CSSAnimations)
796 { 796 {
797 visitor->trace(m_transitions); 797 visitor->trace(m_transitions);
798 visitor->trace(m_pendingUpdate); 798 visitor->trace(m_pendingUpdate);
799 visitor->trace(m_animations); 799 visitor->trace(m_animations);
800 } 800 }
801 801
802 } // namespace blink 802 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/animation/css/CSSAnimations.h ('k') | Source/core/css/resolver/StyleResolver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698