void CompositeAnimation::styleAvailable() { if (m_numStyleAvailableWaiters == 0) return; // We have to go through animations in the order in which they appear in // the style, because order matters for additivity. Vector<KeyframeAnimation*> animations(m_keyframeAnimations.size()); AnimationNameMap::const_iterator kfend = m_keyframeAnimations.end(); size_t i = 0; for (AnimationNameMap::const_iterator it = m_keyframeAnimations.begin(); it != kfend; ++it) { KeyframeAnimation* anim = it->second; // We can't just insert based on anim->index() because invalid animations don't // make it into the hash. animations[i++] = anim; } if (animations.size() > 1) std::stable_sort(animations.begin(), animations.end(), compareAnimationIndices); for (i = 0; i < animations.size(); ++i) { KeyframeAnimation* anim = animations[i]; if (anim && anim->waitingForStyleAvailable()) anim->updateStateMachine(AnimationBase::STATE_INPUT_STYLE_AVAILABLE, -1); } CSSPropertyTransitionsMap::const_iterator end = m_transitions.end(); for (CSSPropertyTransitionsMap::const_iterator it = m_transitions.begin(); it != end; ++it) { ImplicitAnimation* anim = it->second; if (anim && anim->waitingForStyleAvailable()) anim->updateStateMachine(AnimationBase::STATE_INPUT_STYLE_AVAILABLE, -1); } }
void CompositeAnimation::setTransitionStartTime(int property, double t) { // Set the start time for given property transition CSSPropertyTransitionsMap::const_iterator end = m_transitions.end(); for (CSSPropertyTransitionsMap::const_iterator it = m_transitions.begin(); it != end; ++it) { ImplicitAnimation* anim = it->second; if (anim && anim->waitingForStartTime() && anim->animatingProperty() == property) anim->updateStateMachine(AnimationBase::STATE_INPUT_START_TIME_SET, t); } }