Revision control

Copy as Markdown

// 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