36void QSvgAbstractAnimation::evaluateAnimation(qreal elapsedTime)
38 if (m_duration == 0 || m_start > elapsedTime)
41 qreal fractionOfTotalTime = (elapsedTime - m_start) / m_duration;
43 if (m_iterationCount >= 0 && m_iterationCount < fractionOfTotalTime)
51 qreal fractionOfCurrentIterationTime = fractionOfTotalTime - std::trunc(fractionOfTotalTime);
53 for (
const QSvgAbstractAnimatedProperty *animProperty : std::as_const(m_properties)) {
54 const QList<qreal> keyFrames = animProperty->keyFrames();
55 for (
int i = 1; i < keyFrames.size(); i++) {
56 qreal from = keyFrames.at(i - 1);
57 qreal to = keyFrames.at(i);
58 if (fractionOfCurrentIterationTime >= from && fractionOfCurrentIterationTime < to) {
59 qreal currFraction = (fractionOfCurrentIterationTime - from) / (to - from);
60 const QSvgEasingInterface *easing = animProperty->easingAt(i - 1);
61 qreal effectiveFraction = 0;
63 effectiveFraction = easing->progress(currFraction);
65 effectiveFraction = m_easing->progress(currFraction);
66 animProperty->interpolate(i, effectiveFraction);