void SVGAnimationElement::updateAnimation(float percent, unsigned repeatCount, SVGSMILElement* resultElement) { if (!m_animationValid) return; float effectivePercent; CalcMode calcMode = this->calcMode(); AnimationMode animationMode = this->animationMode(); if (animationMode == ValuesAnimation) { String from; String to; currentValuesForValuesAnimation(percent, effectivePercent, from, to); if (from != m_lastValuesAnimationFrom || to != m_lastValuesAnimationTo) { m_animationValid = calculateFromAndToValues(from, to); if (!m_animationValid) return; m_lastValuesAnimationFrom = from; m_lastValuesAnimationTo = to; } } else if (!m_keyPoints.isEmpty() && calcMode != CalcModePaced) effectivePercent = calculatePercentFromKeyPoints(percent); else if (m_keyPoints.isEmpty() && calcMode == CalcModeSpline && m_keyTimes.size() > 1) effectivePercent = calculatePercentForSpline(percent, calculateKeyTimesIndex(percent)); else if (animationMode == FromToAnimation || animationMode == ToAnimation) effectivePercent = calculatePercentForFromTo(percent); else effectivePercent = percent; calculateAnimatedValue(effectivePercent, repeatCount, resultElement); }
void SVGAnimationElement::updateAnimation(float percent, unsigned repeat, SVGSMILElement *resultElement) { if (!m_animationValid) { return; } float effectivePercent; if (animationMode() == ValuesAnimation) { String from; String to; currentValuesForValuesAnimation(percent, effectivePercent, from, to); if (from != m_lastValuesAnimationFrom || to != m_lastValuesAnimationTo) { m_animationValid = calculateFromAndToValues(from, to); if (!m_animationValid) { return; } m_lastValuesAnimationFrom = from; m_lastValuesAnimationTo = to; } } else if (!m_keyPoints.isEmpty() && calcMode() != CalcModePaced) { effectivePercent = calculatePercentFromKeyPoints(percent); } else { effectivePercent = percent; } calculateAnimatedValue(effectivePercent, repeat, resultElement); }