aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickvectorimage/generator
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>2025-12-23 09:06:20 +0100
committerEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>2025-12-23 10:02:43 +0100
commita7217d9b0d9f5bccd64474f12d6ce40fc11f7efe (patch)
tree912f66684436144bd9951960057e647e21b1c184 /src/quickvectorimage/generator
parent8427168adcc5e67579e3cb458d2f0b10d305a546 (diff)
VectorImage: Add environment variable to change duration of animationsHEADdev
This adds QT_QUICKVECTORIMAGE_TIME_DILATION which can be used to stretch out or speed up any animations in the vector image. This is useful for debugging animation errors. Pick-to: 6.11 Fixes: QTBUG-142201 Change-Id: I73b47769c8b21ba794d439980d516970ef80688d Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Diffstat (limited to 'src/quickvectorimage/generator')
-rw-r--r--src/quickvectorimage/generator/qquickqmlgenerator.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/quickvectorimage/generator/qquickqmlgenerator.cpp b/src/quickvectorimage/generator/qquickqmlgenerator.cpp
index 21c423eaf7..928b1f34ec 100644
--- a/src/quickvectorimage/generator/qquickqmlgenerator.cpp
+++ b/src/quickvectorimage/generator/qquickqmlgenerator.cpp
@@ -635,6 +635,13 @@ void QQuickQmlGenerator::generateEasing(const QQuickAnimatedProperty::PropertyAn
}
}
+static int processAnimationTime(int time)
+{
+ static qreal multiplier = qreal(qEnvironmentVariable("QT_QUICKVECTORIMAGE_TIME_DILATION", QStringLiteral("1.0"))
+ .toDouble());
+ return std::round(multiplier * time);
+}
+
void QQuickQmlGenerator::generatePropertyAnimation(const QQuickAnimatedProperty &property,
const QString &targetName,
const QString &propertyName,
@@ -668,7 +675,7 @@ void QQuickQmlGenerator::generatePropertyAnimation(const QQuickAnimatedProperty
stream() << "SequentialAnimation {";
m_indentLevel++;
- const int startOffset = animation.startOffset;
+ const int startOffset = processAnimationTime(animation.startOffset);
if (startOffset > 0)
stream() << "PauseAnimation { duration: " << startOffset << " }";
@@ -685,7 +692,7 @@ void QQuickQmlGenerator::generatePropertyAnimation(const QQuickAnimatedProperty
QVariant previousValue;
for (auto it = animation.frames.constBegin(); it != animation.frames.constEnd(); ++it) {
const int time = it.key();
- const int frameTime = time - previousTime;
+ const int frameTime = processAnimationTime(time - previousTime);
const QVariant &value = it.value();
if (previousValue.isValid() && previousValue == value) {
@@ -1144,7 +1151,7 @@ void QQuickQmlGenerator::generateAnimateMotionPath(const QString &targetName,
count = 0;
for (auto it = animation.frames.constBegin(); it != animation.frames.constEnd(); ++it, ++count) {
const int time = it.key();
- const int frameTime = time - previousTime;
+ const int frameTime = processAnimationTime(time - previousTime);
const QPainterPath path = it.value().value<QPainterPath>();
if (frameTime > 0) {
if (path.isEmpty()) {
@@ -1281,7 +1288,7 @@ void QQuickQmlGenerator::generateAnimateTransform(const QString &targetName, con
stream() << "SequentialAnimation {";
m_indentLevel++;
- const int startOffset = firstAnimation.startOffset;
+ const int startOffset = processAnimationTime(firstAnimation.startOffset);
if (startOffset > 0)
stream() << "PauseAnimation { duration: " << startOffset << " }";
@@ -1327,7 +1334,7 @@ void QQuickQmlGenerator::generateAnimateTransform(const QString &targetName, con
QVariantList previousParameters;
for (auto it = animation.frames.constBegin(); it != animation.frames.constEnd(); ++it) {
const int time = it.key();
- const int frameTime = time - previousTime;
+ const int frameTime = processAnimationTime(time - previousTime);
const QVariantList &parameters = it.value().value<QVariantList>();
if (parameters.isEmpty())
continue;