Revision control

++ // Copyright (C) 2025 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
++ // Qt-Security score:significant reason:default
++
++
++ #include "qsvgcsseasing_p.h"
++ #include <QtCore/qmath.h>
++ #include <QtCore/qminmax.h>
++
++ QT_BEGIN_NAMESPACE
++
++ QSvgCssEasing::QSvgCssEasing(QSvgCssValues::EasingFunction easingFunction)
++ : m_easingFunction(easingFunction)
++ {
++ }
++
++ QSvgCssEasing::~QSvgCssEasing()
++ = default;
++
++ QSvgCssValues::EasingFunction QSvgCssEasing::easingFunction() const
++ {
++ return m_easingFunction;
++ }
++
++ QSvgCssCubicBezierEasing::QSvgCssCubicBezierEasing(QSvgCssValues::EasingFunction easingFunction,
++ QPointF c1, QPointF c2)
++ : QSvgCssEasing(easingFunction)
++ , m_c1(c1)
++ , m_c2(c2)
++ {
++ m_easingCurve.setType(QEasingCurve::BezierSpline);
++ m_easingCurve.addCubicBezierSegment(c1, c2, QPointF(1, 1));
++ }
++
++ QSvgCssCubicBezierEasing::~QSvgCssCubicBezierEasing()
++ = default;
++
++ qreal QSvgCssCubicBezierEasing::progress(qreal t) const
++ {
++ return m_easingCurve.valueForProgress(t);
++ }
++
++ QPointF QSvgCssCubicBezierEasing::c1() const
++ {
++ return m_c1;
++ }
++
++ QPointF QSvgCssCubicBezierEasing::c2() const
++ {
++ return m_c2;
++ }
++
++ QSvgCssStepsEasing::QSvgCssStepsEasing(quint32 stops, QSvgCssValues::StepPosition position)
++ : QSvgCssEasing(QSvgCssValues::EasingFunction::Steps)
++ , m_stops(qMax(quint32(1), stops))
++ , m_stepPosition(position)
++ {
++ }
++
++ QSvgCssStepsEasing::~QSvgCssStepsEasing()
++ = default;
++
++ qreal QSvgCssStepsEasing::progress(qreal t) const
++ {
++ const qreal incr = 1.0 / m_stops;
++ const qreal interval = (m_stepPosition == QSvgCssValues::StepPosition::JumpEnd) ?
++ qFloor(t / incr) : qCeil(t / incr);
++
++ return interval * incr;
++ }
++
++ QSvgCssValues::StepPosition QSvgCssStepsEasing::stepPosition() const
++ {
++ return m_stepPosition;
++ }
++
++ quint32 QSvgCssStepsEasing::stops() const
++ {
++ return m_stops;
++ }
++
++ QT_END_NAMESPACE