diff options
Diffstat (limited to 'src/quick/items')
-rw-r--r-- | src/quick/items/qquickanimatedimage.cpp | 27 | ||||
-rw-r--r-- | src/quick/items/qquickanimatedimage_p.h | 5 | ||||
-rw-r--r-- | src/quick/items/qquickanimatedimage_p_p.h | 3 | ||||
-rw-r--r-- | src/quick/items/qquickitemsmodule.cpp | 4 |
4 files changed, 38 insertions, 1 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); diff --git a/src/quick/items/qquickanimatedimage_p.h b/src/quick/items/qquickanimatedimage_p.h index f7a6bd808b..678907a6e2 100644 --- a/src/quick/items/qquickanimatedimage_p.h +++ b/src/quick/items/qquickanimatedimage_p.h @@ -70,6 +70,7 @@ class Q_AUTOTEST_EXPORT QQuickAnimatedImage : public QQuickImage Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged) Q_PROPERTY(int currentFrame READ currentFrame WRITE setCurrentFrame NOTIFY frameChanged) Q_PROPERTY(int frameCount READ frameCount NOTIFY frameCountChanged) + Q_PROPERTY(qreal speed READ speed WRITE setSpeed NOTIFY speedChanged REVISION 11) // read-only for AnimatedImage Q_PROPERTY(QSize sourceSize READ sourceSize NOTIFY sourceSizeChanged) @@ -89,6 +90,9 @@ public: int frameCount() const; + qreal speed() const; + void setSpeed(qreal speed); + // Extends QQuickImage's src property void setSource(const QUrl&) override; virtual QSize sourceSize(); @@ -98,6 +102,7 @@ Q_SIGNALS: void pausedChanged(); void frameChanged(); void frameCountChanged(); + Q_REVISION(11) void speedChanged(); private Q_SLOTS: void movieUpdate(); diff --git a/src/quick/items/qquickanimatedimage_p_p.h b/src/quick/items/qquickanimatedimage_p_p.h index 68c4f2d359..ef30c39fed 100644 --- a/src/quick/items/qquickanimatedimage_p_p.h +++ b/src/quick/items/qquickanimatedimage_p_p.h @@ -70,7 +70,7 @@ class QQuickAnimatedImagePrivate : public QQuickImagePrivate public: QQuickAnimatedImagePrivate() - : playing(true), paused(false), preset_currentframe(0), _movie(0), oldPlaying(false) + : playing(true), paused(false), speed(1.0), preset_currentframe(0), _movie(0), oldPlaying(false) #if QT_CONFIG(qml_network) , reply(0), redirectCount(0) #endif @@ -82,6 +82,7 @@ public: bool playing; bool paused; + qreal speed; int preset_currentframe; QMovie *_movie; bool oldPlaying; diff --git a/src/quick/items/qquickitemsmodule.cpp b/src/quick/items/qquickitemsmodule.cpp index a7600c97bc..4839b4dd4f 100644 --- a/src/quick/items/qquickitemsmodule.cpp +++ b/src/quick/items/qquickitemsmodule.cpp @@ -411,6 +411,10 @@ static void qt_quickitems_defineModule(const char *uri, int major, int minor) #if QT_CONFIG(quick_path) qmlRegisterType<QQuickPathAngleArc>(uri, 2, 11, "PathAngleArc"); #endif + +#if QT_CONFIG(quick_animatedimage) + qmlRegisterType<QQuickAnimatedImage, 11>(uri, 2, 11,"AnimatedImage"); +#endif } static void initResources() |