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
#ifndef QQUICKANIMATEDPROPERTY_P_H
#define QQUICKANIMATEDPROPERTY_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QMap>
#include <QVariant>
#include <QtGui/private/qbezier_p.h>
#include "qquickgenerator_p.h"
QT_BEGIN_NAMESPACE
class Q_QUICKVECTORIMAGEGENERATOR_EXPORT QQuickAnimatedProperty
{
public:
struct Q_QUICKVECTORIMAGEGENERATOR_EXPORT PropertyAnimation {
enum Flag {
NoFlags = 0,
FreezeAtEnd = 1,
ReplacePreviousAnimations = 2,
};
QMap<int, QVariant> frames;
QMap<int, QBezier> easingPerFrame;
int subtype = 0;
int repeatCount = 1;
int startOffset = 0;
quint8 flags = NoFlags;
bool isConstant() const {
if (startOffset > 0)
return false;
for (const auto& frame : frames) {
if (frame != frames.first())
return false;
}
return true;
}
PropertyAnimation simplified() const;
};
QQuickAnimatedProperty(const QVariant &defaultValue)
: m_defaultValue(defaultValue)
{
}
bool isAnimated() const
{
return !m_animations.isEmpty();
}
QVariant defaultValue() const
{
return m_defaultValue;
}
void setDefaultValue(const QVariant &value)
{
m_defaultValue = value;
}
qsizetype animationCount() const
{
return m_animations.size();
}
const PropertyAnimation &animation(int index) const
{
return m_animations.at(index);
}
void addAnimation(const PropertyAnimation &animation)
{
if (m_animationGroups.isEmpty())
beginAnimationGroup();
m_animations.append(animation.simplified());
}
qsizetype animationGroupCount() const
{
return m_animationGroups.size();
}
int animationGroup(int index) const
{
return m_animationGroups.at(index);
}
void beginAnimationGroup()
{
m_animationGroups.append(m_animations.size());
}
QString timelineReferenceId() const
{
return m_timelineReferenceId;
}
void setTimelineReferenceId(const QString &id)
{
m_timelineReferenceId = id;
}
private:
QVariant m_defaultValue;
QList<PropertyAnimation> m_animations;
QList<int> m_animationGroups;
QString m_timelineReferenceId;
};
QT_END_NAMESPACE
#endif // QQUICKANIMATEDPROPERTY_P_H