aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickanimatedimage.cpp
diff options
context:
space:
mode:
authorLouis du Verdier <louis.du.verdier@free.fr>2017-07-29 22:57:43 +0200
committerShawn Rutledge <shawn.rutledge@qt.io>2018-01-16 11:45:34 +0000
commite26e1c61c7acb1538a50c9ab570c6811c652581d (patch)
tree7ac82daa87b15be4cec32ab00e41689e96bf3925 /src/quick/items/qquickanimatedimage.cpp
parent196c691ebce3a48c6479162f3084790b6d0af8b8 (diff)
Add a speed property to AnimatedImage
QMovie handles most of AnimatedImage's behaviors and already provides a speed property (that is a percentage, 100% by default). This commit only offers the possibility to change its value from the QML. Task-number: QTBUG-62203 Change-Id: I8b7b79053181c1544aee1e95054b3b48229381fb Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/quick/items/qquickanimatedimage.cpp')
-rw-r--r--src/quick/items/qquickanimatedimage.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/quick/items/qquickanimatedimage.cpp b/src/quick/items/qquickanimatedimage.cpp
index 5bc5b0faff..4180714f86 100644
--- a/src/quick/items/qquickanimatedimage.cpp
+++ b/src/quick/items/qquickanimatedimage.cpp
@@ -260,6 +260,32 @@ int QQuickAnimatedImage::frameCount() const
return d->_movie->frameCount();
}
+/*!
+ \qmlproperty real QtQuick::AnimatedImage::speed
+ \since QtQuick 2.11
+
+ This property holds the speed of the animation.
+
+ The speed is measured in percentage of the original animated image speed.
+ The default speed is 1.0 (original speed).
+*/
+qreal QQuickAnimatedImage::speed() const
+{
+ Q_D(const QQuickAnimatedImage);
+ return d->speed;
+}
+
+void QQuickAnimatedImage::setSpeed(qreal speed)
+{
+ Q_D(QQuickAnimatedImage);
+ if (d->speed != speed) {
+ d->speed = speed;
+ if (d->_movie)
+ d->_movie->setSpeed(qRound(speed * 100.0));
+ emit speedChanged();
+ }
+}
+
void QQuickAnimatedImage::setSource(const QUrl &url)
{
Q_D(QQuickAnimatedImage);
@@ -396,6 +422,7 @@ void QQuickAnimatedImage::movieRequestFinished()
this, SLOT(movieUpdate()));
if (d->cache)
d->_movie->setCacheMode(QMovie::CacheAll);
+ d->_movie->setSpeed(qRound(d->speed * 100.0));
d->status = Ready;
emit statusChanged(d->status);