44void QSvgAbstractAnimation::evaluateAnimation(qreal elapsedTime)
46 if (m_duration == 0 || m_start > elapsedTime)
49 qreal fractionOfTotalTime = (elapsedTime - m_start) / m_duration;
51 if (m_iterationCount >= 0 && m_iterationCount < fractionOfTotalTime)
59 qreal fractionOfCurrentIterationTime = fractionOfTotalTime - std::trunc(fractionOfTotalTime);
61 for (
const QSvgAbstractAnimatedProperty *animProperty : std::as_const(m_properties)) {
62 const QList<qreal> keyFrames = animProperty->keyFrames();
63 for (
int i = 1; i < keyFrames.size(); i++) {
64 qreal from = keyFrames.at(i - 1);
65 qreal to = keyFrames.at(i);
66 if (fractionOfCurrentIterationTime >= from && fractionOfCurrentIterationTime < to) {
67 qreal currFraction = (fractionOfCurrentIterationTime - from) / (to - from);
68 const QSvgEasingInterface *easing = animProperty->easingAt(i - 1);
69 qreal effectiveFraction = 0;
71 effectiveFraction = easing->progress(currFraction);
73 effectiveFraction = m_easing->progress(currFraction);
74 animProperty->interpolate(i, effectiveFraction);