From 38bffdd9a5dc648d9f2c75b0be5648e938a930c6 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 4 Nov 2009 18:09:07 +1000 Subject: Remove invalid test --- tests/auto/declarative/animatedimage/tst_animatedimage.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/auto/declarative/animatedimage/tst_animatedimage.cpp b/tests/auto/declarative/animatedimage/tst_animatedimage.cpp index 6ae2112..262ddda 100644 --- a/tests/auto/declarative/animatedimage/tst_animatedimage.cpp +++ b/tests/auto/declarative/animatedimage/tst_animatedimage.cpp @@ -90,11 +90,7 @@ void tst_animatedimage::setFrame() void tst_animatedimage::frameCount() { - QmlEngine engine; - QmlComponent component(&engine, QUrl("file://" SRCDIR "/data/stickman.qml")); - QmlGraphicsAnimatedImageItem *anim = qobject_cast(component.create()); - QVERIFY(anim); - QCOMPARE(anim->frameCount(), 299); + // GIF doesn't support frameCount until first pass through } QTEST_MAIN(tst_animatedimage) -- cgit v0.12 From cb48b1bd67e094446cf73d8a0940d25dc8334708 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 4 Nov 2009 18:10:08 +1000 Subject: Remove property-order sensitivity. Fixes autotest. --- .../extra/qmlgraphicsanimatedimageitem.cpp | 19 +++++++++++++++---- .../extra/qmlgraphicsanimatedimageitem_p.h | 1 + .../extra/qmlgraphicsanimatedimageitem_p_p.h | 3 ++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/declarative/extra/qmlgraphicsanimatedimageitem.cpp b/src/declarative/extra/qmlgraphicsanimatedimageitem.cpp index f3c2058..ba09279 100644 --- a/src/declarative/extra/qmlgraphicsanimatedimageitem.cpp +++ b/src/declarative/extra/qmlgraphicsanimatedimageitem.cpp @@ -158,15 +158,17 @@ int QmlGraphicsAnimatedImageItem::currentFrame() const { Q_D(const QmlGraphicsAnimatedImageItem); if (!d->_movie) - return -1; + return d->preset_currentframe; return d->_movie->currentFrameNumber(); } void QmlGraphicsAnimatedImageItem::setCurrentFrame(int frame) { Q_D(QmlGraphicsAnimatedImageItem); - if (!d->_movie) + if (!d->_movie) { + d->preset_currentframe = frame; return; + } d->_movie->jumpToFrame(frame); } @@ -264,8 +266,10 @@ void QmlGraphicsAnimatedImageItem::movieRequestFinished() d->_movie->setCacheMode(QMovie::CacheAll); if(d->playing) d->_movie->start(); - else - d->_movie->jumpToFrame(0); + else { + d->_movie->jumpToFrame(d->preset_currentframe); + d->preset_currentframe = 0; + } if(d->paused) d->_movie->setPaused(true); d->setPixmap(d->_movie->currentPixmap()); @@ -291,4 +295,11 @@ void QmlGraphicsAnimatedImageItem::playingStatusChanged() } } +void QmlGraphicsAnimatedImageItem::componentComplete() +{ + Q_D(QmlGraphicsAnimatedImageItem); + setCurrentFrame(d->preset_currentframe); + d->preset_currentframe = 0; +} + QT_END_NAMESPACE diff --git a/src/declarative/extra/qmlgraphicsanimatedimageitem_p.h b/src/declarative/extra/qmlgraphicsanimatedimageitem_p.h index 097aecd..b581ea3 100644 --- a/src/declarative/extra/qmlgraphicsanimatedimageitem_p.h +++ b/src/declarative/extra/qmlgraphicsanimatedimageitem_p.h @@ -91,6 +91,7 @@ private Q_SLOTS: protected: QmlGraphicsAnimatedImageItem(QmlGraphicsAnimatedImageItemPrivate &dd, QmlGraphicsItem *parent); + void componentComplete(); private: Q_DISABLE_COPY(QmlGraphicsAnimatedImageItem) diff --git a/src/declarative/extra/qmlgraphicsanimatedimageitem_p_p.h b/src/declarative/extra/qmlgraphicsanimatedimageitem_p_p.h index 0b12d2f..2256b9b 100644 --- a/src/declarative/extra/qmlgraphicsanimatedimageitem_p_p.h +++ b/src/declarative/extra/qmlgraphicsanimatedimageitem_p_p.h @@ -66,12 +66,13 @@ class QmlGraphicsAnimatedImageItemPrivate : public QmlGraphicsImagePrivate public: QmlGraphicsAnimatedImageItemPrivate() - : playing(true), paused(false), _movie(0), reply(0) + : playing(true), paused(false), preset_currentframe(0), _movie(0), reply(0) { } bool playing; bool paused; + int preset_currentframe; QMovie *_movie; QNetworkReply *reply; }; -- cgit v0.12 From 1409b6cacc743e71830a73a2bf3dcca374106449 Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Thu, 5 Nov 2009 09:37:02 +1000 Subject: autotests --- tests/auto/declarative/qmlfontloader/tst_qmlfontloader.cpp | 6 ++++++ tests/auto/declarative/qmlgraphicstext/tst_qmlgraphicstext.cpp | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/auto/declarative/qmlfontloader/tst_qmlfontloader.cpp b/tests/auto/declarative/qmlfontloader/tst_qmlfontloader.cpp index efc86cd..23f7025 100644 --- a/tests/auto/declarative/qmlfontloader/tst_qmlfontloader.cpp +++ b/tests/auto/declarative/qmlfontloader/tst_qmlfontloader.cpp @@ -77,6 +77,7 @@ void tst_qmlfontloader::noFont() QVERIFY(fontObject != 0); QCOMPARE(fontObject->name(), QString("")); + QCOMPARE(fontObject->source(), QUrl("")); QTRY_VERIFY(fontObject->status() == QmlFontLoader::Null); delete fontObject; @@ -89,6 +90,7 @@ void tst_qmlfontloader::namedFont() QmlFontLoader *fontObject = qobject_cast(component.create()); QVERIFY(fontObject != 0); + QCOMPARE(fontObject->source(), QUrl("")); QCOMPARE(fontObject->name(), QString("Helvetica")); QTRY_VERIFY(fontObject->status() == QmlFontLoader::Ready); } @@ -100,6 +102,7 @@ void tst_qmlfontloader::localFont() QmlFontLoader *fontObject = qobject_cast(component.create()); QVERIFY(fontObject != 0); + QVERIFY(fontObject->source() != QUrl("")); QTRY_COMPARE(fontObject->name(), QString("Fontin")); QTRY_VERIFY(fontObject->status() == QmlFontLoader::Ready); } @@ -111,6 +114,7 @@ void tst_qmlfontloader::failLocalFont() QmlFontLoader *fontObject = qobject_cast(component.create()); QVERIFY(fontObject != 0); + QVERIFY(fontObject->source() != QUrl("")); QTRY_COMPARE(fontObject->name(), QString("")); QTRY_VERIFY(fontObject->status() == QmlFontLoader::Error); } @@ -122,6 +126,7 @@ void tst_qmlfontloader::webFont() QmlFontLoader *fontObject = qobject_cast(component.create()); QVERIFY(fontObject != 0); + QVERIFY(fontObject->source() != QUrl("")); QTRY_COMPARE(fontObject->name(), QString("Starburst")); QTRY_VERIFY(fontObject->status() == QmlFontLoader::Ready); } @@ -133,6 +138,7 @@ void tst_qmlfontloader::failWebFont() QmlFontLoader *fontObject = qobject_cast(component.create()); QVERIFY(fontObject != 0); + QVERIFY(fontObject->source() != QUrl("")); QTRY_COMPARE(fontObject->name(), QString("")); QTRY_VERIFY(fontObject->status() == QmlFontLoader::Error); } diff --git a/tests/auto/declarative/qmlgraphicstext/tst_qmlgraphicstext.cpp b/tests/auto/declarative/qmlgraphicstext/tst_qmlgraphicstext.cpp index 3e86cab..c650af2 100644 --- a/tests/auto/declarative/qmlgraphicstext/tst_qmlgraphicstext.cpp +++ b/tests/auto/declarative/qmlgraphicstext/tst_qmlgraphicstext.cpp @@ -269,7 +269,7 @@ void tst_qmlgraphicstext::wrap() void tst_qmlgraphicstext::elide() { - for (Qt::TextElideMode m = Qt::ElideLeft; m<=Qt::ElideNone; m=Qt::TextElideMode(int(m)+1)) { + for (QmlGraphicsText::TextElideMode m = QmlGraphicsText::ElideLeft; m<=QmlGraphicsText::ElideNone; m=QmlGraphicsText::TextElideMode(int(m)+1)) { const char* elidename[]={"ElideLeft", "ElideRight", "ElideMiddle", "ElideNone"}; QString elide = "elide: Text." + QString(elidename[int(m)]) + ";"; @@ -279,6 +279,7 @@ void tst_qmlgraphicstext::elide() QmlComponent textComponent(&engine, ("import Qt 4.6\nText { text: \"\"; "+elide+" width: 100 }").toLatin1(), QUrl("file://")); QmlGraphicsText *textObject = qobject_cast(textComponent.create()); + QCOMPARE(textObject->elideMode(), m); QCOMPARE(textObject->width(), 100.); } @@ -288,6 +289,7 @@ void tst_qmlgraphicstext::elide() QmlComponent textComponent(&engine, componentStr.toLatin1(), QUrl("file://")); QmlGraphicsText *textObject = qobject_cast(textComponent.create()); + QCOMPARE(textObject->elideMode(), m); QCOMPARE(textObject->width(), 100.); } @@ -298,6 +300,7 @@ void tst_qmlgraphicstext::elide() QmlComponent textComponent(&engine, componentStr.toLatin1(), QUrl("file://")); QmlGraphicsText *textObject = qobject_cast(textComponent.create()); + QCOMPARE(textObject->elideMode(), m); QCOMPARE(textObject->width(), 100.); } } -- cgit v0.12 From 54b7264b459d330c1b481f7f0bb000295ce15cf6 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 5 Nov 2009 11:13:48 +1000 Subject: QmlPropertyMap autotest update. --- tests/auto/declarative/qmlpropertymap/tst_qmlpropertymap.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/auto/declarative/qmlpropertymap/tst_qmlpropertymap.cpp b/tests/auto/declarative/qmlpropertymap/tst_qmlpropertymap.cpp index 9be77e8..ece6030 100644 --- a/tests/auto/declarative/qmlpropertymap/tst_qmlpropertymap.cpp +++ b/tests/auto/declarative/qmlpropertymap/tst_qmlpropertymap.cpp @@ -95,13 +95,15 @@ void tst_QmlPropertyMap::operatorValue() QmlPropertyMap map; map.insert(QLatin1String("key1"),100); map.insert(QLatin1String("key2"),200); - QVERIFY(map.keys().count() == 2); + QVERIFY(map.count() == 2); QVERIFY(map.contains(QLatin1String("key1"))); - QCOMPARE(map.value(QLatin1String("key1")), QVariant(100)); - QCOMPARE(map.value(QLatin1String("key2")), QVariant(200)); - QCOMPARE(map[QLatin1String("key1")], map.value(QLatin1String("key1"))); - QCOMPARE(map[QLatin1String("key2")], map.value(QLatin1String("key2"))); + const QmlPropertyMap &constMap = map; + + QCOMPARE(constMap.value(QLatin1String("key1")), QVariant(100)); + QCOMPARE(constMap.value(QLatin1String("key2")), QVariant(200)); + QCOMPARE(constMap[QLatin1String("key1")], constMap.value(QLatin1String("key1"))); + QCOMPARE(constMap[QLatin1String("key2")], constMap.value(QLatin1String("key2"))); } void tst_QmlPropertyMap::clear() -- cgit v0.12 From 81f45fc6f1f84499a43f9cf1d838d611a07308e3 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 5 Nov 2009 13:25:56 +1000 Subject: Partial valuetypes test --- tests/auto/declarative/declarative.pro | 1 + .../auto/declarative/valuetypes/data/font_read.qml | 18 ++ .../declarative/valuetypes/data/font_write.2.qml | 6 + .../declarative/valuetypes/data/font_write.3.qml | 7 + .../declarative/valuetypes/data/font_write.qml | 16 + .../declarative/valuetypes/data/point_read.qml | 7 + .../declarative/valuetypes/data/point_write.qml | 6 + .../declarative/valuetypes/data/pointf_read.qml | 8 + .../declarative/valuetypes/data/pointf_write.qml | 6 + .../auto/declarative/valuetypes/data/rect_read.qml | 10 + .../declarative/valuetypes/data/rect_write.qml | 9 + .../declarative/valuetypes/data/rectf_read.qml | 10 + .../declarative/valuetypes/data/rectf_write.qml | 9 + .../auto/declarative/valuetypes/data/size_read.qml | 8 + .../declarative/valuetypes/data/size_write.qml | 7 + .../declarative/valuetypes/data/sizef_read.qml | 9 + .../declarative/valuetypes/data/sizef_write.qml | 6 + .../declarative/valuetypes/data/vector3d_read.qml | 9 + .../declarative/valuetypes/data/vector3d_write.qml | 8 + tests/auto/declarative/valuetypes/testtypes.cpp | 43 +++ tests/auto/declarative/valuetypes/testtypes.h | 128 ++++++++ .../auto/declarative/valuetypes/tst_valuetypes.cpp | 330 +++++++++++++++++++++ tests/auto/declarative/valuetypes/valuetypes.pro | 10 + 23 files changed, 671 insertions(+) create mode 100644 tests/auto/declarative/valuetypes/data/font_read.qml create mode 100644 tests/auto/declarative/valuetypes/data/font_write.2.qml create mode 100644 tests/auto/declarative/valuetypes/data/font_write.3.qml create mode 100644 tests/auto/declarative/valuetypes/data/font_write.qml create mode 100644 tests/auto/declarative/valuetypes/data/point_read.qml create mode 100644 tests/auto/declarative/valuetypes/data/point_write.qml create mode 100644 tests/auto/declarative/valuetypes/data/pointf_read.qml create mode 100644 tests/auto/declarative/valuetypes/data/pointf_write.qml create mode 100644 tests/auto/declarative/valuetypes/data/rect_read.qml create mode 100644 tests/auto/declarative/valuetypes/data/rect_write.qml create mode 100644 tests/auto/declarative/valuetypes/data/rectf_read.qml create mode 100644 tests/auto/declarative/valuetypes/data/rectf_write.qml create mode 100644 tests/auto/declarative/valuetypes/data/size_read.qml create mode 100644 tests/auto/declarative/valuetypes/data/size_write.qml create mode 100644 tests/auto/declarative/valuetypes/data/sizef_read.qml create mode 100644 tests/auto/declarative/valuetypes/data/sizef_write.qml create mode 100644 tests/auto/declarative/valuetypes/data/vector3d_read.qml create mode 100644 tests/auto/declarative/valuetypes/data/vector3d_write.qml create mode 100644 tests/auto/declarative/valuetypes/testtypes.cpp create mode 100644 tests/auto/declarative/valuetypes/testtypes.h create mode 100644 tests/auto/declarative/valuetypes/tst_valuetypes.cpp create mode 100644 tests/auto/declarative/valuetypes/valuetypes.pro diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index 1be38a8..b9f59d6 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -35,6 +35,7 @@ SUBDIRS += \ repeater \ # Cover sql \ # Cover states \ # Cover + valuetypes \ # Cover visual # Cover # Tests which should run in Pulse diff --git a/tests/auto/declarative/valuetypes/data/font_read.qml b/tests/auto/declarative/valuetypes/data/font_read.qml new file mode 100644 index 0000000..e1d1ce0 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/font_read.qml @@ -0,0 +1,18 @@ +import Test 1.0 + +MyTypeObject { + property string f_family: font.family + property bool f_bold: font.bold + property int f_weight: font.weight + property bool f_italic: font.italic + property bool f_underline: font.underline + property bool f_overline: font.overline + property bool f_strikeout: font.strikeout + property real f_pointSize: font.pointSize + property int f_pixelSize: font.pixelSize + property int f_capitalization: font.capitalization + property real f_letterSpacing: font.letterSpacing + property real f_wordSpacing: font.wordSpacing; + property var copy: font +} + diff --git a/tests/auto/declarative/valuetypes/data/font_write.2.qml b/tests/auto/declarative/valuetypes/data/font_write.2.qml new file mode 100644 index 0000000..b559389 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/font_write.2.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + font.pixelSize: 10 +} + diff --git a/tests/auto/declarative/valuetypes/data/font_write.3.qml b/tests/auto/declarative/valuetypes/data/font_write.3.qml new file mode 100644 index 0000000..913ac50 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/font_write.3.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + font.pixelSize: 10 + font.pointSize: 19 +} + diff --git a/tests/auto/declarative/valuetypes/data/font_write.qml b/tests/auto/declarative/valuetypes/data/font_write.qml new file mode 100644 index 0000000..ff4d0a1 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/font_write.qml @@ -0,0 +1,16 @@ +import Test 1.0 + +MyTypeObject { + font.family: if(1) "Helvetica" + font.bold: if(1) false + font.weight: "Normal" + font.italic: if(1) false + font.underline: if(1) false + font.overline: if(1) false + font.strikeout: if(1) false + font.pointSize: if(1) 15 + font.capitalization: "AllLowercase" + font.letterSpacing: if(1) 9.7 + font.wordSpacing: if(1) 11.2 +} + diff --git a/tests/auto/declarative/valuetypes/data/point_read.qml b/tests/auto/declarative/valuetypes/data/point_read.qml new file mode 100644 index 0000000..3e67de6 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/point_read.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + property int p_x: point.x + property int p_y: point.y + property var copy: point +} diff --git a/tests/auto/declarative/valuetypes/data/point_write.qml b/tests/auto/declarative/valuetypes/data/point_write.qml new file mode 100644 index 0000000..063525a --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/point_write.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + point.x: if (true) 11 + point.y: if (true) 12 +} diff --git a/tests/auto/declarative/valuetypes/data/pointf_read.qml b/tests/auto/declarative/valuetypes/data/pointf_read.qml new file mode 100644 index 0000000..d845a5b --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/pointf_read.qml @@ -0,0 +1,8 @@ +import Test 1.0 + +MyTypeObject { + property real p_x: pointf.x + property real p_y: pointf.y + property var copy: pointf +} + diff --git a/tests/auto/declarative/valuetypes/data/pointf_write.qml b/tests/auto/declarative/valuetypes/data/pointf_write.qml new file mode 100644 index 0000000..9ee3fc1 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/pointf_write.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + pointf.x: if (true) 6.8 + pointf.y: if (true) 9.3 +} diff --git a/tests/auto/declarative/valuetypes/data/rect_read.qml b/tests/auto/declarative/valuetypes/data/rect_read.qml new file mode 100644 index 0000000..5364431 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/rect_read.qml @@ -0,0 +1,10 @@ +import Test 1.0 + +MyTypeObject { + property int r_x: rect.x + property int r_y: rect.y + property int r_width: rect.width + property int r_height: rect.height + property var copy: rect +} + diff --git a/tests/auto/declarative/valuetypes/data/rect_write.qml b/tests/auto/declarative/valuetypes/data/rect_write.qml new file mode 100644 index 0000000..8add453 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/rect_write.qml @@ -0,0 +1,9 @@ +import Test 1.0 + +MyTypeObject { + rect.x: if (true) 1234 + rect.y: if (true) 7 + rect.width: if (true) 56 + rect.height: if (true) 63 +} + diff --git a/tests/auto/declarative/valuetypes/data/rectf_read.qml b/tests/auto/declarative/valuetypes/data/rectf_read.qml new file mode 100644 index 0000000..aeb9f41 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/rectf_read.qml @@ -0,0 +1,10 @@ +import Test 1.0 + +MyTypeObject { + property real r_x: rectf.x + property real r_y: rectf.y + property real r_width: rectf.width + property real r_height: rectf.height + property var copy: rectf +} + diff --git a/tests/auto/declarative/valuetypes/data/rectf_write.qml b/tests/auto/declarative/valuetypes/data/rectf_write.qml new file mode 100644 index 0000000..1e6ff4f --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/rectf_write.qml @@ -0,0 +1,9 @@ +import Test 1.0 + +MyTypeObject { + rectf.x: if (true) 70.1 + rectf.y: if (true) -113.2 + rectf.width: if (true) 80924.8 + rectf.height: if (true) 99.2 +} + diff --git a/tests/auto/declarative/valuetypes/data/size_read.qml b/tests/auto/declarative/valuetypes/data/size_read.qml new file mode 100644 index 0000000..86dba03 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/size_read.qml @@ -0,0 +1,8 @@ +import Test 1.0 + +MyTypeObject { + property int s_width: size.width + property int s_height: size.height + property var copy: size +} + diff --git a/tests/auto/declarative/valuetypes/data/size_write.qml b/tests/auto/declarative/valuetypes/data/size_write.qml new file mode 100644 index 0000000..2f9d10e --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/size_write.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + size.width: if (true) 13 + size.height: if (true) 88 +} + diff --git a/tests/auto/declarative/valuetypes/data/sizef_read.qml b/tests/auto/declarative/valuetypes/data/sizef_read.qml new file mode 100644 index 0000000..c6f34e4 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/sizef_read.qml @@ -0,0 +1,9 @@ +import Test 1.0 + +MyTypeObject { + property real s_width: sizef.width + property real s_height: sizef.height + property var copy: sizef +} + + diff --git a/tests/auto/declarative/valuetypes/data/sizef_write.qml b/tests/auto/declarative/valuetypes/data/sizef_write.qml new file mode 100644 index 0000000..f16f0bd --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/sizef_write.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + sizef.width: if (true) 44.3 + sizef.height: if (true) 92.8 +} diff --git a/tests/auto/declarative/valuetypes/data/vector3d_read.qml b/tests/auto/declarative/valuetypes/data/vector3d_read.qml new file mode 100644 index 0000000..abdf9f0 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/vector3d_read.qml @@ -0,0 +1,9 @@ +import Test 1.0 + +MyTypeObject { + property real v_x: vector.x + property real v_y: vector.y + property real v_z: vector.z + property var copy: vector +} + diff --git a/tests/auto/declarative/valuetypes/data/vector3d_write.qml b/tests/auto/declarative/valuetypes/data/vector3d_write.qml new file mode 100644 index 0000000..9c1bf76 --- /dev/null +++ b/tests/auto/declarative/valuetypes/data/vector3d_write.qml @@ -0,0 +1,8 @@ +import Test 1.0 + +MyTypeObject { + vector.x: if (true) -0.3 + vector.y: if (true) -12.9 + vector.z: if (true) 907.4 +} + diff --git a/tests/auto/declarative/valuetypes/testtypes.cpp b/tests/auto/declarative/valuetypes/testtypes.cpp new file mode 100644 index 0000000..d57afaf --- /dev/null +++ b/tests/auto/declarative/valuetypes/testtypes.cpp @@ -0,0 +1,43 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "testtypes.h" + +QML_DEFINE_TYPE(Test, 1, 0, 0, MyTypeObject, MyTypeObject); diff --git a/tests/auto/declarative/valuetypes/testtypes.h b/tests/auto/declarative/valuetypes/testtypes.h new file mode 100644 index 0000000..cc98d7c --- /dev/null +++ b/tests/auto/declarative/valuetypes/testtypes.h @@ -0,0 +1,128 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef TESTTYPES_H +#define TESTTYPES_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class MyTypeObject : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QPoint point READ point WRITE setPoint NOTIFY changed); + Q_PROPERTY(QPointF pointf READ pointf WRITE setPointf NOTIFY changed); + Q_PROPERTY(QSize size READ size WRITE setSize NOTIFY changed); + Q_PROPERTY(QSizeF sizef READ sizef WRITE setSizef NOTIFY changed); + Q_PROPERTY(QRect rect READ rect WRITE setRect NOTIFY changed); + Q_PROPERTY(QRectF rectf READ rectf WRITE setRectf NOTIFY changed); + Q_PROPERTY(QVector3D vector READ vector WRITE setVector NOTIFY changed); + Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY changed); + +public: + MyTypeObject() : + m_point(10, 4), + m_pointf(11.3, -10.9), + m_size(1912, 1913), + m_sizef(0.1, 100923.2), + m_rect(2, 3, 109, 102), + m_rectf(103.8, 99.2, 88.1, 77.6), + m_vector(23.88, 3.1, 4.3) + { + m_font.setFamily("Arial"); + m_font.setBold(true); + m_font.setWeight(QFont::DemiBold); + m_font.setItalic(true); + m_font.setUnderline(true); + m_font.setOverline(true); + m_font.setStrikeOut(true); + m_font.setPointSize(29); + m_font.setCapitalization(QFont::AllUppercase); + m_font.setLetterSpacing(QFont::AbsoluteSpacing, 10.2); + m_font.setWordSpacing(19.7); + } + + QPoint m_point; + QPoint point() const { return m_point; } + void setPoint(const QPoint &v) { m_point = v; } + + QPointF m_pointf; + QPointF pointf() const { return m_pointf; } + void setPointf(const QPointF &v) { m_pointf = v; } + + QSize m_size; + QSize size() const { return m_size; } + void setSize(const QSize &v) { m_size = v; } + + QSizeF m_sizef; + QSizeF sizef() const { return m_sizef; } + void setSizef(const QSizeF &v) { m_sizef = v; } + + QRect m_rect; + QRect rect() const { return m_rect; } + void setRect(const QRect &v) { m_rect = v; } + + QRectF m_rectf; + QRectF rectf() const { return m_rectf; } + void setRectf(const QRectF &v) { m_rectf = v; } + + QVector3D m_vector; + QVector3D vector() const { return m_vector; } + void setVector(const QVector3D &v) { m_vector = v; } + + QFont m_font; + QFont font() const { return m_font; } + void setFont(const QFont &v) { m_font = v; } + +signals: + void changed(); +}; +QML_DECLARE_TYPE(MyTypeObject); + +#endif // TESTTYPES_H diff --git a/tests/auto/declarative/valuetypes/tst_valuetypes.cpp b/tests/auto/declarative/valuetypes/tst_valuetypes.cpp new file mode 100644 index 0000000..a338e47 --- /dev/null +++ b/tests/auto/declarative/valuetypes/tst_valuetypes.cpp @@ -0,0 +1,330 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include "testtypes.h" + +class tst_valuetypes : public QObject +{ + Q_OBJECT +public: + tst_valuetypes() {} + +private slots: + void point(); + void pointf(); + void size(); + void sizef(); + void rect(); + void rectf(); + void vector3d(); + void font(); + + // ### + // Test binding assignment + // Test static assignment + // Test JS assignment + // Test "font.x: blah; font: blah2;" conflict + // Test constant binding removal + // Test value sources + // Test behaviours +private: + QmlEngine engine; +}; + +inline QUrl TEST_FILE(const QString &filename) +{ + return QUrl::fromLocalFile(QLatin1String(SRCDIR) + QLatin1String("/data/") + filename); +} + +void tst_valuetypes::point() +{ + { + QmlComponent component(&engine, TEST_FILE("point_read.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("p_x").toInt(), 10); + QCOMPARE(object->property("p_y").toInt(), 4); + QCOMPARE(object->property("copy"), QVariant(QPoint(10, 4))); + + delete object; + } + + { + QmlComponent component(&engine, TEST_FILE("point_write.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->point(), QPoint(11, 12)); + + delete object; + } +} + +void tst_valuetypes::pointf() +{ + { + QmlComponent component(&engine, TEST_FILE("pointf_read.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("p_x").toDouble(), 11.3); + QCOMPARE(object->property("p_y").toDouble(), -10.9); + QCOMPARE(object->property("copy"), QVariant(QPointF(11.3, -10.9))); + + delete object; + } + + { + QmlComponent component(&engine, TEST_FILE("pointf_write.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->pointf(), QPointF(6.8, 9.3)); + + delete object; + } +} + +void tst_valuetypes::size() +{ + { + QmlComponent component(&engine, TEST_FILE("size_read.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("s_width").toInt(), 1912); + QCOMPARE(object->property("s_height").toInt(), 1913); + QCOMPARE(object->property("copy"), QVariant(QSize(1912, 1913))); + + delete object; + } + + { + QmlComponent component(&engine, TEST_FILE("size_write.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->size(), QSize(13, 88)); + + delete object; + } +} + +void tst_valuetypes::sizef() +{ + { + QmlComponent component(&engine, TEST_FILE("sizef_read.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("s_width").toDouble(), 0.1); + QCOMPARE(object->property("s_height").toDouble(), 100923.2); + QCOMPARE(object->property("copy"), QVariant(QSizeF(0.1, 100923.2))); + + delete object; + } + + { + QmlComponent component(&engine, TEST_FILE("sizef_write.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->sizef(), QSizeF(44.3, 92.8)); + + delete object; + } +} + +void tst_valuetypes::rect() +{ + { + QmlComponent component(&engine, TEST_FILE("rect_read.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("r_x").toInt(), 2); + QCOMPARE(object->property("r_y").toInt(), 3); + QCOMPARE(object->property("r_width").toInt(), 109); + QCOMPARE(object->property("r_height").toInt(), 102); + QCOMPARE(object->property("copy"), QVariant(QRect(2, 3, 109, 102))); + + delete object; + } + + { + QmlComponent component(&engine, TEST_FILE("rect_write.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->rect(), QRect(1234, 7, 56, 63)); + + delete object; + } +} + +void tst_valuetypes::rectf() +{ + { + QmlComponent component(&engine, TEST_FILE("rectf_read.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("r_x").toDouble(), 103.8); + QCOMPARE(object->property("r_y").toDouble(), 99.2); + QCOMPARE(object->property("r_width").toDouble(), 88.1); + QCOMPARE(object->property("r_height").toDouble(), 77.6); + QCOMPARE(object->property("copy"), QVariant(QRectF(103.8, 99.2, 88.1, 77.6))); + + delete object; + } + + { + QmlComponent component(&engine, TEST_FILE("rectf_write.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->rectf(), QRectF(70.1, -113.2, 80924.8, 99.2)); + + delete object; + } +} + +void tst_valuetypes::vector3d() +{ + { + QmlComponent component(&engine, TEST_FILE("vector3d_read.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE((float)object->property("v_x").toDouble(), (float)23.88); + QCOMPARE((float)object->property("v_y").toDouble(), (float)3.1); + QCOMPARE((float)object->property("v_z").toDouble(), (float)4.3); + QCOMPARE(object->property("copy"), QVariant(QVector3D(23.88, 3.1, 4.3))); + + delete object; + } + + { + QmlComponent component(&engine, TEST_FILE("vector3d_write.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->vector(), QVector3D(-0.3, -12.9, 907.4)); + + delete object; + } +} + +void tst_valuetypes::font() +{ + { + QmlComponent component(&engine, TEST_FILE("font_read.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("f_family").toString(), object->font().family()); + QCOMPARE(object->property("f_bold").toBool(), object->font().bold()); + QCOMPARE(object->property("f_weight").toInt(), object->font().weight()); + QCOMPARE(object->property("f_italic").toBool(), object->font().italic()); + QCOMPARE(object->property("f_underline").toBool(), object->font().underline()); + QCOMPARE(object->property("f_overline").toBool(), object->font().overline()); + QCOMPARE(object->property("f_strikeout").toBool(), object->font().strikeOut()); + QCOMPARE(object->property("f_pointSize").toDouble(), object->font().pointSizeF()); + QCOMPARE(object->property("f_pixelSize").toInt(), object->font().pixelSize()); + QCOMPARE(object->property("f_capitalization").toInt(), (int)object->font().capitalization()); + QCOMPARE(object->property("f_letterSpacing").toDouble(), object->font().letterSpacing()); + QCOMPARE(object->property("f_wordSpacing").toDouble(), object->font().wordSpacing()); + + QCOMPARE(object->property("copy"), QVariant(object->font())); + + delete object; + } + + { + QmlComponent component(&engine, TEST_FILE("font_write.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QFont font; + font.setFamily("Helvetica"); + font.setBold(false); + font.setWeight(QFont::Normal); + font.setItalic(false); + font.setUnderline(false); + font.setStrikeOut(false); + font.setPointSize(15); + font.setCapitalization(QFont::AllLowercase); + font.setLetterSpacing(QFont::AbsoluteSpacing, 9.7); + font.setWordSpacing(11.2); + + QCOMPARE(object->font(), font); + + delete object; + } + + // Test pixelSize + { + QmlComponent component(&engine, TEST_FILE("font_write.2.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->font().pixelSize(), 10); + } + + // Test pixelSize and pointSize + { + QmlComponent component(&engine, TEST_FILE("font_write.3.qml")); + QTest::ignoreMessage(QtWarningMsg, "Both point size and pixel size set. Using pixel size. "); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->font().pixelSize(), 10); + } +} + +QTEST_MAIN(tst_valuetypes) + +#include "tst_valuetypes.moc" diff --git a/tests/auto/declarative/valuetypes/valuetypes.pro b/tests/auto/declarative/valuetypes/valuetypes.pro new file mode 100644 index 0000000..ae7c731 --- /dev/null +++ b/tests/auto/declarative/valuetypes/valuetypes.pro @@ -0,0 +1,10 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative +macx:CONFIG -= app_bundle + +HEADERS += testtypes.h + +SOURCES += tst_valuetypes.cpp \ + testtypes.cpp + +DEFINES += SRCDIR=\\\"$$PWD\\\" -- cgit v0.12 From 5ff952242ca7c2a5ae64c3fc4c904fd121fdf74b Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Thu, 5 Nov 2009 13:31:16 +1000 Subject: more borderimage autotests --- .../graphicsitems/qmlgraphicsimagebase_p.h | 2 +- .../qmlgraphicsborderimage/data/invalid.sci | 7 ++ .../tst_qmlgraphicsborderimage.cpp | 91 +++++++++++++++------- 3 files changed, 70 insertions(+), 30 deletions(-) create mode 100644 tests/auto/declarative/qmlgraphicsborderimage/data/invalid.sci diff --git a/src/declarative/graphicsitems/qmlgraphicsimagebase_p.h b/src/declarative/graphicsitems/qmlgraphicsimagebase_p.h index c8f8e85..0968d99 100644 --- a/src/declarative/graphicsitems/qmlgraphicsimagebase_p.h +++ b/src/declarative/graphicsitems/qmlgraphicsimagebase_p.h @@ -49,7 +49,7 @@ QT_BEGIN_HEADER QT_BEGIN_NAMESPACE class QmlGraphicsImageBasePrivate; -class QmlGraphicsImageBase : public QmlGraphicsItem +class Q_DECLARATIVE_EXPORT QmlGraphicsImageBase : public QmlGraphicsItem { Q_OBJECT Q_ENUMS(Status) diff --git a/tests/auto/declarative/qmlgraphicsborderimage/data/invalid.sci b/tests/auto/declarative/qmlgraphicsborderimage/data/invalid.sci new file mode 100644 index 0000000..98c72c9 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsborderimage/data/invalid.sci @@ -0,0 +1,7 @@ +border.left:10 +border.top:20 +border.down:30 +border.up:40 +horizontalTileRule:Roun +verticalTileRule:Repea +source:colors.png diff --git a/tests/auto/declarative/qmlgraphicsborderimage/tst_qmlgraphicsborderimage.cpp b/tests/auto/declarative/qmlgraphicsborderimage/tst_qmlgraphicsborderimage.cpp index 4174ccf..aa732c5 100644 --- a/tests/auto/declarative/qmlgraphicsborderimage/tst_qmlgraphicsborderimage.cpp +++ b/tests/auto/declarative/qmlgraphicsborderimage/tst_qmlgraphicsborderimage.cpp @@ -54,11 +54,13 @@ public: tst_qmlgraphicsborderimage(); private slots: + void noSource(); void simple(); void resized(); void smooth(); void tileModes(); void sciFile(); + void invalidSciFile(); private: QmlEngine engine; @@ -68,16 +70,32 @@ tst_qmlgraphicsborderimage::tst_qmlgraphicsborderimage() { } +void tst_qmlgraphicsborderimage::noSource() +{ + QString componentStr = "import Qt 4.6\nBorderImage { source: \"\" }"; + QmlComponent component(&engine, componentStr.toLatin1(), QUrl("file://")); + QmlGraphicsBorderImage *obj = qobject_cast(component.create()); + QVERIFY(obj != 0); + QCOMPARE(obj->source(), QUrl()); + QCOMPARE(obj->width(), 0.); + QCOMPARE(obj->height(), 0.); + QCOMPARE(obj->horizontalTileMode(), QmlGraphicsBorderImage::Stretch); + QCOMPARE(obj->verticalTileMode(), QmlGraphicsBorderImage::Stretch); + + delete obj; +} + void tst_qmlgraphicsborderimage::simple() { QString componentStr = "import Qt 4.6\nBorderImage { source: \"" SRCDIR "/data/colors.png\" }"; QmlComponent component(&engine, componentStr.toLatin1(), QUrl("file://")); QmlGraphicsBorderImage *obj = qobject_cast(component.create()); QVERIFY(obj != 0); - QVERIFY(obj->width() == 120); - QVERIFY(obj->height() == 120); - QVERIFY(obj->horizontalTileMode() == QmlGraphicsBorderImage::Stretch); - QVERIFY(obj->verticalTileMode() == QmlGraphicsBorderImage::Stretch); + QCOMPARE(obj->source(), QUrl("file://" SRCDIR "/data/colors.png")); + QCOMPARE(obj->width(), 120.); + QCOMPARE(obj->height(), 120.); + QCOMPARE(obj->horizontalTileMode(), QmlGraphicsBorderImage::Stretch); + QCOMPARE(obj->verticalTileMode(), QmlGraphicsBorderImage::Stretch); delete obj; } @@ -88,10 +106,10 @@ void tst_qmlgraphicsborderimage::resized() QmlComponent component(&engine, componentStr.toLatin1(), QUrl("file://")); QmlGraphicsBorderImage *obj = qobject_cast(component.create()); QVERIFY(obj != 0); - QVERIFY(obj->width() == 300); - QVERIFY(obj->height() == 300); - QVERIFY(obj->horizontalTileMode() == QmlGraphicsBorderImage::Stretch); - QVERIFY(obj->verticalTileMode() == QmlGraphicsBorderImage::Stretch); + QCOMPARE(obj->width(), 300.); + QCOMPARE(obj->height(), 300.); + QCOMPARE(obj->horizontalTileMode(), QmlGraphicsBorderImage::Stretch); + QCOMPARE(obj->verticalTileMode(), QmlGraphicsBorderImage::Stretch); delete obj; } @@ -102,11 +120,11 @@ void tst_qmlgraphicsborderimage::smooth() QmlComponent component(&engine, componentStr.toLatin1(), QUrl("file://")); QmlGraphicsBorderImage *obj = qobject_cast(component.create()); QVERIFY(obj != 0); - QVERIFY(obj->width() == 300); - QVERIFY(obj->height() == 300); - QVERIFY(obj->smooth() == true); - QVERIFY(obj->horizontalTileMode() == QmlGraphicsBorderImage::Stretch); - QVERIFY(obj->verticalTileMode() == QmlGraphicsBorderImage::Stretch); + QCOMPARE(obj->width(), 300.); + QCOMPARE(obj->height(), 300.); + QCOMPARE(obj->smooth(), true); + QCOMPARE(obj->horizontalTileMode(), QmlGraphicsBorderImage::Stretch); + QCOMPARE(obj->verticalTileMode(), QmlGraphicsBorderImage::Stretch); delete obj; } @@ -118,10 +136,10 @@ void tst_qmlgraphicsborderimage::tileModes() QmlComponent component(&engine, componentStr.toLatin1(), QUrl("file://")); QmlGraphicsBorderImage *obj = qobject_cast(component.create()); QVERIFY(obj != 0); - QVERIFY(obj->width() == 100); - QVERIFY(obj->height() == 300); - QVERIFY(obj->horizontalTileMode() == QmlGraphicsBorderImage::Repeat); - QVERIFY(obj->verticalTileMode() == QmlGraphicsBorderImage::Repeat); + QCOMPARE(obj->width(), 100.); + QCOMPARE(obj->height(), 300.); + QCOMPARE(obj->horizontalTileMode(), QmlGraphicsBorderImage::Repeat); + QCOMPARE(obj->verticalTileMode(), QmlGraphicsBorderImage::Repeat); delete obj; } @@ -130,10 +148,10 @@ void tst_qmlgraphicsborderimage::tileModes() QmlComponent component(&engine, componentStr.toLatin1(), QUrl("file://")); QmlGraphicsBorderImage *obj = qobject_cast(component.create()); QVERIFY(obj != 0); - QVERIFY(obj->width() == 300); - QVERIFY(obj->height() == 150); - QVERIFY(obj->horizontalTileMode() == QmlGraphicsBorderImage::Round); - QVERIFY(obj->verticalTileMode() == QmlGraphicsBorderImage::Round); + QCOMPARE(obj->width(), 300.); + QCOMPARE(obj->height(), 150.); + QCOMPARE(obj->horizontalTileMode(), QmlGraphicsBorderImage::Round); + QCOMPARE(obj->verticalTileMode(), QmlGraphicsBorderImage::Round); delete obj; } @@ -145,14 +163,29 @@ void tst_qmlgraphicsborderimage::sciFile() QmlComponent component(&engine, componentStr.toLatin1(), QUrl("file://")); QmlGraphicsBorderImage *obj = qobject_cast(component.create()); QVERIFY(obj != 0); - QVERIFY(obj->width() == 300); - QVERIFY(obj->height() == 300); - QVERIFY(obj->border()->left() == 10); - QVERIFY(obj->border()->top() == 20); - QVERIFY(obj->border()->right() == 30); - QVERIFY(obj->border()->bottom() == 40); - QVERIFY(obj->horizontalTileMode() == QmlGraphicsBorderImage::Round); - QVERIFY(obj->verticalTileMode() == QmlGraphicsBorderImage::Repeat); + QCOMPARE(obj->width(), 300.); + QCOMPARE(obj->height(), 300.); + QCOMPARE(obj->border()->left(), 10); + QCOMPARE(obj->border()->top(), 20); + QCOMPARE(obj->border()->right(), 30); + QCOMPARE(obj->border()->bottom(), 40); + QCOMPARE(obj->horizontalTileMode(), QmlGraphicsBorderImage::Round); + QCOMPARE(obj->verticalTileMode(), QmlGraphicsBorderImage::Repeat); + + delete obj; +} + +void tst_qmlgraphicsborderimage::invalidSciFile() +{ + QString componentStr = "import Qt 4.6\nBorderImage { source: \"" SRCDIR "/data/invalid.sci\"; width: 300; height: 300 }"; + QmlComponent component(&engine, componentStr.toLatin1(), QUrl("file://")); + QmlGraphicsBorderImage *obj = qobject_cast(component.create()); + QVERIFY(obj != 0); + QCOMPARE(obj->width(), 300.); + QCOMPARE(obj->height(), 300.); + QCOMPARE(obj->status(), QmlGraphicsImageBase::Error); + QCOMPARE(obj->horizontalTileMode(), QmlGraphicsBorderImage::Stretch); + QCOMPARE(obj->verticalTileMode(), QmlGraphicsBorderImage::Stretch); delete obj; } -- cgit v0.12 From 7ea049e9ade06d8a97cd947066ee6cc0d99b084f Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Thu, 5 Nov 2009 13:45:52 +1000 Subject: update rect visuals --- .../visual/rect/data-MAC/rect-painting.0.png | Bin 0 -> 32225 bytes .../visual/rect/data-MAC/rect-painting.qml | 355 +++++++++++++++++++++ 2 files changed, 355 insertions(+) create mode 100644 tests/auto/declarative/visual/rect/data-MAC/rect-painting.0.png create mode 100644 tests/auto/declarative/visual/rect/data-MAC/rect-painting.qml diff --git a/tests/auto/declarative/visual/rect/data-MAC/rect-painting.0.png b/tests/auto/declarative/visual/rect/data-MAC/rect-painting.0.png new file mode 100644 index 0000000..0b45874 Binary files /dev/null and b/tests/auto/declarative/visual/rect/data-MAC/rect-painting.0.png differ diff --git a/tests/auto/declarative/visual/rect/data-MAC/rect-painting.qml b/tests/auto/declarative/visual/rect/data-MAC/rect-painting.qml new file mode 100644 index 0000000..438096e --- /dev/null +++ b/tests/auto/declarative/visual/rect/data-MAC/rect-painting.qml @@ -0,0 +1,355 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 32 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 48 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 64 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 80 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 96 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 112 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 128 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 144 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 160 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 176 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 192 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 208 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 224 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 240 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 256 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 272 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 288 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 304 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 320 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 336 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 352 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 368 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 384 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 400 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 416 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 432 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 448 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 464 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 480 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 496 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 512 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 528 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 544 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 560 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 576 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 592 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 608 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 624 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 640 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 656 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 672 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 688 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 704 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 720 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 736 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 752 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 768 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 784 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 800 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 816 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 832 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 848 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 864 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 880 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 896 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 912 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 928 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 944 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 960 + image: "rect-painting.0.png" + } + Frame { + msec: 976 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 992 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1008 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1024 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1040 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1056 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1072 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1088 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1104 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1120 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1136 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1152 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1168 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1184 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1200 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1216 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1232 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1248 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1264 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1280 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1296 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1312 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 1328 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1344 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } + Frame { + msec: 1360 + hash: "f38360b51d832ed7f70614dfe1964ec8" + } +} -- cgit v0.12 From 135a035362939b1c80d504e641f7dcb20f33a17b Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Thu, 5 Nov 2009 13:46:28 +1000 Subject: Remove "to" limit on minor version. QML_DEFINE_TYPE etc. now define just the initial support version, with support in all future versions being thus implied. QTBUG-5421 --- demos/declarative/minehunt/main.cpp | 2 +- doc/src/declarative/modules.qdoc | 12 ++++--- examples/declarative/extending/adding/person.cpp | 2 +- .../extending/attached/birthdayparty.cpp | 2 +- examples/declarative/extending/attached/person.cpp | 4 +-- .../extending/binding/birthdayparty.cpp | 2 +- .../extending/binding/happybirthday.cpp | 2 +- examples/declarative/extending/binding/person.cpp | 4 +-- .../extending/coercion/birthdayparty.cpp | 2 +- examples/declarative/extending/coercion/person.cpp | 4 +-- .../extending/default/birthdayparty.cpp | 2 +- examples/declarative/extending/default/person.cpp | 4 +-- .../declarative/extending/extended/lineedit.cpp | 2 +- .../extending/grouped/birthdayparty.cpp | 2 +- examples/declarative/extending/grouped/person.cpp | 4 +-- .../extending/properties/birthdayparty.cpp | 2 +- .../declarative/extending/properties/person.cpp | 2 +- .../declarative/extending/signal/birthdayparty.cpp | 2 +- examples/declarative/extending/signal/person.cpp | 4 +-- .../extending/valuesource/birthdayparty.cpp | 2 +- .../extending/valuesource/happybirthday.cpp | 2 +- .../declarative/extending/valuesource/person.cpp | 4 +-- examples/declarative/loader/qmlfolderlistmodel.cpp | 2 +- src/declarative/extra/qmlbehavior.cpp | 2 +- src/declarative/extra/qmldatetimeformatter.cpp | 2 +- src/declarative/extra/qmlfontloader.cpp | 2 +- .../extra/qmlgraphicsanimatedimageitem.cpp | 2 +- src/declarative/extra/qmlgraphicsparticles.cpp | 10 +++--- src/declarative/extra/qmlnumberformatter.cpp | 2 +- src/declarative/extra/qmlxmllistmodel.cpp | 4 +-- .../graphicsitems/qmlgraphicsanchors.cpp | 2 +- .../graphicsitems/qmlgraphicsborderimage.cpp | 2 +- .../graphicsitems/qmlgraphicseffects.cpp | 8 ++--- .../graphicsitems/qmlgraphicsflickable.cpp | 4 +-- .../graphicsitems/qmlgraphicsflipable.cpp | 2 +- .../graphicsitems/qmlgraphicsfocuspanel.cpp | 2 +- .../graphicsitems/qmlgraphicsfocusscope.cpp | 2 +- .../qmlgraphicsgraphicsobjectcontainer.cpp | 2 +- .../graphicsitems/qmlgraphicsgridview.cpp | 2 +- src/declarative/graphicsitems/qmlgraphicsimage.cpp | 2 +- src/declarative/graphicsitems/qmlgraphicsitem.cpp | 10 +++--- .../graphicsitems/qmlgraphicslayoutitem.cpp | 2 +- .../graphicsitems/qmlgraphicslistview.cpp | 2 +- .../graphicsitems/qmlgraphicsloader.cpp | 2 +- .../graphicsitems/qmlgraphicsmouseregion.cpp | 4 +-- src/declarative/graphicsitems/qmlgraphicspath.cpp | 12 +++---- .../graphicsitems/qmlgraphicspathview.cpp | 2 +- .../graphicsitems/qmlgraphicspositioners.cpp | 6 ++-- .../graphicsitems/qmlgraphicsrectangle.cpp | 8 ++--- .../graphicsitems/qmlgraphicsrepeater.cpp | 2 +- src/declarative/graphicsitems/qmlgraphicstext.cpp | 2 +- .../graphicsitems/qmlgraphicstextedit.cpp | 2 +- .../graphicsitems/qmlgraphicstextinput.cpp | 4 +-- .../graphicsitems/qmlgraphicsvisualitemmodel.cpp | 4 +-- .../graphicsitems/qmlgraphicswebview.cpp | 2 +- src/declarative/qml/qml.h | 22 ++++++------- src/declarative/qml/qmlcomponent.cpp | 2 +- src/declarative/qml/qmlcustomparser_p.h | 8 ++--- src/declarative/qml/qmlengine.cpp | 15 +++------ src/declarative/qml/qmlmetatype.cpp | 26 ++++++--------- src/declarative/qml/qmlmetatype.h | 21 ++++++------ src/declarative/qml/qmlprivate.h | 2 +- src/declarative/util/qmlanimation.cpp | 18 +++++------ src/declarative/util/qmlbind.cpp | 2 +- src/declarative/util/qmlconnection.cpp | 2 +- src/declarative/util/qmleasefollow.cpp | 2 +- src/declarative/util/qmllistmodel.cpp | 4 +-- src/declarative/util/qmlpackage.cpp | 2 +- src/declarative/util/qmlpropertychanges.cpp | 2 +- src/declarative/util/qmlspringfollow.cpp | 2 +- src/declarative/util/qmlstate.cpp | 2 +- src/declarative/util/qmlstategroup.cpp | 2 +- src/declarative/util/qmlstateoperations.cpp | 6 ++-- src/declarative/util/qmlsystempalette.cpp | 2 +- src/declarative/util/qmltimer.cpp | 2 +- src/declarative/util/qmltransition.cpp | 2 +- src/declarative/widgets/graphicslayouts.cpp | 6 ++-- src/declarative/widgets/graphicswidgets.cpp | 6 ++-- src/gui/graphicsview/qgraphicsview.cpp | 3 ++ tests/auto/declarative/qmlecmascript/testtypes.cpp | 12 +++---- .../data/lib/com/nokia/installedtest/qmldir | 4 +-- tests/auto/declarative/qmllanguage/testtypes.cpp | 12 +++---- .../declarative/qmllanguage/tst_qmllanguage.cpp | 37 ++++++++-------------- .../qmlmetaproperty/tst_qmlmetaproperty.cpp | 4 +-- tests/auto/declarative/states/tst_states.cpp | 2 +- tools/qmlviewer/qfxtester.cpp | 8 ++--- 86 files changed, 204 insertions(+), 222 deletions(-) diff --git a/demos/declarative/minehunt/main.cpp b/demos/declarative/minehunt/main.cpp index f4cd6a5..5e67cc1 100644 --- a/demos/declarative/minehunt/main.cpp +++ b/demos/declarative/minehunt/main.cpp @@ -92,7 +92,7 @@ private: }; QML_DECLARE_TYPE(Tile); -QML_DEFINE_TYPE(0,0,0,0,Tile,Tile); +QML_DEFINE_TYPE(0,0,0,Tile,Tile); class MyWidget : public QWidget { diff --git a/doc/src/declarative/modules.qdoc b/doc/src/declarative/modules.qdoc index 2f7cb57..1491fea 100644 --- a/doc/src/declarative/modules.qdoc +++ b/doc/src/declarative/modules.qdoc @@ -91,14 +91,16 @@ mapping from all type names to versioned QML files. It is a list of lines of the \code # - + \endcode - is the type being made available; is either a single version -number like \c 4.0 or a range of minor versions like \c 4.0-2; is the (relative) + is the type being made available; is a version +number like \c 4.0; is the (relative) file name of the QML file defining the type. -The same type can be provided by different files in different versions. -If a type is in multiple major versions, it should be listed on a separate line. + +The same type can be provided by different files in different versions, in which +case later earlier versions (eg. 1.2) must precede earlier versions (eg. 1.0), +since the \e first name-version match is used. Installed files do not need to import the module of which they are a part, as they can refer to the other QML files in the module as relative (local) files. diff --git a/examples/declarative/extending/adding/person.cpp b/examples/declarative/extending/adding/person.cpp index 0035282..832bcdc 100644 --- a/examples/declarative/extending/adding/person.cpp +++ b/examples/declarative/extending/adding/person.cpp @@ -66,5 +66,5 @@ void Person::setShoeSize(int s) m_shoeSize = s; } -QML_DEFINE_TYPE(People, 1, 0, 0, Person, Person); +QML_DEFINE_TYPE(People, 1,0, Person, Person); // ![0] diff --git a/examples/declarative/extending/attached/birthdayparty.cpp b/examples/declarative/extending/attached/birthdayparty.cpp index 58ea6a0..c1f0fe8 100644 --- a/examples/declarative/extending/attached/birthdayparty.cpp +++ b/examples/declarative/extending/attached/birthdayparty.cpp @@ -82,4 +82,4 @@ BirthdayPartyAttached *BirthdayParty::qmlAttachedProperties(QObject *object) return new BirthdayPartyAttached(object); } -QML_DEFINE_TYPE(People, 1, 0, 0, BirthdayParty, BirthdayParty); +QML_DEFINE_TYPE(People, 1,0, BirthdayParty, BirthdayParty); diff --git a/examples/declarative/extending/attached/person.cpp b/examples/declarative/extending/attached/person.cpp index a4138c7..8105ee7 100644 --- a/examples/declarative/extending/attached/person.cpp +++ b/examples/declarative/extending/attached/person.cpp @@ -113,11 +113,11 @@ Boy::Boy(QObject * parent) { } -QML_DEFINE_TYPE(People, 1, 0, 0, Boy, Boy); +QML_DEFINE_TYPE(People, 1,0, Boy, Boy); Girl::Girl(QObject * parent) : Person(parent) { } -QML_DEFINE_TYPE(People, 1, 0, 0, Girl, Girl); +QML_DEFINE_TYPE(People, 1,0, Girl, Girl); diff --git a/examples/declarative/extending/binding/birthdayparty.cpp b/examples/declarative/extending/binding/birthdayparty.cpp index cfa35c1..13d6bc8 100644 --- a/examples/declarative/extending/binding/birthdayparty.cpp +++ b/examples/declarative/extending/binding/birthdayparty.cpp @@ -103,4 +103,4 @@ BirthdayPartyAttached *BirthdayParty::qmlAttachedProperties(QObject *object) return new BirthdayPartyAttached(object); } -QML_DEFINE_TYPE(People, 1, 0, 0, BirthdayParty, BirthdayParty); +QML_DEFINE_TYPE(People, 1,0, BirthdayParty, BirthdayParty); diff --git a/examples/declarative/extending/binding/happybirthday.cpp b/examples/declarative/extending/binding/happybirthday.cpp index ffd6de4..9ce5a3d 100644 --- a/examples/declarative/extending/binding/happybirthday.cpp +++ b/examples/declarative/extending/binding/happybirthday.cpp @@ -84,4 +84,4 @@ void HappyBirthday::advance() m_target.write(m_lyrics.at(m_line)); } -QML_DEFINE_TYPE(People, 1, 0, 0, HappyBirthday, HappyBirthday); +QML_DEFINE_TYPE(People, 1,0, HappyBirthday, HappyBirthday); diff --git a/examples/declarative/extending/binding/person.cpp b/examples/declarative/extending/binding/person.cpp index a388452..6ad62e9 100644 --- a/examples/declarative/extending/binding/person.cpp +++ b/examples/declarative/extending/binding/person.cpp @@ -133,11 +133,11 @@ Boy::Boy(QObject * parent) { } -QML_DEFINE_TYPE(People, 1, 0, 0, Boy, Boy); +QML_DEFINE_TYPE(People, 1,0, Boy, Boy); Girl::Girl(QObject * parent) : Person(parent) { } -QML_DEFINE_TYPE(People, 1, 0, 0, Girl, Girl); +QML_DEFINE_TYPE(People, 1,0, Girl, Girl); diff --git a/examples/declarative/extending/coercion/birthdayparty.cpp b/examples/declarative/extending/coercion/birthdayparty.cpp index 81303aa..f3e0846 100644 --- a/examples/declarative/extending/coercion/birthdayparty.cpp +++ b/examples/declarative/extending/coercion/birthdayparty.cpp @@ -60,4 +60,4 @@ QmlList *BirthdayParty::guests() return &m_guests; } -QML_DEFINE_TYPE(People, 1, 0, 0, BirthdayParty, BirthdayParty); +QML_DEFINE_TYPE(People, 1,0, BirthdayParty, BirthdayParty); diff --git a/examples/declarative/extending/coercion/person.cpp b/examples/declarative/extending/coercion/person.cpp index 9009612..a897d8d 100644 --- a/examples/declarative/extending/coercion/person.cpp +++ b/examples/declarative/extending/coercion/person.cpp @@ -75,12 +75,12 @@ Boy::Boy(QObject * parent) { } -QML_DEFINE_TYPE(People, 1, 0, 0, Boy, Boy); +QML_DEFINE_TYPE(People, 1,0, Boy, Boy); Girl::Girl(QObject * parent) : Person(parent) { } -QML_DEFINE_TYPE(People, 1, 0, 0, Girl, Girl); +QML_DEFINE_TYPE(People, 1,0, Girl, Girl); // ![1] diff --git a/examples/declarative/extending/default/birthdayparty.cpp b/examples/declarative/extending/default/birthdayparty.cpp index 81303aa..f3e0846 100644 --- a/examples/declarative/extending/default/birthdayparty.cpp +++ b/examples/declarative/extending/default/birthdayparty.cpp @@ -60,4 +60,4 @@ QmlList *BirthdayParty::guests() return &m_guests; } -QML_DEFINE_TYPE(People, 1, 0, 0, BirthdayParty, BirthdayParty); +QML_DEFINE_TYPE(People, 1,0, BirthdayParty, BirthdayParty); diff --git a/examples/declarative/extending/default/person.cpp b/examples/declarative/extending/default/person.cpp index 2c93f5b..a5eafc4 100644 --- a/examples/declarative/extending/default/person.cpp +++ b/examples/declarative/extending/default/person.cpp @@ -72,11 +72,11 @@ Boy::Boy(QObject * parent) { } -QML_DEFINE_TYPE(People, 1, 0, 0, Boy, Boy); +QML_DEFINE_TYPE(People, 1,0, Boy, Boy); Girl::Girl(QObject * parent) : Person(parent) { } -QML_DEFINE_TYPE(People, 1, 0, 0, Girl, Girl); +QML_DEFINE_TYPE(People, 1,0, Girl, Girl); diff --git a/examples/declarative/extending/extended/lineedit.cpp b/examples/declarative/extending/extended/lineedit.cpp index c6015ff..8a31004 100644 --- a/examples/declarative/extending/extended/lineedit.cpp +++ b/examples/declarative/extending/extended/lineedit.cpp @@ -103,4 +103,4 @@ void LineEditExtension::setBottomMargin(int m) } QML_DECLARE_TYPE(QLineEdit); -QML_DEFINE_EXTENDED_TYPE(People, 1, 0, 0, QLineEdit, QLineEdit, LineEditExtension); +QML_DEFINE_EXTENDED_TYPE(People, 1,0, QLineEdit, QLineEdit, LineEditExtension); diff --git a/examples/declarative/extending/grouped/birthdayparty.cpp b/examples/declarative/extending/grouped/birthdayparty.cpp index 81303aa..f3e0846 100644 --- a/examples/declarative/extending/grouped/birthdayparty.cpp +++ b/examples/declarative/extending/grouped/birthdayparty.cpp @@ -60,4 +60,4 @@ QmlList *BirthdayParty::guests() return &m_guests; } -QML_DEFINE_TYPE(People, 1, 0, 0, BirthdayParty, BirthdayParty); +QML_DEFINE_TYPE(People, 1,0, BirthdayParty, BirthdayParty); diff --git a/examples/declarative/extending/grouped/person.cpp b/examples/declarative/extending/grouped/person.cpp index a4138c7..8105ee7 100644 --- a/examples/declarative/extending/grouped/person.cpp +++ b/examples/declarative/extending/grouped/person.cpp @@ -113,11 +113,11 @@ Boy::Boy(QObject * parent) { } -QML_DEFINE_TYPE(People, 1, 0, 0, Boy, Boy); +QML_DEFINE_TYPE(People, 1,0, Boy, Boy); Girl::Girl(QObject * parent) : Person(parent) { } -QML_DEFINE_TYPE(People, 1, 0, 0, Girl, Girl); +QML_DEFINE_TYPE(People, 1,0, Girl, Girl); diff --git a/examples/declarative/extending/properties/birthdayparty.cpp b/examples/declarative/extending/properties/birthdayparty.cpp index 0e82b87..b98a691 100644 --- a/examples/declarative/extending/properties/birthdayparty.cpp +++ b/examples/declarative/extending/properties/birthdayparty.cpp @@ -62,4 +62,4 @@ QmlList *BirthdayParty::guests() } // ![0] -QML_DEFINE_TYPE(People, 1, 0, 0, BirthdayParty, BirthdayParty); +QML_DEFINE_TYPE(People, 1,0, BirthdayParty, BirthdayParty); diff --git a/examples/declarative/extending/properties/person.cpp b/examples/declarative/extending/properties/person.cpp index 764e159..b41d0b6 100644 --- a/examples/declarative/extending/properties/person.cpp +++ b/examples/declarative/extending/properties/person.cpp @@ -65,4 +65,4 @@ void Person::setShoeSize(int s) m_shoeSize = s; } -QML_DEFINE_TYPE(People, 1, 0, 0, Person, Person); +QML_DEFINE_TYPE(People, 1,0, Person, Person); diff --git a/examples/declarative/extending/signal/birthdayparty.cpp b/examples/declarative/extending/signal/birthdayparty.cpp index 49072e0..178ce0e 100644 --- a/examples/declarative/extending/signal/birthdayparty.cpp +++ b/examples/declarative/extending/signal/birthdayparty.cpp @@ -88,4 +88,4 @@ BirthdayPartyAttached *BirthdayParty::qmlAttachedProperties(QObject *object) return new BirthdayPartyAttached(object); } -QML_DEFINE_TYPE(People, 1, 0, 0, BirthdayParty, BirthdayParty); +QML_DEFINE_TYPE(People, 1,0, BirthdayParty, BirthdayParty); diff --git a/examples/declarative/extending/signal/person.cpp b/examples/declarative/extending/signal/person.cpp index a4138c7..8105ee7 100644 --- a/examples/declarative/extending/signal/person.cpp +++ b/examples/declarative/extending/signal/person.cpp @@ -113,11 +113,11 @@ Boy::Boy(QObject * parent) { } -QML_DEFINE_TYPE(People, 1, 0, 0, Boy, Boy); +QML_DEFINE_TYPE(People, 1,0, Boy, Boy); Girl::Girl(QObject * parent) : Person(parent) { } -QML_DEFINE_TYPE(People, 1, 0, 0, Girl, Girl); +QML_DEFINE_TYPE(People, 1,0, Girl, Girl); diff --git a/examples/declarative/extending/valuesource/birthdayparty.cpp b/examples/declarative/extending/valuesource/birthdayparty.cpp index c2e8346..b0472d0 100644 --- a/examples/declarative/extending/valuesource/birthdayparty.cpp +++ b/examples/declarative/extending/valuesource/birthdayparty.cpp @@ -98,4 +98,4 @@ BirthdayPartyAttached *BirthdayParty::qmlAttachedProperties(QObject *object) return new BirthdayPartyAttached(object); } -QML_DEFINE_TYPE(People, 1, 0, 0, BirthdayParty, BirthdayParty); +QML_DEFINE_TYPE(People, 1,0, BirthdayParty, BirthdayParty); diff --git a/examples/declarative/extending/valuesource/happybirthday.cpp b/examples/declarative/extending/valuesource/happybirthday.cpp index 8c9763b..b453944 100644 --- a/examples/declarative/extending/valuesource/happybirthday.cpp +++ b/examples/declarative/extending/valuesource/happybirthday.cpp @@ -79,4 +79,4 @@ void HappyBirthday::advance() m_target.write(m_lyrics.at(m_line)); } -QML_DEFINE_TYPE(People, 1, 0, 0, HappyBirthday, HappyBirthday); +QML_DEFINE_TYPE(People, 1,0, HappyBirthday, HappyBirthday); diff --git a/examples/declarative/extending/valuesource/person.cpp b/examples/declarative/extending/valuesource/person.cpp index a4138c7..8105ee7 100644 --- a/examples/declarative/extending/valuesource/person.cpp +++ b/examples/declarative/extending/valuesource/person.cpp @@ -113,11 +113,11 @@ Boy::Boy(QObject * parent) { } -QML_DEFINE_TYPE(People, 1, 0, 0, Boy, Boy); +QML_DEFINE_TYPE(People, 1,0, Boy, Boy); Girl::Girl(QObject * parent) : Person(parent) { } -QML_DEFINE_TYPE(People, 1, 0, 0, Girl, Girl); +QML_DEFINE_TYPE(People, 1,0, Girl, Girl); diff --git a/examples/declarative/loader/qmlfolderlistmodel.cpp b/examples/declarative/loader/qmlfolderlistmodel.cpp index a90ff61..14d2324 100644 --- a/examples/declarative/loader/qmlfolderlistmodel.cpp +++ b/examples/declarative/loader/qmlfolderlistmodel.cpp @@ -382,7 +382,7 @@ void QmlFolderListModel::setShowOnlyReadable(bool on) } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,FolderListModel,QmlFolderListModel) +QML_DEFINE_TYPE(Qt,4,6,FolderListModel,QmlFolderListModel) QT_END_NAMESPACE diff --git a/src/declarative/extra/qmlbehavior.cpp b/src/declarative/extra/qmlbehavior.cpp index d6f4b42..e5d3d35 100644 --- a/src/declarative/extra/qmlbehavior.cpp +++ b/src/declarative/extra/qmlbehavior.cpp @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Behavior,QmlBehavior) +QML_DEFINE_TYPE(Qt,4,6,Behavior,QmlBehavior) class QmlBehaviorPrivate : public QObjectPrivate { diff --git a/src/declarative/extra/qmldatetimeformatter.cpp b/src/declarative/extra/qmldatetimeformatter.cpp index 4441850..983287e 100644 --- a/src/declarative/extra/qmldatetimeformatter.cpp +++ b/src/declarative/extra/qmldatetimeformatter.cpp @@ -365,6 +365,6 @@ void QmlDateTimeFormatter::componentComplete() d->updateText(); } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,DateTimeFormatter,QmlDateTimeFormatter) +QML_DEFINE_TYPE(Qt,4,6,DateTimeFormatter,QmlDateTimeFormatter) QT_END_NAMESPACE diff --git a/src/declarative/extra/qmlfontloader.cpp b/src/declarative/extra/qmlfontloader.cpp index e8db649..f51ef98 100644 --- a/src/declarative/extra/qmlfontloader.cpp +++ b/src/declarative/extra/qmlfontloader.cpp @@ -67,7 +67,7 @@ public: QmlFontLoader::Status status; }; -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,FontLoader,QmlFontLoader) +QML_DEFINE_TYPE(Qt,4,6,FontLoader,QmlFontLoader) /*! \qmlclass FontLoader QmlFontLoader diff --git a/src/declarative/extra/qmlgraphicsanimatedimageitem.cpp b/src/declarative/extra/qmlgraphicsanimatedimageitem.cpp index ba09279..2405bde 100644 --- a/src/declarative/extra/qmlgraphicsanimatedimageitem.cpp +++ b/src/declarative/extra/qmlgraphicsanimatedimageitem.cpp @@ -76,7 +76,7 @@ Item { \endqml \endtable */ -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,AnimatedImage,QmlGraphicsAnimatedImageItem) +QML_DEFINE_TYPE(Qt,4,6,AnimatedImage,QmlGraphicsAnimatedImageItem) QmlGraphicsAnimatedImageItem::QmlGraphicsAnimatedImageItem(QmlGraphicsItem *parent) : QmlGraphicsImage(*(new QmlGraphicsAnimatedImageItemPrivate), parent) diff --git a/src/declarative/extra/qmlgraphicsparticles.cpp b/src/declarative/extra/qmlgraphicsparticles.cpp index 0349a4e..e96a1d5 100644 --- a/src/declarative/extra/qmlgraphicsparticles.cpp +++ b/src/declarative/extra/qmlgraphicsparticles.cpp @@ -105,7 +105,7 @@ public: //--------------------------------------------------------------------------- -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParticleMotion,QmlGraphicsParticleMotion) +QML_DEFINE_TYPE(Qt,4,6,ParticleMotion,QmlGraphicsParticleMotion) /*! \class QmlGraphicsParticleMotion @@ -166,7 +166,7 @@ void QmlGraphicsParticleMotion::destroy(QmlGraphicsParticle &particle) \brief The QmlGraphicsParticleMotionLinear class moves the particles linearly. */ -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParticleMotionLinear,QmlGraphicsParticleMotionLinear) +QML_DEFINE_TYPE(Qt,4,6,ParticleMotionLinear,QmlGraphicsParticleMotionLinear) void QmlGraphicsParticleMotionLinear::advance(QmlGraphicsParticle &p, int interval) { @@ -188,7 +188,7 @@ void QmlGraphicsParticleMotionLinear::advance(QmlGraphicsParticle &p, int interv \brief The QmlGraphicsParticleMotionGravity class moves the particles towards a point. */ -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParticleMotionGravity,QmlGraphicsParticleMotionGravity) +QML_DEFINE_TYPE(Qt,4,6,ParticleMotionGravity,QmlGraphicsParticleMotionGravity) /*! \qmlproperty int ParticleMotionGravity::xattractor @@ -290,7 +290,7 @@ Rectangle { This property holds how quickly the paricles will move from side to side. */ -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParticleMotionWander,QmlGraphicsParticleMotionWander) +QML_DEFINE_TYPE(Qt,4,6,ParticleMotionWander,QmlGraphicsParticleMotionWander) void QmlGraphicsParticleMotionWander::advance(QmlGraphicsParticle &p, int interval) { @@ -534,7 +534,7 @@ void QmlGraphicsParticlesPrivate::updateOpacity(QmlGraphicsParticle &p, int age) } } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Particles,QmlGraphicsParticles) +QML_DEFINE_TYPE(Qt,4,6,Particles,QmlGraphicsParticles) /*! \qmlclass Particles diff --git a/src/declarative/extra/qmlnumberformatter.cpp b/src/declarative/extra/qmlnumberformatter.cpp index 9e599c7..4007d95 100644 --- a/src/declarative/extra/qmlnumberformatter.cpp +++ b/src/declarative/extra/qmlnumberformatter.cpp @@ -210,6 +210,6 @@ void QmlNumberFormatter::componentComplete() d->componentComplete = true; d->updateText(); } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,NumberFormatter,QmlNumberFormatter); +QML_DEFINE_TYPE(Qt,4,6,NumberFormatter,QmlNumberFormatter); QT_END_NAMESPACE diff --git a/src/declarative/extra/qmlxmllistmodel.cpp b/src/declarative/extra/qmlxmllistmodel.cpp index 43d7fb2..4243c45 100644 --- a/src/declarative/extra/qmlxmllistmodel.cpp +++ b/src/declarative/extra/qmlxmllistmodel.cpp @@ -58,8 +58,8 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,XmlRole,QmlXmlListModelRole) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,XmlListModel,QmlXmlListModel) +QML_DEFINE_TYPE(Qt,4,6,XmlRole,QmlXmlListModelRole) +QML_DEFINE_TYPE(Qt,4,6,XmlListModel,QmlXmlListModel) /*! \qmlclass XmlRole QmlXmlListModelRole diff --git a/src/declarative/graphicsitems/qmlgraphicsanchors.cpp b/src/declarative/graphicsitems/qmlgraphicsanchors.cpp index e1d2f43..404daad 100644 --- a/src/declarative/graphicsitems/qmlgraphicsanchors.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsanchors.cpp @@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Anchors,QmlGraphicsAnchors) +QML_DEFINE_TYPE(Qt,4,6,Anchors,QmlGraphicsAnchors) //TODO: should we cache relationships, so we don't have to check each time (parent-child or sibling)? //TODO: support non-parent, non-sibling (need to find lowest common ancestor) diff --git a/src/declarative/graphicsitems/qmlgraphicsborderimage.cpp b/src/declarative/graphicsitems/qmlgraphicsborderimage.cpp index 89bbe91..78b0be4 100644 --- a/src/declarative/graphicsitems/qmlgraphicsborderimage.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsborderimage.cpp @@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,BorderImage,QmlGraphicsBorderImage) +QML_DEFINE_TYPE(Qt,4,6,BorderImage,QmlGraphicsBorderImage) /*! \qmlclass BorderImage QmlGraphicsBorderImage diff --git a/src/declarative/graphicsitems/qmlgraphicseffects.cpp b/src/declarative/graphicsitems/qmlgraphicseffects.cpp index b642e60..2f0aae7 100644 --- a/src/declarative/graphicsitems/qmlgraphicseffects.cpp +++ b/src/declarative/graphicsitems/qmlgraphicseffects.cpp @@ -45,7 +45,7 @@ QML_DECLARE_TYPE(QGraphicsEffect) QML_DEFINE_NOCREATE_TYPE(QGraphicsEffect) QML_DECLARE_TYPE(QGraphicsBlurEffect) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Blur,QGraphicsBlurEffect) +QML_DEFINE_TYPE(Qt,4,6,Blur,QGraphicsBlurEffect) /*! \qmlclass Blur QGraphicsBlurEffect @@ -82,7 +82,7 @@ QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Blur,QGraphicsBlurEffect) */ QML_DECLARE_TYPE(QGraphicsColorizeEffect) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Colorize,QGraphicsColorizeEffect) +QML_DEFINE_TYPE(Qt,4,6,Colorize,QGraphicsColorizeEffect) /*! \qmlclass Colorize QGraphicsColorizeEffect @@ -110,7 +110,7 @@ QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Colorize,QGraphicsColorizeEffect */ QML_DECLARE_TYPE(QGraphicsDropShadowEffect) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,DropShadow,QGraphicsDropShadowEffect) +QML_DEFINE_TYPE(Qt,4,6,DropShadow,QGraphicsDropShadowEffect) /*! \qmlclass DropShadow QGraphicsDropShadowEffect @@ -153,7 +153,7 @@ QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,DropShadow,QGraphicsDropShadowEf */ QML_DECLARE_TYPE(QGraphicsOpacityEffect) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Opacity,QGraphicsOpacityEffect) +QML_DEFINE_TYPE(Qt,4,6,Opacity,QGraphicsOpacityEffect) /*! \qmlclass Opacity QGraphicsOpacityEffect diff --git a/src/declarative/graphicsitems/qmlgraphicsflickable.cpp b/src/declarative/graphicsitems/qmlgraphicsflickable.cpp index 19c5abc..c7332f9 100644 --- a/src/declarative/graphicsitems/qmlgraphicsflickable.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsflickable.cpp @@ -341,7 +341,7 @@ void QmlGraphicsFlickablePrivate::updateBeginningEnd() visibleArea->updateVisible(); } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Flickable,QmlGraphicsFlickable) +QML_DEFINE_TYPE(Qt,4,6,Flickable,QmlGraphicsFlickable) /*! \qmlclass Flickable QmlGraphicsFlickable @@ -1278,6 +1278,6 @@ void QmlGraphicsFlickablePrivate::updateVelocity() QT_END_NAMESPACE QML_DECLARE_TYPE(QmlGraphicsFlickableVisibleArea) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,VisibleArea,QmlGraphicsFlickableVisibleArea) +QML_DEFINE_TYPE(Qt,4,6,VisibleArea,QmlGraphicsFlickableVisibleArea) #include "qmlgraphicsflickable.moc" diff --git a/src/declarative/graphicsitems/qmlgraphicsflipable.cpp b/src/declarative/graphicsitems/qmlgraphicsflipable.cpp index 05cc214..37929fa 100644 --- a/src/declarative/graphicsitems/qmlgraphicsflipable.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsflipable.cpp @@ -46,7 +46,7 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Flipable,QmlGraphicsFlipable) +QML_DEFINE_TYPE(Qt,4,6,Flipable,QmlGraphicsFlipable) class QmlGraphicsFlipablePrivate : public QmlGraphicsItemPrivate { diff --git a/src/declarative/graphicsitems/qmlgraphicsfocuspanel.cpp b/src/declarative/graphicsitems/qmlgraphicsfocuspanel.cpp index a19e355..ae7ffda 100644 --- a/src/declarative/graphicsitems/qmlgraphicsfocuspanel.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsfocuspanel.cpp @@ -45,7 +45,7 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,FocusPanel,QmlGraphicsFocusPanel) +QML_DEFINE_TYPE(Qt,4,6,FocusPanel,QmlGraphicsFocusPanel) /*! \qmlclass FocusPanel QmlGraphicsFocusPanel diff --git a/src/declarative/graphicsitems/qmlgraphicsfocusscope.cpp b/src/declarative/graphicsitems/qmlgraphicsfocusscope.cpp index f03e3f1..b0ad32f 100644 --- a/src/declarative/graphicsitems/qmlgraphicsfocusscope.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsfocusscope.cpp @@ -43,7 +43,7 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,FocusScope,QmlGraphicsFocusScope) +QML_DEFINE_TYPE(Qt,4,6,FocusScope,QmlGraphicsFocusScope) /*! \qmlclass FocusScope QmlGraphicsFocusScope diff --git a/src/declarative/graphicsitems/qmlgraphicsgraphicsobjectcontainer.cpp b/src/declarative/graphicsitems/qmlgraphicsgraphicsobjectcontainer.cpp index 2a0d6a6..294a374 100644 --- a/src/declarative/graphicsitems/qmlgraphicsgraphicsobjectcontainer.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsgraphicsobjectcontainer.cpp @@ -91,7 +91,7 @@ public: */ QML_DEFINE_NOCREATE_TYPE(QGraphicsObject) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,GraphicsObjectContainer,QmlGraphicsGraphicsObjectContainer) +QML_DEFINE_TYPE(Qt,4,6,GraphicsObjectContainer,QmlGraphicsGraphicsObjectContainer) QmlGraphicsGraphicsObjectContainer::QmlGraphicsGraphicsObjectContainer(QmlGraphicsItem *parent) : QmlGraphicsItem(*new QmlGraphicsGraphicsObjectContainerPrivate, parent) diff --git a/src/declarative/graphicsitems/qmlgraphicsgridview.cpp b/src/declarative/graphicsitems/qmlgraphicsgridview.cpp index 1ee4511..9f9b336 100644 --- a/src/declarative/graphicsitems/qmlgraphicsgridview.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsgridview.cpp @@ -1578,7 +1578,7 @@ QmlGraphicsGridViewAttached *QmlGraphicsGridView::qmlAttachedProperties(QObject return QmlGraphicsGridViewAttached::properties(obj); } -QML_DEFINE_TYPE(Qt, 4,6, (QT_VERSION&0x00ff00)>>8, GridView, QmlGraphicsGridView) +QML_DEFINE_TYPE(Qt, 4,6, GridView, QmlGraphicsGridView) QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qmlgraphicsimage.cpp b/src/declarative/graphicsitems/qmlgraphicsimage.cpp index 938fe2a..89b50a1 100644 --- a/src/declarative/graphicsitems/qmlgraphicsimage.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsimage.cpp @@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Image,QmlGraphicsImage) +QML_DEFINE_TYPE(Qt,4,6,Image,QmlGraphicsImage) /*! \qmlclass Image QmlGraphicsImage diff --git a/src/declarative/graphicsitems/qmlgraphicsitem.cpp b/src/declarative/graphicsitems/qmlgraphicsitem.cpp index 51b8365..77e6db8 100644 --- a/src/declarative/graphicsitems/qmlgraphicsitem.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsitem.cpp @@ -70,11 +70,11 @@ QT_BEGIN_NAMESPACE #define FLT_MAX 1E+37 #endif -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Item,QmlGraphicsItem) +QML_DEFINE_TYPE(Qt,4,6,Item,QmlGraphicsItem) QML_DEFINE_NOCREATE_TYPE(QGraphicsTransform); -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Scale,QGraphicsScale) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Rotation,QGraphicsRotation) +QML_DEFINE_TYPE(Qt,4,6,Scale,QGraphicsScale) +QML_DEFINE_TYPE(Qt,4,6,Rotation,QGraphicsRotation) #include "qmlgraphicseffects.cpp" @@ -2916,7 +2916,7 @@ QT_END_NAMESPACE QML_DECLARE_TYPE(QmlGraphicsKeysAttached) QML_DECLARE_TYPEINFO(QmlGraphicsKeysAttached, QML_HAS_ATTACHED_PROPERTIES) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Keys,QmlGraphicsKeysAttached) +QML_DEFINE_TYPE(Qt,4,6,Keys,QmlGraphicsKeysAttached) QML_DECLARE_TYPE(QmlGraphicsKeyNavigationAttached) QML_DECLARE_TYPEINFO(QmlGraphicsKeyNavigationAttached, QML_HAS_ATTACHED_PROPERTIES) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,KeyNavigation,QmlGraphicsKeyNavigationAttached) +QML_DEFINE_TYPE(Qt,4,6,KeyNavigation,QmlGraphicsKeyNavigationAttached) diff --git a/src/declarative/graphicsitems/qmlgraphicslayoutitem.cpp b/src/declarative/graphicsitems/qmlgraphicslayoutitem.cpp index 45420ed..fafef0e 100644 --- a/src/declarative/graphicsitems/qmlgraphicslayoutitem.cpp +++ b/src/declarative/graphicsitems/qmlgraphicslayoutitem.cpp @@ -45,7 +45,7 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,LayoutItem,QmlGraphicsLayoutItem) +QML_DEFINE_TYPE(Qt,4,6,LayoutItem,QmlGraphicsLayoutItem) /*! \qmlclass LayoutItem QmlGraphicsLayoutItem diff --git a/src/declarative/graphicsitems/qmlgraphicslistview.cpp b/src/declarative/graphicsitems/qmlgraphicslistview.cpp index efe047a..fd8b8b0 100644 --- a/src/declarative/graphicsitems/qmlgraphicslistview.cpp +++ b/src/declarative/graphicsitems/qmlgraphicslistview.cpp @@ -2038,7 +2038,7 @@ QmlGraphicsListViewAttached *QmlGraphicsListView::qmlAttachedProperties(QObject return QmlGraphicsListViewAttached::properties(obj); } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ListView,QmlGraphicsListView) +QML_DEFINE_TYPE(Qt,4,6,ListView,QmlGraphicsListView) QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qmlgraphicsloader.cpp b/src/declarative/graphicsitems/qmlgraphicsloader.cpp index 4d463ab..3b10908 100644 --- a/src/declarative/graphicsitems/qmlgraphicsloader.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsloader.cpp @@ -53,7 +53,7 @@ QmlGraphicsLoaderPrivate::~QmlGraphicsLoaderPrivate() { } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Loader,QmlGraphicsLoader) +QML_DEFINE_TYPE(Qt,4,6,Loader,QmlGraphicsLoader) /*! \qmlclass Loader QmlGraphicsLoader diff --git a/src/declarative/graphicsitems/qmlgraphicsmouseregion.cpp b/src/declarative/graphicsitems/qmlgraphicsmouseregion.cpp index 1a57062..196cdf2 100644 --- a/src/declarative/graphicsitems/qmlgraphicsmouseregion.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsmouseregion.cpp @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE static const qreal DragThreshold = 5; static const int PressAndHoldDelay = 800; -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Drag,QmlGraphicsDrag) +QML_DEFINE_TYPE(Qt,4,6,Drag,QmlGraphicsDrag) QmlGraphicsDrag::QmlGraphicsDrag(QObject *parent) : QObject(parent), _target(0), _axis(XandYAxis), _xmin(0), _xmax(0), _ymin(0), _ymax(0) { @@ -225,7 +225,7 @@ void QmlGraphicsDrag::setYmax(qreal m) The \e accepted property of the MouseEvent parameter is ignored in this handler. */ -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,MouseRegion,QmlGraphicsMouseRegion) +QML_DEFINE_TYPE(Qt,4,6,MouseRegion,QmlGraphicsMouseRegion) /*! \internal diff --git a/src/declarative/graphicsitems/qmlgraphicspath.cpp b/src/declarative/graphicsitems/qmlgraphicspath.cpp index ed0dfaa..a8f571e 100644 --- a/src/declarative/graphicsitems/qmlgraphicspath.cpp +++ b/src/declarative/graphicsitems/qmlgraphicspath.cpp @@ -47,14 +47,14 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Path,QmlGraphicsPath) +QML_DEFINE_TYPE(Qt,4,6,Path,QmlGraphicsPath) QML_DEFINE_NOCREATE_TYPE(QmlGraphicsPathElement) QML_DEFINE_NOCREATE_TYPE(QmlGraphicsCurve) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,PathAttribute,QmlGraphicsPathAttribute) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,PathPercent,QmlGraphicsPathPercent) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,PathLine,QmlGraphicsPathLine) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,PathQuad,QmlGraphicsPathQuad) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,PathCubic,QmlGraphicsPathCubic) +QML_DEFINE_TYPE(Qt,4,6,PathAttribute,QmlGraphicsPathAttribute) +QML_DEFINE_TYPE(Qt,4,6,PathPercent,QmlGraphicsPathPercent) +QML_DEFINE_TYPE(Qt,4,6,PathLine,QmlGraphicsPathLine) +QML_DEFINE_TYPE(Qt,4,6,PathQuad,QmlGraphicsPathQuad) +QML_DEFINE_TYPE(Qt,4,6,PathCubic,QmlGraphicsPathCubic) /*! \qmlclass PathElement QmlGraphicsPathElement diff --git a/src/declarative/graphicsitems/qmlgraphicspathview.cpp b/src/declarative/graphicsitems/qmlgraphicspathview.cpp index d2a9be1..f2b8d73 100644 --- a/src/declarative/graphicsitems/qmlgraphicspathview.cpp +++ b/src/declarative/graphicsitems/qmlgraphicspathview.cpp @@ -54,7 +54,7 @@ static const int FlickThreshold = 5; QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,PathView,QmlGraphicsPathView) +QML_DEFINE_TYPE(Qt,4,6,PathView,QmlGraphicsPathView) class QmlGraphicsPathViewAttached : public QObject { diff --git a/src/declarative/graphicsitems/qmlgraphicspositioners.cpp b/src/declarative/graphicsitems/qmlgraphicspositioners.cpp index f599025..d6f1fb9 100644 --- a/src/declarative/graphicsitems/qmlgraphicspositioners.cpp +++ b/src/declarative/graphicsitems/qmlgraphicspositioners.cpp @@ -331,7 +331,7 @@ void QmlGraphicsBasePositioner::applyRemove(const QList applyTransition(changes,target, d->removeActions); } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Column,QmlGraphicsColumn) +QML_DEFINE_TYPE(Qt,4,6,Column,QmlGraphicsColumn) /*! \qmlclass Column QmlGraphicsColumn \brief The Column item lines up its children vertically. @@ -522,7 +522,7 @@ void QmlGraphicsColumn::doPositioning() } } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Row,QmlGraphicsRow) +QML_DEFINE_TYPE(Qt,4,6,Row,QmlGraphicsRow) /*! \qmlclass Row QmlGraphicsRow \brief The Row item lines up its children horizontally. @@ -678,7 +678,7 @@ void QmlGraphicsRow::doPositioning() } } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Grid,QmlGraphicsGrid) +QML_DEFINE_TYPE(Qt,4,6,Grid,QmlGraphicsGrid) /*! \qmlclass Grid QmlGraphicsGrid diff --git a/src/declarative/graphicsitems/qmlgraphicsrectangle.cpp b/src/declarative/graphicsitems/qmlgraphicsrectangle.cpp index 8ae40b7..caec90c 100644 --- a/src/declarative/graphicsitems/qmlgraphicsrectangle.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsrectangle.cpp @@ -46,9 +46,9 @@ #include QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Pen,QmlGraphicsPen) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,GradientStop,QmlGraphicsGradientStop) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Gradient,QmlGraphicsGradient) +QML_DEFINE_TYPE(Qt,4,6,Pen,QmlGraphicsPen) +QML_DEFINE_TYPE(Qt,4,6,GradientStop,QmlGraphicsGradientStop) +QML_DEFINE_TYPE(Qt,4,6,Gradient,QmlGraphicsGradient) /*! \internal @@ -149,7 +149,7 @@ void QmlGraphicsGradient::doUpdate() emit updated(); } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Rectangle,QmlGraphicsRectangle) +QML_DEFINE_TYPE(Qt,4,6,Rectangle,QmlGraphicsRectangle) /*! \qmlclass Rectangle QmlGraphicsRectangle diff --git a/src/declarative/graphicsitems/qmlgraphicsrepeater.cpp b/src/declarative/graphicsitems/qmlgraphicsrepeater.cpp index 646374f..82d6da3 100644 --- a/src/declarative/graphicsitems/qmlgraphicsrepeater.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsrepeater.cpp @@ -56,7 +56,7 @@ QmlGraphicsRepeaterPrivate::~QmlGraphicsRepeaterPrivate() { } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Repeater,QmlGraphicsRepeater) +QML_DEFINE_TYPE(Qt,4,6,Repeater,QmlGraphicsRepeater) /*! \qmlclass Repeater QmlGraphicsRepeater diff --git a/src/declarative/graphicsitems/qmlgraphicstext.cpp b/src/declarative/graphicsitems/qmlgraphicstext.cpp index d640fc9..374972e 100644 --- a/src/declarative/graphicsitems/qmlgraphicstext.cpp +++ b/src/declarative/graphicsitems/qmlgraphicstext.cpp @@ -52,7 +52,7 @@ #include QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Text,QmlGraphicsText) +QML_DEFINE_TYPE(Qt,4,6,Text,QmlGraphicsText) /*! \qmlclass Text QmlGraphicsText diff --git a/src/declarative/graphicsitems/qmlgraphicstextedit.cpp b/src/declarative/graphicsitems/qmlgraphicstextedit.cpp index e84f514..d8fe5d4 100644 --- a/src/declarative/graphicsitems/qmlgraphicstextedit.cpp +++ b/src/declarative/graphicsitems/qmlgraphicstextedit.cpp @@ -53,7 +53,7 @@ #include QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,TextEdit,QmlGraphicsTextEdit) +QML_DEFINE_TYPE(Qt,4,6,TextEdit,QmlGraphicsTextEdit) /*! \qmlclass TextEdit QmlGraphicsTextEdit diff --git a/src/declarative/graphicsitems/qmlgraphicstextinput.cpp b/src/declarative/graphicsitems/qmlgraphicstextinput.cpp index 42de2b6..e2b1725 100644 --- a/src/declarative/graphicsitems/qmlgraphicstextinput.cpp +++ b/src/declarative/graphicsitems/qmlgraphicstextinput.cpp @@ -49,9 +49,9 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,TextInput,QmlGraphicsTextInput); +QML_DEFINE_TYPE(Qt,4,6,TextInput,QmlGraphicsTextInput); QML_DEFINE_NOCREATE_TYPE(QValidator); -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,QIntValidator,QIntValidator); +QML_DEFINE_TYPE(Qt,4,6,QIntValidator,QIntValidator); /*! \qmlclass TextInput QmlGraphicsTextInput diff --git a/src/declarative/graphicsitems/qmlgraphicsvisualitemmodel.cpp b/src/declarative/graphicsitems/qmlgraphicsvisualitemmodel.cpp index 80b2458..9964de9 100644 --- a/src/declarative/graphicsitems/qmlgraphicsvisualitemmodel.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsvisualitemmodel.cpp @@ -1045,8 +1045,8 @@ void QmlGraphicsVisualDataModel::_q_destroyingPackage(QmlPackage *package) } QML_DEFINE_NOCREATE_TYPE(QmlGraphicsVisualModel); -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,VisualItemModel,QmlGraphicsVisualItemModel) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,VisualDataModel,QmlGraphicsVisualDataModel) +QML_DEFINE_TYPE(Qt,4,6,VisualItemModel,QmlGraphicsVisualItemModel) +QML_DEFINE_TYPE(Qt,4,6,VisualDataModel,QmlGraphicsVisualDataModel) QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qmlgraphicswebview.cpp b/src/declarative/graphicsitems/qmlgraphicswebview.cpp index d1da0f2..4ac208c 100644 --- a/src/declarative/graphicsitems/qmlgraphicswebview.cpp +++ b/src/declarative/graphicsitems/qmlgraphicswebview.cpp @@ -62,7 +62,7 @@ #include QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,WebView,QmlGraphicsWebView) +QML_DEFINE_TYPE(Qt,4,6,WebView,QmlGraphicsWebView) QML_DEFINE_NOCREATE_TYPE(QAction) static const int MAX_DOUBLECLICK_TIME=500; // XXX need better gesture system diff --git a/src/declarative/qml/qml.h b/src/declarative/qml/qml.h index f6a6371..bb7ae24 100644 --- a/src/declarative/qml/qml.h +++ b/src/declarative/qml/qml.h @@ -91,11 +91,11 @@ QT_BEGIN_NAMESPACE #define QML_DEFINE_INTERFACE(INTERFACE) \ static int defineInterface##INTERFACE = qmlRegisterInterface(#INTERFACE); -#define QML_DEFINE_EXTENDED_TYPE(URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MIN_TO, NAME, TYPE, EXTENSION) \ - static int registerExtended##TYPE = qmlRegisterExtendedType(#URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MIN_TO, #NAME, #TYPE); +#define QML_DEFINE_EXTENDED_TYPE(URI, VERSION_MAJ, VERS, NAME, TYPE, EXTENSION) \ + static int registerExtended##TYPE = qmlRegisterExtendedType(#URI, VERSION_MAJ, VERSION_MIN, #NAME, #TYPE); -#define QML_DEFINE_TYPE(URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MIN_TO, NAME, TYPE) \ - static int defineType##TYPE = qmlRegisterType(#URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MIN_TO, #NAME, #TYPE); +#define QML_DEFINE_TYPE(URI, VERSION_MAJ, VERSION_MIN, NAME, TYPE) \ + static int defineType##TYPE = qmlRegisterType(#URI, VERSION_MAJ, VERSION_MIN, #NAME, #TYPE); #define QML_DEFINE_EXTENDED_NOCREATE_TYPE(TYPE, EXTENSION) \ static int registerExtendedNoCreate##TYPE = qmlRegisterExtendedType(#TYPE); @@ -106,19 +106,19 @@ QT_BEGIN_NAMESPACE #else #define QML_DEFINE_INTERFACE(INTERFACE) \ - template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterInterface(#INTERFACE)); + template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterInterface(#INTERFACE)); -#define QML_DEFINE_EXTENDED_TYPE(URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MIN_TO, NAME, TYPE, EXTENSION) \ - template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterExtendedType(#URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MIN_TO, #NAME, #TYPE)); +#define QML_DEFINE_EXTENDED_TYPE(URI, VERSION_MAJ, VERSION_MIN, NAME, TYPE, EXTENSION) \ + template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterExtendedType(#URI, VERSION_MAJ, VERSION_MIN, #NAME, #TYPE)); -#define QML_DEFINE_TYPE(URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MIN_TO, NAME, TYPE) \ - template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterType(#URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MIN_TO, #NAME, #TYPE)); +#define QML_DEFINE_TYPE(URI, VERSION_MAJ, VERSION_MIN, NAME, TYPE) \ + template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterType(#URI, VERSION_MAJ, VERSION_MIN, #NAME, #TYPE)); #define QML_DEFINE_EXTENDED_NOCREATE_TYPE(TYPE, EXTENSION) \ - template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterExtendedType(#TYPE)); + template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterExtendedType(#TYPE)); #define QML_DEFINE_NOCREATE_TYPE(TYPE) \ - template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterType(#TYPE)); + template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterType(#TYPE)); #endif diff --git a/src/declarative/qml/qmlcomponent.cpp b/src/declarative/qml/qmlcomponent.cpp index 03f07b3..3c142a7 100644 --- a/src/declarative/qml/qmlcomponent.cpp +++ b/src/declarative/qml/qmlcomponent.cpp @@ -119,7 +119,7 @@ Item { } \endqml */ -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Component,QmlComponent); +QML_DEFINE_TYPE(Qt,4,6,Component,QmlComponent); /*! \enum QmlComponent::Status diff --git a/src/declarative/qml/qmlcustomparser_p.h b/src/declarative/qml/qmlcustomparser_p.h index 89d3be2..74bed25 100644 --- a/src/declarative/qml/qmlcustomparser_p.h +++ b/src/declarative/qml/qmlcustomparser_p.h @@ -128,11 +128,11 @@ private: }; #if defined(Q_OS_SYMBIAN) -# define QML_DEFINE_CUSTOM_TYPE(URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MAJ_TO, NAME, TYPE, CUSTOMTYPE) \ - static int defineCustomType##NAME = qmlRegisterCustomType(#URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MAJ_TO, #NAME, #TYPE, new CUSTOMTYPE); +# define QML_DEFINE_CUSTOM_TYPE(URI, VERSION_MAJ, VERSION_MIN, NAME, TYPE, CUSTOMTYPE) \ + static int defineCustomType##NAME = qmlRegisterCustomType(#URI, VERSION_MAJ, VERSION_MIN, #NAME, #TYPE, new CUSTOMTYPE); #else -# define QML_DEFINE_CUSTOM_TYPE(URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MAJ_TO, NAME, TYPE, CUSTOMTYPE) \ - template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterCustomType(#URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MAJ_TO, #NAME, #TYPE, new CUSTOMTYPE)); +# define QML_DEFINE_CUSTOM_TYPE(URI, VERSION_MAJ, VERSION_MIN, NAME, TYPE, CUSTOMTYPE) \ + template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterCustomType(#URI, VERSION_MAJ, VERSION_MIN, #NAME, #TYPE, new CUSTOMTYPE)); #endif QT_END_NAMESPACE diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp index 2926791..3df04b2 100644 --- a/src/declarative/qml/qmlengine.cpp +++ b/src/declarative/qml/qmlengine.cpp @@ -103,7 +103,7 @@ QT_BEGIN_NAMESPACE DEFINE_BOOL_CONFIG_OPTION(qmlDebugger, QML_DEBUGGER) DEFINE_BOOL_CONFIG_OPTION(qmlImportTrace, QML_IMPORT_TRACE) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Object,QObject) +QML_DEFINE_TYPE(Qt,4,6,Object,QObject) struct StaticQtMetaObject : public QObject { @@ -993,17 +993,13 @@ struct QmlEnginePrivate::ImportedNamespace { if (line.isEmpty() || line.at(0) == QLatin1Char('#')) continue; if (line.startsWith(typespace)) { - // eg. 1.2-5 int space1 = line.indexOf(QLatin1Char(' ')); int space2 = space1 >=0 ? line.indexOf(QLatin1Char(' '),space1+1) : -1; QString mapversions = line.mid(space1+1,space2<0?line.length()-space1-1:space2-space1-1); int dot = mapversions.indexOf(QLatin1Char('.')); - int dash = mapversions.indexOf(QLatin1Char('-')); int mapvmaj = mapversions.left(dot).toInt(); - if (mapvmaj==vmaj) { - int mapvmin_from = (dash <= 0 ? mapversions.mid(dot+1) : mapversions.mid(dot+1,dash-dot-1)).toInt(); - int mapvmin_to = dash <= 0 ? mapvmin_from : mapversions.mid(dash+1).toInt(); - if (vmin >= mapvmin_from && vmin <= mapvmin_to) { + if (mapvmaj<=vmaj) { + if (mapvmaj= mapversions.mid(dot+1).toInt()) { QStringRef mapfile = space2<0 ? QStringRef() : line.midRef(space2+1,line.length()-space2-1); if (url_return) *url_return = url.resolved(mapfile.toString()); @@ -1172,9 +1168,8 @@ static QmlTypeNameCache *cacheForNamespace(QmlEngine *engine, const QmlEnginePri foreach (QmlType *type, types) { if (type->qmlTypeName().startsWith(base) && type->qmlTypeName().lastIndexOf('/') == (base.length() - 1) && - type->majorVersion() == major && type->minMinorVersion() <= minor && - type->maxMinorVersion() >= minor) { - + type->availableInVersion(major,minor)) + { QString name = QString::fromUtf8(type->qmlTypeName().mid(base.length())); cache->add(name, type); diff --git a/src/declarative/qml/qmlmetatype.cpp b/src/declarative/qml/qmlmetatype.cpp index 6ce51bd..6ecaa9f 100644 --- a/src/declarative/qml/qmlmetatype.cpp +++ b/src/declarative/qml/qmlmetatype.cpp @@ -119,8 +119,7 @@ public: const char *m_iid; QByteArray m_name; int m_version_maj; - int m_version_min_from; - int m_version_min_to; + int m_version_min; int m_typeId; int m_listId; int m_qmlListId; QmlPrivate::Func m_opFunc; const QMetaObject *m_baseMetaObject; @@ -160,13 +159,12 @@ QmlType::QmlType(int type, int listType, int qmlListType, d->m_index = index; d->m_isSetup = true; d->m_version_maj = 0; - d->m_version_min_from = 0; - d->m_version_min_to = 0; + d->m_version_min = 0; } QmlType::QmlType(int type, int listType, int qmlListType, QmlPrivate::Func opFunc, const char *qmlName, - int version_maj, int version_min_from, int version_min_to, + int version_maj, int version_min, const QMetaObject *metaObject, QmlAttachedPropertiesFunc attachedPropertiesFunc, const QMetaObject *attachedType, @@ -178,8 +176,7 @@ QmlType::QmlType(int type, int listType, int qmlListType, { d->m_name = qmlName; d->m_version_maj = version_maj; - d->m_version_min_from = version_min_from; - d->m_version_min_to = version_min_to; + d->m_version_min = version_min; d->m_typeId = type; d->m_listId = listType; d->m_qmlListId = qmlListType; @@ -209,19 +206,14 @@ int QmlType::majorVersion() const return d->m_version_maj; } -int QmlType::minMinorVersion() const +int QmlType::minorVersion() const { - return d->m_version_min_from; -} - -int QmlType::maxMinorVersion() const -{ - return d->m_version_min_to; + return d->m_version_min; } bool QmlType::availableInVersion(int vmajor, int vminor) const { - return vmajor == d->m_version_maj && vminor >= d->m_version_min_from && vminor <= d->m_version_min_to; + return vmajor > d->m_version_maj || (vmajor == d->m_version_maj && vminor >= d->m_version_min); } void QmlTypePrivate::init() const @@ -473,7 +465,7 @@ int QmlMetaType::registerInterface(const QmlPrivate::MetaTypeIds &id, } int QmlMetaType::registerType(const QmlPrivate::MetaTypeIds &id, QmlPrivate::Func func, - const char *uri, int version_maj, int version_min_from, int version_min_to, const char *cname, + const char *uri, int version_maj, int version_min, const char *cname, const QMetaObject *mo, QmlAttachedPropertiesFunc attach, const QMetaObject *attachMo, int pStatus, int object, int valueSource, int valueInterceptor, QmlPrivate::CreateFunc extFunc, const QMetaObject *extmo, QmlCustomParser *parser) { @@ -499,7 +491,7 @@ int QmlMetaType::registerType(const QmlPrivate::MetaTypeIds &id, QmlPrivate::Fun name.replace('.','/'); QmlType *type = new QmlType(id.typeId, id.listId, id.qmlListId, - func, name, version_maj, version_min_from, version_min_to, mo, attach, attachMo, pStatus, + func, name, version_maj, version_min, mo, attach, attachMo, pStatus, valueSource, valueInterceptor, extFunc, extmo, index, parser); data->types.append(type); diff --git a/src/declarative/qml/qmlmetatype.h b/src/declarative/qml/qmlmetatype.h index eb5fd28..e90c367 100644 --- a/src/declarative/qml/qmlmetatype.h +++ b/src/declarative/qml/qmlmetatype.h @@ -61,7 +61,7 @@ class QmlCustomParser; class Q_DECLARATIVE_EXPORT QmlMetaType { public: - static int registerType(const QmlPrivate::MetaTypeIds &, QmlPrivate::Func, const char *, int vmaj, int vmin_from, int vmin_to, const char *qmlName, const QMetaObject *, QmlAttachedPropertiesFunc, const QMetaObject *, int pStatus, int object, int valueSource, int valueInterceptor, QmlPrivate::CreateFunc extFunc, const QMetaObject *extmo, QmlCustomParser *); + static int registerType(const QmlPrivate::MetaTypeIds &, QmlPrivate::Func, const char *, int vmaj, int vmin, const char *qmlName, const QMetaObject *, QmlAttachedPropertiesFunc, const QMetaObject *, int pStatus, int object, int valueSource, int valueInterceptor, QmlPrivate::CreateFunc extFunc, const QMetaObject *extmo, QmlCustomParser *); static int registerInterface(const QmlPrivate::MetaTypeIds &, QmlPrivate::Func, const char *); static bool copy(int type, void *data, const void *copy = 0); @@ -118,8 +118,7 @@ public: QByteArray qmlTypeName() const; int majorVersion() const; - int minMinorVersion() const; - int maxMinorVersion() const; + int minorVersion() const; bool availableInVersion(int vmajor, int vminor) const; QByteArray hash() const; @@ -156,7 +155,7 @@ private: friend class QmlTypePrivate; friend class QmlMetaTypeData; QmlType(int, int, int, QmlPrivate::Func, const char *, int); - QmlType(int, int, int, QmlPrivate::Func, const char *, int, int, int, const QMetaObject *, QmlAttachedPropertiesFunc, const QMetaObject *, int, int, int, QmlPrivate::CreateFunc, const QMetaObject *, int, QmlCustomParser *); + QmlType(int, int, int, QmlPrivate::Func, const char *, int, int, const QMetaObject *, QmlAttachedPropertiesFunc, const QMetaObject *, int, int, int, QmlPrivate::CreateFunc, const QMetaObject *, int, QmlCustomParser *); ~QmlType(); QmlTypePrivate *d; @@ -172,7 +171,7 @@ int qmlRegisterType(const char *typeName) qRegisterMetaType(QByteArray("QmlList<" + name + "*>*").constData()) }; - return QmlMetaType::registerType(ids, QmlPrivate::list_nocreate_op, 0, 0, 0, 0, 0, + return QmlMetaType::registerType(ids, QmlPrivate::list_nocreate_op, 0, 0, 0, 0, &T::staticMetaObject, QmlPrivate::attachedPropertiesFunc(), QmlPrivate::attachedPropertiesMetaObject(), @@ -184,7 +183,7 @@ int qmlRegisterType(const char *typeName) } template -int qmlRegisterType(const char *uri, int version_maj, int version_min_from, int version_min_to, const char *qmlName, const char *typeName) +int qmlRegisterType(const char *uri, int version_maj, int version_min, const char *qmlName, const char *typeName) { QByteArray name(typeName); QmlPrivate::MetaTypeIds ids = { @@ -194,7 +193,7 @@ int qmlRegisterType(const char *uri, int version_maj, int version_min_from, int }; return QmlMetaType::registerType(ids, QmlPrivate::list_op, - uri, version_maj, version_min_from, version_min_to, qmlName, + uri, version_maj, version_min, qmlName, &T::staticMetaObject, QmlPrivate::attachedPropertiesFunc(), QmlPrivate::attachedPropertiesMetaObject(), @@ -234,7 +233,7 @@ int qmlRegisterExtendedType(const char *typeName) } template -int qmlRegisterExtendedType(const char *uri, int version_maj, int version_min_from, int version_min_to, const char *qmlName, const char *typeName) +int qmlRegisterExtendedType(const char *uri, int version_maj, int version_min, const char *qmlName, const char *typeName) { QByteArray name(typeName); QmlPrivate::MetaTypeIds ids = { @@ -253,7 +252,7 @@ int qmlRegisterExtendedType(const char *uri, int version_maj, int version_min_fr } return QmlMetaType::registerType(ids, QmlPrivate::list_op, - uri, version_maj, version_min_from, version_min_to, qmlName, + uri, version_maj, version_min, qmlName, &T::staticMetaObject, attached, attachedMo, QmlPrivate::StaticCastSelector::cast(), @@ -280,7 +279,7 @@ int qmlRegisterInterface(const char *typeName) } template -int qmlRegisterCustomType(const char *uri, int version_maj, int version_min_from, int version_min_to, const char *qmlName, const char *typeName, QmlCustomParser *parser) +int qmlRegisterCustomType(const char *uri, int version_maj, int version_min, const char *qmlName, const char *typeName, QmlCustomParser *parser) { QByteArray name(typeName); QmlPrivate::MetaTypeIds ids = { @@ -290,7 +289,7 @@ int qmlRegisterCustomType(const char *uri, int version_maj, int version_min_from }; return QmlMetaType::registerType(ids, QmlPrivate::list_op, - uri, version_maj, version_min_from, version_min_to, qmlName, + uri, version_maj, version_min, qmlName, &T::staticMetaObject, QmlPrivate::attachedPropertiesFunc(), QmlPrivate::attachedPropertiesMetaObject(), diff --git a/src/declarative/qml/qmlprivate.h b/src/declarative/qml/qmlprivate.h index 6ab36a2..e5b1060 100644 --- a/src/declarative/qml/qmlprivate.h +++ b/src/declarative/qml/qmlprivate.h @@ -223,7 +223,7 @@ namespace QmlPrivate InstanceType(int); }; - template + template struct Define { static InstanceType instance; }; diff --git a/src/declarative/util/qmlanimation.cpp b/src/declarative/util/qmlanimation.cpp index 051003f..bd4c6f7 100644 --- a/src/declarative/util/qmlanimation.cpp +++ b/src/declarative/util/qmlanimation.cpp @@ -648,7 +648,7 @@ void QmlAbstractAnimation::timelineComplete() \class QmlPauseAnimation */ -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,PauseAnimation,QmlPauseAnimation) +QML_DEFINE_TYPE(Qt,4,6,PauseAnimation,QmlPauseAnimation) QmlPauseAnimation::QmlPauseAnimation(QObject *parent) : QmlAbstractAnimation(*(new QmlPauseAnimationPrivate), parent) { @@ -760,7 +760,7 @@ void QmlColorAnimation::setTo(const QColor &t) QmlPropertyAnimation::setTo(t); } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ColorAnimation,QmlColorAnimation) +QML_DEFINE_TYPE(Qt,4,6,ColorAnimation,QmlColorAnimation) /*! \qmlclass ScriptAction QmlScriptAction @@ -866,7 +866,7 @@ QAbstractAnimation *QmlScriptAction::qtAnimation() return d->rsa; } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ScriptAction,QmlScriptAction) +QML_DEFINE_TYPE(Qt,4,6,ScriptAction,QmlScriptAction) /*! \qmlclass PropertyAction QmlPropertyAction @@ -1073,7 +1073,7 @@ void QmlPropertyAction::transition(QmlStateActions &actions, d->target = 0; } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,PropertyAction,QmlPropertyAction) +QML_DEFINE_TYPE(Qt,4,6,PropertyAction,QmlPropertyAction) /*! \qmlclass ParentAction QmlParentAction @@ -1212,7 +1212,7 @@ void QmlParentAction::transition(QmlStateActions &actions, } } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParentAction,QmlParentAction) +QML_DEFINE_TYPE(Qt,4,6,ParentAction,QmlParentAction) /*! \qmlclass NumberAnimation QmlNumberAnimation @@ -1275,7 +1275,7 @@ void QmlNumberAnimation::setTo(qreal t) QmlPropertyAnimation::setTo(t); } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,NumberAnimation,QmlNumberAnimation) +QML_DEFINE_TYPE(Qt,4,6,NumberAnimation,QmlNumberAnimation) QmlAnimationGroup::QmlAnimationGroup(QObject *parent) : QmlAbstractAnimation(*(new QmlAnimationGroupPrivate), parent) @@ -1365,7 +1365,7 @@ void QmlSequentialAnimation::transition(QmlStateActions &actions, } } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,SequentialAnimation,QmlSequentialAnimation) +QML_DEFINE_TYPE(Qt,4,6,SequentialAnimation,QmlSequentialAnimation) /*! \qmlclass ParallelAnimation QmlParallelAnimation @@ -1437,7 +1437,7 @@ void QmlParallelAnimation::transition(QmlStateActions &actions, } } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParallelAnimation,QmlParallelAnimation) +QML_DEFINE_TYPE(Qt,4,6,ParallelAnimation,QmlParallelAnimation) //convert a variant from string type to another animatable type void QmlPropertyAnimationPrivate::convertVariant(QVariant &variant, int type) @@ -2013,6 +2013,6 @@ void QmlPropertyAnimation::transition(QmlStateActions &actions, d->target = 0; } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,PropertyAnimation,QmlPropertyAnimation) +QML_DEFINE_TYPE(Qt,4,6,PropertyAnimation,QmlPropertyAnimation) QT_END_NAMESPACE diff --git a/src/declarative/util/qmlbind.cpp b/src/declarative/util/qmlbind.cpp index de6d48a..86c1b8b 100644 --- a/src/declarative/util/qmlbind.cpp +++ b/src/declarative/util/qmlbind.cpp @@ -63,7 +63,7 @@ public: QmlNullableValue value; }; -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Binding,QmlBind) +QML_DEFINE_TYPE(Qt,4,6,Binding,QmlBind) /*! \qmlclass Binding QmlBind \brief The Binding element allows arbitrary property bindings to be created. diff --git a/src/declarative/util/qmlconnection.cpp b/src/declarative/util/qmlconnection.cpp index 27ac374..db744f6 100644 --- a/src/declarative/util/qmlconnection.cpp +++ b/src/declarative/util/qmlconnection.cpp @@ -274,6 +274,6 @@ void QmlConnection::setSignal(const QString& sig) connectIfValid(); } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Connection,QmlConnection) +QML_DEFINE_TYPE(Qt,4,6,Connection,QmlConnection) QT_END_NAMESPACE diff --git a/src/declarative/util/qmleasefollow.cpp b/src/declarative/util/qmleasefollow.cpp index 5447c56..6bf3f82 100644 --- a/src/declarative/util/qmleasefollow.cpp +++ b/src/declarative/util/qmleasefollow.cpp @@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,EaseFollow,QmlEaseFollow); +QML_DEFINE_TYPE(Qt,4,6,EaseFollow,QmlEaseFollow); class QmlEaseFollowPrivate : public QObjectPrivate { diff --git a/src/declarative/util/qmllistmodel.cpp b/src/declarative/util/qmllistmodel.cpp index 17083db..afc6735 100644 --- a/src/declarative/util/qmllistmodel.cpp +++ b/src/declarative/util/qmllistmodel.cpp @@ -809,7 +809,7 @@ void QmlListModelParser::setCustomData(QObject *obj, const QByteArray &d) } } -QML_DEFINE_CUSTOM_TYPE(Qt, 4,6, (QT_VERSION&0x00ff00)>>8, ListModel, QmlListModel, QmlListModelParser) +QML_DEFINE_CUSTOM_TYPE(Qt, 4,6, ListModel, QmlListModel, QmlListModelParser) /*! \qmlclass ListElement @@ -822,7 +822,7 @@ class QmlListElement : public QObject { Q_OBJECT }; -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ListElement,QmlListElement) +QML_DEFINE_TYPE(Qt,4,6,ListElement,QmlListElement) static void dump(ModelNode *node, int ind) { diff --git a/src/declarative/util/qmlpackage.cpp b/src/declarative/util/qmlpackage.cpp index 4d7fa86..908b368 100644 --- a/src/declarative/util/qmlpackage.cpp +++ b/src/declarative/util/qmlpackage.cpp @@ -147,7 +147,7 @@ QmlPackageAttached *QmlPackage::qmlAttachedProperties(QObject *o) return new QmlPackageAttached(o); } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Package,QmlPackage) +QML_DEFINE_TYPE(Qt,4,6,Package,QmlPackage) QT_END_NAMESPACE diff --git a/src/declarative/util/qmlpropertychanges.cpp b/src/declarative/util/qmlpropertychanges.cpp index 8ba4b25..dbf2bc4 100644 --- a/src/declarative/util/qmlpropertychanges.cpp +++ b/src/declarative/util/qmlpropertychanges.cpp @@ -392,6 +392,6 @@ void QmlPropertyChanges::setIsExplicit(bool e) d->isExplicit = e; } -QML_DEFINE_CUSTOM_TYPE(Qt, 4,6, (QT_VERSION&0x00ff00)>>8, PropertyChanges, QmlPropertyChanges, QmlPropertyChangesParser) +QML_DEFINE_CUSTOM_TYPE(Qt, 4,6, PropertyChanges, QmlPropertyChanges, QmlPropertyChangesParser) QT_END_NAMESPACE diff --git a/src/declarative/util/qmlspringfollow.cpp b/src/declarative/util/qmlspringfollow.cpp index e743aa5..4a7c8b3 100644 --- a/src/declarative/util/qmlspringfollow.cpp +++ b/src/declarative/util/qmlspringfollow.cpp @@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,SpringFollow,QmlSpringFollow) +QML_DEFINE_TYPE(Qt,4,6,SpringFollow,QmlSpringFollow) class QmlSpringFollowPrivate : public QObjectPrivate { diff --git a/src/declarative/util/qmlstate.cpp b/src/declarative/util/qmlstate.cpp index ce4b540..7cc548f 100644 --- a/src/declarative/util/qmlstate.cpp +++ b/src/declarative/util/qmlstate.cpp @@ -151,7 +151,7 @@ QmlStateOperation::QmlStateOperation(QObjectPrivate &dd, QObject *parent) \sa {states-transitions}{States and Transitions} */ -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,State,QmlState) +QML_DEFINE_TYPE(Qt,4,6,State,QmlState) QmlState::QmlState(QObject *parent) : QObject(*(new QmlStatePrivate), parent) { diff --git a/src/declarative/util/qmlstategroup.cpp b/src/declarative/util/qmlstategroup.cpp index 2eb9dca..3cfc84a 100644 --- a/src/declarative/util/qmlstategroup.cpp +++ b/src/declarative/util/qmlstategroup.cpp @@ -50,7 +50,7 @@ QT_BEGIN_NAMESPACE DEFINE_BOOL_CONFIG_OPTION(stateChangeDebug, STATECHANGE_DEBUG); -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,StateGroup,QmlStateGroup) +QML_DEFINE_TYPE(Qt,4,6,StateGroup,QmlStateGroup) class QmlStateGroupPrivate : public QObjectPrivate { diff --git a/src/declarative/util/qmlstateoperations.cpp b/src/declarative/util/qmlstateoperations.cpp index ccb9a41..1b786d2 100644 --- a/src/declarative/util/qmlstateoperations.cpp +++ b/src/declarative/util/qmlstateoperations.cpp @@ -151,7 +151,7 @@ void QmlParentChangePrivate::doChange(QmlGraphicsItem *targetParent, QmlGraphics for the original and new parent). */ -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParentChange,QmlParentChange) +QML_DEFINE_TYPE(Qt,4,6,ParentChange,QmlParentChange) QmlParentChange::QmlParentChange(QObject *parent) : QmlStateOperation(*(new QmlParentChangePrivate), parent) { @@ -293,7 +293,7 @@ public: \qmlclass StateChangeScript QmlStateChangeScript \brief The StateChangeScript element allows you to run a script in a state. */ -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,StateChangeScript,QmlStateChangeScript) +QML_DEFINE_TYPE(Qt,4,6,StateChangeScript,QmlStateChangeScript) QmlStateChangeScript::QmlStateChangeScript(QObject *parent) : QmlStateOperation(*(new QmlStateChangeScriptPrivate), parent) { @@ -360,7 +360,7 @@ QmlStateChangeScript::ActionList QmlStateChangeScript::actions() For more information on anchors see \l {anchor-layout}{Anchor Layouts}. */ -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,AnchorChanges,QmlAnchorChanges) +QML_DEFINE_TYPE(Qt,4,6,AnchorChanges,QmlAnchorChanges) class QmlAnchorChangesPrivate : public QObjectPrivate { diff --git a/src/declarative/util/qmlsystempalette.cpp b/src/declarative/util/qmlsystempalette.cpp index 32cb4cf..bb3ec70 100644 --- a/src/declarative/util/qmlsystempalette.cpp +++ b/src/declarative/util/qmlsystempalette.cpp @@ -52,7 +52,7 @@ public: QPalette::ColorGroup group; }; -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,SystemPalette,QmlSystemPalette) +QML_DEFINE_TYPE(Qt,4,6,SystemPalette,QmlSystemPalette) /*! \qmlclass SystemPalette QmlSystemPalette diff --git a/src/declarative/util/qmltimer.cpp b/src/declarative/util/qmltimer.cpp index 2e844be..0aa0747 100644 --- a/src/declarative/util/qmltimer.cpp +++ b/src/declarative/util/qmltimer.cpp @@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Timer,QmlTimer) +QML_DEFINE_TYPE(Qt,4,6,Timer,QmlTimer) class QmlTimerPrivate : public QObjectPrivate { diff --git a/src/declarative/util/qmltransition.cpp b/src/declarative/util/qmltransition.cpp index a5f4b67..d61359d 100644 --- a/src/declarative/util/qmltransition.cpp +++ b/src/declarative/util/qmltransition.cpp @@ -137,7 +137,7 @@ void ParallelAnimationWrapper::updateState(QAbstractAnimation::State oldState, Q } -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Transition,QmlTransition) +QML_DEFINE_TYPE(Qt,4,6,Transition,QmlTransition) QmlTransition::QmlTransition(QObject *parent) : QObject(*(new QmlTransitionPrivate), parent) { diff --git a/src/declarative/widgets/graphicslayouts.cpp b/src/declarative/widgets/graphicslayouts.cpp index 9c7e919..9658049 100644 --- a/src/declarative/widgets/graphicslayouts.cpp +++ b/src/declarative/widgets/graphicslayouts.cpp @@ -48,9 +48,9 @@ QT_BEGIN_NAMESPACE QML_DEFINE_INTERFACE(QGraphicsLayoutItem) QML_DEFINE_INTERFACE(QGraphicsLayout) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,QGraphicsLinearLayoutStretchItem,QGraphicsLinearLayoutStretchItemObject) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,QGraphicsLinearLayout,QGraphicsLinearLayoutObject) -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,QGraphicsGridLayout,QGraphicsGridLayoutObject) +QML_DEFINE_TYPE(Qt,4,6,QGraphicsLinearLayoutStretchItem,QGraphicsLinearLayoutStretchItemObject) +QML_DEFINE_TYPE(Qt,4,6,QGraphicsLinearLayout,QGraphicsLinearLayoutObject) +QML_DEFINE_TYPE(Qt,4,6,QGraphicsGridLayout,QGraphicsGridLayoutObject) class LinearLayoutAttached : public QObject { diff --git a/src/declarative/widgets/graphicswidgets.cpp b/src/declarative/widgets/graphicswidgets.cpp index 8f61999..5678520 100644 --- a/src/declarative/widgets/graphicswidgets.cpp +++ b/src/declarative/widgets/graphicswidgets.cpp @@ -162,9 +162,9 @@ private: QmlConcreteList _data; }; -QML_DEFINE_EXTENDED_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,QGraphicsView,QGraphicsView,QGraphicsViewDeclarativeUI) -QML_DEFINE_EXTENDED_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,QGraphicsScene,QGraphicsScene,QGraphicsSceneDeclarativeUI) -QML_DEFINE_EXTENDED_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,QGraphicsWidget,QGraphicsWidget,QGraphicsWidgetDeclarativeUI) +QML_DEFINE_EXTENDED_TYPE(Qt,4,6,QGraphicsView,QGraphicsView,QGraphicsViewDeclarativeUI) +QML_DEFINE_EXTENDED_TYPE(Qt,4,6,QGraphicsScene,QGraphicsScene,QGraphicsSceneDeclarativeUI) +QML_DEFINE_EXTENDED_TYPE(Qt,4,6,QGraphicsWidget,QGraphicsWidget,QGraphicsWidgetDeclarativeUI) QML_DEFINE_INTERFACE(QGraphicsItem) diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp index f72aa8a..9856b1a 100644 --- a/src/gui/graphicsview/qgraphicsview.cpp +++ b/src/gui/graphicsview/qgraphicsview.cpp @@ -3251,10 +3251,13 @@ void QGraphicsView::paintEvent(QPaintEvent *event) // Determine the exposed region d->exposedRegion = event->region(); + if (d->exposedRegion.isEmpty()) + d->exposedRegion = viewport()->rect(); QRectF exposedSceneRect = mapToScene(d->exposedRegion.boundingRect()).boundingRect(); // Set up the painter QPainter painter(viewport()); + painter.setClipRect(exposedSceneRect, Qt::IntersectClip); #ifndef QT_NO_RUBBERBAND if (d->rubberBanding && !d->rubberBandRect.isEmpty()) painter.save(); diff --git a/tests/auto/declarative/qmlecmascript/testtypes.cpp b/tests/auto/declarative/qmlecmascript/testtypes.cpp index 9af8ed7..df0cb18 100644 --- a/tests/auto/declarative/qmlecmascript/testtypes.cpp +++ b/tests/auto/declarative/qmlecmascript/testtypes.cpp @@ -72,11 +72,11 @@ private: int m_value; }; -QML_DEFINE_TYPE(Qt.test, 1, 0, 0, MyQmlObject,MyQmlObject); -QML_DEFINE_TYPE(Qt.test, 1, 0, 0, MyDeferredObject,MyDeferredObject); -QML_DEFINE_TYPE(Qt.test, 1, 0, 0, MyQmlContainer,MyQmlContainer); -QML_DEFINE_EXTENDED_TYPE(Qt.test, 1, 0, 0, MyBaseExtendedObject,MyBaseExtendedObject,BaseExtensionObject); -QML_DEFINE_EXTENDED_TYPE(Qt.test, 1, 0, 0, MyExtendedObject,MyExtendedObject,ExtensionObject); -QML_DEFINE_TYPE(Qt.test, 1, 0, 0, MyTypeObject, MyTypeObject); +QML_DEFINE_TYPE(Qt.test, 1,0, MyQmlObject,MyQmlObject); +QML_DEFINE_TYPE(Qt.test, 1,0, MyDeferredObject,MyDeferredObject); +QML_DEFINE_TYPE(Qt.test, 1,0, MyQmlContainer,MyQmlContainer); +QML_DEFINE_EXTENDED_TYPE(Qt.test, 1,0, MyBaseExtendedObject,MyBaseExtendedObject,BaseExtensionObject); +QML_DEFINE_EXTENDED_TYPE(Qt.test, 1,0, MyExtendedObject,MyExtendedObject,ExtensionObject); +QML_DEFINE_TYPE(Qt.test, 1,0, MyTypeObject, MyTypeObject); #include "testtypes.moc" diff --git a/tests/auto/declarative/qmllanguage/data/lib/com/nokia/installedtest/qmldir b/tests/auto/declarative/qmllanguage/data/lib/com/nokia/installedtest/qmldir index ba0b42a..30c2d4e 100644 --- a/tests/auto/declarative/qmllanguage/data/lib/com/nokia/installedtest/qmldir +++ b/tests/auto/declarative/qmllanguage/data/lib/com/nokia/installedtest/qmldir @@ -1,3 +1,3 @@ -InstalledTest 1.0-3 InstalledTest.qml -InstalledTest 1.4 InstalledTest2.qml Rectangle 1.5 InstalledTest2.qml +InstalledTest 1.4 InstalledTest2.qml +InstalledTest 1.0 InstalledTest.qml diff --git a/tests/auto/declarative/qmllanguage/testtypes.cpp b/tests/auto/declarative/qmllanguage/testtypes.cpp index 8b1ab59..c370c09 100644 --- a/tests/auto/declarative/qmllanguage/testtypes.cpp +++ b/tests/auto/declarative/qmllanguage/testtypes.cpp @@ -41,10 +41,10 @@ #include "testtypes.h" QML_DEFINE_INTERFACE(MyInterface); -QML_DEFINE_TYPE(Test,1,0,0,MyQmlObject,MyQmlObject); -QML_DEFINE_TYPE(Test,1,0,0,MyTypeObject,MyTypeObject); -QML_DEFINE_TYPE(Test,1,0,0,MyContainer,MyContainer); -QML_DEFINE_TYPE(Test,1,0,0,MyPropertyValueSource,MyPropertyValueSource); -QML_DEFINE_TYPE(Test,1,0,0,MyDotPropertyObject,MyDotPropertyObject); -QML_DEFINE_TYPE(Test,1,0,0,MyNamespacedType,MyNamespace::MyNamespacedType); +QML_DEFINE_TYPE(Test,1,0,MyQmlObject,MyQmlObject); +QML_DEFINE_TYPE(Test,1,0,MyTypeObject,MyTypeObject); +QML_DEFINE_TYPE(Test,1,0,MyContainer,MyContainer); +QML_DEFINE_TYPE(Test,1,0,MyPropertyValueSource,MyPropertyValueSource); +QML_DEFINE_TYPE(Test,1,0,MyDotPropertyObject,MyDotPropertyObject); +QML_DEFINE_TYPE(Test,1,0,MyNamespacedType,MyNamespace::MyNamespacedType); QML_DEFINE_NOCREATE_TYPE(MyGroupedObject); diff --git a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp index c82aa4d..0fa36a1 100644 --- a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp +++ b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp @@ -890,11 +890,11 @@ void tst_qmllanguage::testType(const QString& qml, const QString& type) QML_DECLARE_TYPE(TestType) QML_DECLARE_TYPE(TestType2) -QML_DEFINE_TYPE(com.nokia.Test, 1, 0, 3, Test, TestType) -QML_DEFINE_TYPE(com.nokia.Test, 1, 5, 7, Test, TestType) -QML_DEFINE_TYPE(com.nokia.Test, 1, 8, 9, Test, TestType2) -QML_DEFINE_TYPE(com.nokia.Test, 1, 12, 13, Test, TestType2) -QML_DEFINE_TYPE(com.nokia.Test, 1, 9, 11, OldTest, TestType) +QML_DEFINE_TYPE(com.nokia.Test, 1, 0, Test, TestType) +QML_DEFINE_TYPE(com.nokia.Test, 1, 5, Test, TestType) +QML_DEFINE_TYPE(com.nokia.Test, 1, 8, Test, TestType2) +QML_DEFINE_TYPE(com.nokia.Test, 1, 9, OldTest, TestType) +QML_DEFINE_TYPE(com.nokia.Test, 1, 12, Test, TestType2) // Import tests (QT-558) @@ -937,10 +937,6 @@ void tst_qmllanguage::importsBuiltin_data() << "import com.nokia.Test 1.3\n" "Test {}" << "TestType"; - QTest::newRow("not in version 1.4") - << "import com.nokia.Test 1.4\n" - "Test {}" - << ""; QTest::newRow("in version 1.5") << "import com.nokia.Test 1.5\n" "Test {}" @@ -949,11 +945,7 @@ void tst_qmllanguage::importsBuiltin_data() << "import com.nokia.Test 1.8\n" "Test {}" << "TestType2"; - QTest::newRow("not in version 1.10") - << "import com.nokia.Test 1.10\n" - "Test {}" - << ""; - QTest::newRow("back in version 1.12") + QTest::newRow("in version 1.12") << "import com.nokia.Test 1.12\n" "Test {}" << "TestType2"; @@ -965,10 +957,6 @@ void tst_qmllanguage::importsBuiltin_data() << "import com.nokia.Test 1.11\n" "OldTest {}" << "TestType"; - QTest::newRow("no old in version 1.12") - << "import com.nokia.Test 1.12\n" - "OldTest {}" - << ""; QTest::newRow("multiversion 1") << "import com.nokia.Test 1.11\n" "import com.nokia.Test 1.12\n" @@ -989,11 +977,6 @@ void tst_qmllanguage::importsBuiltin_data() "import com.nokia.Test 1.8 as T8\n" "T8.Test {}" << "TestType2"; - QTest::newRow("qualified multiversion 5") - << "import com.nokia.Test 1.0 as T0\n" - "import com.nokia.Test 1.10 as T10\n" - "T10.Test {}" - << ""; } void tst_qmllanguage::importsBuiltin() @@ -1069,9 +1052,17 @@ void tst_qmllanguage::importsInstalled_data() "InstalledTest {}" << "QmlGraphicsRectangle"; QTest::newRow("installed import 2") + << "import com.nokia.installedtest 1.3\n" + "InstalledTest {}" + << "QmlGraphicsRectangle"; + QTest::newRow("installed import 3") << "import com.nokia.installedtest 1.4\n" "InstalledTest {}" << "QmlGraphicsText"; + QTest::newRow("installed import 4") + << "import com.nokia.installedtest 1.10\n" + "InstalledTest {}" + << "QmlGraphicsText"; QTest::newRow("installed import visibility") // QT-614 << "import com.nokia.installedtest 1.4\n" "PrivateType {}" diff --git a/tests/auto/declarative/qmlmetaproperty/tst_qmlmetaproperty.cpp b/tests/auto/declarative/qmlmetaproperty/tst_qmlmetaproperty.cpp index 7fbffdb..d6e88b5 100644 --- a/tests/auto/declarative/qmlmetaproperty/tst_qmlmetaproperty.cpp +++ b/tests/auto/declarative/qmlmetaproperty/tst_qmlmetaproperty.cpp @@ -54,7 +54,7 @@ public: }; QML_DECLARE_TYPE(MyQmlObject); -QML_DEFINE_TYPE(Test,1,0,0,MyQmlObject,MyQmlObject); +QML_DEFINE_TYPE(Test,1,0,MyQmlObject,MyQmlObject); class MyContainer : public QObject { @@ -73,7 +73,7 @@ private: }; QML_DECLARE_TYPE(MyContainer); -QML_DEFINE_TYPE(Test,1,0,0,MyContainer,MyContainer); +QML_DEFINE_TYPE(Test,1,0,MyContainer,MyContainer); class tst_qmlmetaproperty : public QObject { diff --git a/tests/auto/declarative/states/tst_states.cpp b/tests/auto/declarative/states/tst_states.cpp index a215ed8..f67c737 100644 --- a/tests/auto/declarative/states/tst_states.cpp +++ b/tests/auto/declarative/states/tst_states.cpp @@ -317,7 +317,7 @@ Q_SIGNALS: }; QML_DECLARE_TYPE(MyRect) -QML_DEFINE_TYPE(Qt.test, 1, 0, 0, MyRectangle,MyRect); +QML_DEFINE_TYPE(Qt.test, 1, 0, MyRectangle,MyRect); void tst_states::signalOverride() { diff --git a/tools/qmlviewer/qfxtester.cpp b/tools/qmlviewer/qfxtester.cpp index dfa628d..802a927 100644 --- a/tools/qmlviewer/qfxtester.cpp +++ b/tools/qmlviewer/qfxtester.cpp @@ -52,10 +52,10 @@ QT_BEGIN_NAMESPACE -QML_DEFINE_TYPE(Qt.VisualTest, 4, 6, (QT_VERSION&0x00ff00)>>8, VisualTest, QmlGraphicsVisualTest); -QML_DEFINE_TYPE(Qt.VisualTest, 4, 6, (QT_VERSION&0x00ff00)>>8, Frame, QmlGraphicsVisualTestFrame); -QML_DEFINE_TYPE(Qt.VisualTest, 4, 6, (QT_VERSION&0x00ff00)>>8, Mouse, QmlGraphicsVisualTestMouse); -QML_DEFINE_TYPE(Qt.VisualTest, 4, 6, (QT_VERSION&0x00ff00)>>8, Key, QmlGraphicsVisualTestKey); +QML_DEFINE_TYPE(Qt.VisualTest, 4,6, VisualTest, QmlGraphicsVisualTest); +QML_DEFINE_TYPE(Qt.VisualTest, 4,6, Frame, QmlGraphicsVisualTestFrame); +QML_DEFINE_TYPE(Qt.VisualTest, 4,6, Mouse, QmlGraphicsVisualTestMouse); +QML_DEFINE_TYPE(Qt.VisualTest, 4,6, Key, QmlGraphicsVisualTestKey); QmlGraphicsTester::QmlGraphicsTester(const QString &script, QmlViewer::ScriptOptions opts, QmlView *parent) -- cgit v0.12 From 43163cec2bcf9012944b445b393f6f8a6e895138 Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Thu, 5 Nov 2009 13:56:42 +1000 Subject: visual tests for borderimage --- .../qmlgraphicsborderimage/animated-smooth.qml | 55 + .../visual/qmlgraphicsborderimage/animated.qml | 55 + .../visual/qmlgraphicsborderimage/borders.qml | 18 + .../content/MyBorderImage.qml | 38 + .../visual/qmlgraphicsborderimage/content/bw.png | Bin 0 -> 1357 bytes .../content/colors-round.sci | 7 + .../content/colors-stretch.sci | 5 + .../qmlgraphicsborderimage/content/colors.png | Bin 0 -> 1655 bytes .../data-MAC/animated-smooth.0.png | Bin 0 -> 61731 bytes .../data-MAC/animated-smooth.1.png | Bin 0 -> 98912 bytes .../data-MAC/animated-smooth.2.png | Bin 0 -> 48780 bytes .../data-MAC/animated-smooth.3.png | Bin 0 -> 32431 bytes .../data-MAC/animated-smooth.4.png | Bin 0 -> 35835 bytes .../data-MAC/animated-smooth.5.png | Bin 0 -> 79428 bytes .../data-MAC/animated-smooth.6.png | Bin 0 -> 45928 bytes .../data-MAC/animated-smooth.qml | 1823 +++++++++++++++++ .../qmlgraphicsborderimage/data-MAC/animated.0.png | Bin 0 -> 23684 bytes .../qmlgraphicsborderimage/data-MAC/animated.1.png | Bin 0 -> 29115 bytes .../qmlgraphicsborderimage/data-MAC/animated.2.png | Bin 0 -> 27580 bytes .../qmlgraphicsborderimage/data-MAC/animated.3.png | Bin 0 -> 14822 bytes .../qmlgraphicsborderimage/data-MAC/animated.4.png | Bin 0 -> 21356 bytes .../qmlgraphicsborderimage/data-MAC/animated.5.png | Bin 0 -> 31143 bytes .../qmlgraphicsborderimage/data-MAC/animated.6.png | Bin 0 -> 26468 bytes .../qmlgraphicsborderimage/data-MAC/animated.7.png | Bin 0 -> 16225 bytes .../qmlgraphicsborderimage/data-MAC/animated.qml | 2091 ++++++++++++++++++++ .../qmlgraphicsborderimage/data-MAC/borders.0.png | Bin 0 -> 23029 bytes .../qmlgraphicsborderimage/data-MAC/borders.1.png | Bin 0 -> 23029 bytes .../qmlgraphicsborderimage/data-MAC/borders.2.png | Bin 0 -> 23029 bytes .../qmlgraphicsborderimage/data-MAC/borders.3.png | Bin 0 -> 23029 bytes .../qmlgraphicsborderimage/data-MAC/borders.4.png | Bin 0 -> 23029 bytes .../qmlgraphicsborderimage/data-MAC/borders.qml | 1359 +++++++++++++ .../data/animated-smooth.0.png | Bin 0 -> 61731 bytes .../data/animated-smooth.1.png | Bin 0 -> 98912 bytes .../data/animated-smooth.2.png | Bin 0 -> 48780 bytes .../data/animated-smooth.3.png | Bin 0 -> 32431 bytes .../data/animated-smooth.4.png | Bin 0 -> 35835 bytes .../data/animated-smooth.5.png | Bin 0 -> 79428 bytes .../data/animated-smooth.6.png | Bin 0 -> 45928 bytes .../data/animated-smooth.qml | 1823 +++++++++++++++++ .../qmlgraphicsborderimage/data/animated.0.png | Bin 0 -> 23684 bytes .../qmlgraphicsborderimage/data/animated.1.png | Bin 0 -> 29115 bytes .../qmlgraphicsborderimage/data/animated.2.png | Bin 0 -> 27580 bytes .../qmlgraphicsborderimage/data/animated.3.png | Bin 0 -> 14822 bytes .../qmlgraphicsborderimage/data/animated.4.png | Bin 0 -> 21356 bytes .../qmlgraphicsborderimage/data/animated.5.png | Bin 0 -> 31143 bytes .../qmlgraphicsborderimage/data/animated.6.png | Bin 0 -> 26468 bytes .../qmlgraphicsborderimage/data/animated.7.png | Bin 0 -> 16225 bytes .../qmlgraphicsborderimage/data/animated.qml | 2091 ++++++++++++++++++++ .../qmlgraphicsborderimage/data/borders.0.png | Bin 0 -> 23029 bytes .../qmlgraphicsborderimage/data/borders.1.png | Bin 0 -> 23029 bytes .../qmlgraphicsborderimage/data/borders.2.png | Bin 0 -> 23029 bytes .../qmlgraphicsborderimage/data/borders.3.png | Bin 0 -> 23029 bytes .../qmlgraphicsborderimage/data/borders.4.png | Bin 0 -> 23029 bytes .../visual/qmlgraphicsborderimage/data/borders.qml | 1359 +++++++++++++ 54 files changed, 10724 insertions(+) create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/animated-smooth.qml create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/animated.qml create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/borders.qml create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/content/MyBorderImage.qml create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/content/bw.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/content/colors-round.sci create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/content/colors-stretch.sci create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/content/colors.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.0.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.1.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.2.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.3.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.4.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.5.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.6.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.qml create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.0.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.1.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.2.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.3.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.4.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.5.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.6.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.7.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.qml create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.0.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.1.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.2.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.3.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.4.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.qml create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.0.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.1.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.2.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.3.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.4.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.5.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.6.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.qml create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.0.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.1.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.2.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.3.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.4.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.5.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.6.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.7.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.qml create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.0.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.1.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.2.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.3.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.4.png create mode 100644 tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.qml diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/animated-smooth.qml b/tests/auto/declarative/visual/qmlgraphicsborderimage/animated-smooth.qml new file mode 100644 index 0000000..0ceaf49 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsborderimage/animated-smooth.qml @@ -0,0 +1,55 @@ +import Qt 4.6 +import "content" + +Rectangle { + id: page + color: "white" + width: 1030; height: 540 + + MyBorderImage { + x: 20; y: 20; minWidth: 120; maxWidth: 240 + minHeight: 120; maxHeight: 240 + source: "content/colors.png"; margin: 30; antialiased: true + } + MyBorderImage { + x: 270; y: 20; minWidth: 120; maxWidth: 240 + minHeight: 120; maxHeight: 240; antialiased: true + source: "content/colors.png"; margin: 30 + horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat + } + MyBorderImage { + x: 520; y: 20; minWidth: 120; maxWidth: 240 + minHeight: 120; maxHeight: 240; antialiased: true + source: "content/colors.png"; margin: 30 + horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat + } + MyBorderImage { + x: 770; y: 20; minWidth: 120; maxWidth: 240 + minHeight: 120; maxHeight: 240; antialiased: true + source: "content/colors.png"; margin: 30 + horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round + } + MyBorderImage { + x: 20; y: 280; minWidth: 60; maxWidth: 200 + minHeight: 40; maxHeight: 200; antialiased: true + source: "content/bw.png"; margin: 10 + } + MyBorderImage { + x: 270; y: 280; minWidth: 60; maxWidth: 200 + minHeight: 40; maxHeight: 200; antialiased: true + source: "content/bw.png"; margin: 10 + horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat + } + MyBorderImage { + x: 520; y: 280; minWidth: 60; maxWidth: 200 + minHeight: 40; maxHeight: 200; antialiased: true + source: "content/bw.png"; margin: 10 + horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat + } + MyBorderImage { + x: 770; y: 280; minWidth: 60; maxWidth: 200 + minHeight: 40; maxHeight: 200; antialiased: true + source: "content/bw.png"; margin: 10 + horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/animated.qml b/tests/auto/declarative/visual/qmlgraphicsborderimage/animated.qml new file mode 100644 index 0000000..29c02b3 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsborderimage/animated.qml @@ -0,0 +1,55 @@ +import Qt 4.6 +import "content" + +Rectangle { + id: page + color: "white" + width: 1030; height: 540 + + MyBorderImage { + x: 20; y: 20; minWidth: 120; maxWidth: 240 + minHeight: 120; maxHeight: 240 + source: "content/colors.png"; margin: 30 + } + MyBorderImage { + x: 270; y: 20; minWidth: 120; maxWidth: 240 + minHeight: 120; maxHeight: 240 + source: "content/colors.png"; margin: 30 + horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat + } + MyBorderImage { + x: 520; y: 20; minWidth: 120; maxWidth: 240 + minHeight: 120; maxHeight: 240 + source: "content/colors.png"; margin: 30 + horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat + } + MyBorderImage { + x: 770; y: 20; minWidth: 120; maxWidth: 240 + minHeight: 120; maxHeight: 240 + source: "content/colors.png"; margin: 30 + horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round + } + MyBorderImage { + x: 20; y: 280; minWidth: 60; maxWidth: 200 + minHeight: 40; maxHeight: 200 + source: "content/bw.png"; margin: 10 + } + MyBorderImage { + x: 270; y: 280; minWidth: 60; maxWidth: 200 + minHeight: 40; maxHeight: 200 + source: "content/bw.png"; margin: 10 + horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat + } + MyBorderImage { + x: 520; y: 280; minWidth: 60; maxWidth: 200 + minHeight: 40; maxHeight: 200 + source: "content/bw.png"; margin: 10 + horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat + } + MyBorderImage { + x: 770; y: 280; minWidth: 60; maxWidth: 200 + minHeight: 40; maxHeight: 200 + source: "content/bw.png"; margin: 10 + horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/borders.qml b/tests/auto/declarative/visual/qmlgraphicsborderimage/borders.qml new file mode 100644 index 0000000..9879416 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsborderimage/borders.qml @@ -0,0 +1,18 @@ +import Qt 4.6 + +Rectangle { + id: page + color: "white" + width: 520; height: 280 + + BorderImage { + x: 20; y: 20; width: 230; height: 240 + smooth: true + source: "content/colors-stretch.sci" + } + BorderImage { + x: 270; y: 20; width: 230; height: 240 + smooth: true + source: "content/colors-round.sci" + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/content/MyBorderImage.qml b/tests/auto/declarative/visual/qmlgraphicsborderimage/content/MyBorderImage.qml new file mode 100644 index 0000000..db722ae --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsborderimage/content/MyBorderImage.qml @@ -0,0 +1,38 @@ +import Qt 4.6 + +Item { + property alias horizontalMode: image.horizontalTileMode + property alias verticalMode: image.verticalTileMode + property alias source: image.source + property alias antialiased: image.smooth + + property int minWidth + property int minHeight + property int maxWidth + property int maxHeight + property int margin + + id: container + width: 240; height: 240 + + BorderImage { + id: image; x: container.width / 2 - width / 2; y: container.height / 2 - height / 2 + + width: SequentialAnimation { + running: true; repeat: true + NumberAnimation { from: container.minWidth; to: container.maxWidth; duration: 2000; easing: "easeInOutQuad"} + NumberAnimation { from: container.maxWidth; to: container.minWidth; duration: 2000; easing: "easeInOutQuad" } + } + + height: SequentialAnimation { + running: true; repeat: true + NumberAnimation { from: container.minHeight; to: container.maxHeight; duration: 2000; easing: "easeInOutQuad"} + NumberAnimation { from: container.maxHeight; to: container.minHeight; duration: 2000; easing: "easeInOutQuad" } + } + + border.top: container.margin + border.left: container.margin + border.bottom: container.margin + border.right: container.margin + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/content/bw.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/content/bw.png new file mode 100644 index 0000000..486eaae Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/content/bw.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/content/colors-round.sci b/tests/auto/declarative/visual/qmlgraphicsborderimage/content/colors-round.sci new file mode 100644 index 0000000..506f6f5 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsborderimage/content/colors-round.sci @@ -0,0 +1,7 @@ +border.left:30 +border.top:30 +border.right:30 +border.bottom:30 +horizontalTileRule:Round +verticalTileRule:Round +source:colors.png diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/content/colors-stretch.sci b/tests/auto/declarative/visual/qmlgraphicsborderimage/content/colors-stretch.sci new file mode 100644 index 0000000..e4989a7 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsborderimage/content/colors-stretch.sci @@ -0,0 +1,5 @@ +border.left:30 +border.top:30 +border.right:30 +border.bottom:30 +source:colors.png diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/content/colors.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/content/colors.png new file mode 100644 index 0000000..dfb62f3 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/content/colors.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.0.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.0.png new file mode 100644 index 0000000..9a6b079 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.0.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.1.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.1.png new file mode 100644 index 0000000..1f960e5 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.1.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.2.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.2.png new file mode 100644 index 0000000..85a2729 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.2.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.3.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.3.png new file mode 100644 index 0000000..de6ff7c Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.3.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.4.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.4.png new file mode 100644 index 0000000..fe7d3dd Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.4.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.5.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.5.png new file mode 100644 index 0000000..e73bef5 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.5.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.6.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.6.png new file mode 100644 index 0000000..0c75422 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.6.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.qml b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.qml new file mode 100644 index 0000000..96adb73 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated-smooth.qml @@ -0,0 +1,1823 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 32 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 48 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 64 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 80 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 96 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 112 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 128 + hash: "cd2180be80101c2aa4350b51b7a6f502" + } + Frame { + msec: 144 + hash: "de471829f8ad3b43bf1b4df9d1d65a4d" + } + Frame { + msec: 160 + hash: "ed9f2ca797894612600bc4b7fbaecb84" + } + Frame { + msec: 176 + hash: "59470d71fa4426d0283e86371f2bfc2a" + } + Frame { + msec: 192 + hash: "9a2f92efb51bcc6293d6a8e82d5314ea" + } + Frame { + msec: 208 + hash: "7b66e21652a7d0982226e281a48411a9" + } + Frame { + msec: 224 + hash: "a716c8d2c94433dee719f92f0822c8ec" + } + Frame { + msec: 240 + hash: "f22a47b846cfee96ebdf39bbce2e6d51" + } + Frame { + msec: 256 + hash: "5a8932d13d624932a65694fd19ec05cd" + } + Frame { + msec: 272 + hash: "48e62dd171f5da82b5aa26c765e4042c" + } + Frame { + msec: 288 + hash: "63d3c47f7dec1236440a05e0a8380900" + } + Frame { + msec: 304 + hash: "323af110731b7af0c30f8862ff59b833" + } + Frame { + msec: 320 + hash: "83c029e328e80af83158c37089cf0ece" + } + Frame { + msec: 336 + hash: "3f9a09ae19be34348bb2552915360cf7" + } + Frame { + msec: 352 + hash: "df624d70cae1bcefda8d69c0ff055d83" + } + Frame { + msec: 368 + hash: "d671a3b971468e1d8aa30ab655e020a9" + } + Frame { + msec: 384 + hash: "74c837b29f7f05b615123f0e608b523f" + } + Frame { + msec: 400 + hash: "277ef98ea859fb7685fe6cd44a538a7d" + } + Frame { + msec: 416 + hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9" + } + Frame { + msec: 432 + hash: "456be9c208d690c479ba12bf6325dde0" + } + Frame { + msec: 448 + hash: "10307beea6d99ab0ff5863f8e35555ed" + } + Frame { + msec: 464 + hash: "170a1d5fe3422cf5223a78015a6a45fd" + } + Frame { + msec: 480 + hash: "64ecb03aa538e74d0b99c6dec7751401" + } + Frame { + msec: 496 + hash: "f3a7e74a1839f9366f9eeec4d2b80d1e" + } + Frame { + msec: 512 + hash: "37c3f25e5cfdb48d7e3ab0cf8ffb9154" + } + Frame { + msec: 528 + hash: "0af81ee0d76ff8335a0e347dc086ca37" + } + Frame { + msec: 544 + hash: "061406edcbd2d4930ab89c3fcab63c7f" + } + Frame { + msec: 560 + hash: "31d65134f340d82dd40f2401bda3fb7e" + } + Frame { + msec: 576 + hash: "16c16c77c65b36d1e0954d5ead2642be" + } + Frame { + msec: 592 + hash: "61c16009b65a55bffb63e27727e1615e" + } + Frame { + msec: 608 + hash: "e1474c2cdd8768ca1ef45bf3bc5234ca" + } + Frame { + msec: 624 + hash: "89c159ef00d273ecfe61332e1bf7244d" + } + Frame { + msec: 640 + hash: "f4d0d3bca25e67908b38910f47b4757e" + } + Frame { + msec: 656 + hash: "0e0c40f8e11a7bd499c80562ac6f8a82" + } + Frame { + msec: 672 + hash: "4310a4c3037d845f088f21ad608f366a" + } + Frame { + msec: 688 + hash: "3d518cd0348d6202243364af1dd6ce89" + } + Frame { + msec: 704 + hash: "41987e6b4248d7944c0dbc6eb3862023" + } + Frame { + msec: 720 + hash: "3e81338d38723d56f2d6c428271f81c1" + } + Frame { + msec: 736 + hash: "902683d72f789399e9d99d1cea1bf177" + } + Frame { + msec: 752 + hash: "efc119983701908a904deb24108c59cb" + } + Frame { + msec: 768 + hash: "3a77785cfd7755f567619d8e04583f6a" + } + Frame { + msec: 784 + hash: "fd85d1dd931033973283a408b5e328a8" + } + Frame { + msec: 800 + hash: "5d3e85acabe5e5ff802eb7731676274f" + } + Frame { + msec: 816 + hash: "ae12f1f37a746e16b06e6b869c89fac1" + } + Frame { + msec: 832 + hash: "a15f19f374bbfb6a922b69d080a91eaa" + } + Frame { + msec: 848 + hash: "84ef6dda8318b623832f58c46d762e89" + } + Frame { + msec: 864 + hash: "b699285764f5e8866a9996f4a0dccc69" + } + Frame { + msec: 880 + hash: "ddd8a006ef048c8d929144aa9fcd7c5a" + } + Frame { + msec: 896 + hash: "177666cb3bb784c83196886b2c6cf6b6" + } + Frame { + msec: 912 + hash: "9cd29b4b023a8b92573575fb3c3dda83" + } + Frame { + msec: 928 + hash: "adc670a9aa0326744cb23e4f5912e6c7" + } + Frame { + msec: 944 + hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" + } + Frame { + msec: 960 + image: "animated-smooth.0.png" + } + Frame { + msec: 976 + hash: "64b21b89576fdd0083f60a26f57b9c11" + } + Frame { + msec: 992 + hash: "0d407ee07692d0e5a480a60952807b3c" + } + Frame { + msec: 1008 + hash: "845170815a87565dc4229792032b3357" + } + Frame { + msec: 1024 + hash: "8b8120cfc14de03e048632fdea61be21" + } + Frame { + msec: 1040 + hash: "b0070117f1c24a4da87434725d4bb989" + } + Frame { + msec: 1056 + hash: "0239d697642ca1d1b1d1daa3ea048e1e" + } + Frame { + msec: 1072 + hash: "3df54504f8891306fa8f1e9e2075a5e2" + } + Frame { + msec: 1088 + hash: "853429387cc639496c7338244de7e1b7" + } + Frame { + msec: 1104 + hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" + } + Frame { + msec: 1120 + hash: "b375e723b2396b13b8f55cfc0c81c3c3" + } + Frame { + msec: 1136 + hash: "53f05993ba3b426949badd2e4cd66d84" + } + Frame { + msec: 1152 + hash: "23291a0239c69ea07db959e709b1ff5f" + } + Frame { + msec: 1168 + hash: "2192094410e2d7c8d9d4aa5f8deacff5" + } + Frame { + msec: 1184 + hash: "d6615fc345831a3cc5b9a7196284b632" + } + Frame { + msec: 1200 + hash: "92176cce4836dcae4dfca94e49b041a8" + } + Frame { + msec: 1216 + hash: "2a1fcfb753ca237b518da26e67c928e5" + } + Frame { + msec: 1232 + hash: "42be5d26afb9f066dd27cc9fbaf6ce20" + } + Frame { + msec: 1248 + hash: "bd045f4532d78bba0ef1b64118fd9f24" + } + Frame { + msec: 1264 + hash: "7f9999a9c87af43b9703323efab31770" + } + Frame { + msec: 1280 + hash: "0640fcb0b24d3ba4ab8695f78271a438" + } + Frame { + msec: 1296 + hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" + } + Frame { + msec: 1312 + hash: "fce2648975106bc5c0ca9a4530f7f748" + } + Frame { + msec: 1328 + hash: "39cc17ee2e889f17dd07179fda99e431" + } + Frame { + msec: 1344 + hash: "39c46d85d20f7ef3eca1d09c7eb6a068" + } + Frame { + msec: 1360 + hash: "d65d50fbb920e683b041a1c72238225b" + } + Frame { + msec: 1376 + hash: "49a1df977b0494c7c72ca0b65c394e13" + } + Frame { + msec: 1392 + hash: "05cbce0eaa80b4610a9067af8c40f819" + } + Frame { + msec: 1408 + hash: "00ab7798bcd77a99886dff0414f35382" + } + Frame { + msec: 1424 + hash: "5cc90d798786c270ddd2616512f4459f" + } + Frame { + msec: 1440 + hash: "e5df07ea21e8e415c3ec82560f2d0f34" + } + Frame { + msec: 1456 + hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" + } + Frame { + msec: 1472 + hash: "c61d2aa7f934fb5a9f9f7883e063b51c" + } + Frame { + msec: 1488 + hash: "29ddde3300d0520a4c01b5536d8b9e7a" + } + Frame { + msec: 1504 + hash: "2fede2f5d871654f3f8a6e9d890adeac" + } + Frame { + msec: 1520 + hash: "deed4c06c9b713834490832b88e7acaf" + } + Frame { + msec: 1536 + hash: "c2edb016cfdd47c192d1c48281ee76ed" + } + Frame { + msec: 1552 + hash: "a261be47ae89e6b53e6bc1c1197154ae" + } + Frame { + msec: 1568 + hash: "e860e97ebd73b7d1d5d5d90458b34bfe" + } + Frame { + msec: 1584 + hash: "a087b532ecb2f28e4ee60819228c2522" + } + Frame { + msec: 1600 + hash: "64df51b4c1bf744b2aae1c6d908c2cc3" + } + Frame { + msec: 1616 + hash: "4520003d4b221a3de6834b2729b3026d" + } + Frame { + msec: 1632 + hash: "d1110817827c318ceb0c112e8c2bfc1d" + } + Frame { + msec: 1648 + hash: "83d49474db15d5779923972ff5f55917" + } + Frame { + msec: 1664 + hash: "3bae40654ec551d69e7c8c72f631c7a5" + } + Frame { + msec: 1680 + hash: "774740a393f3e9b8f12b81cce8da8280" + } + Frame { + msec: 1696 + hash: "d8e398a1ce9ca45c19951e93bd5c932a" + } + Frame { + msec: 1712 + hash: "2b7eb8a9fe26b032be8b4b9c00995912" + } + Frame { + msec: 1728 + hash: "47e920e3884ccf2f0f49e78070af6929" + } + Frame { + msec: 1744 + hash: "fc913807eb1069d611495fbd5d43ee3d" + } + Frame { + msec: 1760 + hash: "5d9ee853f083d514fbe51d6953d8e000" + } + Frame { + msec: 1776 + hash: "5736362b42bc2d801e02edabb983663a" + } + Frame { + msec: 1792 + hash: "e3a2b5c7247acfc1b30825233fbfd56b" + } + Frame { + msec: 1808 + hash: "48952ffa5e300778eafa768b9fe7df0c" + } + Frame { + msec: 1824 + hash: "fe04cae65aeec18697eca4f3f83a40e9" + } + Frame { + msec: 1840 + hash: "382d454f2366c1fb4ca472faa3bfa5e9" + } + Frame { + msec: 1856 + hash: "89022a8e2feb3dcb845de69aafc333ad" + } + Frame { + msec: 1872 + hash: "25506557c853a0020e98cf3992956989" + } + Frame { + msec: 1888 + hash: "9a64706c52c9e962816953e32950b8ba" + } + Frame { + msec: 1904 + hash: "3cbfded47413172ada64095e65c55e8a" + } + Frame { + msec: 1920 + image: "animated-smooth.1.png" + } + Frame { + msec: 1936 + hash: "c5e399e29b988148913e62ee208b3326" + } + Frame { + msec: 1952 + hash: "3991bc7760b7981d80665e3a7654c9f4" + } + Frame { + msec: 1968 + hash: "05312f9529c94d3331ace7d73c544284" + } + Frame { + msec: 1984 + hash: "a94de4e90a8f8eb4ec33fe902afd226c" + } + Frame { + msec: 2000 + hash: "723f87da7e5b002a2e9b0bcbc81f9458" + } + Frame { + msec: 2016 + hash: "6b8ded0d9386a3fff0601a100c513080" + } + Frame { + msec: 2032 + hash: "f976cd5046ef5391536859e63db905bd" + } + Frame { + msec: 2048 + hash: "a94de4e90a8f8eb4ec33fe902afd226c" + } + Frame { + msec: 2064 + hash: "05312f9529c94d3331ace7d73c544284" + } + Frame { + msec: 2080 + hash: "b980703c1d0018937e83a8ba8862469e" + } + Frame { + msec: 2096 + hash: "c5e399e29b988148913e62ee208b3326" + } + Frame { + msec: 2112 + hash: "3b7b83e97d17440b42e6ef4b962076d8" + } + Frame { + msec: 2128 + hash: "3cbfded47413172ada64095e65c55e8a" + } + Frame { + msec: 2144 + hash: "9a64706c52c9e962816953e32950b8ba" + } + Frame { + msec: 2160 + hash: "25506557c853a0020e98cf3992956989" + } + Frame { + msec: 2176 + hash: "89022a8e2feb3dcb845de69aafc333ad" + } + Frame { + msec: 2192 + hash: "382d454f2366c1fb4ca472faa3bfa5e9" + } + Frame { + msec: 2208 + hash: "fe04cae65aeec18697eca4f3f83a40e9" + } + Frame { + msec: 2224 + hash: "48952ffa5e300778eafa768b9fe7df0c" + } + Frame { + msec: 2240 + hash: "e3a2b5c7247acfc1b30825233fbfd56b" + } + Frame { + msec: 2256 + hash: "5736362b42bc2d801e02edabb983663a" + } + Frame { + msec: 2272 + hash: "5d9ee853f083d514fbe51d6953d8e000" + } + Frame { + msec: 2288 + hash: "fe899138116774df4c4441687e3019c5" + } + Frame { + msec: 2304 + hash: "47e920e3884ccf2f0f49e78070af6929" + } + Frame { + msec: 2320 + hash: "2b7eb8a9fe26b032be8b4b9c00995912" + } + Frame { + msec: 2336 + hash: "64cd225202ed6c91b02c368a9160a656" + } + Frame { + msec: 2352 + hash: "774740a393f3e9b8f12b81cce8da8280" + } + Frame { + msec: 2368 + hash: "3bae40654ec551d69e7c8c72f631c7a5" + } + Frame { + msec: 2384 + hash: "83d49474db15d5779923972ff5f55917" + } + Frame { + msec: 2400 + hash: "d1110817827c318ceb0c112e8c2bfc1d" + } + Frame { + msec: 2416 + hash: "4520003d4b221a3de6834b2729b3026d" + } + Frame { + msec: 2432 + hash: "64df51b4c1bf744b2aae1c6d908c2cc3" + } + Frame { + msec: 2448 + hash: "a087b532ecb2f28e4ee60819228c2522" + } + Frame { + msec: 2464 + hash: "e860e97ebd73b7d1d5d5d90458b34bfe" + } + Frame { + msec: 2480 + hash: "a261be47ae89e6b53e6bc1c1197154ae" + } + Frame { + msec: 2496 + hash: "c2edb016cfdd47c192d1c48281ee76ed" + } + Frame { + msec: 2512 + hash: "deed4c06c9b713834490832b88e7acaf" + } + Frame { + msec: 2528 + hash: "2fede2f5d871654f3f8a6e9d890adeac" + } + Frame { + msec: 2544 + hash: "29ddde3300d0520a4c01b5536d8b9e7a" + } + Frame { + msec: 2560 + hash: "c61d2aa7f934fb5a9f9f7883e063b51c" + } + Frame { + msec: 2576 + hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" + } + Frame { + msec: 2592 + hash: "e5df07ea21e8e415c3ec82560f2d0f34" + } + Frame { + msec: 2608 + hash: "5cc90d798786c270ddd2616512f4459f" + } + Frame { + msec: 2624 + hash: "00ab7798bcd77a99886dff0414f35382" + } + Frame { + msec: 2640 + hash: "05cbce0eaa80b4610a9067af8c40f819" + } + Frame { + msec: 2656 + hash: "a676f45d946aeb9fa577c0e862735b01" + } + Frame { + msec: 2672 + hash: "d65d50fbb920e683b041a1c72238225b" + } + Frame { + msec: 2688 + hash: "39c46d85d20f7ef3eca1d09c7eb6a068" + } + Frame { + msec: 2704 + hash: "39cc17ee2e889f17dd07179fda99e431" + } + Frame { + msec: 2720 + hash: "fce2648975106bc5c0ca9a4530f7f748" + } + Frame { + msec: 2736 + hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" + } + Frame { + msec: 2752 + hash: "0640fcb0b24d3ba4ab8695f78271a438" + } + Frame { + msec: 2768 + hash: "2084ccc60ddd493399c128717816d33b" + } + Frame { + msec: 2784 + hash: "bd045f4532d78bba0ef1b64118fd9f24" + } + Frame { + msec: 2800 + hash: "42be5d26afb9f066dd27cc9fbaf6ce20" + } + Frame { + msec: 2816 + hash: "2a1fcfb753ca237b518da26e67c928e5" + } + Frame { + msec: 2832 + hash: "92176cce4836dcae4dfca94e49b041a8" + } + Frame { + msec: 2848 + hash: "d6615fc345831a3cc5b9a7196284b632" + } + Frame { + msec: 2864 + hash: "85ef33fcb3f91e4fc20391bf94455984" + } + Frame { + msec: 2880 + image: "animated-smooth.2.png" + } + Frame { + msec: 2896 + hash: "53f05993ba3b426949badd2e4cd66d84" + } + Frame { + msec: 2912 + hash: "b375e723b2396b13b8f55cfc0c81c3c3" + } + Frame { + msec: 2928 + hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" + } + Frame { + msec: 2944 + hash: "853429387cc639496c7338244de7e1b7" + } + Frame { + msec: 2960 + hash: "3df54504f8891306fa8f1e9e2075a5e2" + } + Frame { + msec: 2976 + hash: "0239d697642ca1d1b1d1daa3ea048e1e" + } + Frame { + msec: 2992 + hash: "b0070117f1c24a4da87434725d4bb989" + } + Frame { + msec: 3008 + hash: "8b8120cfc14de03e048632fdea61be21" + } + Frame { + msec: 3024 + hash: "845170815a87565dc4229792032b3357" + } + Frame { + msec: 3040 + hash: "0d407ee07692d0e5a480a60952807b3c" + } + Frame { + msec: 3056 + hash: "64b21b89576fdd0083f60a26f57b9c11" + } + Frame { + msec: 3072 + hash: "d7e96278583f83ab636ed68fa130e4d2" + } + Frame { + msec: 3088 + hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" + } + Frame { + msec: 3104 + hash: "adc670a9aa0326744cb23e4f5912e6c7" + } + Frame { + msec: 3120 + hash: "9cd29b4b023a8b92573575fb3c3dda83" + } + Frame { + msec: 3136 + hash: "177666cb3bb784c83196886b2c6cf6b6" + } + Frame { + msec: 3152 + hash: "ddd8a006ef048c8d929144aa9fcd7c5a" + } + Frame { + msec: 3168 + hash: "b699285764f5e8866a9996f4a0dccc69" + } + Frame { + msec: 3184 + hash: "84ef6dda8318b623832f58c46d762e89" + } + Frame { + msec: 3200 + hash: "a15f19f374bbfb6a922b69d080a91eaa" + } + Frame { + msec: 3216 + hash: "ae12f1f37a746e16b06e6b869c89fac1" + } + Frame { + msec: 3232 + hash: "5d3e85acabe5e5ff802eb7731676274f" + } + Frame { + msec: 3248 + hash: "fd85d1dd931033973283a408b5e328a8" + } + Frame { + msec: 3264 + hash: "3a77785cfd7755f567619d8e04583f6a" + } + Frame { + msec: 3280 + hash: "efc119983701908a904deb24108c59cb" + } + Frame { + msec: 3296 + hash: "902683d72f789399e9d99d1cea1bf177" + } + Frame { + msec: 3312 + hash: "3e81338d38723d56f2d6c428271f81c1" + } + Frame { + msec: 3328 + hash: "41987e6b4248d7944c0dbc6eb3862023" + } + Frame { + msec: 3344 + hash: "3d518cd0348d6202243364af1dd6ce89" + } + Frame { + msec: 3360 + hash: "4310a4c3037d845f088f21ad608f366a" + } + Frame { + msec: 3376 + hash: "0e0c40f8e11a7bd499c80562ac6f8a82" + } + Frame { + msec: 3392 + hash: "f4d0d3bca25e67908b38910f47b4757e" + } + Frame { + msec: 3408 + hash: "f602e3eda1889d1a7e49560f0dfb5d4c" + } + Frame { + msec: 3424 + hash: "e1474c2cdd8768ca1ef45bf3bc5234ca" + } + Frame { + msec: 3440 + hash: "c8312ede0998636a6bd6451d13636577" + } + Frame { + msec: 3456 + hash: "16c16c77c65b36d1e0954d5ead2642be" + } + Frame { + msec: 3472 + hash: "31d65134f340d82dd40f2401bda3fb7e" + } + Frame { + msec: 3488 + hash: "061406edcbd2d4930ab89c3fcab63c7f" + } + Frame { + msec: 3504 + hash: "0af81ee0d76ff8335a0e347dc086ca37" + } + Frame { + msec: 3520 + hash: "0f347763f25350ebb62dda1536372b45" + } + Frame { + msec: 3536 + hash: "f3a7e74a1839f9366f9eeec4d2b80d1e" + } + Frame { + msec: 3552 + hash: "64ecb03aa538e74d0b99c6dec7751401" + } + Frame { + msec: 3568 + hash: "170a1d5fe3422cf5223a78015a6a45fd" + } + Frame { + msec: 3584 + hash: "10307beea6d99ab0ff5863f8e35555ed" + } + Frame { + msec: 3600 + hash: "456be9c208d690c479ba12bf6325dde0" + } + Frame { + msec: 3616 + hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9" + } + Frame { + msec: 3632 + hash: "277ef98ea859fb7685fe6cd44a538a7d" + } + Frame { + msec: 3648 + hash: "74c837b29f7f05b615123f0e608b523f" + } + Frame { + msec: 3664 + hash: "d671a3b971468e1d8aa30ab655e020a9" + } + Frame { + msec: 3680 + hash: "df624d70cae1bcefda8d69c0ff055d83" + } + Frame { + msec: 3696 + hash: "3f9a09ae19be34348bb2552915360cf7" + } + Frame { + msec: 3712 + hash: "83c029e328e80af83158c37089cf0ece" + } + Frame { + msec: 3728 + hash: "323af110731b7af0c30f8862ff59b833" + } + Frame { + msec: 3744 + hash: "63d3c47f7dec1236440a05e0a8380900" + } + Frame { + msec: 3760 + hash: "48e62dd171f5da82b5aa26c765e4042c" + } + Frame { + msec: 3776 + hash: "5a8932d13d624932a65694fd19ec05cd" + } + Frame { + msec: 3792 + hash: "8419b295f67cae133760da79dfc26505" + } + Frame { + msec: 3808 + hash: "a716c8d2c94433dee719f92f0822c8ec" + } + Frame { + msec: 3824 + hash: "7b66e21652a7d0982226e281a48411a9" + } + Frame { + msec: 3840 + image: "animated-smooth.3.png" + } + Frame { + msec: 3856 + hash: "59470d71fa4426d0283e86371f2bfc2a" + } + Frame { + msec: 3872 + hash: "d56ba74d38c1889a278929d1c1b7f17a" + } + Frame { + msec: 3888 + hash: "de471829f8ad3b43bf1b4df9d1d65a4d" + } + Frame { + msec: 3904 + hash: "cd2180be80101c2aa4350b51b7a6f502" + } + Frame { + msec: 3920 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3936 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3952 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3968 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3984 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4000 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4016 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4032 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4048 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4064 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4080 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4096 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4112 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4128 + hash: "cd2180be80101c2aa4350b51b7a6f502" + } + Frame { + msec: 4144 + hash: "de471829f8ad3b43bf1b4df9d1d65a4d" + } + Frame { + msec: 4160 + hash: "ed9f2ca797894612600bc4b7fbaecb84" + } + Frame { + msec: 4176 + hash: "59470d71fa4426d0283e86371f2bfc2a" + } + Frame { + msec: 4192 + hash: "9a2f92efb51bcc6293d6a8e82d5314ea" + } + Frame { + msec: 4208 + hash: "7b66e21652a7d0982226e281a48411a9" + } + Frame { + msec: 4224 + hash: "a716c8d2c94433dee719f92f0822c8ec" + } + Frame { + msec: 4240 + hash: "f22a47b846cfee96ebdf39bbce2e6d51" + } + Frame { + msec: 4256 + hash: "5a8932d13d624932a65694fd19ec05cd" + } + Frame { + msec: 4272 + hash: "48e62dd171f5da82b5aa26c765e4042c" + } + Frame { + msec: 4288 + hash: "63d3c47f7dec1236440a05e0a8380900" + } + Frame { + msec: 4304 + hash: "323af110731b7af0c30f8862ff59b833" + } + Frame { + msec: 4320 + hash: "83c029e328e80af83158c37089cf0ece" + } + Frame { + msec: 4336 + hash: "3f9a09ae19be34348bb2552915360cf7" + } + Frame { + msec: 4352 + hash: "df624d70cae1bcefda8d69c0ff055d83" + } + Frame { + msec: 4368 + hash: "d671a3b971468e1d8aa30ab655e020a9" + } + Frame { + msec: 4384 + hash: "74c837b29f7f05b615123f0e608b523f" + } + Frame { + msec: 4400 + hash: "277ef98ea859fb7685fe6cd44a538a7d" + } + Frame { + msec: 4416 + hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9" + } + Frame { + msec: 4432 + hash: "456be9c208d690c479ba12bf6325dde0" + } + Frame { + msec: 4448 + hash: "10307beea6d99ab0ff5863f8e35555ed" + } + Frame { + msec: 4464 + hash: "170a1d5fe3422cf5223a78015a6a45fd" + } + Frame { + msec: 4480 + hash: "64ecb03aa538e74d0b99c6dec7751401" + } + Frame { + msec: 4496 + hash: "f3a7e74a1839f9366f9eeec4d2b80d1e" + } + Frame { + msec: 4512 + hash: "37c3f25e5cfdb48d7e3ab0cf8ffb9154" + } + Frame { + msec: 4528 + hash: "0af81ee0d76ff8335a0e347dc086ca37" + } + Frame { + msec: 4544 + hash: "061406edcbd2d4930ab89c3fcab63c7f" + } + Frame { + msec: 4560 + hash: "31d65134f340d82dd40f2401bda3fb7e" + } + Frame { + msec: 4576 + hash: "16c16c77c65b36d1e0954d5ead2642be" + } + Frame { + msec: 4592 + hash: "61c16009b65a55bffb63e27727e1615e" + } + Frame { + msec: 4608 + hash: "e1474c2cdd8768ca1ef45bf3bc5234ca" + } + Frame { + msec: 4624 + hash: "89c159ef00d273ecfe61332e1bf7244d" + } + Frame { + msec: 4640 + hash: "f4d0d3bca25e67908b38910f47b4757e" + } + Frame { + msec: 4656 + hash: "0e0c40f8e11a7bd499c80562ac6f8a82" + } + Frame { + msec: 4672 + hash: "4310a4c3037d845f088f21ad608f366a" + } + Frame { + msec: 4688 + hash: "3d518cd0348d6202243364af1dd6ce89" + } + Frame { + msec: 4704 + hash: "41987e6b4248d7944c0dbc6eb3862023" + } + Frame { + msec: 4720 + hash: "3e81338d38723d56f2d6c428271f81c1" + } + Frame { + msec: 4736 + hash: "902683d72f789399e9d99d1cea1bf177" + } + Frame { + msec: 4752 + hash: "efc119983701908a904deb24108c59cb" + } + Frame { + msec: 4768 + hash: "3a77785cfd7755f567619d8e04583f6a" + } + Frame { + msec: 4784 + hash: "fd85d1dd931033973283a408b5e328a8" + } + Frame { + msec: 4800 + image: "animated-smooth.4.png" + } + Frame { + msec: 4816 + hash: "ae12f1f37a746e16b06e6b869c89fac1" + } + Frame { + msec: 4832 + hash: "a15f19f374bbfb6a922b69d080a91eaa" + } + Frame { + msec: 4848 + hash: "84ef6dda8318b623832f58c46d762e89" + } + Frame { + msec: 4864 + hash: "b699285764f5e8866a9996f4a0dccc69" + } + Frame { + msec: 4880 + hash: "ddd8a006ef048c8d929144aa9fcd7c5a" + } + Frame { + msec: 4896 + hash: "177666cb3bb784c83196886b2c6cf6b6" + } + Frame { + msec: 4912 + hash: "9cd29b4b023a8b92573575fb3c3dda83" + } + Frame { + msec: 4928 + hash: "adc670a9aa0326744cb23e4f5912e6c7" + } + Frame { + msec: 4944 + hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" + } + Frame { + msec: 4960 + hash: "d7e96278583f83ab636ed68fa130e4d2" + } + Frame { + msec: 4976 + hash: "64b21b89576fdd0083f60a26f57b9c11" + } + Frame { + msec: 4992 + hash: "0d407ee07692d0e5a480a60952807b3c" + } + Frame { + msec: 5008 + hash: "845170815a87565dc4229792032b3357" + } + Frame { + msec: 5024 + hash: "8b8120cfc14de03e048632fdea61be21" + } + Frame { + msec: 5040 + hash: "b0070117f1c24a4da87434725d4bb989" + } + Frame { + msec: 5056 + hash: "0239d697642ca1d1b1d1daa3ea048e1e" + } + Frame { + msec: 5072 + hash: "3df54504f8891306fa8f1e9e2075a5e2" + } + Frame { + msec: 5088 + hash: "853429387cc639496c7338244de7e1b7" + } + Frame { + msec: 5104 + hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" + } + Frame { + msec: 5120 + hash: "b375e723b2396b13b8f55cfc0c81c3c3" + } + Frame { + msec: 5136 + hash: "53f05993ba3b426949badd2e4cd66d84" + } + Frame { + msec: 5152 + hash: "23291a0239c69ea07db959e709b1ff5f" + } + Frame { + msec: 5168 + hash: "2192094410e2d7c8d9d4aa5f8deacff5" + } + Frame { + msec: 5184 + hash: "d6615fc345831a3cc5b9a7196284b632" + } + Frame { + msec: 5200 + hash: "92176cce4836dcae4dfca94e49b041a8" + } + Frame { + msec: 5216 + hash: "2a1fcfb753ca237b518da26e67c928e5" + } + Frame { + msec: 5232 + hash: "42be5d26afb9f066dd27cc9fbaf6ce20" + } + Frame { + msec: 5248 + hash: "bd045f4532d78bba0ef1b64118fd9f24" + } + Frame { + msec: 5264 + hash: "7f9999a9c87af43b9703323efab31770" + } + Frame { + msec: 5280 + hash: "0640fcb0b24d3ba4ab8695f78271a438" + } + Frame { + msec: 5296 + hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" + } + Frame { + msec: 5312 + hash: "fce2648975106bc5c0ca9a4530f7f748" + } + Frame { + msec: 5328 + hash: "39cc17ee2e889f17dd07179fda99e431" + } + Frame { + msec: 5344 + hash: "39c46d85d20f7ef3eca1d09c7eb6a068" + } + Frame { + msec: 5360 + hash: "d65d50fbb920e683b041a1c72238225b" + } + Frame { + msec: 5376 + hash: "49a1df977b0494c7c72ca0b65c394e13" + } + Frame { + msec: 5392 + hash: "05cbce0eaa80b4610a9067af8c40f819" + } + Frame { + msec: 5408 + hash: "00ab7798bcd77a99886dff0414f35382" + } + Frame { + msec: 5424 + hash: "5cc90d798786c270ddd2616512f4459f" + } + Frame { + msec: 5440 + hash: "e5df07ea21e8e415c3ec82560f2d0f34" + } + Frame { + msec: 5456 + hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" + } + Frame { + msec: 5472 + hash: "c61d2aa7f934fb5a9f9f7883e063b51c" + } + Frame { + msec: 5488 + hash: "29ddde3300d0520a4c01b5536d8b9e7a" + } + Frame { + msec: 5504 + hash: "2fede2f5d871654f3f8a6e9d890adeac" + } + Frame { + msec: 5520 + hash: "deed4c06c9b713834490832b88e7acaf" + } + Frame { + msec: 5536 + hash: "c2edb016cfdd47c192d1c48281ee76ed" + } + Frame { + msec: 5552 + hash: "a261be47ae89e6b53e6bc1c1197154ae" + } + Frame { + msec: 5568 + hash: "e860e97ebd73b7d1d5d5d90458b34bfe" + } + Frame { + msec: 5584 + hash: "a087b532ecb2f28e4ee60819228c2522" + } + Frame { + msec: 5600 + hash: "64df51b4c1bf744b2aae1c6d908c2cc3" + } + Frame { + msec: 5616 + hash: "4520003d4b221a3de6834b2729b3026d" + } + Frame { + msec: 5632 + hash: "d1110817827c318ceb0c112e8c2bfc1d" + } + Frame { + msec: 5648 + hash: "83d49474db15d5779923972ff5f55917" + } + Frame { + msec: 5664 + hash: "3bae40654ec551d69e7c8c72f631c7a5" + } + Frame { + msec: 5680 + hash: "774740a393f3e9b8f12b81cce8da8280" + } + Frame { + msec: 5696 + hash: "d8e398a1ce9ca45c19951e93bd5c932a" + } + Frame { + msec: 5712 + hash: "2b7eb8a9fe26b032be8b4b9c00995912" + } + Frame { + msec: 5728 + hash: "47e920e3884ccf2f0f49e78070af6929" + } + Frame { + msec: 5744 + hash: "fc913807eb1069d611495fbd5d43ee3d" + } + Frame { + msec: 5760 + image: "animated-smooth.5.png" + } + Frame { + msec: 5776 + hash: "5736362b42bc2d801e02edabb983663a" + } + Frame { + msec: 5792 + hash: "e3a2b5c7247acfc1b30825233fbfd56b" + } + Frame { + msec: 5808 + hash: "48952ffa5e300778eafa768b9fe7df0c" + } + Frame { + msec: 5824 + hash: "fe04cae65aeec18697eca4f3f83a40e9" + } + Frame { + msec: 5840 + hash: "382d454f2366c1fb4ca472faa3bfa5e9" + } + Frame { + msec: 5856 + hash: "89022a8e2feb3dcb845de69aafc333ad" + } + Frame { + msec: 5872 + hash: "25506557c853a0020e98cf3992956989" + } + Frame { + msec: 5888 + hash: "9a64706c52c9e962816953e32950b8ba" + } + Frame { + msec: 5904 + hash: "3cbfded47413172ada64095e65c55e8a" + } + Frame { + msec: 5920 + hash: "ec7e1190dd4fe122545e6ce6c8740500" + } + Frame { + msec: 5936 + hash: "c5e399e29b988148913e62ee208b3326" + } + Frame { + msec: 5952 + hash: "3991bc7760b7981d80665e3a7654c9f4" + } + Frame { + msec: 5968 + hash: "05312f9529c94d3331ace7d73c544284" + } + Frame { + msec: 5984 + hash: "a94de4e90a8f8eb4ec33fe902afd226c" + } + Frame { + msec: 6000 + hash: "723f87da7e5b002a2e9b0bcbc81f9458" + } + Frame { + msec: 6016 + hash: "6b8ded0d9386a3fff0601a100c513080" + } + Frame { + msec: 6032 + hash: "f976cd5046ef5391536859e63db905bd" + } + Frame { + msec: 6048 + hash: "a94de4e90a8f8eb4ec33fe902afd226c" + } + Frame { + msec: 6064 + hash: "05312f9529c94d3331ace7d73c544284" + } + Frame { + msec: 6080 + hash: "b980703c1d0018937e83a8ba8862469e" + } + Frame { + msec: 6096 + hash: "c5e399e29b988148913e62ee208b3326" + } + Frame { + msec: 6112 + hash: "3b7b83e97d17440b42e6ef4b962076d8" + } + Frame { + msec: 6128 + hash: "3cbfded47413172ada64095e65c55e8a" + } + Frame { + msec: 6144 + hash: "9a64706c52c9e962816953e32950b8ba" + } + Frame { + msec: 6160 + hash: "25506557c853a0020e98cf3992956989" + } + Frame { + msec: 6176 + hash: "89022a8e2feb3dcb845de69aafc333ad" + } + Frame { + msec: 6192 + hash: "382d454f2366c1fb4ca472faa3bfa5e9" + } + Frame { + msec: 6208 + hash: "fe04cae65aeec18697eca4f3f83a40e9" + } + Frame { + msec: 6224 + hash: "48952ffa5e300778eafa768b9fe7df0c" + } + Frame { + msec: 6240 + hash: "e3a2b5c7247acfc1b30825233fbfd56b" + } + Frame { + msec: 6256 + hash: "5736362b42bc2d801e02edabb983663a" + } + Frame { + msec: 6272 + hash: "5d9ee853f083d514fbe51d6953d8e000" + } + Frame { + msec: 6288 + hash: "fe899138116774df4c4441687e3019c5" + } + Frame { + msec: 6304 + hash: "47e920e3884ccf2f0f49e78070af6929" + } + Frame { + msec: 6320 + hash: "2b7eb8a9fe26b032be8b4b9c00995912" + } + Frame { + msec: 6336 + hash: "64cd225202ed6c91b02c368a9160a656" + } + Frame { + msec: 6352 + hash: "774740a393f3e9b8f12b81cce8da8280" + } + Frame { + msec: 6368 + hash: "3bae40654ec551d69e7c8c72f631c7a5" + } + Frame { + msec: 6384 + hash: "83d49474db15d5779923972ff5f55917" + } + Frame { + msec: 6400 + hash: "d1110817827c318ceb0c112e8c2bfc1d" + } + Frame { + msec: 6416 + hash: "4520003d4b221a3de6834b2729b3026d" + } + Frame { + msec: 6432 + hash: "64df51b4c1bf744b2aae1c6d908c2cc3" + } + Frame { + msec: 6448 + hash: "a087b532ecb2f28e4ee60819228c2522" + } + Frame { + msec: 6464 + hash: "e860e97ebd73b7d1d5d5d90458b34bfe" + } + Frame { + msec: 6480 + hash: "a261be47ae89e6b53e6bc1c1197154ae" + } + Frame { + msec: 6496 + hash: "c2edb016cfdd47c192d1c48281ee76ed" + } + Frame { + msec: 6512 + hash: "deed4c06c9b713834490832b88e7acaf" + } + Frame { + msec: 6528 + hash: "2fede2f5d871654f3f8a6e9d890adeac" + } + Frame { + msec: 6544 + hash: "29ddde3300d0520a4c01b5536d8b9e7a" + } + Frame { + msec: 6560 + hash: "c61d2aa7f934fb5a9f9f7883e063b51c" + } + Frame { + msec: 6576 + hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" + } + Frame { + msec: 6592 + hash: "e5df07ea21e8e415c3ec82560f2d0f34" + } + Frame { + msec: 6608 + hash: "5cc90d798786c270ddd2616512f4459f" + } + Frame { + msec: 6624 + hash: "00ab7798bcd77a99886dff0414f35382" + } + Frame { + msec: 6640 + hash: "05cbce0eaa80b4610a9067af8c40f819" + } + Frame { + msec: 6656 + hash: "a676f45d946aeb9fa577c0e862735b01" + } + Frame { + msec: 6672 + hash: "d65d50fbb920e683b041a1c72238225b" + } + Frame { + msec: 6688 + hash: "39c46d85d20f7ef3eca1d09c7eb6a068" + } + Frame { + msec: 6704 + hash: "39cc17ee2e889f17dd07179fda99e431" + } + Frame { + msec: 6720 + image: "animated-smooth.6.png" + } + Frame { + msec: 6736 + hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" + } + Frame { + msec: 6752 + hash: "0640fcb0b24d3ba4ab8695f78271a438" + } + Frame { + msec: 6768 + hash: "2084ccc60ddd493399c128717816d33b" + } + Frame { + msec: 6784 + hash: "bd045f4532d78bba0ef1b64118fd9f24" + } + Frame { + msec: 6800 + hash: "42be5d26afb9f066dd27cc9fbaf6ce20" + } + Frame { + msec: 6816 + hash: "2a1fcfb753ca237b518da26e67c928e5" + } + Frame { + msec: 6832 + hash: "92176cce4836dcae4dfca94e49b041a8" + } + Frame { + msec: 6848 + hash: "d6615fc345831a3cc5b9a7196284b632" + } + Frame { + msec: 6864 + hash: "85ef33fcb3f91e4fc20391bf94455984" + } + Frame { + msec: 6880 + hash: "23291a0239c69ea07db959e709b1ff5f" + } + Frame { + msec: 6896 + hash: "53f05993ba3b426949badd2e4cd66d84" + } + Frame { + msec: 6912 + hash: "b375e723b2396b13b8f55cfc0c81c3c3" + } + Frame { + msec: 6928 + hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" + } + Frame { + msec: 6944 + hash: "853429387cc639496c7338244de7e1b7" + } + Frame { + msec: 6960 + hash: "3df54504f8891306fa8f1e9e2075a5e2" + } + Frame { + msec: 6976 + hash: "0239d697642ca1d1b1d1daa3ea048e1e" + } + Frame { + msec: 6992 + hash: "b0070117f1c24a4da87434725d4bb989" + } + Frame { + msec: 7008 + hash: "8b8120cfc14de03e048632fdea61be21" + } + Frame { + msec: 7024 + hash: "845170815a87565dc4229792032b3357" + } + Frame { + msec: 7040 + hash: "0d407ee07692d0e5a480a60952807b3c" + } + Frame { + msec: 7056 + hash: "64b21b89576fdd0083f60a26f57b9c11" + } + Frame { + msec: 7072 + hash: "d7e96278583f83ab636ed68fa130e4d2" + } + Frame { + msec: 7088 + hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7104 + hash: "adc670a9aa0326744cb23e4f5912e6c7" + } + Frame { + msec: 7120 + hash: "9cd29b4b023a8b92573575fb3c3dda83" + } + Frame { + msec: 7136 + hash: "177666cb3bb784c83196886b2c6cf6b6" + } + Frame { + msec: 7152 + hash: "ddd8a006ef048c8d929144aa9fcd7c5a" + } + Frame { + msec: 7168 + hash: "b699285764f5e8866a9996f4a0dccc69" + } + Frame { + msec: 7184 + hash: "84ef6dda8318b623832f58c46d762e89" + } + Frame { + msec: 7200 + hash: "a15f19f374bbfb6a922b69d080a91eaa" + } + Frame { + msec: 7216 + hash: "ae12f1f37a746e16b06e6b869c89fac1" + } + Frame { + msec: 7232 + hash: "5d3e85acabe5e5ff802eb7731676274f" + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.0.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.0.png new file mode 100644 index 0000000..99228f9 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.0.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.1.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.1.png new file mode 100644 index 0000000..a2dcd00 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.1.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.2.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.2.png new file mode 100644 index 0000000..8a80020 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.2.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.3.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.3.png new file mode 100644 index 0000000..02b57ef Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.3.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.4.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.4.png new file mode 100644 index 0000000..df0f6cc Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.4.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.5.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.5.png new file mode 100644 index 0000000..0add64d Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.5.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.6.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.6.png new file mode 100644 index 0000000..0886207 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.6.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.7.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.7.png new file mode 100644 index 0000000..bc1a7b0 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.7.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.qml b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.qml new file mode 100644 index 0000000..29e591a --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/animated.qml @@ -0,0 +1,2091 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 32 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 48 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 64 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 80 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 96 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 112 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 128 + hash: "4c60d345821f515c7811f3b69eb94607" + } + Frame { + msec: 144 + hash: "aacf9ae3c23d174a1c1cda493600e355" + } + Frame { + msec: 160 + hash: "228d5312c261d1a5455faf69ec2f2520" + } + Frame { + msec: 176 + hash: "465ec993948f7b75aeb5759976f4620d" + } + Frame { + msec: 192 + hash: "755cfccc38bababc468fe6e1076804bb" + } + Frame { + msec: 208 + hash: "b63e4d1686057828fd8781f1c33585f5" + } + Frame { + msec: 224 + hash: "c5b3dede34b0d1d78135e39c41d117c6" + } + Frame { + msec: 240 + hash: "4d45d70f997c2c67166905c97a900d2e" + } + Frame { + msec: 256 + hash: "7b4d12e5a877507e7454aa1b8ed87c2d" + } + Frame { + msec: 272 + hash: "08b9be66e23c7b6f6f629c7470394601" + } + Frame { + msec: 288 + hash: "3dac1d9632378bd18c1c938a4868e3fb" + } + Frame { + msec: 304 + hash: "406224b535b4425d2708df0083acdc8e" + } + Frame { + msec: 320 + hash: "482bb92d4f0ad5d7c7e379b9e1ad326e" + } + Frame { + msec: 336 + hash: "8419f1d75b14130730bcfec4e3a9b058" + } + Frame { + msec: 352 + hash: "a85ee8be6a47bbd1b14137803ce606ec" + } + Frame { + msec: 368 + hash: "c1936628aec13e08e9581dcd2c6d5717" + } + Frame { + msec: 384 + hash: "75c9bf83ca3fe24612c245698c089430" + } + Frame { + msec: 400 + hash: "8c66a33d26eec2a1133f4362710a5fab" + } + Frame { + msec: 416 + hash: "2266df495ab5265e7514a506d3bf5bc6" + } + Frame { + msec: 432 + hash: "01947e631c3db43f7c5b4427229bc0c8" + } + Frame { + msec: 448 + hash: "3f62f032239d412d3637198f5e3e83d6" + } + Frame { + msec: 464 + hash: "06d8d8a1a41893d4e27725948a75caf4" + } + Frame { + msec: 480 + hash: "6b48bfd0c7993f746d6301c2a0f61d23" + } + Frame { + msec: 496 + hash: "ac8f096e8c7cc23bfb01de69cf3e266e" + } + Frame { + msec: 512 + hash: "dd4c9e63001bc6e0e63ea4db2d85301f" + } + Frame { + msec: 528 + hash: "2a7bed775824968e318c3d40fbc5b1c2" + } + Frame { + msec: 544 + hash: "3152e5f29015ece423fbdd11a2b382b8" + } + Frame { + msec: 560 + hash: "f1a7a4a67a21f5025294af4bea3f8998" + } + Frame { + msec: 576 + hash: "a40014d842471784e1222eb205395f6f" + } + Frame { + msec: 592 + hash: "18c2f321a149e38b258ac264d40c2376" + } + Frame { + msec: 608 + hash: "4ae120bb6dc2bd5ff81cc99ae03c191e" + } + Frame { + msec: 624 + hash: "19d05a96f3ae7388e854bbf1075b51c1" + } + Frame { + msec: 640 + hash: "e418b5f54705515dce5ce3b4cbc45d19" + } + Frame { + msec: 656 + hash: "554e1d360463871e7c05cfe6f8abe1dd" + } + Frame { + msec: 672 + hash: "153237f8cf37e29ad2f32f7a8a6aecdb" + } + Frame { + msec: 688 + hash: "60f158382f75103c78e2b9b408e0fe65" + } + Frame { + msec: 704 + hash: "4e60300cfab8634e04dcd1b556251d31" + } + Frame { + msec: 720 + hash: "6a521f952e05d91b86ad78fd6f5de4f9" + } + Frame { + msec: 736 + hash: "b74521d6ac531414aeeca0fb28379d11" + } + Frame { + msec: 752 + hash: "a6f17da2dd581bdc249ff62f833dc025" + } + Frame { + msec: 768 + hash: "93d9f0a7c387cbe653a9a088f8f4ef2b" + } + Frame { + msec: 784 + hash: "1ea07ee309ce2c52cbc36370b75a872f" + } + Frame { + msec: 800 + hash: "593a8a45c3a0cd7ce1cb6bd1913136ba" + } + Frame { + msec: 816 + hash: "c7eb7837dce71c914186326216214eeb" + } + Frame { + msec: 832 + hash: "0cba07ca38c7f0483244832a42d9ac53" + } + Frame { + msec: 848 + hash: "93cf31eabb454ec536c638a506be0648" + } + Frame { + msec: 864 + hash: "e8a61d3858244127cb2b2812f04f5ce9" + } + Frame { + msec: 880 + hash: "1ac8c393f084aa1894c26610b7f40ea6" + } + Frame { + msec: 896 + hash: "8861bf848da5c96b35addff736b01520" + } + Frame { + msec: 912 + hash: "f04e84ad3579d6334077abe73101d206" + } + Frame { + msec: 928 + hash: "eac4600372f0fdfadee88896ac915a48" + } + Frame { + msec: 944 + hash: "ff0928dfd16b2da9811a172c19817a97" + } + Frame { + msec: 960 + image: "animated.0.png" + } + Frame { + msec: 976 + hash: "7383209c80b403b93da3264eadbc047f" + } + Frame { + msec: 992 + hash: "86360bd58bba5fdd901c105ddb2e3ade" + } + Frame { + msec: 1008 + hash: "bc747167dfb3388ac63e9e68a86b9a03" + } + Frame { + msec: 1024 + hash: "bccb4b8a494bd45bd70c2524a02a9dc3" + } + Frame { + msec: 1040 + hash: "ae48da4a66f93c806725ce749700aac8" + } + Frame { + msec: 1056 + hash: "c763f56728e17fc119539a4d45dfccc3" + } + Frame { + msec: 1072 + hash: "956429472da133324c970774f77784f5" + } + Frame { + msec: 1088 + hash: "a4ddb4956d71fd642d54757938100cf3" + } + Frame { + msec: 1104 + hash: "ec0aea8dc8c269d1f0aee5817347ac55" + } + Frame { + msec: 1120 + hash: "68dae343cf324391ec6721cea14575f7" + } + Frame { + msec: 1136 + hash: "81d2fc6727dc7449d1a87b4abea9b704" + } + Frame { + msec: 1152 + hash: "c3a1f12febc979150028737722d6d045" + } + Frame { + msec: 1168 + hash: "80ebac4d923f67fb8dba3d133ce657ba" + } + Frame { + msec: 1184 + hash: "7c22fc3e30377cc14326833bdd23ddd8" + } + Frame { + msec: 1200 + hash: "5359f5e45e5467c62c2d9521c8199c48" + } + Frame { + msec: 1216 + hash: "30f84a7f67b13a945ba6d5935ea92da5" + } + Frame { + msec: 1232 + hash: "08f55088cdce741c67539f73291e53ab" + } + Frame { + msec: 1248 + hash: "93128906d054e44bfd126fc22bdc3102" + } + Frame { + msec: 1264 + hash: "97f7a2175dcf9ac2581a92d614d72f88" + } + Frame { + msec: 1280 + hash: "587cb6e05048579088e88e0180e3ad48" + } + Frame { + msec: 1296 + hash: "985868869ef2c332da379460a2f3a71b" + } + Frame { + msec: 1312 + hash: "94084ca4998fcda408f6987f52c34185" + } + Frame { + msec: 1328 + hash: "e91bb914c1eb63cd4269b30a220a128a" + } + Frame { + msec: 1344 + hash: "e880d93963c80e4fab5173554c9600fc" + } + Frame { + msec: 1360 + hash: "84c94704c16e246df1048f958cc8cefb" + } + Frame { + msec: 1376 + hash: "4f1eace868a6688e5b24ce48a1f0fd18" + } + Frame { + msec: 1392 + hash: "99de44f74f8e1f79652ab46afb4bb59e" + } + Frame { + msec: 1408 + hash: "44072400ca3f0237d1aebae28a94becc" + } + Frame { + msec: 1424 + hash: "a1bd4e995365e79389dba80f9e3b7af8" + } + Frame { + msec: 1440 + hash: "95d776c84fe155617fc4ee51bdb45b7e" + } + Frame { + msec: 1456 + hash: "3b95eb8cbfc831e1ebee2e456b026ab4" + } + Frame { + msec: 1472 + hash: "826c7741ba0c51de407bb799e8f360b5" + } + Frame { + msec: 1488 + hash: "11673a112566a64aca3c7010b9cc9c4d" + } + Frame { + msec: 1504 + hash: "e1e6c7a7f51bcccd749710dbbf9e97f6" + } + Frame { + msec: 1520 + hash: "5b027815ea3c1ea54e1a02c798c468db" + } + Frame { + msec: 1536 + hash: "65c514c9e926affe1da0b4826d2754c7" + } + Frame { + msec: 1552 + hash: "73c5f23f51797a33f4d2898738e6356e" + } + Frame { + msec: 1568 + hash: "acd9a2e76b22ab0ff809fd3ec3a018ec" + } + Frame { + msec: 1584 + hash: "fb17df681d99d5de05f6329bba697ea5" + } + Frame { + msec: 1600 + hash: "1bf7a98884b506b38326f59f85a53f41" + } + Frame { + msec: 1616 + hash: "0b1a741975e3d9ef8f5e78f371c89441" + } + Frame { + msec: 1632 + hash: "a6937ee49648ed0cb409063bf1da3b87" + } + Frame { + msec: 1648 + hash: "a790f0e884ab85f7802dd094e4ef550f" + } + Frame { + msec: 1664 + hash: "3b644aac161f0a75bfb64f5075373190" + } + Frame { + msec: 1680 + hash: "b12faa76c07adc21634cd8f8cb8436ae" + } + Frame { + msec: 1696 + hash: "3fb20f9dbd40b4729235e13af9643afc" + } + Frame { + msec: 1712 + hash: "f57727419bb51fb1e589b960ddeb20ae" + } + Frame { + msec: 1728 + hash: "7b78cba247f2c209ed81e003ca25d0a5" + } + Frame { + msec: 1744 + hash: "8172e076b05d95248d89e815fde820ef" + } + Frame { + msec: 1760 + hash: "a88d6fc324ef48aa52c642a1662ec679" + } + Frame { + msec: 1776 + hash: "74c1e71378b502bc1b732a55806a10f1" + } + Frame { + msec: 1792 + hash: "6eae517ad33f0609c31ef1f8f80ba899" + } + Frame { + msec: 1808 + hash: "a67e9a0f55512fb1c55f13c6b483923b" + } + Frame { + msec: 1824 + hash: "4887cd34d9926a361f3ca2e75be53ea6" + } + Frame { + msec: 1840 + hash: "13ca95adab171d9fad9ee8b75d0226bc" + } + Frame { + msec: 1856 + hash: "affab9fb48c889a2680eb81458d400f9" + } + Frame { + msec: 1872 + hash: "7aa0cbf73f7999be7cde4ec739efbc33" + } + Frame { + msec: 1888 + hash: "36c054064c9a76f4072492e55c70fb6c" + } + Frame { + msec: 1904 + hash: "d1ed4916cb1ecff60277d74369ff311b" + } + Frame { + msec: 1920 + image: "animated.1.png" + } + Frame { + msec: 1936 + hash: "29245946cbd811fe6bf6b2b41cc13002" + } + Frame { + msec: 1952 + hash: "8a9dd7a2d10771633e6896f3f4a722ae" + } + Frame { + msec: 1968 + hash: "058c918e83bfdd665cd836566b53959b" + } + Frame { + msec: 1984 + hash: "fdf3b7a0391119e2fe77be8d6a17481d" + } + Frame { + msec: 2000 + hash: "ed5d80c33dbf72624385b1cf43784626" + } + Frame { + msec: 2016 + hash: "911591db1519ba264847f09868e38e0e" + } + Frame { + msec: 2032 + hash: "ed5d80c33dbf72624385b1cf43784626" + } + Frame { + msec: 2048 + hash: "fdf3b7a0391119e2fe77be8d6a17481d" + } + Frame { + msec: 2064 + hash: "058c918e83bfdd665cd836566b53959b" + } + Frame { + msec: 2080 + hash: "8a9dd7a2d10771633e6896f3f4a722ae" + } + Frame { + msec: 2096 + hash: "29245946cbd811fe6bf6b2b41cc13002" + } + Frame { + msec: 2112 + hash: "63ebaa4869728f5e2891d068e4b0091c" + } + Frame { + msec: 2128 + hash: "d1ed4916cb1ecff60277d74369ff311b" + } + Frame { + msec: 2144 + hash: "36c054064c9a76f4072492e55c70fb6c" + } + Frame { + msec: 2160 + hash: "7aa0cbf73f7999be7cde4ec739efbc33" + } + Frame { + msec: 2176 + hash: "affab9fb48c889a2680eb81458d400f9" + } + Frame { + msec: 2192 + hash: "13ca95adab171d9fad9ee8b75d0226bc" + } + Frame { + msec: 2208 + hash: "4887cd34d9926a361f3ca2e75be53ea6" + } + Frame { + msec: 2224 + hash: "a67e9a0f55512fb1c55f13c6b483923b" + } + Frame { + msec: 2240 + hash: "6eae517ad33f0609c31ef1f8f80ba899" + } + Frame { + msec: 2256 + hash: "74c1e71378b502bc1b732a55806a10f1" + } + Frame { + msec: 2272 + hash: "a88d6fc324ef48aa52c642a1662ec679" + } + Frame { + msec: 2288 + hash: "8172e076b05d95248d89e815fde820ef" + } + Frame { + msec: 2304 + hash: "7b78cba247f2c209ed81e003ca25d0a5" + } + Frame { + msec: 2320 + hash: "f57727419bb51fb1e589b960ddeb20ae" + } + Frame { + msec: 2336 + hash: "3fb20f9dbd40b4729235e13af9643afc" + } + Frame { + msec: 2352 + hash: "b12faa76c07adc21634cd8f8cb8436ae" + } + Frame { + msec: 2368 + hash: "3b644aac161f0a75bfb64f5075373190" + } + Frame { + msec: 2384 + hash: "a790f0e884ab85f7802dd094e4ef550f" + } + Frame { + msec: 2400 + hash: "a6937ee49648ed0cb409063bf1da3b87" + } + Frame { + msec: 2416 + hash: "0b1a741975e3d9ef8f5e78f371c89441" + } + Frame { + msec: 2432 + hash: "1bf7a98884b506b38326f59f85a53f41" + } + Frame { + msec: 2448 + hash: "fb17df681d99d5de05f6329bba697ea5" + } + Frame { + msec: 2464 + hash: "acd9a2e76b22ab0ff809fd3ec3a018ec" + } + Frame { + msec: 2480 + hash: "73c5f23f51797a33f4d2898738e6356e" + } + Frame { + msec: 2496 + hash: "65c514c9e926affe1da0b4826d2754c7" + } + Frame { + msec: 2512 + hash: "5b027815ea3c1ea54e1a02c798c468db" + } + Frame { + msec: 2528 + hash: "e1e6c7a7f51bcccd749710dbbf9e97f6" + } + Frame { + msec: 2544 + hash: "11673a112566a64aca3c7010b9cc9c4d" + } + Frame { + msec: 2560 + hash: "826c7741ba0c51de407bb799e8f360b5" + } + Frame { + msec: 2576 + hash: "3b95eb8cbfc831e1ebee2e456b026ab4" + } + Frame { + msec: 2592 + hash: "95d776c84fe155617fc4ee51bdb45b7e" + } + Frame { + msec: 2608 + hash: "a1bd4e995365e79389dba80f9e3b7af8" + } + Frame { + msec: 2624 + hash: "44072400ca3f0237d1aebae28a94becc" + } + Frame { + msec: 2640 + hash: "99de44f74f8e1f79652ab46afb4bb59e" + } + Frame { + msec: 2656 + hash: "4f1eace868a6688e5b24ce48a1f0fd18" + } + Frame { + msec: 2672 + hash: "84c94704c16e246df1048f958cc8cefb" + } + Frame { + msec: 2688 + hash: "e880d93963c80e4fab5173554c9600fc" + } + Frame { + msec: 2704 + hash: "e91bb914c1eb63cd4269b30a220a128a" + } + Frame { + msec: 2720 + hash: "94084ca4998fcda408f6987f52c34185" + } + Frame { + msec: 2736 + hash: "985868869ef2c332da379460a2f3a71b" + } + Frame { + msec: 2752 + hash: "587cb6e05048579088e88e0180e3ad48" + } + Frame { + msec: 2768 + hash: "97f7a2175dcf9ac2581a92d614d72f88" + } + Frame { + msec: 2784 + hash: "93128906d054e44bfd126fc22bdc3102" + } + Frame { + msec: 2800 + hash: "08f55088cdce741c67539f73291e53ab" + } + Frame { + msec: 2816 + hash: "30f84a7f67b13a945ba6d5935ea92da5" + } + Frame { + msec: 2832 + hash: "5359f5e45e5467c62c2d9521c8199c48" + } + Frame { + msec: 2848 + hash: "7c22fc3e30377cc14326833bdd23ddd8" + } + Frame { + msec: 2864 + hash: "80ebac4d923f67fb8dba3d133ce657ba" + } + Frame { + msec: 2880 + image: "animated.2.png" + } + Frame { + msec: 2896 + hash: "81d2fc6727dc7449d1a87b4abea9b704" + } + Frame { + msec: 2912 + hash: "68dae343cf324391ec6721cea14575f7" + } + Frame { + msec: 2928 + hash: "ec0aea8dc8c269d1f0aee5817347ac55" + } + Frame { + msec: 2944 + hash: "a4ddb4956d71fd642d54757938100cf3" + } + Frame { + msec: 2960 + hash: "956429472da133324c970774f77784f5" + } + Frame { + msec: 2976 + hash: "c763f56728e17fc119539a4d45dfccc3" + } + Frame { + msec: 2992 + hash: "ae48da4a66f93c806725ce749700aac8" + } + Frame { + msec: 3008 + hash: "bccb4b8a494bd45bd70c2524a02a9dc3" + } + Frame { + msec: 3024 + hash: "bc747167dfb3388ac63e9e68a86b9a03" + } + Frame { + msec: 3040 + hash: "86360bd58bba5fdd901c105ddb2e3ade" + } + Frame { + msec: 3056 + hash: "7383209c80b403b93da3264eadbc047f" + } + Frame { + msec: 3072 + hash: "280288a7988736e30a2a3e4289ac3b0c" + } + Frame { + msec: 3088 + hash: "ff0928dfd16b2da9811a172c19817a97" + } + Frame { + msec: 3104 + hash: "eac4600372f0fdfadee88896ac915a48" + } + Frame { + msec: 3120 + hash: "f04e84ad3579d6334077abe73101d206" + } + Frame { + msec: 3136 + hash: "8861bf848da5c96b35addff736b01520" + } + Frame { + msec: 3152 + hash: "1ac8c393f084aa1894c26610b7f40ea6" + } + Frame { + msec: 3168 + hash: "e8a61d3858244127cb2b2812f04f5ce9" + } + Frame { + msec: 3184 + hash: "93cf31eabb454ec536c638a506be0648" + } + Frame { + msec: 3200 + hash: "0cba07ca38c7f0483244832a42d9ac53" + } + Frame { + msec: 3216 + hash: "c7eb7837dce71c914186326216214eeb" + } + Frame { + msec: 3232 + hash: "593a8a45c3a0cd7ce1cb6bd1913136ba" + } + Frame { + msec: 3248 + hash: "1ea07ee309ce2c52cbc36370b75a872f" + } + Frame { + msec: 3264 + hash: "93d9f0a7c387cbe653a9a088f8f4ef2b" + } + Frame { + msec: 3280 + hash: "a6f17da2dd581bdc249ff62f833dc025" + } + Frame { + msec: 3296 + hash: "b74521d6ac531414aeeca0fb28379d11" + } + Frame { + msec: 3312 + hash: "6a521f952e05d91b86ad78fd6f5de4f9" + } + Frame { + msec: 3328 + hash: "4e60300cfab8634e04dcd1b556251d31" + } + Frame { + msec: 3344 + hash: "60f158382f75103c78e2b9b408e0fe65" + } + Frame { + msec: 3360 + hash: "153237f8cf37e29ad2f32f7a8a6aecdb" + } + Frame { + msec: 3376 + hash: "554e1d360463871e7c05cfe6f8abe1dd" + } + Frame { + msec: 3392 + hash: "e418b5f54705515dce5ce3b4cbc45d19" + } + Frame { + msec: 3408 + hash: "19d05a96f3ae7388e854bbf1075b51c1" + } + Frame { + msec: 3424 + hash: "4ae120bb6dc2bd5ff81cc99ae03c191e" + } + Frame { + msec: 3440 + hash: "18c2f321a149e38b258ac264d40c2376" + } + Frame { + msec: 3456 + hash: "a40014d842471784e1222eb205395f6f" + } + Frame { + msec: 3472 + hash: "f1a7a4a67a21f5025294af4bea3f8998" + } + Frame { + msec: 3488 + hash: "3152e5f29015ece423fbdd11a2b382b8" + } + Frame { + msec: 3504 + hash: "2a7bed775824968e318c3d40fbc5b1c2" + } + Frame { + msec: 3520 + hash: "dd4c9e63001bc6e0e63ea4db2d85301f" + } + Frame { + msec: 3536 + hash: "ac8f096e8c7cc23bfb01de69cf3e266e" + } + Frame { + msec: 3552 + hash: "6b48bfd0c7993f746d6301c2a0f61d23" + } + Frame { + msec: 3568 + hash: "06d8d8a1a41893d4e27725948a75caf4" + } + Frame { + msec: 3584 + hash: "3f62f032239d412d3637198f5e3e83d6" + } + Frame { + msec: 3600 + hash: "01947e631c3db43f7c5b4427229bc0c8" + } + Frame { + msec: 3616 + hash: "2266df495ab5265e7514a506d3bf5bc6" + } + Frame { + msec: 3632 + hash: "8c66a33d26eec2a1133f4362710a5fab" + } + Frame { + msec: 3648 + hash: "75c9bf83ca3fe24612c245698c089430" + } + Frame { + msec: 3664 + hash: "c1936628aec13e08e9581dcd2c6d5717" + } + Frame { + msec: 3680 + hash: "a85ee8be6a47bbd1b14137803ce606ec" + } + Frame { + msec: 3696 + hash: "8419f1d75b14130730bcfec4e3a9b058" + } + Frame { + msec: 3712 + hash: "482bb92d4f0ad5d7c7e379b9e1ad326e" + } + Frame { + msec: 3728 + hash: "406224b535b4425d2708df0083acdc8e" + } + Frame { + msec: 3744 + hash: "3dac1d9632378bd18c1c938a4868e3fb" + } + Frame { + msec: 3760 + hash: "08b9be66e23c7b6f6f629c7470394601" + } + Frame { + msec: 3776 + hash: "7b4d12e5a877507e7454aa1b8ed87c2d" + } + Frame { + msec: 3792 + hash: "4d45d70f997c2c67166905c97a900d2e" + } + Frame { + msec: 3808 + hash: "c5b3dede34b0d1d78135e39c41d117c6" + } + Frame { + msec: 3824 + hash: "b63e4d1686057828fd8781f1c33585f5" + } + Frame { + msec: 3840 + image: "animated.3.png" + } + Frame { + msec: 3856 + hash: "465ec993948f7b75aeb5759976f4620d" + } + Frame { + msec: 3872 + hash: "228d5312c261d1a5455faf69ec2f2520" + } + Frame { + msec: 3888 + hash: "aacf9ae3c23d174a1c1cda493600e355" + } + Frame { + msec: 3904 + hash: "4c60d345821f515c7811f3b69eb94607" + } + Frame { + msec: 3920 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3936 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3952 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3968 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3984 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4000 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4016 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4032 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4048 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4064 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4080 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4096 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4112 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4128 + hash: "4c60d345821f515c7811f3b69eb94607" + } + Frame { + msec: 4144 + hash: "aacf9ae3c23d174a1c1cda493600e355" + } + Frame { + msec: 4160 + hash: "228d5312c261d1a5455faf69ec2f2520" + } + Frame { + msec: 4176 + hash: "465ec993948f7b75aeb5759976f4620d" + } + Frame { + msec: 4192 + hash: "755cfccc38bababc468fe6e1076804bb" + } + Frame { + msec: 4208 + hash: "b63e4d1686057828fd8781f1c33585f5" + } + Frame { + msec: 4224 + hash: "c5b3dede34b0d1d78135e39c41d117c6" + } + Frame { + msec: 4240 + hash: "4d45d70f997c2c67166905c97a900d2e" + } + Frame { + msec: 4256 + hash: "7b4d12e5a877507e7454aa1b8ed87c2d" + } + Frame { + msec: 4272 + hash: "08b9be66e23c7b6f6f629c7470394601" + } + Frame { + msec: 4288 + hash: "3dac1d9632378bd18c1c938a4868e3fb" + } + Frame { + msec: 4304 + hash: "406224b535b4425d2708df0083acdc8e" + } + Frame { + msec: 4320 + hash: "482bb92d4f0ad5d7c7e379b9e1ad326e" + } + Frame { + msec: 4336 + hash: "8419f1d75b14130730bcfec4e3a9b058" + } + Frame { + msec: 4352 + hash: "a85ee8be6a47bbd1b14137803ce606ec" + } + Frame { + msec: 4368 + hash: "c1936628aec13e08e9581dcd2c6d5717" + } + Frame { + msec: 4384 + hash: "75c9bf83ca3fe24612c245698c089430" + } + Frame { + msec: 4400 + hash: "8c66a33d26eec2a1133f4362710a5fab" + } + Frame { + msec: 4416 + hash: "2266df495ab5265e7514a506d3bf5bc6" + } + Frame { + msec: 4432 + hash: "01947e631c3db43f7c5b4427229bc0c8" + } + Frame { + msec: 4448 + hash: "3f62f032239d412d3637198f5e3e83d6" + } + Frame { + msec: 4464 + hash: "06d8d8a1a41893d4e27725948a75caf4" + } + Frame { + msec: 4480 + hash: "6b48bfd0c7993f746d6301c2a0f61d23" + } + Frame { + msec: 4496 + hash: "ac8f096e8c7cc23bfb01de69cf3e266e" + } + Frame { + msec: 4512 + hash: "dd4c9e63001bc6e0e63ea4db2d85301f" + } + Frame { + msec: 4528 + hash: "2a7bed775824968e318c3d40fbc5b1c2" + } + Frame { + msec: 4544 + hash: "3152e5f29015ece423fbdd11a2b382b8" + } + Frame { + msec: 4560 + hash: "f1a7a4a67a21f5025294af4bea3f8998" + } + Frame { + msec: 4576 + hash: "a40014d842471784e1222eb205395f6f" + } + Frame { + msec: 4592 + hash: "18c2f321a149e38b258ac264d40c2376" + } + Frame { + msec: 4608 + hash: "4ae120bb6dc2bd5ff81cc99ae03c191e" + } + Frame { + msec: 4624 + hash: "19d05a96f3ae7388e854bbf1075b51c1" + } + Frame { + msec: 4640 + hash: "e418b5f54705515dce5ce3b4cbc45d19" + } + Frame { + msec: 4656 + hash: "554e1d360463871e7c05cfe6f8abe1dd" + } + Frame { + msec: 4672 + hash: "153237f8cf37e29ad2f32f7a8a6aecdb" + } + Frame { + msec: 4688 + hash: "60f158382f75103c78e2b9b408e0fe65" + } + Frame { + msec: 4704 + hash: "4e60300cfab8634e04dcd1b556251d31" + } + Frame { + msec: 4720 + hash: "6a521f952e05d91b86ad78fd6f5de4f9" + } + Frame { + msec: 4736 + hash: "b74521d6ac531414aeeca0fb28379d11" + } + Frame { + msec: 4752 + hash: "a6f17da2dd581bdc249ff62f833dc025" + } + Frame { + msec: 4768 + hash: "93d9f0a7c387cbe653a9a088f8f4ef2b" + } + Frame { + msec: 4784 + hash: "1ea07ee309ce2c52cbc36370b75a872f" + } + Frame { + msec: 4800 + image: "animated.4.png" + } + Frame { + msec: 4816 + hash: "c7eb7837dce71c914186326216214eeb" + } + Frame { + msec: 4832 + hash: "0cba07ca38c7f0483244832a42d9ac53" + } + Frame { + msec: 4848 + hash: "93cf31eabb454ec536c638a506be0648" + } + Frame { + msec: 4864 + hash: "e8a61d3858244127cb2b2812f04f5ce9" + } + Frame { + msec: 4880 + hash: "1ac8c393f084aa1894c26610b7f40ea6" + } + Frame { + msec: 4896 + hash: "8861bf848da5c96b35addff736b01520" + } + Frame { + msec: 4912 + hash: "f04e84ad3579d6334077abe73101d206" + } + Frame { + msec: 4928 + hash: "eac4600372f0fdfadee88896ac915a48" + } + Frame { + msec: 4944 + hash: "ff0928dfd16b2da9811a172c19817a97" + } + Frame { + msec: 4960 + hash: "280288a7988736e30a2a3e4289ac3b0c" + } + Frame { + msec: 4976 + hash: "7383209c80b403b93da3264eadbc047f" + } + Frame { + msec: 4992 + hash: "86360bd58bba5fdd901c105ddb2e3ade" + } + Frame { + msec: 5008 + hash: "bc747167dfb3388ac63e9e68a86b9a03" + } + Frame { + msec: 5024 + hash: "bccb4b8a494bd45bd70c2524a02a9dc3" + } + Frame { + msec: 5040 + hash: "ae48da4a66f93c806725ce749700aac8" + } + Frame { + msec: 5056 + hash: "c763f56728e17fc119539a4d45dfccc3" + } + Frame { + msec: 5072 + hash: "956429472da133324c970774f77784f5" + } + Frame { + msec: 5088 + hash: "a4ddb4956d71fd642d54757938100cf3" + } + Frame { + msec: 5104 + hash: "ec0aea8dc8c269d1f0aee5817347ac55" + } + Frame { + msec: 5120 + hash: "68dae343cf324391ec6721cea14575f7" + } + Frame { + msec: 5136 + hash: "81d2fc6727dc7449d1a87b4abea9b704" + } + Frame { + msec: 5152 + hash: "c3a1f12febc979150028737722d6d045" + } + Frame { + msec: 5168 + hash: "80ebac4d923f67fb8dba3d133ce657ba" + } + Frame { + msec: 5184 + hash: "7c22fc3e30377cc14326833bdd23ddd8" + } + Frame { + msec: 5200 + hash: "5359f5e45e5467c62c2d9521c8199c48" + } + Frame { + msec: 5216 + hash: "30f84a7f67b13a945ba6d5935ea92da5" + } + Frame { + msec: 5232 + hash: "08f55088cdce741c67539f73291e53ab" + } + Frame { + msec: 5248 + hash: "93128906d054e44bfd126fc22bdc3102" + } + Frame { + msec: 5264 + hash: "97f7a2175dcf9ac2581a92d614d72f88" + } + Frame { + msec: 5280 + hash: "587cb6e05048579088e88e0180e3ad48" + } + Frame { + msec: 5296 + hash: "985868869ef2c332da379460a2f3a71b" + } + Frame { + msec: 5312 + hash: "94084ca4998fcda408f6987f52c34185" + } + Frame { + msec: 5328 + hash: "e91bb914c1eb63cd4269b30a220a128a" + } + Frame { + msec: 5344 + hash: "e880d93963c80e4fab5173554c9600fc" + } + Frame { + msec: 5360 + hash: "84c94704c16e246df1048f958cc8cefb" + } + Frame { + msec: 5376 + hash: "4f1eace868a6688e5b24ce48a1f0fd18" + } + Frame { + msec: 5392 + hash: "99de44f74f8e1f79652ab46afb4bb59e" + } + Frame { + msec: 5408 + hash: "44072400ca3f0237d1aebae28a94becc" + } + Frame { + msec: 5424 + hash: "a1bd4e995365e79389dba80f9e3b7af8" + } + Frame { + msec: 5440 + hash: "95d776c84fe155617fc4ee51bdb45b7e" + } + Frame { + msec: 5456 + hash: "3b95eb8cbfc831e1ebee2e456b026ab4" + } + Frame { + msec: 5472 + hash: "826c7741ba0c51de407bb799e8f360b5" + } + Frame { + msec: 5488 + hash: "11673a112566a64aca3c7010b9cc9c4d" + } + Frame { + msec: 5504 + hash: "e1e6c7a7f51bcccd749710dbbf9e97f6" + } + Frame { + msec: 5520 + hash: "5b027815ea3c1ea54e1a02c798c468db" + } + Frame { + msec: 5536 + hash: "65c514c9e926affe1da0b4826d2754c7" + } + Frame { + msec: 5552 + hash: "73c5f23f51797a33f4d2898738e6356e" + } + Frame { + msec: 5568 + hash: "acd9a2e76b22ab0ff809fd3ec3a018ec" + } + Frame { + msec: 5584 + hash: "fb17df681d99d5de05f6329bba697ea5" + } + Frame { + msec: 5600 + hash: "1bf7a98884b506b38326f59f85a53f41" + } + Frame { + msec: 5616 + hash: "0b1a741975e3d9ef8f5e78f371c89441" + } + Frame { + msec: 5632 + hash: "a6937ee49648ed0cb409063bf1da3b87" + } + Frame { + msec: 5648 + hash: "a790f0e884ab85f7802dd094e4ef550f" + } + Frame { + msec: 5664 + hash: "3b644aac161f0a75bfb64f5075373190" + } + Frame { + msec: 5680 + hash: "b12faa76c07adc21634cd8f8cb8436ae" + } + Frame { + msec: 5696 + hash: "3fb20f9dbd40b4729235e13af9643afc" + } + Frame { + msec: 5712 + hash: "f57727419bb51fb1e589b960ddeb20ae" + } + Frame { + msec: 5728 + hash: "7b78cba247f2c209ed81e003ca25d0a5" + } + Frame { + msec: 5744 + hash: "8172e076b05d95248d89e815fde820ef" + } + Frame { + msec: 5760 + image: "animated.5.png" + } + Frame { + msec: 5776 + hash: "74c1e71378b502bc1b732a55806a10f1" + } + Frame { + msec: 5792 + hash: "6eae517ad33f0609c31ef1f8f80ba899" + } + Frame { + msec: 5808 + hash: "a67e9a0f55512fb1c55f13c6b483923b" + } + Frame { + msec: 5824 + hash: "4887cd34d9926a361f3ca2e75be53ea6" + } + Frame { + msec: 5840 + hash: "13ca95adab171d9fad9ee8b75d0226bc" + } + Frame { + msec: 5856 + hash: "affab9fb48c889a2680eb81458d400f9" + } + Frame { + msec: 5872 + hash: "7aa0cbf73f7999be7cde4ec739efbc33" + } + Frame { + msec: 5888 + hash: "36c054064c9a76f4072492e55c70fb6c" + } + Frame { + msec: 5904 + hash: "d1ed4916cb1ecff60277d74369ff311b" + } + Frame { + msec: 5920 + hash: "63ebaa4869728f5e2891d068e4b0091c" + } + Frame { + msec: 5936 + hash: "29245946cbd811fe6bf6b2b41cc13002" + } + Frame { + msec: 5952 + hash: "8a9dd7a2d10771633e6896f3f4a722ae" + } + Frame { + msec: 5968 + hash: "058c918e83bfdd665cd836566b53959b" + } + Frame { + msec: 5984 + hash: "fdf3b7a0391119e2fe77be8d6a17481d" + } + Frame { + msec: 6000 + hash: "ed5d80c33dbf72624385b1cf43784626" + } + Frame { + msec: 6016 + hash: "911591db1519ba264847f09868e38e0e" + } + Frame { + msec: 6032 + hash: "ed5d80c33dbf72624385b1cf43784626" + } + Frame { + msec: 6048 + hash: "fdf3b7a0391119e2fe77be8d6a17481d" + } + Frame { + msec: 6064 + hash: "058c918e83bfdd665cd836566b53959b" + } + Frame { + msec: 6080 + hash: "8a9dd7a2d10771633e6896f3f4a722ae" + } + Frame { + msec: 6096 + hash: "29245946cbd811fe6bf6b2b41cc13002" + } + Frame { + msec: 6112 + hash: "63ebaa4869728f5e2891d068e4b0091c" + } + Frame { + msec: 6128 + hash: "d1ed4916cb1ecff60277d74369ff311b" + } + Frame { + msec: 6144 + hash: "36c054064c9a76f4072492e55c70fb6c" + } + Frame { + msec: 6160 + hash: "7aa0cbf73f7999be7cde4ec739efbc33" + } + Frame { + msec: 6176 + hash: "affab9fb48c889a2680eb81458d400f9" + } + Frame { + msec: 6192 + hash: "13ca95adab171d9fad9ee8b75d0226bc" + } + Frame { + msec: 6208 + hash: "4887cd34d9926a361f3ca2e75be53ea6" + } + Frame { + msec: 6224 + hash: "a67e9a0f55512fb1c55f13c6b483923b" + } + Frame { + msec: 6240 + hash: "6eae517ad33f0609c31ef1f8f80ba899" + } + Frame { + msec: 6256 + hash: "74c1e71378b502bc1b732a55806a10f1" + } + Frame { + msec: 6272 + hash: "a88d6fc324ef48aa52c642a1662ec679" + } + Frame { + msec: 6288 + hash: "8172e076b05d95248d89e815fde820ef" + } + Frame { + msec: 6304 + hash: "7b78cba247f2c209ed81e003ca25d0a5" + } + Frame { + msec: 6320 + hash: "f57727419bb51fb1e589b960ddeb20ae" + } + Frame { + msec: 6336 + hash: "3fb20f9dbd40b4729235e13af9643afc" + } + Frame { + msec: 6352 + hash: "b12faa76c07adc21634cd8f8cb8436ae" + } + Frame { + msec: 6368 + hash: "3b644aac161f0a75bfb64f5075373190" + } + Frame { + msec: 6384 + hash: "a790f0e884ab85f7802dd094e4ef550f" + } + Frame { + msec: 6400 + hash: "a6937ee49648ed0cb409063bf1da3b87" + } + Frame { + msec: 6416 + hash: "0b1a741975e3d9ef8f5e78f371c89441" + } + Frame { + msec: 6432 + hash: "1bf7a98884b506b38326f59f85a53f41" + } + Frame { + msec: 6448 + hash: "fb17df681d99d5de05f6329bba697ea5" + } + Frame { + msec: 6464 + hash: "acd9a2e76b22ab0ff809fd3ec3a018ec" + } + Frame { + msec: 6480 + hash: "73c5f23f51797a33f4d2898738e6356e" + } + Frame { + msec: 6496 + hash: "65c514c9e926affe1da0b4826d2754c7" + } + Frame { + msec: 6512 + hash: "5b027815ea3c1ea54e1a02c798c468db" + } + Frame { + msec: 6528 + hash: "e1e6c7a7f51bcccd749710dbbf9e97f6" + } + Frame { + msec: 6544 + hash: "11673a112566a64aca3c7010b9cc9c4d" + } + Frame { + msec: 6560 + hash: "826c7741ba0c51de407bb799e8f360b5" + } + Frame { + msec: 6576 + hash: "3b95eb8cbfc831e1ebee2e456b026ab4" + } + Frame { + msec: 6592 + hash: "95d776c84fe155617fc4ee51bdb45b7e" + } + Frame { + msec: 6608 + hash: "a1bd4e995365e79389dba80f9e3b7af8" + } + Frame { + msec: 6624 + hash: "44072400ca3f0237d1aebae28a94becc" + } + Frame { + msec: 6640 + hash: "99de44f74f8e1f79652ab46afb4bb59e" + } + Frame { + msec: 6656 + hash: "4f1eace868a6688e5b24ce48a1f0fd18" + } + Frame { + msec: 6672 + hash: "84c94704c16e246df1048f958cc8cefb" + } + Frame { + msec: 6688 + hash: "e880d93963c80e4fab5173554c9600fc" + } + Frame { + msec: 6704 + hash: "e91bb914c1eb63cd4269b30a220a128a" + } + Frame { + msec: 6720 + image: "animated.6.png" + } + Frame { + msec: 6736 + hash: "985868869ef2c332da379460a2f3a71b" + } + Frame { + msec: 6752 + hash: "587cb6e05048579088e88e0180e3ad48" + } + Frame { + msec: 6768 + hash: "97f7a2175dcf9ac2581a92d614d72f88" + } + Frame { + msec: 6784 + hash: "93128906d054e44bfd126fc22bdc3102" + } + Frame { + msec: 6800 + hash: "08f55088cdce741c67539f73291e53ab" + } + Frame { + msec: 6816 + hash: "30f84a7f67b13a945ba6d5935ea92da5" + } + Frame { + msec: 6832 + hash: "5359f5e45e5467c62c2d9521c8199c48" + } + Frame { + msec: 6848 + hash: "7c22fc3e30377cc14326833bdd23ddd8" + } + Frame { + msec: 6864 + hash: "80ebac4d923f67fb8dba3d133ce657ba" + } + Frame { + msec: 6880 + hash: "c3a1f12febc979150028737722d6d045" + } + Frame { + msec: 6896 + hash: "81d2fc6727dc7449d1a87b4abea9b704" + } + Frame { + msec: 6912 + hash: "68dae343cf324391ec6721cea14575f7" + } + Frame { + msec: 6928 + hash: "ec0aea8dc8c269d1f0aee5817347ac55" + } + Frame { + msec: 6944 + hash: "a4ddb4956d71fd642d54757938100cf3" + } + Frame { + msec: 6960 + hash: "956429472da133324c970774f77784f5" + } + Frame { + msec: 6976 + hash: "c763f56728e17fc119539a4d45dfccc3" + } + Frame { + msec: 6992 + hash: "ae48da4a66f93c806725ce749700aac8" + } + Frame { + msec: 7008 + hash: "bccb4b8a494bd45bd70c2524a02a9dc3" + } + Frame { + msec: 7024 + hash: "bc747167dfb3388ac63e9e68a86b9a03" + } + Frame { + msec: 7040 + hash: "86360bd58bba5fdd901c105ddb2e3ade" + } + Frame { + msec: 7056 + hash: "7383209c80b403b93da3264eadbc047f" + } + Frame { + msec: 7072 + hash: "280288a7988736e30a2a3e4289ac3b0c" + } + Frame { + msec: 7088 + hash: "ff0928dfd16b2da9811a172c19817a97" + } + Frame { + msec: 7104 + hash: "eac4600372f0fdfadee88896ac915a48" + } + Frame { + msec: 7120 + hash: "f04e84ad3579d6334077abe73101d206" + } + Frame { + msec: 7136 + hash: "8861bf848da5c96b35addff736b01520" + } + Frame { + msec: 7152 + hash: "1ac8c393f084aa1894c26610b7f40ea6" + } + Frame { + msec: 7168 + hash: "e8a61d3858244127cb2b2812f04f5ce9" + } + Frame { + msec: 7184 + hash: "93cf31eabb454ec536c638a506be0648" + } + Frame { + msec: 7200 + hash: "0cba07ca38c7f0483244832a42d9ac53" + } + Frame { + msec: 7216 + hash: "c7eb7837dce71c914186326216214eeb" + } + Frame { + msec: 7232 + hash: "593a8a45c3a0cd7ce1cb6bd1913136ba" + } + Frame { + msec: 7248 + hash: "1ea07ee309ce2c52cbc36370b75a872f" + } + Frame { + msec: 7264 + hash: "93d9f0a7c387cbe653a9a088f8f4ef2b" + } + Frame { + msec: 7280 + hash: "a6f17da2dd581bdc249ff62f833dc025" + } + Frame { + msec: 7296 + hash: "b74521d6ac531414aeeca0fb28379d11" + } + Frame { + msec: 7312 + hash: "6a521f952e05d91b86ad78fd6f5de4f9" + } + Frame { + msec: 7328 + hash: "4e60300cfab8634e04dcd1b556251d31" + } + Frame { + msec: 7344 + hash: "60f158382f75103c78e2b9b408e0fe65" + } + Frame { + msec: 7360 + hash: "153237f8cf37e29ad2f32f7a8a6aecdb" + } + Frame { + msec: 7376 + hash: "554e1d360463871e7c05cfe6f8abe1dd" + } + Frame { + msec: 7392 + hash: "e418b5f54705515dce5ce3b4cbc45d19" + } + Frame { + msec: 7408 + hash: "19d05a96f3ae7388e854bbf1075b51c1" + } + Frame { + msec: 7424 + hash: "4ae120bb6dc2bd5ff81cc99ae03c191e" + } + Frame { + msec: 7440 + hash: "18c2f321a149e38b258ac264d40c2376" + } + Frame { + msec: 7456 + hash: "a40014d842471784e1222eb205395f6f" + } + Frame { + msec: 7472 + hash: "f1a7a4a67a21f5025294af4bea3f8998" + } + Frame { + msec: 7488 + hash: "3152e5f29015ece423fbdd11a2b382b8" + } + Frame { + msec: 7504 + hash: "2a7bed775824968e318c3d40fbc5b1c2" + } + Frame { + msec: 7520 + hash: "dd4c9e63001bc6e0e63ea4db2d85301f" + } + Frame { + msec: 7536 + hash: "ac8f096e8c7cc23bfb01de69cf3e266e" + } + Frame { + msec: 7552 + hash: "6b48bfd0c7993f746d6301c2a0f61d23" + } + Frame { + msec: 7568 + hash: "06d8d8a1a41893d4e27725948a75caf4" + } + Frame { + msec: 7584 + hash: "3f62f032239d412d3637198f5e3e83d6" + } + Frame { + msec: 7600 + hash: "01947e631c3db43f7c5b4427229bc0c8" + } + Frame { + msec: 7616 + hash: "2266df495ab5265e7514a506d3bf5bc6" + } + Frame { + msec: 7632 + hash: "8c66a33d26eec2a1133f4362710a5fab" + } + Frame { + msec: 7648 + hash: "75c9bf83ca3fe24612c245698c089430" + } + Frame { + msec: 7664 + hash: "c1936628aec13e08e9581dcd2c6d5717" + } + Frame { + msec: 7680 + image: "animated.7.png" + } + Frame { + msec: 7696 + hash: "8419f1d75b14130730bcfec4e3a9b058" + } + Frame { + msec: 7712 + hash: "482bb92d4f0ad5d7c7e379b9e1ad326e" + } + Frame { + msec: 7728 + hash: "406224b535b4425d2708df0083acdc8e" + } + Frame { + msec: 7744 + hash: "3dac1d9632378bd18c1c938a4868e3fb" + } + Frame { + msec: 7760 + hash: "08b9be66e23c7b6f6f629c7470394601" + } + Frame { + msec: 7776 + hash: "7b4d12e5a877507e7454aa1b8ed87c2d" + } + Frame { + msec: 7792 + hash: "4d45d70f997c2c67166905c97a900d2e" + } + Frame { + msec: 7808 + hash: "c5b3dede34b0d1d78135e39c41d117c6" + } + Frame { + msec: 7824 + hash: "b63e4d1686057828fd8781f1c33585f5" + } + Frame { + msec: 7840 + hash: "755cfccc38bababc468fe6e1076804bb" + } + Frame { + msec: 7856 + hash: "465ec993948f7b75aeb5759976f4620d" + } + Frame { + msec: 7872 + hash: "228d5312c261d1a5455faf69ec2f2520" + } + Frame { + msec: 7888 + hash: "aacf9ae3c23d174a1c1cda493600e355" + } + Frame { + msec: 7904 + hash: "4c60d345821f515c7811f3b69eb94607" + } + Frame { + msec: 7920 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 7936 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 7952 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 7968 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 7984 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8000 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8016 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8032 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8048 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8064 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8080 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8096 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8112 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8128 + hash: "4c60d345821f515c7811f3b69eb94607" + } + Frame { + msec: 8144 + hash: "aacf9ae3c23d174a1c1cda493600e355" + } + Frame { + msec: 8160 + hash: "228d5312c261d1a5455faf69ec2f2520" + } + Frame { + msec: 8176 + hash: "465ec993948f7b75aeb5759976f4620d" + } + Frame { + msec: 8192 + hash: "755cfccc38bababc468fe6e1076804bb" + } + Frame { + msec: 8208 + hash: "b63e4d1686057828fd8781f1c33585f5" + } + Frame { + msec: 8224 + hash: "c5b3dede34b0d1d78135e39c41d117c6" + } + Frame { + msec: 8240 + hash: "4d45d70f997c2c67166905c97a900d2e" + } + Frame { + msec: 8256 + hash: "7b4d12e5a877507e7454aa1b8ed87c2d" + } + Frame { + msec: 8272 + hash: "08b9be66e23c7b6f6f629c7470394601" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 8288 + hash: "3dac1d9632378bd18c1c938a4868e3fb" + } + Frame { + msec: 8304 + hash: "406224b535b4425d2708df0083acdc8e" + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.0.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.0.png new file mode 100644 index 0000000..80cbd26 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.0.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.1.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.1.png new file mode 100644 index 0000000..80cbd26 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.1.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.2.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.2.png new file mode 100644 index 0000000..80cbd26 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.2.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.3.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.3.png new file mode 100644 index 0000000..80cbd26 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.3.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.4.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.4.png new file mode 100644 index 0000000..80cbd26 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.4.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.qml b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.qml new file mode 100644 index 0000000..16cd5e9 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsborderimage/data-MAC/borders.qml @@ -0,0 +1,1359 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 32 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 48 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 64 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 80 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 96 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 112 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 128 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 144 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 160 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 176 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 192 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 208 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 224 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 240 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 256 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 272 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 288 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 304 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 320 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 336 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 352 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 368 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 384 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 400 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 416 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 432 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 448 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 464 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 480 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 496 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 512 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 528 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 544 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 560 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 576 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 592 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 608 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 624 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 640 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 656 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 672 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 688 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 704 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 720 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 736 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 752 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 768 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 784 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 800 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 816 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 832 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 848 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 864 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 880 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 896 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 912 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 928 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 944 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 960 + image: "borders.0.png" + } + Frame { + msec: 976 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 992 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1008 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1024 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1040 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1056 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1072 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1088 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1104 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1120 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1136 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1152 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1168 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1184 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1200 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1216 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1232 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1248 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1264 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1280 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1296 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1312 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1328 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1344 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1360 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1376 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1392 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1408 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1424 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1440 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1456 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1472 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1488 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1504 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1520 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1536 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1552 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1568 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1584 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1600 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1616 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1632 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1648 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1664 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1680 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1696 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1712 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1728 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1744 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1760 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1776 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1792 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1808 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1824 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1840 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1856 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1872 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1888 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1904 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1920 + image: "borders.1.png" + } + Frame { + msec: 1936 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1952 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1968 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1984 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2000 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2016 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2032 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2048 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2064 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2080 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2096 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2112 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2128 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2144 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2160 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2176 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2192 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2208 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2224 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2240 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2256 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2272 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2288 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2304 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2320 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2336 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2352 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2368 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2384 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2400 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2416 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2432 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2448 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2464 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2480 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2496 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2512 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2528 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2544 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2560 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2576 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2592 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2608 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2624 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2640 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2656 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2672 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2688 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2704 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2720 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2736 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2752 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2768 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2784 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2800 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2816 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2832 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2848 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2864 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2880 + image: "borders.2.png" + } + Frame { + msec: 2896 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2912 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2928 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2944 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2960 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2976 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2992 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3008 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3024 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3040 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3056 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3072 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3088 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3104 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3120 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3136 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3152 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3168 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3184 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3200 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3216 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3232 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3248 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3264 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3280 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3296 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3312 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3328 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3344 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3360 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3376 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3392 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3408 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3424 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3440 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3456 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3472 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3488 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3504 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3520 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3536 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3552 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3568 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3584 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3600 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3616 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3632 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3648 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3664 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3680 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3696 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3712 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3728 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3744 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3760 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3776 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3792 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3808 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3824 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3840 + image: "borders.3.png" + } + Frame { + msec: 3856 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3872 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3888 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3904 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3920 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3936 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3952 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3968 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3984 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4000 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4016 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4032 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4048 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4064 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4080 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4096 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4112 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4128 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4144 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4160 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4176 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4192 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4208 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4224 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4240 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4256 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4272 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4288 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4304 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4320 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4336 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4352 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4368 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4384 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4400 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4416 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4432 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4448 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4464 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4480 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4496 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4512 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4528 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4544 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4560 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4576 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4592 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4608 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4624 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4640 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4656 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4672 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4688 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4704 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4720 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4736 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4752 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4768 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4784 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4800 + image: "borders.4.png" + } + Frame { + msec: 4816 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4832 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4848 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4864 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4880 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4896 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4912 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4928 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4944 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4960 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4976 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4992 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5008 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5024 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5040 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5056 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5072 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5088 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5104 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5120 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5136 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5152 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5168 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5184 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5200 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5216 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5232 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5248 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5264 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5280 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5296 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5312 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5328 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5344 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5360 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5376 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5392 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5408 + hash: "ab9753116e289c932064144bb0845857" + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.0.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.0.png new file mode 100644 index 0000000..9a6b079 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.0.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.1.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.1.png new file mode 100644 index 0000000..1f960e5 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.1.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.2.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.2.png new file mode 100644 index 0000000..85a2729 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.2.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.3.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.3.png new file mode 100644 index 0000000..de6ff7c Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.3.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.4.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.4.png new file mode 100644 index 0000000..fe7d3dd Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.4.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.5.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.5.png new file mode 100644 index 0000000..e73bef5 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.5.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.6.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.6.png new file mode 100644 index 0000000..0c75422 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.6.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.qml b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.qml new file mode 100644 index 0000000..043f5e2 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated-smooth.qml @@ -0,0 +1,1823 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 32 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 48 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 64 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 80 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 96 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 112 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 128 + hash: "cd2180be80101c2aa4350b51b7a6f502" + } + Frame { + msec: 144 + hash: "de471829f8ad3b43bf1b4df9d1d65a4d" + } + Frame { + msec: 160 + hash: "ed9f2ca797894612600bc4b7fbaecb84" + } + Frame { + msec: 176 + hash: "59470d71fa4426d0283e86371f2bfc2a" + } + Frame { + msec: 192 + hash: "9a2f92efb51bcc6293d6a8e82d5314ea" + } + Frame { + msec: 208 + hash: "7b66e21652a7d0982226e281a48411a9" + } + Frame { + msec: 224 + hash: "a716c8d2c94433dee719f92f0822c8ec" + } + Frame { + msec: 240 + hash: "f22a47b846cfee96ebdf39bbce2e6d51" + } + Frame { + msec: 256 + hash: "5a8932d13d624932a65694fd19ec05cd" + } + Frame { + msec: 272 + hash: "48e62dd171f5da82b5aa26c765e4042c" + } + Frame { + msec: 288 + hash: "63d3c47f7dec1236440a05e0a8380900" + } + Frame { + msec: 304 + hash: "323af110731b7af0c30f8862ff59b833" + } + Frame { + msec: 320 + hash: "83c029e328e80af83158c37089cf0ece" + } + Frame { + msec: 336 + hash: "3f9a09ae19be34348bb2552915360cf7" + } + Frame { + msec: 352 + hash: "df624d70cae1bcefda8d69c0ff055d83" + } + Frame { + msec: 368 + hash: "d671a3b971468e1d8aa30ab655e020a9" + } + Frame { + msec: 384 + hash: "74c837b29f7f05b615123f0e608b523f" + } + Frame { + msec: 400 + hash: "277ef98ea859fb7685fe6cd44a538a7d" + } + Frame { + msec: 416 + hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9" + } + Frame { + msec: 432 + hash: "456be9c208d690c479ba12bf6325dde0" + } + Frame { + msec: 448 + hash: "10307beea6d99ab0ff5863f8e35555ed" + } + Frame { + msec: 464 + hash: "170a1d5fe3422cf5223a78015a6a45fd" + } + Frame { + msec: 480 + hash: "64ecb03aa538e74d0b99c6dec7751401" + } + Frame { + msec: 496 + hash: "f3a7e74a1839f9366f9eeec4d2b80d1e" + } + Frame { + msec: 512 + hash: "37c3f25e5cfdb48d7e3ab0cf8ffb9154" + } + Frame { + msec: 528 + hash: "0af81ee0d76ff8335a0e347dc086ca37" + } + Frame { + msec: 544 + hash: "061406edcbd2d4930ab89c3fcab63c7f" + } + Frame { + msec: 560 + hash: "31d65134f340d82dd40f2401bda3fb7e" + } + Frame { + msec: 576 + hash: "16c16c77c65b36d1e0954d5ead2642be" + } + Frame { + msec: 592 + hash: "61c16009b65a55bffb63e27727e1615e" + } + Frame { + msec: 608 + hash: "e1474c2cdd8768ca1ef45bf3bc5234ca" + } + Frame { + msec: 624 + hash: "89c159ef00d273ecfe61332e1bf7244d" + } + Frame { + msec: 640 + hash: "f4d0d3bca25e67908b38910f47b4757e" + } + Frame { + msec: 656 + hash: "0e0c40f8e11a7bd499c80562ac6f8a82" + } + Frame { + msec: 672 + hash: "4310a4c3037d845f088f21ad608f366a" + } + Frame { + msec: 688 + hash: "3d518cd0348d6202243364af1dd6ce89" + } + Frame { + msec: 704 + hash: "41987e6b4248d7944c0dbc6eb3862023" + } + Frame { + msec: 720 + hash: "3e81338d38723d56f2d6c428271f81c1" + } + Frame { + msec: 736 + hash: "902683d72f789399e9d99d1cea1bf177" + } + Frame { + msec: 752 + hash: "efc119983701908a904deb24108c59cb" + } + Frame { + msec: 768 + hash: "3a77785cfd7755f567619d8e04583f6a" + } + Frame { + msec: 784 + hash: "fd85d1dd931033973283a408b5e328a8" + } + Frame { + msec: 800 + hash: "5d3e85acabe5e5ff802eb7731676274f" + } + Frame { + msec: 816 + hash: "ae12f1f37a746e16b06e6b869c89fac1" + } + Frame { + msec: 832 + hash: "a15f19f374bbfb6a922b69d080a91eaa" + } + Frame { + msec: 848 + hash: "84ef6dda8318b623832f58c46d762e89" + } + Frame { + msec: 864 + hash: "b699285764f5e8866a9996f4a0dccc69" + } + Frame { + msec: 880 + hash: "ddd8a006ef048c8d929144aa9fcd7c5a" + } + Frame { + msec: 896 + hash: "177666cb3bb784c83196886b2c6cf6b6" + } + Frame { + msec: 912 + hash: "9cd29b4b023a8b92573575fb3c3dda83" + } + Frame { + msec: 928 + hash: "adc670a9aa0326744cb23e4f5912e6c7" + } + Frame { + msec: 944 + hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" + } + Frame { + msec: 960 + image: "animated-smooth.0.png" + } + Frame { + msec: 976 + hash: "64b21b89576fdd0083f60a26f57b9c11" + } + Frame { + msec: 992 + hash: "0d407ee07692d0e5a480a60952807b3c" + } + Frame { + msec: 1008 + hash: "845170815a87565dc4229792032b3357" + } + Frame { + msec: 1024 + hash: "8b8120cfc14de03e048632fdea61be21" + } + Frame { + msec: 1040 + hash: "b0070117f1c24a4da87434725d4bb989" + } + Frame { + msec: 1056 + hash: "0239d697642ca1d1b1d1daa3ea048e1e" + } + Frame { + msec: 1072 + hash: "3df54504f8891306fa8f1e9e2075a5e2" + } + Frame { + msec: 1088 + hash: "853429387cc639496c7338244de7e1b7" + } + Frame { + msec: 1104 + hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" + } + Frame { + msec: 1120 + hash: "b375e723b2396b13b8f55cfc0c81c3c3" + } + Frame { + msec: 1136 + hash: "53f05993ba3b426949badd2e4cd66d84" + } + Frame { + msec: 1152 + hash: "23291a0239c69ea07db959e709b1ff5f" + } + Frame { + msec: 1168 + hash: "2192094410e2d7c8d9d4aa5f8deacff5" + } + Frame { + msec: 1184 + hash: "d6615fc345831a3cc5b9a7196284b632" + } + Frame { + msec: 1200 + hash: "92176cce4836dcae4dfca94e49b041a8" + } + Frame { + msec: 1216 + hash: "2a1fcfb753ca237b518da26e67c928e5" + } + Frame { + msec: 1232 + hash: "42be5d26afb9f066dd27cc9fbaf6ce20" + } + Frame { + msec: 1248 + hash: "bd045f4532d78bba0ef1b64118fd9f24" + } + Frame { + msec: 1264 + hash: "7f9999a9c87af43b9703323efab31770" + } + Frame { + msec: 1280 + hash: "0640fcb0b24d3ba4ab8695f78271a438" + } + Frame { + msec: 1296 + hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" + } + Frame { + msec: 1312 + hash: "fce2648975106bc5c0ca9a4530f7f748" + } + Frame { + msec: 1328 + hash: "39cc17ee2e889f17dd07179fda99e431" + } + Frame { + msec: 1344 + hash: "39c46d85d20f7ef3eca1d09c7eb6a068" + } + Frame { + msec: 1360 + hash: "d65d50fbb920e683b041a1c72238225b" + } + Frame { + msec: 1376 + hash: "49a1df977b0494c7c72ca0b65c394e13" + } + Frame { + msec: 1392 + hash: "05cbce0eaa80b4610a9067af8c40f819" + } + Frame { + msec: 1408 + hash: "00ab7798bcd77a99886dff0414f35382" + } + Frame { + msec: 1424 + hash: "5cc90d798786c270ddd2616512f4459f" + } + Frame { + msec: 1440 + hash: "e5df07ea21e8e415c3ec82560f2d0f34" + } + Frame { + msec: 1456 + hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" + } + Frame { + msec: 1472 + hash: "c61d2aa7f934fb5a9f9f7883e063b51c" + } + Frame { + msec: 1488 + hash: "29ddde3300d0520a4c01b5536d8b9e7a" + } + Frame { + msec: 1504 + hash: "2fede2f5d871654f3f8a6e9d890adeac" + } + Frame { + msec: 1520 + hash: "deed4c06c9b713834490832b88e7acaf" + } + Frame { + msec: 1536 + hash: "c2edb016cfdd47c192d1c48281ee76ed" + } + Frame { + msec: 1552 + hash: "a261be47ae89e6b53e6bc1c1197154ae" + } + Frame { + msec: 1568 + hash: "e860e97ebd73b7d1d5d5d90458b34bfe" + } + Frame { + msec: 1584 + hash: "a087b532ecb2f28e4ee60819228c2522" + } + Frame { + msec: 1600 + hash: "64df51b4c1bf744b2aae1c6d908c2cc3" + } + Frame { + msec: 1616 + hash: "4520003d4b221a3de6834b2729b3026d" + } + Frame { + msec: 1632 + hash: "d1110817827c318ceb0c112e8c2bfc1d" + } + Frame { + msec: 1648 + hash: "83d49474db15d5779923972ff5f55917" + } + Frame { + msec: 1664 + hash: "3bae40654ec551d69e7c8c72f631c7a5" + } + Frame { + msec: 1680 + hash: "774740a393f3e9b8f12b81cce8da8280" + } + Frame { + msec: 1696 + hash: "d8e398a1ce9ca45c19951e93bd5c932a" + } + Frame { + msec: 1712 + hash: "2b7eb8a9fe26b032be8b4b9c00995912" + } + Frame { + msec: 1728 + hash: "47e920e3884ccf2f0f49e78070af6929" + } + Frame { + msec: 1744 + hash: "fc913807eb1069d611495fbd5d43ee3d" + } + Frame { + msec: 1760 + hash: "5d9ee853f083d514fbe51d6953d8e000" + } + Frame { + msec: 1776 + hash: "5736362b42bc2d801e02edabb983663a" + } + Frame { + msec: 1792 + hash: "e3a2b5c7247acfc1b30825233fbfd56b" + } + Frame { + msec: 1808 + hash: "48952ffa5e300778eafa768b9fe7df0c" + } + Frame { + msec: 1824 + hash: "fe04cae65aeec18697eca4f3f83a40e9" + } + Frame { + msec: 1840 + hash: "382d454f2366c1fb4ca472faa3bfa5e9" + } + Frame { + msec: 1856 + hash: "89022a8e2feb3dcb845de69aafc333ad" + } + Frame { + msec: 1872 + hash: "25506557c853a0020e98cf3992956989" + } + Frame { + msec: 1888 + hash: "9a64706c52c9e962816953e32950b8ba" + } + Frame { + msec: 1904 + hash: "3cbfded47413172ada64095e65c55e8a" + } + Frame { + msec: 1920 + image: "animated-smooth.1.png" + } + Frame { + msec: 1936 + hash: "c5e399e29b988148913e62ee208b3326" + } + Frame { + msec: 1952 + hash: "3991bc7760b7981d80665e3a7654c9f4" + } + Frame { + msec: 1968 + hash: "05312f9529c94d3331ace7d73c544284" + } + Frame { + msec: 1984 + hash: "a94de4e90a8f8eb4ec33fe902afd226c" + } + Frame { + msec: 2000 + hash: "723f87da7e5b002a2e9b0bcbc81f9458" + } + Frame { + msec: 2016 + hash: "6b8ded0d9386a3fff0601a100c513080" + } + Frame { + msec: 2032 + hash: "f976cd5046ef5391536859e63db905bd" + } + Frame { + msec: 2048 + hash: "a94de4e90a8f8eb4ec33fe902afd226c" + } + Frame { + msec: 2064 + hash: "05312f9529c94d3331ace7d73c544284" + } + Frame { + msec: 2080 + hash: "b980703c1d0018937e83a8ba8862469e" + } + Frame { + msec: 2096 + hash: "c5e399e29b988148913e62ee208b3326" + } + Frame { + msec: 2112 + hash: "3b7b83e97d17440b42e6ef4b962076d8" + } + Frame { + msec: 2128 + hash: "3cbfded47413172ada64095e65c55e8a" + } + Frame { + msec: 2144 + hash: "9a64706c52c9e962816953e32950b8ba" + } + Frame { + msec: 2160 + hash: "25506557c853a0020e98cf3992956989" + } + Frame { + msec: 2176 + hash: "89022a8e2feb3dcb845de69aafc333ad" + } + Frame { + msec: 2192 + hash: "382d454f2366c1fb4ca472faa3bfa5e9" + } + Frame { + msec: 2208 + hash: "fe04cae65aeec18697eca4f3f83a40e9" + } + Frame { + msec: 2224 + hash: "48952ffa5e300778eafa768b9fe7df0c" + } + Frame { + msec: 2240 + hash: "e3a2b5c7247acfc1b30825233fbfd56b" + } + Frame { + msec: 2256 + hash: "5736362b42bc2d801e02edabb983663a" + } + Frame { + msec: 2272 + hash: "5d9ee853f083d514fbe51d6953d8e000" + } + Frame { + msec: 2288 + hash: "fe899138116774df4c4441687e3019c5" + } + Frame { + msec: 2304 + hash: "47e920e3884ccf2f0f49e78070af6929" + } + Frame { + msec: 2320 + hash: "2b7eb8a9fe26b032be8b4b9c00995912" + } + Frame { + msec: 2336 + hash: "64cd225202ed6c91b02c368a9160a656" + } + Frame { + msec: 2352 + hash: "774740a393f3e9b8f12b81cce8da8280" + } + Frame { + msec: 2368 + hash: "3bae40654ec551d69e7c8c72f631c7a5" + } + Frame { + msec: 2384 + hash: "83d49474db15d5779923972ff5f55917" + } + Frame { + msec: 2400 + hash: "d1110817827c318ceb0c112e8c2bfc1d" + } + Frame { + msec: 2416 + hash: "4520003d4b221a3de6834b2729b3026d" + } + Frame { + msec: 2432 + hash: "64df51b4c1bf744b2aae1c6d908c2cc3" + } + Frame { + msec: 2448 + hash: "a087b532ecb2f28e4ee60819228c2522" + } + Frame { + msec: 2464 + hash: "e860e97ebd73b7d1d5d5d90458b34bfe" + } + Frame { + msec: 2480 + hash: "a261be47ae89e6b53e6bc1c1197154ae" + } + Frame { + msec: 2496 + hash: "c2edb016cfdd47c192d1c48281ee76ed" + } + Frame { + msec: 2512 + hash: "deed4c06c9b713834490832b88e7acaf" + } + Frame { + msec: 2528 + hash: "2fede2f5d871654f3f8a6e9d890adeac" + } + Frame { + msec: 2544 + hash: "29ddde3300d0520a4c01b5536d8b9e7a" + } + Frame { + msec: 2560 + hash: "c61d2aa7f934fb5a9f9f7883e063b51c" + } + Frame { + msec: 2576 + hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" + } + Frame { + msec: 2592 + hash: "e5df07ea21e8e415c3ec82560f2d0f34" + } + Frame { + msec: 2608 + hash: "5cc90d798786c270ddd2616512f4459f" + } + Frame { + msec: 2624 + hash: "00ab7798bcd77a99886dff0414f35382" + } + Frame { + msec: 2640 + hash: "05cbce0eaa80b4610a9067af8c40f819" + } + Frame { + msec: 2656 + hash: "a676f45d946aeb9fa577c0e862735b01" + } + Frame { + msec: 2672 + hash: "d65d50fbb920e683b041a1c72238225b" + } + Frame { + msec: 2688 + hash: "39c46d85d20f7ef3eca1d09c7eb6a068" + } + Frame { + msec: 2704 + hash: "39cc17ee2e889f17dd07179fda99e431" + } + Frame { + msec: 2720 + hash: "fce2648975106bc5c0ca9a4530f7f748" + } + Frame { + msec: 2736 + hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" + } + Frame { + msec: 2752 + hash: "0640fcb0b24d3ba4ab8695f78271a438" + } + Frame { + msec: 2768 + hash: "2084ccc60ddd493399c128717816d33b" + } + Frame { + msec: 2784 + hash: "bd045f4532d78bba0ef1b64118fd9f24" + } + Frame { + msec: 2800 + hash: "42be5d26afb9f066dd27cc9fbaf6ce20" + } + Frame { + msec: 2816 + hash: "2a1fcfb753ca237b518da26e67c928e5" + } + Frame { + msec: 2832 + hash: "92176cce4836dcae4dfca94e49b041a8" + } + Frame { + msec: 2848 + hash: "d6615fc345831a3cc5b9a7196284b632" + } + Frame { + msec: 2864 + hash: "85ef33fcb3f91e4fc20391bf94455984" + } + Frame { + msec: 2880 + image: "animated-smooth.2.png" + } + Frame { + msec: 2896 + hash: "53f05993ba3b426949badd2e4cd66d84" + } + Frame { + msec: 2912 + hash: "b375e723b2396b13b8f55cfc0c81c3c3" + } + Frame { + msec: 2928 + hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" + } + Frame { + msec: 2944 + hash: "853429387cc639496c7338244de7e1b7" + } + Frame { + msec: 2960 + hash: "3df54504f8891306fa8f1e9e2075a5e2" + } + Frame { + msec: 2976 + hash: "0239d697642ca1d1b1d1daa3ea048e1e" + } + Frame { + msec: 2992 + hash: "b0070117f1c24a4da87434725d4bb989" + } + Frame { + msec: 3008 + hash: "8b8120cfc14de03e048632fdea61be21" + } + Frame { + msec: 3024 + hash: "845170815a87565dc4229792032b3357" + } + Frame { + msec: 3040 + hash: "0d407ee07692d0e5a480a60952807b3c" + } + Frame { + msec: 3056 + hash: "64b21b89576fdd0083f60a26f57b9c11" + } + Frame { + msec: 3072 + hash: "d7e96278583f83ab636ed68fa130e4d2" + } + Frame { + msec: 3088 + hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" + } + Frame { + msec: 3104 + hash: "adc670a9aa0326744cb23e4f5912e6c7" + } + Frame { + msec: 3120 + hash: "9cd29b4b023a8b92573575fb3c3dda83" + } + Frame { + msec: 3136 + hash: "177666cb3bb784c83196886b2c6cf6b6" + } + Frame { + msec: 3152 + hash: "ddd8a006ef048c8d929144aa9fcd7c5a" + } + Frame { + msec: 3168 + hash: "b699285764f5e8866a9996f4a0dccc69" + } + Frame { + msec: 3184 + hash: "84ef6dda8318b623832f58c46d762e89" + } + Frame { + msec: 3200 + hash: "a15f19f374bbfb6a922b69d080a91eaa" + } + Frame { + msec: 3216 + hash: "ae12f1f37a746e16b06e6b869c89fac1" + } + Frame { + msec: 3232 + hash: "5d3e85acabe5e5ff802eb7731676274f" + } + Frame { + msec: 3248 + hash: "fd85d1dd931033973283a408b5e328a8" + } + Frame { + msec: 3264 + hash: "3a77785cfd7755f567619d8e04583f6a" + } + Frame { + msec: 3280 + hash: "efc119983701908a904deb24108c59cb" + } + Frame { + msec: 3296 + hash: "902683d72f789399e9d99d1cea1bf177" + } + Frame { + msec: 3312 + hash: "3e81338d38723d56f2d6c428271f81c1" + } + Frame { + msec: 3328 + hash: "41987e6b4248d7944c0dbc6eb3862023" + } + Frame { + msec: 3344 + hash: "3d518cd0348d6202243364af1dd6ce89" + } + Frame { + msec: 3360 + hash: "4310a4c3037d845f088f21ad608f366a" + } + Frame { + msec: 3376 + hash: "0e0c40f8e11a7bd499c80562ac6f8a82" + } + Frame { + msec: 3392 + hash: "f4d0d3bca25e67908b38910f47b4757e" + } + Frame { + msec: 3408 + hash: "f602e3eda1889d1a7e49560f0dfb5d4c" + } + Frame { + msec: 3424 + hash: "e1474c2cdd8768ca1ef45bf3bc5234ca" + } + Frame { + msec: 3440 + hash: "c8312ede0998636a6bd6451d13636577" + } + Frame { + msec: 3456 + hash: "16c16c77c65b36d1e0954d5ead2642be" + } + Frame { + msec: 3472 + hash: "31d65134f340d82dd40f2401bda3fb7e" + } + Frame { + msec: 3488 + hash: "061406edcbd2d4930ab89c3fcab63c7f" + } + Frame { + msec: 3504 + hash: "0af81ee0d76ff8335a0e347dc086ca37" + } + Frame { + msec: 3520 + hash: "0f347763f25350ebb62dda1536372b45" + } + Frame { + msec: 3536 + hash: "f3a7e74a1839f9366f9eeec4d2b80d1e" + } + Frame { + msec: 3552 + hash: "64ecb03aa538e74d0b99c6dec7751401" + } + Frame { + msec: 3568 + hash: "170a1d5fe3422cf5223a78015a6a45fd" + } + Frame { + msec: 3584 + hash: "10307beea6d99ab0ff5863f8e35555ed" + } + Frame { + msec: 3600 + hash: "456be9c208d690c479ba12bf6325dde0" + } + Frame { + msec: 3616 + hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9" + } + Frame { + msec: 3632 + hash: "277ef98ea859fb7685fe6cd44a538a7d" + } + Frame { + msec: 3648 + hash: "74c837b29f7f05b615123f0e608b523f" + } + Frame { + msec: 3664 + hash: "d671a3b971468e1d8aa30ab655e020a9" + } + Frame { + msec: 3680 + hash: "df624d70cae1bcefda8d69c0ff055d83" + } + Frame { + msec: 3696 + hash: "3f9a09ae19be34348bb2552915360cf7" + } + Frame { + msec: 3712 + hash: "83c029e328e80af83158c37089cf0ece" + } + Frame { + msec: 3728 + hash: "323af110731b7af0c30f8862ff59b833" + } + Frame { + msec: 3744 + hash: "63d3c47f7dec1236440a05e0a8380900" + } + Frame { + msec: 3760 + hash: "48e62dd171f5da82b5aa26c765e4042c" + } + Frame { + msec: 3776 + hash: "5a8932d13d624932a65694fd19ec05cd" + } + Frame { + msec: 3792 + hash: "8419b295f67cae133760da79dfc26505" + } + Frame { + msec: 3808 + hash: "a716c8d2c94433dee719f92f0822c8ec" + } + Frame { + msec: 3824 + hash: "7b66e21652a7d0982226e281a48411a9" + } + Frame { + msec: 3840 + image: "animated-smooth.3.png" + } + Frame { + msec: 3856 + hash: "59470d71fa4426d0283e86371f2bfc2a" + } + Frame { + msec: 3872 + hash: "d56ba74d38c1889a278929d1c1b7f17a" + } + Frame { + msec: 3888 + hash: "de471829f8ad3b43bf1b4df9d1d65a4d" + } + Frame { + msec: 3904 + hash: "cd2180be80101c2aa4350b51b7a6f502" + } + Frame { + msec: 3920 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3936 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3952 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3968 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3984 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4000 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4016 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4032 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4048 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4064 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4080 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4096 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4112 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4128 + hash: "cd2180be80101c2aa4350b51b7a6f502" + } + Frame { + msec: 4144 + hash: "de471829f8ad3b43bf1b4df9d1d65a4d" + } + Frame { + msec: 4160 + hash: "ed9f2ca797894612600bc4b7fbaecb84" + } + Frame { + msec: 4176 + hash: "59470d71fa4426d0283e86371f2bfc2a" + } + Frame { + msec: 4192 + hash: "9a2f92efb51bcc6293d6a8e82d5314ea" + } + Frame { + msec: 4208 + hash: "7b66e21652a7d0982226e281a48411a9" + } + Frame { + msec: 4224 + hash: "a716c8d2c94433dee719f92f0822c8ec" + } + Frame { + msec: 4240 + hash: "f22a47b846cfee96ebdf39bbce2e6d51" + } + Frame { + msec: 4256 + hash: "5a8932d13d624932a65694fd19ec05cd" + } + Frame { + msec: 4272 + hash: "48e62dd171f5da82b5aa26c765e4042c" + } + Frame { + msec: 4288 + hash: "63d3c47f7dec1236440a05e0a8380900" + } + Frame { + msec: 4304 + hash: "323af110731b7af0c30f8862ff59b833" + } + Frame { + msec: 4320 + hash: "83c029e328e80af83158c37089cf0ece" + } + Frame { + msec: 4336 + hash: "3f9a09ae19be34348bb2552915360cf7" + } + Frame { + msec: 4352 + hash: "df624d70cae1bcefda8d69c0ff055d83" + } + Frame { + msec: 4368 + hash: "d671a3b971468e1d8aa30ab655e020a9" + } + Frame { + msec: 4384 + hash: "74c837b29f7f05b615123f0e608b523f" + } + Frame { + msec: 4400 + hash: "277ef98ea859fb7685fe6cd44a538a7d" + } + Frame { + msec: 4416 + hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9" + } + Frame { + msec: 4432 + hash: "456be9c208d690c479ba12bf6325dde0" + } + Frame { + msec: 4448 + hash: "10307beea6d99ab0ff5863f8e35555ed" + } + Frame { + msec: 4464 + hash: "170a1d5fe3422cf5223a78015a6a45fd" + } + Frame { + msec: 4480 + hash: "64ecb03aa538e74d0b99c6dec7751401" + } + Frame { + msec: 4496 + hash: "f3a7e74a1839f9366f9eeec4d2b80d1e" + } + Frame { + msec: 4512 + hash: "37c3f25e5cfdb48d7e3ab0cf8ffb9154" + } + Frame { + msec: 4528 + hash: "0af81ee0d76ff8335a0e347dc086ca37" + } + Frame { + msec: 4544 + hash: "061406edcbd2d4930ab89c3fcab63c7f" + } + Frame { + msec: 4560 + hash: "31d65134f340d82dd40f2401bda3fb7e" + } + Frame { + msec: 4576 + hash: "16c16c77c65b36d1e0954d5ead2642be" + } + Frame { + msec: 4592 + hash: "61c16009b65a55bffb63e27727e1615e" + } + Frame { + msec: 4608 + hash: "e1474c2cdd8768ca1ef45bf3bc5234ca" + } + Frame { + msec: 4624 + hash: "89c159ef00d273ecfe61332e1bf7244d" + } + Frame { + msec: 4640 + hash: "f4d0d3bca25e67908b38910f47b4757e" + } + Frame { + msec: 4656 + hash: "0e0c40f8e11a7bd499c80562ac6f8a82" + } + Frame { + msec: 4672 + hash: "4310a4c3037d845f088f21ad608f366a" + } + Frame { + msec: 4688 + hash: "3d518cd0348d6202243364af1dd6ce89" + } + Frame { + msec: 4704 + hash: "41987e6b4248d7944c0dbc6eb3862023" + } + Frame { + msec: 4720 + hash: "3e81338d38723d56f2d6c428271f81c1" + } + Frame { + msec: 4736 + hash: "902683d72f789399e9d99d1cea1bf177" + } + Frame { + msec: 4752 + hash: "efc119983701908a904deb24108c59cb" + } + Frame { + msec: 4768 + hash: "3a77785cfd7755f567619d8e04583f6a" + } + Frame { + msec: 4784 + hash: "fd85d1dd931033973283a408b5e328a8" + } + Frame { + msec: 4800 + image: "animated-smooth.4.png" + } + Frame { + msec: 4816 + hash: "ae12f1f37a746e16b06e6b869c89fac1" + } + Frame { + msec: 4832 + hash: "a15f19f374bbfb6a922b69d080a91eaa" + } + Frame { + msec: 4848 + hash: "84ef6dda8318b623832f58c46d762e89" + } + Frame { + msec: 4864 + hash: "b699285764f5e8866a9996f4a0dccc69" + } + Frame { + msec: 4880 + hash: "ddd8a006ef048c8d929144aa9fcd7c5a" + } + Frame { + msec: 4896 + hash: "177666cb3bb784c83196886b2c6cf6b6" + } + Frame { + msec: 4912 + hash: "9cd29b4b023a8b92573575fb3c3dda83" + } + Frame { + msec: 4928 + hash: "adc670a9aa0326744cb23e4f5912e6c7" + } + Frame { + msec: 4944 + hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" + } + Frame { + msec: 4960 + hash: "d7e96278583f83ab636ed68fa130e4d2" + } + Frame { + msec: 4976 + hash: "64b21b89576fdd0083f60a26f57b9c11" + } + Frame { + msec: 4992 + hash: "0d407ee07692d0e5a480a60952807b3c" + } + Frame { + msec: 5008 + hash: "845170815a87565dc4229792032b3357" + } + Frame { + msec: 5024 + hash: "8b8120cfc14de03e048632fdea61be21" + } + Frame { + msec: 5040 + hash: "b0070117f1c24a4da87434725d4bb989" + } + Frame { + msec: 5056 + hash: "0239d697642ca1d1b1d1daa3ea048e1e" + } + Frame { + msec: 5072 + hash: "3df54504f8891306fa8f1e9e2075a5e2" + } + Frame { + msec: 5088 + hash: "853429387cc639496c7338244de7e1b7" + } + Frame { + msec: 5104 + hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" + } + Frame { + msec: 5120 + hash: "b375e723b2396b13b8f55cfc0c81c3c3" + } + Frame { + msec: 5136 + hash: "53f05993ba3b426949badd2e4cd66d84" + } + Frame { + msec: 5152 + hash: "23291a0239c69ea07db959e709b1ff5f" + } + Frame { + msec: 5168 + hash: "2192094410e2d7c8d9d4aa5f8deacff5" + } + Frame { + msec: 5184 + hash: "d6615fc345831a3cc5b9a7196284b632" + } + Frame { + msec: 5200 + hash: "92176cce4836dcae4dfca94e49b041a8" + } + Frame { + msec: 5216 + hash: "2a1fcfb753ca237b518da26e67c928e5" + } + Frame { + msec: 5232 + hash: "42be5d26afb9f066dd27cc9fbaf6ce20" + } + Frame { + msec: 5248 + hash: "bd045f4532d78bba0ef1b64118fd9f24" + } + Frame { + msec: 5264 + hash: "7f9999a9c87af43b9703323efab31770" + } + Frame { + msec: 5280 + hash: "0640fcb0b24d3ba4ab8695f78271a438" + } + Frame { + msec: 5296 + hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" + } + Frame { + msec: 5312 + hash: "fce2648975106bc5c0ca9a4530f7f748" + } + Frame { + msec: 5328 + hash: "39cc17ee2e889f17dd07179fda99e431" + } + Frame { + msec: 5344 + hash: "39c46d85d20f7ef3eca1d09c7eb6a068" + } + Frame { + msec: 5360 + hash: "d65d50fbb920e683b041a1c72238225b" + } + Frame { + msec: 5376 + hash: "49a1df977b0494c7c72ca0b65c394e13" + } + Frame { + msec: 5392 + hash: "05cbce0eaa80b4610a9067af8c40f819" + } + Frame { + msec: 5408 + hash: "00ab7798bcd77a99886dff0414f35382" + } + Frame { + msec: 5424 + hash: "5cc90d798786c270ddd2616512f4459f" + } + Frame { + msec: 5440 + hash: "e5df07ea21e8e415c3ec82560f2d0f34" + } + Frame { + msec: 5456 + hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" + } + Frame { + msec: 5472 + hash: "c61d2aa7f934fb5a9f9f7883e063b51c" + } + Frame { + msec: 5488 + hash: "29ddde3300d0520a4c01b5536d8b9e7a" + } + Frame { + msec: 5504 + hash: "2fede2f5d871654f3f8a6e9d890adeac" + } + Frame { + msec: 5520 + hash: "deed4c06c9b713834490832b88e7acaf" + } + Frame { + msec: 5536 + hash: "c2edb016cfdd47c192d1c48281ee76ed" + } + Frame { + msec: 5552 + hash: "a261be47ae89e6b53e6bc1c1197154ae" + } + Frame { + msec: 5568 + hash: "e860e97ebd73b7d1d5d5d90458b34bfe" + } + Frame { + msec: 5584 + hash: "a087b532ecb2f28e4ee60819228c2522" + } + Frame { + msec: 5600 + hash: "64df51b4c1bf744b2aae1c6d908c2cc3" + } + Frame { + msec: 5616 + hash: "4520003d4b221a3de6834b2729b3026d" + } + Frame { + msec: 5632 + hash: "d1110817827c318ceb0c112e8c2bfc1d" + } + Frame { + msec: 5648 + hash: "83d49474db15d5779923972ff5f55917" + } + Frame { + msec: 5664 + hash: "3bae40654ec551d69e7c8c72f631c7a5" + } + Frame { + msec: 5680 + hash: "774740a393f3e9b8f12b81cce8da8280" + } + Frame { + msec: 5696 + hash: "d8e398a1ce9ca45c19951e93bd5c932a" + } + Frame { + msec: 5712 + hash: "2b7eb8a9fe26b032be8b4b9c00995912" + } + Frame { + msec: 5728 + hash: "47e920e3884ccf2f0f49e78070af6929" + } + Frame { + msec: 5744 + hash: "fc913807eb1069d611495fbd5d43ee3d" + } + Frame { + msec: 5760 + image: "animated-smooth.5.png" + } + Frame { + msec: 5776 + hash: "5736362b42bc2d801e02edabb983663a" + } + Frame { + msec: 5792 + hash: "e3a2b5c7247acfc1b30825233fbfd56b" + } + Frame { + msec: 5808 + hash: "48952ffa5e300778eafa768b9fe7df0c" + } + Frame { + msec: 5824 + hash: "fe04cae65aeec18697eca4f3f83a40e9" + } + Frame { + msec: 5840 + hash: "382d454f2366c1fb4ca472faa3bfa5e9" + } + Frame { + msec: 5856 + hash: "89022a8e2feb3dcb845de69aafc333ad" + } + Frame { + msec: 5872 + hash: "25506557c853a0020e98cf3992956989" + } + Frame { + msec: 5888 + hash: "9a64706c52c9e962816953e32950b8ba" + } + Frame { + msec: 5904 + hash: "3cbfded47413172ada64095e65c55e8a" + } + Frame { + msec: 5920 + hash: "ec7e1190dd4fe122545e6ce6c8740500" + } + Frame { + msec: 5936 + hash: "c5e399e29b988148913e62ee208b3326" + } + Frame { + msec: 5952 + hash: "3991bc7760b7981d80665e3a7654c9f4" + } + Frame { + msec: 5968 + hash: "05312f9529c94d3331ace7d73c544284" + } + Frame { + msec: 5984 + hash: "a94de4e90a8f8eb4ec33fe902afd226c" + } + Frame { + msec: 6000 + hash: "723f87da7e5b002a2e9b0bcbc81f9458" + } + Frame { + msec: 6016 + hash: "6b8ded0d9386a3fff0601a100c513080" + } + Frame { + msec: 6032 + hash: "f976cd5046ef5391536859e63db905bd" + } + Frame { + msec: 6048 + hash: "a94de4e90a8f8eb4ec33fe902afd226c" + } + Frame { + msec: 6064 + hash: "05312f9529c94d3331ace7d73c544284" + } + Frame { + msec: 6080 + hash: "b980703c1d0018937e83a8ba8862469e" + } + Frame { + msec: 6096 + hash: "c5e399e29b988148913e62ee208b3326" + } + Frame { + msec: 6112 + hash: "3b7b83e97d17440b42e6ef4b962076d8" + } + Frame { + msec: 6128 + hash: "3cbfded47413172ada64095e65c55e8a" + } + Frame { + msec: 6144 + hash: "9a64706c52c9e962816953e32950b8ba" + } + Frame { + msec: 6160 + hash: "25506557c853a0020e98cf3992956989" + } + Frame { + msec: 6176 + hash: "89022a8e2feb3dcb845de69aafc333ad" + } + Frame { + msec: 6192 + hash: "382d454f2366c1fb4ca472faa3bfa5e9" + } + Frame { + msec: 6208 + hash: "fe04cae65aeec18697eca4f3f83a40e9" + } + Frame { + msec: 6224 + hash: "48952ffa5e300778eafa768b9fe7df0c" + } + Frame { + msec: 6240 + hash: "e3a2b5c7247acfc1b30825233fbfd56b" + } + Frame { + msec: 6256 + hash: "5736362b42bc2d801e02edabb983663a" + } + Frame { + msec: 6272 + hash: "5d9ee853f083d514fbe51d6953d8e000" + } + Frame { + msec: 6288 + hash: "fe899138116774df4c4441687e3019c5" + } + Frame { + msec: 6304 + hash: "47e920e3884ccf2f0f49e78070af6929" + } + Frame { + msec: 6320 + hash: "2b7eb8a9fe26b032be8b4b9c00995912" + } + Frame { + msec: 6336 + hash: "64cd225202ed6c91b02c368a9160a656" + } + Frame { + msec: 6352 + hash: "774740a393f3e9b8f12b81cce8da8280" + } + Frame { + msec: 6368 + hash: "3bae40654ec551d69e7c8c72f631c7a5" + } + Frame { + msec: 6384 + hash: "83d49474db15d5779923972ff5f55917" + } + Frame { + msec: 6400 + hash: "d1110817827c318ceb0c112e8c2bfc1d" + } + Frame { + msec: 6416 + hash: "4520003d4b221a3de6834b2729b3026d" + } + Frame { + msec: 6432 + hash: "64df51b4c1bf744b2aae1c6d908c2cc3" + } + Frame { + msec: 6448 + hash: "a087b532ecb2f28e4ee60819228c2522" + } + Frame { + msec: 6464 + hash: "e860e97ebd73b7d1d5d5d90458b34bfe" + } + Frame { + msec: 6480 + hash: "a261be47ae89e6b53e6bc1c1197154ae" + } + Frame { + msec: 6496 + hash: "c2edb016cfdd47c192d1c48281ee76ed" + } + Frame { + msec: 6512 + hash: "deed4c06c9b713834490832b88e7acaf" + } + Frame { + msec: 6528 + hash: "2fede2f5d871654f3f8a6e9d890adeac" + } + Frame { + msec: 6544 + hash: "29ddde3300d0520a4c01b5536d8b9e7a" + } + Frame { + msec: 6560 + hash: "c61d2aa7f934fb5a9f9f7883e063b51c" + } + Frame { + msec: 6576 + hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" + } + Frame { + msec: 6592 + hash: "e5df07ea21e8e415c3ec82560f2d0f34" + } + Frame { + msec: 6608 + hash: "5cc90d798786c270ddd2616512f4459f" + } + Frame { + msec: 6624 + hash: "00ab7798bcd77a99886dff0414f35382" + } + Frame { + msec: 6640 + hash: "05cbce0eaa80b4610a9067af8c40f819" + } + Frame { + msec: 6656 + hash: "a676f45d946aeb9fa577c0e862735b01" + } + Frame { + msec: 6672 + hash: "d65d50fbb920e683b041a1c72238225b" + } + Frame { + msec: 6688 + hash: "39c46d85d20f7ef3eca1d09c7eb6a068" + } + Frame { + msec: 6704 + hash: "39cc17ee2e889f17dd07179fda99e431" + } + Frame { + msec: 6720 + image: "animated-smooth.6.png" + } + Frame { + msec: 6736 + hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" + } + Frame { + msec: 6752 + hash: "0640fcb0b24d3ba4ab8695f78271a438" + } + Frame { + msec: 6768 + hash: "2084ccc60ddd493399c128717816d33b" + } + Frame { + msec: 6784 + hash: "bd045f4532d78bba0ef1b64118fd9f24" + } + Frame { + msec: 6800 + hash: "42be5d26afb9f066dd27cc9fbaf6ce20" + } + Frame { + msec: 6816 + hash: "2a1fcfb753ca237b518da26e67c928e5" + } + Frame { + msec: 6832 + hash: "92176cce4836dcae4dfca94e49b041a8" + } + Frame { + msec: 6848 + hash: "d6615fc345831a3cc5b9a7196284b632" + } + Frame { + msec: 6864 + hash: "85ef33fcb3f91e4fc20391bf94455984" + } + Frame { + msec: 6880 + hash: "23291a0239c69ea07db959e709b1ff5f" + } + Frame { + msec: 6896 + hash: "53f05993ba3b426949badd2e4cd66d84" + } + Frame { + msec: 6912 + hash: "b375e723b2396b13b8f55cfc0c81c3c3" + } + Frame { + msec: 6928 + hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" + } + Frame { + msec: 6944 + hash: "853429387cc639496c7338244de7e1b7" + } + Frame { + msec: 6960 + hash: "3df54504f8891306fa8f1e9e2075a5e2" + } + Frame { + msec: 6976 + hash: "0239d697642ca1d1b1d1daa3ea048e1e" + } + Frame { + msec: 6992 + hash: "b0070117f1c24a4da87434725d4bb989" + } + Frame { + msec: 7008 + hash: "8b8120cfc14de03e048632fdea61be21" + } + Frame { + msec: 7024 + hash: "845170815a87565dc4229792032b3357" + } + Frame { + msec: 7040 + hash: "0d407ee07692d0e5a480a60952807b3c" + } + Frame { + msec: 7056 + hash: "64b21b89576fdd0083f60a26f57b9c11" + } + Frame { + msec: 7072 + hash: "d7e96278583f83ab636ed68fa130e4d2" + } + Frame { + msec: 7088 + hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7104 + hash: "adc670a9aa0326744cb23e4f5912e6c7" + } + Frame { + msec: 7120 + hash: "9cd29b4b023a8b92573575fb3c3dda83" + } + Frame { + msec: 7136 + hash: "177666cb3bb784c83196886b2c6cf6b6" + } + Frame { + msec: 7152 + hash: "ddd8a006ef048c8d929144aa9fcd7c5a" + } + Frame { + msec: 7168 + hash: "b699285764f5e8866a9996f4a0dccc69" + } + Frame { + msec: 7184 + hash: "84ef6dda8318b623832f58c46d762e89" + } + Frame { + msec: 7200 + hash: "a15f19f374bbfb6a922b69d080a91eaa" + } + Frame { + msec: 7216 + hash: "ae12f1f37a746e16b06e6b869c89fac1" + } + Frame { + msec: 7232 + hash: "5d3e85acabe5e5ff802eb7731676274f" + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.0.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.0.png new file mode 100644 index 0000000..99228f9 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.0.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.1.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.1.png new file mode 100644 index 0000000..a2dcd00 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.1.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.2.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.2.png new file mode 100644 index 0000000..8a80020 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.2.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.3.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.3.png new file mode 100644 index 0000000..02b57ef Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.3.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.4.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.4.png new file mode 100644 index 0000000..df0f6cc Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.4.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.5.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.5.png new file mode 100644 index 0000000..0add64d Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.5.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.6.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.6.png new file mode 100644 index 0000000..0886207 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.6.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.7.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.7.png new file mode 100644 index 0000000..bc1a7b0 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.7.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.qml b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.qml new file mode 100644 index 0000000..e25728c --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/animated.qml @@ -0,0 +1,2091 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 32 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 48 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 64 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 80 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 96 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 112 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 128 + hash: "4c60d345821f515c7811f3b69eb94607" + } + Frame { + msec: 144 + hash: "aacf9ae3c23d174a1c1cda493600e355" + } + Frame { + msec: 160 + hash: "228d5312c261d1a5455faf69ec2f2520" + } + Frame { + msec: 176 + hash: "465ec993948f7b75aeb5759976f4620d" + } + Frame { + msec: 192 + hash: "755cfccc38bababc468fe6e1076804bb" + } + Frame { + msec: 208 + hash: "b63e4d1686057828fd8781f1c33585f5" + } + Frame { + msec: 224 + hash: "c5b3dede34b0d1d78135e39c41d117c6" + } + Frame { + msec: 240 + hash: "4d45d70f997c2c67166905c97a900d2e" + } + Frame { + msec: 256 + hash: "7b4d12e5a877507e7454aa1b8ed87c2d" + } + Frame { + msec: 272 + hash: "08b9be66e23c7b6f6f629c7470394601" + } + Frame { + msec: 288 + hash: "3dac1d9632378bd18c1c938a4868e3fb" + } + Frame { + msec: 304 + hash: "406224b535b4425d2708df0083acdc8e" + } + Frame { + msec: 320 + hash: "482bb92d4f0ad5d7c7e379b9e1ad326e" + } + Frame { + msec: 336 + hash: "8419f1d75b14130730bcfec4e3a9b058" + } + Frame { + msec: 352 + hash: "a85ee8be6a47bbd1b14137803ce606ec" + } + Frame { + msec: 368 + hash: "c1936628aec13e08e9581dcd2c6d5717" + } + Frame { + msec: 384 + hash: "75c9bf83ca3fe24612c245698c089430" + } + Frame { + msec: 400 + hash: "8c66a33d26eec2a1133f4362710a5fab" + } + Frame { + msec: 416 + hash: "2266df495ab5265e7514a506d3bf5bc6" + } + Frame { + msec: 432 + hash: "01947e631c3db43f7c5b4427229bc0c8" + } + Frame { + msec: 448 + hash: "3f62f032239d412d3637198f5e3e83d6" + } + Frame { + msec: 464 + hash: "06d8d8a1a41893d4e27725948a75caf4" + } + Frame { + msec: 480 + hash: "6b48bfd0c7993f746d6301c2a0f61d23" + } + Frame { + msec: 496 + hash: "ac8f096e8c7cc23bfb01de69cf3e266e" + } + Frame { + msec: 512 + hash: "dd4c9e63001bc6e0e63ea4db2d85301f" + } + Frame { + msec: 528 + hash: "2a7bed775824968e318c3d40fbc5b1c2" + } + Frame { + msec: 544 + hash: "3152e5f29015ece423fbdd11a2b382b8" + } + Frame { + msec: 560 + hash: "f1a7a4a67a21f5025294af4bea3f8998" + } + Frame { + msec: 576 + hash: "a40014d842471784e1222eb205395f6f" + } + Frame { + msec: 592 + hash: "18c2f321a149e38b258ac264d40c2376" + } + Frame { + msec: 608 + hash: "4ae120bb6dc2bd5ff81cc99ae03c191e" + } + Frame { + msec: 624 + hash: "19d05a96f3ae7388e854bbf1075b51c1" + } + Frame { + msec: 640 + hash: "e418b5f54705515dce5ce3b4cbc45d19" + } + Frame { + msec: 656 + hash: "554e1d360463871e7c05cfe6f8abe1dd" + } + Frame { + msec: 672 + hash: "153237f8cf37e29ad2f32f7a8a6aecdb" + } + Frame { + msec: 688 + hash: "60f158382f75103c78e2b9b408e0fe65" + } + Frame { + msec: 704 + hash: "4e60300cfab8634e04dcd1b556251d31" + } + Frame { + msec: 720 + hash: "6a521f952e05d91b86ad78fd6f5de4f9" + } + Frame { + msec: 736 + hash: "b74521d6ac531414aeeca0fb28379d11" + } + Frame { + msec: 752 + hash: "a6f17da2dd581bdc249ff62f833dc025" + } + Frame { + msec: 768 + hash: "93d9f0a7c387cbe653a9a088f8f4ef2b" + } + Frame { + msec: 784 + hash: "1ea07ee309ce2c52cbc36370b75a872f" + } + Frame { + msec: 800 + hash: "593a8a45c3a0cd7ce1cb6bd1913136ba" + } + Frame { + msec: 816 + hash: "c7eb7837dce71c914186326216214eeb" + } + Frame { + msec: 832 + hash: "0cba07ca38c7f0483244832a42d9ac53" + } + Frame { + msec: 848 + hash: "93cf31eabb454ec536c638a506be0648" + } + Frame { + msec: 864 + hash: "e8a61d3858244127cb2b2812f04f5ce9" + } + Frame { + msec: 880 + hash: "1ac8c393f084aa1894c26610b7f40ea6" + } + Frame { + msec: 896 + hash: "8861bf848da5c96b35addff736b01520" + } + Frame { + msec: 912 + hash: "f04e84ad3579d6334077abe73101d206" + } + Frame { + msec: 928 + hash: "eac4600372f0fdfadee88896ac915a48" + } + Frame { + msec: 944 + hash: "ff0928dfd16b2da9811a172c19817a97" + } + Frame { + msec: 960 + image: "animated.0.png" + } + Frame { + msec: 976 + hash: "7383209c80b403b93da3264eadbc047f" + } + Frame { + msec: 992 + hash: "86360bd58bba5fdd901c105ddb2e3ade" + } + Frame { + msec: 1008 + hash: "bc747167dfb3388ac63e9e68a86b9a03" + } + Frame { + msec: 1024 + hash: "bccb4b8a494bd45bd70c2524a02a9dc3" + } + Frame { + msec: 1040 + hash: "ae48da4a66f93c806725ce749700aac8" + } + Frame { + msec: 1056 + hash: "c763f56728e17fc119539a4d45dfccc3" + } + Frame { + msec: 1072 + hash: "956429472da133324c970774f77784f5" + } + Frame { + msec: 1088 + hash: "a4ddb4956d71fd642d54757938100cf3" + } + Frame { + msec: 1104 + hash: "ec0aea8dc8c269d1f0aee5817347ac55" + } + Frame { + msec: 1120 + hash: "68dae343cf324391ec6721cea14575f7" + } + Frame { + msec: 1136 + hash: "81d2fc6727dc7449d1a87b4abea9b704" + } + Frame { + msec: 1152 + hash: "c3a1f12febc979150028737722d6d045" + } + Frame { + msec: 1168 + hash: "80ebac4d923f67fb8dba3d133ce657ba" + } + Frame { + msec: 1184 + hash: "7c22fc3e30377cc14326833bdd23ddd8" + } + Frame { + msec: 1200 + hash: "5359f5e45e5467c62c2d9521c8199c48" + } + Frame { + msec: 1216 + hash: "30f84a7f67b13a945ba6d5935ea92da5" + } + Frame { + msec: 1232 + hash: "08f55088cdce741c67539f73291e53ab" + } + Frame { + msec: 1248 + hash: "93128906d054e44bfd126fc22bdc3102" + } + Frame { + msec: 1264 + hash: "97f7a2175dcf9ac2581a92d614d72f88" + } + Frame { + msec: 1280 + hash: "587cb6e05048579088e88e0180e3ad48" + } + Frame { + msec: 1296 + hash: "985868869ef2c332da379460a2f3a71b" + } + Frame { + msec: 1312 + hash: "94084ca4998fcda408f6987f52c34185" + } + Frame { + msec: 1328 + hash: "e91bb914c1eb63cd4269b30a220a128a" + } + Frame { + msec: 1344 + hash: "e880d93963c80e4fab5173554c9600fc" + } + Frame { + msec: 1360 + hash: "84c94704c16e246df1048f958cc8cefb" + } + Frame { + msec: 1376 + hash: "4f1eace868a6688e5b24ce48a1f0fd18" + } + Frame { + msec: 1392 + hash: "99de44f74f8e1f79652ab46afb4bb59e" + } + Frame { + msec: 1408 + hash: "44072400ca3f0237d1aebae28a94becc" + } + Frame { + msec: 1424 + hash: "a1bd4e995365e79389dba80f9e3b7af8" + } + Frame { + msec: 1440 + hash: "95d776c84fe155617fc4ee51bdb45b7e" + } + Frame { + msec: 1456 + hash: "3b95eb8cbfc831e1ebee2e456b026ab4" + } + Frame { + msec: 1472 + hash: "826c7741ba0c51de407bb799e8f360b5" + } + Frame { + msec: 1488 + hash: "11673a112566a64aca3c7010b9cc9c4d" + } + Frame { + msec: 1504 + hash: "e1e6c7a7f51bcccd749710dbbf9e97f6" + } + Frame { + msec: 1520 + hash: "5b027815ea3c1ea54e1a02c798c468db" + } + Frame { + msec: 1536 + hash: "65c514c9e926affe1da0b4826d2754c7" + } + Frame { + msec: 1552 + hash: "73c5f23f51797a33f4d2898738e6356e" + } + Frame { + msec: 1568 + hash: "acd9a2e76b22ab0ff809fd3ec3a018ec" + } + Frame { + msec: 1584 + hash: "fb17df681d99d5de05f6329bba697ea5" + } + Frame { + msec: 1600 + hash: "1bf7a98884b506b38326f59f85a53f41" + } + Frame { + msec: 1616 + hash: "0b1a741975e3d9ef8f5e78f371c89441" + } + Frame { + msec: 1632 + hash: "a6937ee49648ed0cb409063bf1da3b87" + } + Frame { + msec: 1648 + hash: "a790f0e884ab85f7802dd094e4ef550f" + } + Frame { + msec: 1664 + hash: "3b644aac161f0a75bfb64f5075373190" + } + Frame { + msec: 1680 + hash: "b12faa76c07adc21634cd8f8cb8436ae" + } + Frame { + msec: 1696 + hash: "3fb20f9dbd40b4729235e13af9643afc" + } + Frame { + msec: 1712 + hash: "f57727419bb51fb1e589b960ddeb20ae" + } + Frame { + msec: 1728 + hash: "7b78cba247f2c209ed81e003ca25d0a5" + } + Frame { + msec: 1744 + hash: "8172e076b05d95248d89e815fde820ef" + } + Frame { + msec: 1760 + hash: "a88d6fc324ef48aa52c642a1662ec679" + } + Frame { + msec: 1776 + hash: "74c1e71378b502bc1b732a55806a10f1" + } + Frame { + msec: 1792 + hash: "6eae517ad33f0609c31ef1f8f80ba899" + } + Frame { + msec: 1808 + hash: "a67e9a0f55512fb1c55f13c6b483923b" + } + Frame { + msec: 1824 + hash: "4887cd34d9926a361f3ca2e75be53ea6" + } + Frame { + msec: 1840 + hash: "13ca95adab171d9fad9ee8b75d0226bc" + } + Frame { + msec: 1856 + hash: "affab9fb48c889a2680eb81458d400f9" + } + Frame { + msec: 1872 + hash: "7aa0cbf73f7999be7cde4ec739efbc33" + } + Frame { + msec: 1888 + hash: "36c054064c9a76f4072492e55c70fb6c" + } + Frame { + msec: 1904 + hash: "d1ed4916cb1ecff60277d74369ff311b" + } + Frame { + msec: 1920 + image: "animated.1.png" + } + Frame { + msec: 1936 + hash: "29245946cbd811fe6bf6b2b41cc13002" + } + Frame { + msec: 1952 + hash: "8a9dd7a2d10771633e6896f3f4a722ae" + } + Frame { + msec: 1968 + hash: "058c918e83bfdd665cd836566b53959b" + } + Frame { + msec: 1984 + hash: "fdf3b7a0391119e2fe77be8d6a17481d" + } + Frame { + msec: 2000 + hash: "ed5d80c33dbf72624385b1cf43784626" + } + Frame { + msec: 2016 + hash: "911591db1519ba264847f09868e38e0e" + } + Frame { + msec: 2032 + hash: "ed5d80c33dbf72624385b1cf43784626" + } + Frame { + msec: 2048 + hash: "fdf3b7a0391119e2fe77be8d6a17481d" + } + Frame { + msec: 2064 + hash: "058c918e83bfdd665cd836566b53959b" + } + Frame { + msec: 2080 + hash: "8a9dd7a2d10771633e6896f3f4a722ae" + } + Frame { + msec: 2096 + hash: "29245946cbd811fe6bf6b2b41cc13002" + } + Frame { + msec: 2112 + hash: "63ebaa4869728f5e2891d068e4b0091c" + } + Frame { + msec: 2128 + hash: "d1ed4916cb1ecff60277d74369ff311b" + } + Frame { + msec: 2144 + hash: "36c054064c9a76f4072492e55c70fb6c" + } + Frame { + msec: 2160 + hash: "7aa0cbf73f7999be7cde4ec739efbc33" + } + Frame { + msec: 2176 + hash: "affab9fb48c889a2680eb81458d400f9" + } + Frame { + msec: 2192 + hash: "13ca95adab171d9fad9ee8b75d0226bc" + } + Frame { + msec: 2208 + hash: "4887cd34d9926a361f3ca2e75be53ea6" + } + Frame { + msec: 2224 + hash: "a67e9a0f55512fb1c55f13c6b483923b" + } + Frame { + msec: 2240 + hash: "6eae517ad33f0609c31ef1f8f80ba899" + } + Frame { + msec: 2256 + hash: "74c1e71378b502bc1b732a55806a10f1" + } + Frame { + msec: 2272 + hash: "a88d6fc324ef48aa52c642a1662ec679" + } + Frame { + msec: 2288 + hash: "8172e076b05d95248d89e815fde820ef" + } + Frame { + msec: 2304 + hash: "7b78cba247f2c209ed81e003ca25d0a5" + } + Frame { + msec: 2320 + hash: "f57727419bb51fb1e589b960ddeb20ae" + } + Frame { + msec: 2336 + hash: "3fb20f9dbd40b4729235e13af9643afc" + } + Frame { + msec: 2352 + hash: "b12faa76c07adc21634cd8f8cb8436ae" + } + Frame { + msec: 2368 + hash: "3b644aac161f0a75bfb64f5075373190" + } + Frame { + msec: 2384 + hash: "a790f0e884ab85f7802dd094e4ef550f" + } + Frame { + msec: 2400 + hash: "a6937ee49648ed0cb409063bf1da3b87" + } + Frame { + msec: 2416 + hash: "0b1a741975e3d9ef8f5e78f371c89441" + } + Frame { + msec: 2432 + hash: "1bf7a98884b506b38326f59f85a53f41" + } + Frame { + msec: 2448 + hash: "fb17df681d99d5de05f6329bba697ea5" + } + Frame { + msec: 2464 + hash: "acd9a2e76b22ab0ff809fd3ec3a018ec" + } + Frame { + msec: 2480 + hash: "73c5f23f51797a33f4d2898738e6356e" + } + Frame { + msec: 2496 + hash: "65c514c9e926affe1da0b4826d2754c7" + } + Frame { + msec: 2512 + hash: "5b027815ea3c1ea54e1a02c798c468db" + } + Frame { + msec: 2528 + hash: "e1e6c7a7f51bcccd749710dbbf9e97f6" + } + Frame { + msec: 2544 + hash: "11673a112566a64aca3c7010b9cc9c4d" + } + Frame { + msec: 2560 + hash: "826c7741ba0c51de407bb799e8f360b5" + } + Frame { + msec: 2576 + hash: "3b95eb8cbfc831e1ebee2e456b026ab4" + } + Frame { + msec: 2592 + hash: "95d776c84fe155617fc4ee51bdb45b7e" + } + Frame { + msec: 2608 + hash: "a1bd4e995365e79389dba80f9e3b7af8" + } + Frame { + msec: 2624 + hash: "44072400ca3f0237d1aebae28a94becc" + } + Frame { + msec: 2640 + hash: "99de44f74f8e1f79652ab46afb4bb59e" + } + Frame { + msec: 2656 + hash: "4f1eace868a6688e5b24ce48a1f0fd18" + } + Frame { + msec: 2672 + hash: "84c94704c16e246df1048f958cc8cefb" + } + Frame { + msec: 2688 + hash: "e880d93963c80e4fab5173554c9600fc" + } + Frame { + msec: 2704 + hash: "e91bb914c1eb63cd4269b30a220a128a" + } + Frame { + msec: 2720 + hash: "94084ca4998fcda408f6987f52c34185" + } + Frame { + msec: 2736 + hash: "985868869ef2c332da379460a2f3a71b" + } + Frame { + msec: 2752 + hash: "587cb6e05048579088e88e0180e3ad48" + } + Frame { + msec: 2768 + hash: "97f7a2175dcf9ac2581a92d614d72f88" + } + Frame { + msec: 2784 + hash: "93128906d054e44bfd126fc22bdc3102" + } + Frame { + msec: 2800 + hash: "08f55088cdce741c67539f73291e53ab" + } + Frame { + msec: 2816 + hash: "30f84a7f67b13a945ba6d5935ea92da5" + } + Frame { + msec: 2832 + hash: "5359f5e45e5467c62c2d9521c8199c48" + } + Frame { + msec: 2848 + hash: "7c22fc3e30377cc14326833bdd23ddd8" + } + Frame { + msec: 2864 + hash: "80ebac4d923f67fb8dba3d133ce657ba" + } + Frame { + msec: 2880 + image: "animated.2.png" + } + Frame { + msec: 2896 + hash: "81d2fc6727dc7449d1a87b4abea9b704" + } + Frame { + msec: 2912 + hash: "68dae343cf324391ec6721cea14575f7" + } + Frame { + msec: 2928 + hash: "ec0aea8dc8c269d1f0aee5817347ac55" + } + Frame { + msec: 2944 + hash: "a4ddb4956d71fd642d54757938100cf3" + } + Frame { + msec: 2960 + hash: "956429472da133324c970774f77784f5" + } + Frame { + msec: 2976 + hash: "c763f56728e17fc119539a4d45dfccc3" + } + Frame { + msec: 2992 + hash: "ae48da4a66f93c806725ce749700aac8" + } + Frame { + msec: 3008 + hash: "bccb4b8a494bd45bd70c2524a02a9dc3" + } + Frame { + msec: 3024 + hash: "bc747167dfb3388ac63e9e68a86b9a03" + } + Frame { + msec: 3040 + hash: "86360bd58bba5fdd901c105ddb2e3ade" + } + Frame { + msec: 3056 + hash: "7383209c80b403b93da3264eadbc047f" + } + Frame { + msec: 3072 + hash: "280288a7988736e30a2a3e4289ac3b0c" + } + Frame { + msec: 3088 + hash: "ff0928dfd16b2da9811a172c19817a97" + } + Frame { + msec: 3104 + hash: "eac4600372f0fdfadee88896ac915a48" + } + Frame { + msec: 3120 + hash: "f04e84ad3579d6334077abe73101d206" + } + Frame { + msec: 3136 + hash: "8861bf848da5c96b35addff736b01520" + } + Frame { + msec: 3152 + hash: "1ac8c393f084aa1894c26610b7f40ea6" + } + Frame { + msec: 3168 + hash: "e8a61d3858244127cb2b2812f04f5ce9" + } + Frame { + msec: 3184 + hash: "93cf31eabb454ec536c638a506be0648" + } + Frame { + msec: 3200 + hash: "0cba07ca38c7f0483244832a42d9ac53" + } + Frame { + msec: 3216 + hash: "c7eb7837dce71c914186326216214eeb" + } + Frame { + msec: 3232 + hash: "593a8a45c3a0cd7ce1cb6bd1913136ba" + } + Frame { + msec: 3248 + hash: "1ea07ee309ce2c52cbc36370b75a872f" + } + Frame { + msec: 3264 + hash: "93d9f0a7c387cbe653a9a088f8f4ef2b" + } + Frame { + msec: 3280 + hash: "a6f17da2dd581bdc249ff62f833dc025" + } + Frame { + msec: 3296 + hash: "b74521d6ac531414aeeca0fb28379d11" + } + Frame { + msec: 3312 + hash: "6a521f952e05d91b86ad78fd6f5de4f9" + } + Frame { + msec: 3328 + hash: "4e60300cfab8634e04dcd1b556251d31" + } + Frame { + msec: 3344 + hash: "60f158382f75103c78e2b9b408e0fe65" + } + Frame { + msec: 3360 + hash: "153237f8cf37e29ad2f32f7a8a6aecdb" + } + Frame { + msec: 3376 + hash: "554e1d360463871e7c05cfe6f8abe1dd" + } + Frame { + msec: 3392 + hash: "e418b5f54705515dce5ce3b4cbc45d19" + } + Frame { + msec: 3408 + hash: "19d05a96f3ae7388e854bbf1075b51c1" + } + Frame { + msec: 3424 + hash: "4ae120bb6dc2bd5ff81cc99ae03c191e" + } + Frame { + msec: 3440 + hash: "18c2f321a149e38b258ac264d40c2376" + } + Frame { + msec: 3456 + hash: "a40014d842471784e1222eb205395f6f" + } + Frame { + msec: 3472 + hash: "f1a7a4a67a21f5025294af4bea3f8998" + } + Frame { + msec: 3488 + hash: "3152e5f29015ece423fbdd11a2b382b8" + } + Frame { + msec: 3504 + hash: "2a7bed775824968e318c3d40fbc5b1c2" + } + Frame { + msec: 3520 + hash: "dd4c9e63001bc6e0e63ea4db2d85301f" + } + Frame { + msec: 3536 + hash: "ac8f096e8c7cc23bfb01de69cf3e266e" + } + Frame { + msec: 3552 + hash: "6b48bfd0c7993f746d6301c2a0f61d23" + } + Frame { + msec: 3568 + hash: "06d8d8a1a41893d4e27725948a75caf4" + } + Frame { + msec: 3584 + hash: "3f62f032239d412d3637198f5e3e83d6" + } + Frame { + msec: 3600 + hash: "01947e631c3db43f7c5b4427229bc0c8" + } + Frame { + msec: 3616 + hash: "2266df495ab5265e7514a506d3bf5bc6" + } + Frame { + msec: 3632 + hash: "8c66a33d26eec2a1133f4362710a5fab" + } + Frame { + msec: 3648 + hash: "75c9bf83ca3fe24612c245698c089430" + } + Frame { + msec: 3664 + hash: "c1936628aec13e08e9581dcd2c6d5717" + } + Frame { + msec: 3680 + hash: "a85ee8be6a47bbd1b14137803ce606ec" + } + Frame { + msec: 3696 + hash: "8419f1d75b14130730bcfec4e3a9b058" + } + Frame { + msec: 3712 + hash: "482bb92d4f0ad5d7c7e379b9e1ad326e" + } + Frame { + msec: 3728 + hash: "406224b535b4425d2708df0083acdc8e" + } + Frame { + msec: 3744 + hash: "3dac1d9632378bd18c1c938a4868e3fb" + } + Frame { + msec: 3760 + hash: "08b9be66e23c7b6f6f629c7470394601" + } + Frame { + msec: 3776 + hash: "7b4d12e5a877507e7454aa1b8ed87c2d" + } + Frame { + msec: 3792 + hash: "4d45d70f997c2c67166905c97a900d2e" + } + Frame { + msec: 3808 + hash: "c5b3dede34b0d1d78135e39c41d117c6" + } + Frame { + msec: 3824 + hash: "b63e4d1686057828fd8781f1c33585f5" + } + Frame { + msec: 3840 + image: "animated.3.png" + } + Frame { + msec: 3856 + hash: "465ec993948f7b75aeb5759976f4620d" + } + Frame { + msec: 3872 + hash: "228d5312c261d1a5455faf69ec2f2520" + } + Frame { + msec: 3888 + hash: "aacf9ae3c23d174a1c1cda493600e355" + } + Frame { + msec: 3904 + hash: "4c60d345821f515c7811f3b69eb94607" + } + Frame { + msec: 3920 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3936 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3952 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3968 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3984 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4000 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4016 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4032 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4048 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4064 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4080 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4096 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4112 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4128 + hash: "4c60d345821f515c7811f3b69eb94607" + } + Frame { + msec: 4144 + hash: "aacf9ae3c23d174a1c1cda493600e355" + } + Frame { + msec: 4160 + hash: "228d5312c261d1a5455faf69ec2f2520" + } + Frame { + msec: 4176 + hash: "465ec993948f7b75aeb5759976f4620d" + } + Frame { + msec: 4192 + hash: "755cfccc38bababc468fe6e1076804bb" + } + Frame { + msec: 4208 + hash: "b63e4d1686057828fd8781f1c33585f5" + } + Frame { + msec: 4224 + hash: "c5b3dede34b0d1d78135e39c41d117c6" + } + Frame { + msec: 4240 + hash: "4d45d70f997c2c67166905c97a900d2e" + } + Frame { + msec: 4256 + hash: "7b4d12e5a877507e7454aa1b8ed87c2d" + } + Frame { + msec: 4272 + hash: "08b9be66e23c7b6f6f629c7470394601" + } + Frame { + msec: 4288 + hash: "3dac1d9632378bd18c1c938a4868e3fb" + } + Frame { + msec: 4304 + hash: "406224b535b4425d2708df0083acdc8e" + } + Frame { + msec: 4320 + hash: "482bb92d4f0ad5d7c7e379b9e1ad326e" + } + Frame { + msec: 4336 + hash: "8419f1d75b14130730bcfec4e3a9b058" + } + Frame { + msec: 4352 + hash: "a85ee8be6a47bbd1b14137803ce606ec" + } + Frame { + msec: 4368 + hash: "c1936628aec13e08e9581dcd2c6d5717" + } + Frame { + msec: 4384 + hash: "75c9bf83ca3fe24612c245698c089430" + } + Frame { + msec: 4400 + hash: "8c66a33d26eec2a1133f4362710a5fab" + } + Frame { + msec: 4416 + hash: "2266df495ab5265e7514a506d3bf5bc6" + } + Frame { + msec: 4432 + hash: "01947e631c3db43f7c5b4427229bc0c8" + } + Frame { + msec: 4448 + hash: "3f62f032239d412d3637198f5e3e83d6" + } + Frame { + msec: 4464 + hash: "06d8d8a1a41893d4e27725948a75caf4" + } + Frame { + msec: 4480 + hash: "6b48bfd0c7993f746d6301c2a0f61d23" + } + Frame { + msec: 4496 + hash: "ac8f096e8c7cc23bfb01de69cf3e266e" + } + Frame { + msec: 4512 + hash: "dd4c9e63001bc6e0e63ea4db2d85301f" + } + Frame { + msec: 4528 + hash: "2a7bed775824968e318c3d40fbc5b1c2" + } + Frame { + msec: 4544 + hash: "3152e5f29015ece423fbdd11a2b382b8" + } + Frame { + msec: 4560 + hash: "f1a7a4a67a21f5025294af4bea3f8998" + } + Frame { + msec: 4576 + hash: "a40014d842471784e1222eb205395f6f" + } + Frame { + msec: 4592 + hash: "18c2f321a149e38b258ac264d40c2376" + } + Frame { + msec: 4608 + hash: "4ae120bb6dc2bd5ff81cc99ae03c191e" + } + Frame { + msec: 4624 + hash: "19d05a96f3ae7388e854bbf1075b51c1" + } + Frame { + msec: 4640 + hash: "e418b5f54705515dce5ce3b4cbc45d19" + } + Frame { + msec: 4656 + hash: "554e1d360463871e7c05cfe6f8abe1dd" + } + Frame { + msec: 4672 + hash: "153237f8cf37e29ad2f32f7a8a6aecdb" + } + Frame { + msec: 4688 + hash: "60f158382f75103c78e2b9b408e0fe65" + } + Frame { + msec: 4704 + hash: "4e60300cfab8634e04dcd1b556251d31" + } + Frame { + msec: 4720 + hash: "6a521f952e05d91b86ad78fd6f5de4f9" + } + Frame { + msec: 4736 + hash: "b74521d6ac531414aeeca0fb28379d11" + } + Frame { + msec: 4752 + hash: "a6f17da2dd581bdc249ff62f833dc025" + } + Frame { + msec: 4768 + hash: "93d9f0a7c387cbe653a9a088f8f4ef2b" + } + Frame { + msec: 4784 + hash: "1ea07ee309ce2c52cbc36370b75a872f" + } + Frame { + msec: 4800 + image: "animated.4.png" + } + Frame { + msec: 4816 + hash: "c7eb7837dce71c914186326216214eeb" + } + Frame { + msec: 4832 + hash: "0cba07ca38c7f0483244832a42d9ac53" + } + Frame { + msec: 4848 + hash: "93cf31eabb454ec536c638a506be0648" + } + Frame { + msec: 4864 + hash: "e8a61d3858244127cb2b2812f04f5ce9" + } + Frame { + msec: 4880 + hash: "1ac8c393f084aa1894c26610b7f40ea6" + } + Frame { + msec: 4896 + hash: "8861bf848da5c96b35addff736b01520" + } + Frame { + msec: 4912 + hash: "f04e84ad3579d6334077abe73101d206" + } + Frame { + msec: 4928 + hash: "eac4600372f0fdfadee88896ac915a48" + } + Frame { + msec: 4944 + hash: "ff0928dfd16b2da9811a172c19817a97" + } + Frame { + msec: 4960 + hash: "280288a7988736e30a2a3e4289ac3b0c" + } + Frame { + msec: 4976 + hash: "7383209c80b403b93da3264eadbc047f" + } + Frame { + msec: 4992 + hash: "86360bd58bba5fdd901c105ddb2e3ade" + } + Frame { + msec: 5008 + hash: "bc747167dfb3388ac63e9e68a86b9a03" + } + Frame { + msec: 5024 + hash: "bccb4b8a494bd45bd70c2524a02a9dc3" + } + Frame { + msec: 5040 + hash: "ae48da4a66f93c806725ce749700aac8" + } + Frame { + msec: 5056 + hash: "c763f56728e17fc119539a4d45dfccc3" + } + Frame { + msec: 5072 + hash: "956429472da133324c970774f77784f5" + } + Frame { + msec: 5088 + hash: "a4ddb4956d71fd642d54757938100cf3" + } + Frame { + msec: 5104 + hash: "ec0aea8dc8c269d1f0aee5817347ac55" + } + Frame { + msec: 5120 + hash: "68dae343cf324391ec6721cea14575f7" + } + Frame { + msec: 5136 + hash: "81d2fc6727dc7449d1a87b4abea9b704" + } + Frame { + msec: 5152 + hash: "c3a1f12febc979150028737722d6d045" + } + Frame { + msec: 5168 + hash: "80ebac4d923f67fb8dba3d133ce657ba" + } + Frame { + msec: 5184 + hash: "7c22fc3e30377cc14326833bdd23ddd8" + } + Frame { + msec: 5200 + hash: "5359f5e45e5467c62c2d9521c8199c48" + } + Frame { + msec: 5216 + hash: "30f84a7f67b13a945ba6d5935ea92da5" + } + Frame { + msec: 5232 + hash: "08f55088cdce741c67539f73291e53ab" + } + Frame { + msec: 5248 + hash: "93128906d054e44bfd126fc22bdc3102" + } + Frame { + msec: 5264 + hash: "97f7a2175dcf9ac2581a92d614d72f88" + } + Frame { + msec: 5280 + hash: "587cb6e05048579088e88e0180e3ad48" + } + Frame { + msec: 5296 + hash: "985868869ef2c332da379460a2f3a71b" + } + Frame { + msec: 5312 + hash: "94084ca4998fcda408f6987f52c34185" + } + Frame { + msec: 5328 + hash: "e91bb914c1eb63cd4269b30a220a128a" + } + Frame { + msec: 5344 + hash: "e880d93963c80e4fab5173554c9600fc" + } + Frame { + msec: 5360 + hash: "84c94704c16e246df1048f958cc8cefb" + } + Frame { + msec: 5376 + hash: "4f1eace868a6688e5b24ce48a1f0fd18" + } + Frame { + msec: 5392 + hash: "99de44f74f8e1f79652ab46afb4bb59e" + } + Frame { + msec: 5408 + hash: "44072400ca3f0237d1aebae28a94becc" + } + Frame { + msec: 5424 + hash: "a1bd4e995365e79389dba80f9e3b7af8" + } + Frame { + msec: 5440 + hash: "95d776c84fe155617fc4ee51bdb45b7e" + } + Frame { + msec: 5456 + hash: "3b95eb8cbfc831e1ebee2e456b026ab4" + } + Frame { + msec: 5472 + hash: "826c7741ba0c51de407bb799e8f360b5" + } + Frame { + msec: 5488 + hash: "11673a112566a64aca3c7010b9cc9c4d" + } + Frame { + msec: 5504 + hash: "e1e6c7a7f51bcccd749710dbbf9e97f6" + } + Frame { + msec: 5520 + hash: "5b027815ea3c1ea54e1a02c798c468db" + } + Frame { + msec: 5536 + hash: "65c514c9e926affe1da0b4826d2754c7" + } + Frame { + msec: 5552 + hash: "73c5f23f51797a33f4d2898738e6356e" + } + Frame { + msec: 5568 + hash: "acd9a2e76b22ab0ff809fd3ec3a018ec" + } + Frame { + msec: 5584 + hash: "fb17df681d99d5de05f6329bba697ea5" + } + Frame { + msec: 5600 + hash: "1bf7a98884b506b38326f59f85a53f41" + } + Frame { + msec: 5616 + hash: "0b1a741975e3d9ef8f5e78f371c89441" + } + Frame { + msec: 5632 + hash: "a6937ee49648ed0cb409063bf1da3b87" + } + Frame { + msec: 5648 + hash: "a790f0e884ab85f7802dd094e4ef550f" + } + Frame { + msec: 5664 + hash: "3b644aac161f0a75bfb64f5075373190" + } + Frame { + msec: 5680 + hash: "b12faa76c07adc21634cd8f8cb8436ae" + } + Frame { + msec: 5696 + hash: "3fb20f9dbd40b4729235e13af9643afc" + } + Frame { + msec: 5712 + hash: "f57727419bb51fb1e589b960ddeb20ae" + } + Frame { + msec: 5728 + hash: "7b78cba247f2c209ed81e003ca25d0a5" + } + Frame { + msec: 5744 + hash: "8172e076b05d95248d89e815fde820ef" + } + Frame { + msec: 5760 + image: "animated.5.png" + } + Frame { + msec: 5776 + hash: "74c1e71378b502bc1b732a55806a10f1" + } + Frame { + msec: 5792 + hash: "6eae517ad33f0609c31ef1f8f80ba899" + } + Frame { + msec: 5808 + hash: "a67e9a0f55512fb1c55f13c6b483923b" + } + Frame { + msec: 5824 + hash: "4887cd34d9926a361f3ca2e75be53ea6" + } + Frame { + msec: 5840 + hash: "13ca95adab171d9fad9ee8b75d0226bc" + } + Frame { + msec: 5856 + hash: "affab9fb48c889a2680eb81458d400f9" + } + Frame { + msec: 5872 + hash: "7aa0cbf73f7999be7cde4ec739efbc33" + } + Frame { + msec: 5888 + hash: "36c054064c9a76f4072492e55c70fb6c" + } + Frame { + msec: 5904 + hash: "d1ed4916cb1ecff60277d74369ff311b" + } + Frame { + msec: 5920 + hash: "63ebaa4869728f5e2891d068e4b0091c" + } + Frame { + msec: 5936 + hash: "29245946cbd811fe6bf6b2b41cc13002" + } + Frame { + msec: 5952 + hash: "8a9dd7a2d10771633e6896f3f4a722ae" + } + Frame { + msec: 5968 + hash: "058c918e83bfdd665cd836566b53959b" + } + Frame { + msec: 5984 + hash: "fdf3b7a0391119e2fe77be8d6a17481d" + } + Frame { + msec: 6000 + hash: "ed5d80c33dbf72624385b1cf43784626" + } + Frame { + msec: 6016 + hash: "911591db1519ba264847f09868e38e0e" + } + Frame { + msec: 6032 + hash: "ed5d80c33dbf72624385b1cf43784626" + } + Frame { + msec: 6048 + hash: "fdf3b7a0391119e2fe77be8d6a17481d" + } + Frame { + msec: 6064 + hash: "058c918e83bfdd665cd836566b53959b" + } + Frame { + msec: 6080 + hash: "8a9dd7a2d10771633e6896f3f4a722ae" + } + Frame { + msec: 6096 + hash: "29245946cbd811fe6bf6b2b41cc13002" + } + Frame { + msec: 6112 + hash: "63ebaa4869728f5e2891d068e4b0091c" + } + Frame { + msec: 6128 + hash: "d1ed4916cb1ecff60277d74369ff311b" + } + Frame { + msec: 6144 + hash: "36c054064c9a76f4072492e55c70fb6c" + } + Frame { + msec: 6160 + hash: "7aa0cbf73f7999be7cde4ec739efbc33" + } + Frame { + msec: 6176 + hash: "affab9fb48c889a2680eb81458d400f9" + } + Frame { + msec: 6192 + hash: "13ca95adab171d9fad9ee8b75d0226bc" + } + Frame { + msec: 6208 + hash: "4887cd34d9926a361f3ca2e75be53ea6" + } + Frame { + msec: 6224 + hash: "a67e9a0f55512fb1c55f13c6b483923b" + } + Frame { + msec: 6240 + hash: "6eae517ad33f0609c31ef1f8f80ba899" + } + Frame { + msec: 6256 + hash: "74c1e71378b502bc1b732a55806a10f1" + } + Frame { + msec: 6272 + hash: "a88d6fc324ef48aa52c642a1662ec679" + } + Frame { + msec: 6288 + hash: "8172e076b05d95248d89e815fde820ef" + } + Frame { + msec: 6304 + hash: "7b78cba247f2c209ed81e003ca25d0a5" + } + Frame { + msec: 6320 + hash: "f57727419bb51fb1e589b960ddeb20ae" + } + Frame { + msec: 6336 + hash: "3fb20f9dbd40b4729235e13af9643afc" + } + Frame { + msec: 6352 + hash: "b12faa76c07adc21634cd8f8cb8436ae" + } + Frame { + msec: 6368 + hash: "3b644aac161f0a75bfb64f5075373190" + } + Frame { + msec: 6384 + hash: "a790f0e884ab85f7802dd094e4ef550f" + } + Frame { + msec: 6400 + hash: "a6937ee49648ed0cb409063bf1da3b87" + } + Frame { + msec: 6416 + hash: "0b1a741975e3d9ef8f5e78f371c89441" + } + Frame { + msec: 6432 + hash: "1bf7a98884b506b38326f59f85a53f41" + } + Frame { + msec: 6448 + hash: "fb17df681d99d5de05f6329bba697ea5" + } + Frame { + msec: 6464 + hash: "acd9a2e76b22ab0ff809fd3ec3a018ec" + } + Frame { + msec: 6480 + hash: "73c5f23f51797a33f4d2898738e6356e" + } + Frame { + msec: 6496 + hash: "65c514c9e926affe1da0b4826d2754c7" + } + Frame { + msec: 6512 + hash: "5b027815ea3c1ea54e1a02c798c468db" + } + Frame { + msec: 6528 + hash: "e1e6c7a7f51bcccd749710dbbf9e97f6" + } + Frame { + msec: 6544 + hash: "11673a112566a64aca3c7010b9cc9c4d" + } + Frame { + msec: 6560 + hash: "826c7741ba0c51de407bb799e8f360b5" + } + Frame { + msec: 6576 + hash: "3b95eb8cbfc831e1ebee2e456b026ab4" + } + Frame { + msec: 6592 + hash: "95d776c84fe155617fc4ee51bdb45b7e" + } + Frame { + msec: 6608 + hash: "a1bd4e995365e79389dba80f9e3b7af8" + } + Frame { + msec: 6624 + hash: "44072400ca3f0237d1aebae28a94becc" + } + Frame { + msec: 6640 + hash: "99de44f74f8e1f79652ab46afb4bb59e" + } + Frame { + msec: 6656 + hash: "4f1eace868a6688e5b24ce48a1f0fd18" + } + Frame { + msec: 6672 + hash: "84c94704c16e246df1048f958cc8cefb" + } + Frame { + msec: 6688 + hash: "e880d93963c80e4fab5173554c9600fc" + } + Frame { + msec: 6704 + hash: "e91bb914c1eb63cd4269b30a220a128a" + } + Frame { + msec: 6720 + image: "animated.6.png" + } + Frame { + msec: 6736 + hash: "985868869ef2c332da379460a2f3a71b" + } + Frame { + msec: 6752 + hash: "587cb6e05048579088e88e0180e3ad48" + } + Frame { + msec: 6768 + hash: "97f7a2175dcf9ac2581a92d614d72f88" + } + Frame { + msec: 6784 + hash: "93128906d054e44bfd126fc22bdc3102" + } + Frame { + msec: 6800 + hash: "08f55088cdce741c67539f73291e53ab" + } + Frame { + msec: 6816 + hash: "30f84a7f67b13a945ba6d5935ea92da5" + } + Frame { + msec: 6832 + hash: "5359f5e45e5467c62c2d9521c8199c48" + } + Frame { + msec: 6848 + hash: "7c22fc3e30377cc14326833bdd23ddd8" + } + Frame { + msec: 6864 + hash: "80ebac4d923f67fb8dba3d133ce657ba" + } + Frame { + msec: 6880 + hash: "c3a1f12febc979150028737722d6d045" + } + Frame { + msec: 6896 + hash: "81d2fc6727dc7449d1a87b4abea9b704" + } + Frame { + msec: 6912 + hash: "68dae343cf324391ec6721cea14575f7" + } + Frame { + msec: 6928 + hash: "ec0aea8dc8c269d1f0aee5817347ac55" + } + Frame { + msec: 6944 + hash: "a4ddb4956d71fd642d54757938100cf3" + } + Frame { + msec: 6960 + hash: "956429472da133324c970774f77784f5" + } + Frame { + msec: 6976 + hash: "c763f56728e17fc119539a4d45dfccc3" + } + Frame { + msec: 6992 + hash: "ae48da4a66f93c806725ce749700aac8" + } + Frame { + msec: 7008 + hash: "bccb4b8a494bd45bd70c2524a02a9dc3" + } + Frame { + msec: 7024 + hash: "bc747167dfb3388ac63e9e68a86b9a03" + } + Frame { + msec: 7040 + hash: "86360bd58bba5fdd901c105ddb2e3ade" + } + Frame { + msec: 7056 + hash: "7383209c80b403b93da3264eadbc047f" + } + Frame { + msec: 7072 + hash: "280288a7988736e30a2a3e4289ac3b0c" + } + Frame { + msec: 7088 + hash: "ff0928dfd16b2da9811a172c19817a97" + } + Frame { + msec: 7104 + hash: "eac4600372f0fdfadee88896ac915a48" + } + Frame { + msec: 7120 + hash: "f04e84ad3579d6334077abe73101d206" + } + Frame { + msec: 7136 + hash: "8861bf848da5c96b35addff736b01520" + } + Frame { + msec: 7152 + hash: "1ac8c393f084aa1894c26610b7f40ea6" + } + Frame { + msec: 7168 + hash: "e8a61d3858244127cb2b2812f04f5ce9" + } + Frame { + msec: 7184 + hash: "93cf31eabb454ec536c638a506be0648" + } + Frame { + msec: 7200 + hash: "0cba07ca38c7f0483244832a42d9ac53" + } + Frame { + msec: 7216 + hash: "c7eb7837dce71c914186326216214eeb" + } + Frame { + msec: 7232 + hash: "593a8a45c3a0cd7ce1cb6bd1913136ba" + } + Frame { + msec: 7248 + hash: "1ea07ee309ce2c52cbc36370b75a872f" + } + Frame { + msec: 7264 + hash: "93d9f0a7c387cbe653a9a088f8f4ef2b" + } + Frame { + msec: 7280 + hash: "a6f17da2dd581bdc249ff62f833dc025" + } + Frame { + msec: 7296 + hash: "b74521d6ac531414aeeca0fb28379d11" + } + Frame { + msec: 7312 + hash: "6a521f952e05d91b86ad78fd6f5de4f9" + } + Frame { + msec: 7328 + hash: "4e60300cfab8634e04dcd1b556251d31" + } + Frame { + msec: 7344 + hash: "60f158382f75103c78e2b9b408e0fe65" + } + Frame { + msec: 7360 + hash: "153237f8cf37e29ad2f32f7a8a6aecdb" + } + Frame { + msec: 7376 + hash: "554e1d360463871e7c05cfe6f8abe1dd" + } + Frame { + msec: 7392 + hash: "e418b5f54705515dce5ce3b4cbc45d19" + } + Frame { + msec: 7408 + hash: "19d05a96f3ae7388e854bbf1075b51c1" + } + Frame { + msec: 7424 + hash: "4ae120bb6dc2bd5ff81cc99ae03c191e" + } + Frame { + msec: 7440 + hash: "18c2f321a149e38b258ac264d40c2376" + } + Frame { + msec: 7456 + hash: "a40014d842471784e1222eb205395f6f" + } + Frame { + msec: 7472 + hash: "f1a7a4a67a21f5025294af4bea3f8998" + } + Frame { + msec: 7488 + hash: "3152e5f29015ece423fbdd11a2b382b8" + } + Frame { + msec: 7504 + hash: "2a7bed775824968e318c3d40fbc5b1c2" + } + Frame { + msec: 7520 + hash: "dd4c9e63001bc6e0e63ea4db2d85301f" + } + Frame { + msec: 7536 + hash: "ac8f096e8c7cc23bfb01de69cf3e266e" + } + Frame { + msec: 7552 + hash: "6b48bfd0c7993f746d6301c2a0f61d23" + } + Frame { + msec: 7568 + hash: "06d8d8a1a41893d4e27725948a75caf4" + } + Frame { + msec: 7584 + hash: "3f62f032239d412d3637198f5e3e83d6" + } + Frame { + msec: 7600 + hash: "01947e631c3db43f7c5b4427229bc0c8" + } + Frame { + msec: 7616 + hash: "2266df495ab5265e7514a506d3bf5bc6" + } + Frame { + msec: 7632 + hash: "8c66a33d26eec2a1133f4362710a5fab" + } + Frame { + msec: 7648 + hash: "75c9bf83ca3fe24612c245698c089430" + } + Frame { + msec: 7664 + hash: "c1936628aec13e08e9581dcd2c6d5717" + } + Frame { + msec: 7680 + image: "animated.7.png" + } + Frame { + msec: 7696 + hash: "8419f1d75b14130730bcfec4e3a9b058" + } + Frame { + msec: 7712 + hash: "482bb92d4f0ad5d7c7e379b9e1ad326e" + } + Frame { + msec: 7728 + hash: "406224b535b4425d2708df0083acdc8e" + } + Frame { + msec: 7744 + hash: "3dac1d9632378bd18c1c938a4868e3fb" + } + Frame { + msec: 7760 + hash: "08b9be66e23c7b6f6f629c7470394601" + } + Frame { + msec: 7776 + hash: "7b4d12e5a877507e7454aa1b8ed87c2d" + } + Frame { + msec: 7792 + hash: "4d45d70f997c2c67166905c97a900d2e" + } + Frame { + msec: 7808 + hash: "c5b3dede34b0d1d78135e39c41d117c6" + } + Frame { + msec: 7824 + hash: "b63e4d1686057828fd8781f1c33585f5" + } + Frame { + msec: 7840 + hash: "755cfccc38bababc468fe6e1076804bb" + } + Frame { + msec: 7856 + hash: "465ec993948f7b75aeb5759976f4620d" + } + Frame { + msec: 7872 + hash: "228d5312c261d1a5455faf69ec2f2520" + } + Frame { + msec: 7888 + hash: "aacf9ae3c23d174a1c1cda493600e355" + } + Frame { + msec: 7904 + hash: "4c60d345821f515c7811f3b69eb94607" + } + Frame { + msec: 7920 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 7936 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 7952 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 7968 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 7984 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8000 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8016 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8032 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8048 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8064 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8080 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8096 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8112 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 8128 + hash: "4c60d345821f515c7811f3b69eb94607" + } + Frame { + msec: 8144 + hash: "aacf9ae3c23d174a1c1cda493600e355" + } + Frame { + msec: 8160 + hash: "228d5312c261d1a5455faf69ec2f2520" + } + Frame { + msec: 8176 + hash: "465ec993948f7b75aeb5759976f4620d" + } + Frame { + msec: 8192 + hash: "755cfccc38bababc468fe6e1076804bb" + } + Frame { + msec: 8208 + hash: "b63e4d1686057828fd8781f1c33585f5" + } + Frame { + msec: 8224 + hash: "c5b3dede34b0d1d78135e39c41d117c6" + } + Frame { + msec: 8240 + hash: "4d45d70f997c2c67166905c97a900d2e" + } + Frame { + msec: 8256 + hash: "7b4d12e5a877507e7454aa1b8ed87c2d" + } + Frame { + msec: 8272 + hash: "08b9be66e23c7b6f6f629c7470394601" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 8288 + hash: "3dac1d9632378bd18c1c938a4868e3fb" + } + Frame { + msec: 8304 + hash: "406224b535b4425d2708df0083acdc8e" + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.0.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.0.png new file mode 100644 index 0000000..80cbd26 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.0.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.1.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.1.png new file mode 100644 index 0000000..80cbd26 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.1.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.2.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.2.png new file mode 100644 index 0000000..80cbd26 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.2.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.3.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.3.png new file mode 100644 index 0000000..80cbd26 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.3.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.4.png b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.4.png new file mode 100644 index 0000000..80cbd26 Binary files /dev/null and b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.4.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.qml b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.qml new file mode 100644 index 0000000..16cd5e9 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsborderimage/data/borders.qml @@ -0,0 +1,1359 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 32 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 48 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 64 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 80 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 96 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 112 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 128 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 144 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 160 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 176 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 192 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 208 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 224 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 240 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 256 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 272 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 288 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 304 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 320 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 336 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 352 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 368 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 384 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 400 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 416 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 432 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 448 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 464 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 480 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 496 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 512 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 528 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 544 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 560 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 576 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 592 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 608 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 624 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 640 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 656 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 672 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 688 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 704 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 720 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 736 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 752 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 768 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 784 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 800 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 816 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 832 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 848 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 864 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 880 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 896 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 912 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 928 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 944 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 960 + image: "borders.0.png" + } + Frame { + msec: 976 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 992 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1008 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1024 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1040 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1056 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1072 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1088 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1104 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1120 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1136 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1152 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1168 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1184 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1200 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1216 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1232 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1248 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1264 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1280 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1296 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1312 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1328 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1344 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1360 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1376 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1392 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1408 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1424 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1440 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1456 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1472 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1488 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1504 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1520 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1536 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1552 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1568 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1584 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1600 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1616 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1632 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1648 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1664 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1680 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1696 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1712 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1728 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1744 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1760 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1776 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1792 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1808 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1824 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1840 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1856 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1872 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1888 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1904 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1920 + image: "borders.1.png" + } + Frame { + msec: 1936 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1952 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1968 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 1984 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2000 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2016 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2032 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2048 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2064 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2080 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2096 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2112 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2128 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2144 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2160 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2176 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2192 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2208 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2224 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2240 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2256 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2272 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2288 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2304 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2320 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2336 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2352 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2368 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2384 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2400 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2416 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2432 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2448 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2464 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2480 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2496 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2512 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2528 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2544 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2560 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2576 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2592 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2608 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2624 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2640 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2656 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2672 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2688 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2704 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2720 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2736 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2752 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2768 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2784 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2800 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2816 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2832 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2848 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2864 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2880 + image: "borders.2.png" + } + Frame { + msec: 2896 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2912 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2928 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2944 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2960 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2976 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 2992 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3008 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3024 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3040 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3056 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3072 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3088 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3104 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3120 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3136 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3152 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3168 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3184 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3200 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3216 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3232 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3248 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3264 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3280 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3296 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3312 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3328 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3344 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3360 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3376 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3392 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3408 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3424 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3440 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3456 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3472 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3488 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3504 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3520 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3536 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3552 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3568 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3584 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3600 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3616 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3632 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3648 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3664 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3680 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3696 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3712 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3728 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3744 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3760 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3776 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3792 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3808 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3824 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3840 + image: "borders.3.png" + } + Frame { + msec: 3856 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3872 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3888 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3904 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3920 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3936 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3952 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3968 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 3984 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4000 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4016 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4032 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4048 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4064 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4080 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4096 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4112 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4128 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4144 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4160 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4176 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4192 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4208 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4224 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4240 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4256 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4272 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4288 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4304 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4320 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4336 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4352 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4368 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4384 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4400 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4416 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4432 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4448 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4464 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4480 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4496 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4512 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4528 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4544 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4560 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4576 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4592 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4608 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4624 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4640 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4656 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4672 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4688 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4704 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4720 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4736 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4752 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4768 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4784 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4800 + image: "borders.4.png" + } + Frame { + msec: 4816 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4832 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4848 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4864 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4880 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4896 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4912 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4928 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4944 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4960 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4976 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 4992 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5008 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5024 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5040 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5056 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5072 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5088 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5104 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5120 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5136 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5152 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5168 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5184 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5200 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5216 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5232 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5248 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5264 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5280 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5296 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5312 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5328 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5344 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5360 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5376 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5392 + hash: "ab9753116e289c932064144bb0845857" + } + Frame { + msec: 5408 + hash: "ab9753116e289c932064144bb0845857" + } +} -- cgit v0.12 From 0ef5d89b540be963d1a8131f6625f990a4fe66e8 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Thu, 5 Nov 2009 14:03:47 +1000 Subject: Particles cleaned up and placed in in qmlgraphics/ API changes: Removed bool streamIn Added int emissionRate Added int emissionVariance Added void burst(count, emissionRate=-1) While rewriting the internals to accomodate this, all other outstanding particles bugs were believed fixed. Task-number: QT-2392 QT-2391 QT-2390 QT-2406 --- demos/declarative/minehunt/Explosion.qml | 7 +- demos/declarative/samegame/content/BoomBlock.qml | 12 +- doc/src/declarative/advtutorial4.qdoc | 6 +- .../samegame/samegame4/content/BoomBlock.qml | 13 +- src/declarative/QmlChanges.txt | 2 + src/declarative/extra/extra.pri | 2 - src/declarative/extra/qmlgraphicsparticles.cpp | 1134 ----------------- src/declarative/extra/qmlgraphicsparticles_p.h | 230 ---- src/declarative/graphicsitems/graphicsitems.pri | 2 + .../graphicsitems/qmlgraphicsparticles.cpp | 1278 ++++++++++++++++++++ .../graphicsitems/qmlgraphicsparticles_p.h | 252 ++++ .../qmlgraphicsparticles/data/particles.qml | 2 +- .../tst_qmlgraphicsparticles.cpp | 7 +- 13 files changed, 1558 insertions(+), 1389 deletions(-) delete mode 100644 src/declarative/extra/qmlgraphicsparticles.cpp delete mode 100644 src/declarative/extra/qmlgraphicsparticles_p.h create mode 100644 src/declarative/graphicsitems/qmlgraphicsparticles.cpp create mode 100644 src/declarative/graphicsitems/qmlgraphicsparticles_p.h diff --git a/demos/declarative/minehunt/Explosion.qml b/demos/declarative/minehunt/Explosion.qml index a997048..e337c46 100644 --- a/demos/declarative/minehunt/Explosion.qml +++ b/demos/declarative/minehunt/Explosion.qml @@ -16,13 +16,10 @@ Item { velocity: 100 velocityDeviation: 20 z: 100 - opacity: 0 - streamIn: false + opacity: 1 } states: [ State { name: "exploding"; when: explode == true - PropertyChanges { target: particles; count: 200 } - PropertyChanges { target: particles; opacity: 1 } - PropertyChanges { target: particles; emitting: false } // i.e. emit only once + StateChangeScript {script: particles.burst(200); } } ] diff --git a/demos/declarative/samegame/content/BoomBlock.qml b/demos/declarative/samegame/content/BoomBlock.qml index b0c297b..723e62a 100644 --- a/demos/declarative/samegame/content/BoomBlock.qml +++ b/demos/declarative/samegame/content/BoomBlock.qml @@ -26,9 +26,11 @@ Item { id:block } Particles { id: particles - width:1; height:1; anchors.centerIn: parent; opacity: 0 - lifeSpan: 700; lifeSpanDeviation: 600; count:0; streamIn: false - angle: 0; angleDeviation: 360; velocity: 100; velocityDeviation:30 + width:1; height:1; anchors.centerIn: parent; + emissionRate: 0; + lifeSpan: 700; lifeSpanDeviation: 600; + angle: 0; angleDeviation: 360; + velocity: 100; velocityDeviation:30; source: { if(type == 0){ "pics/redStar.png"; @@ -45,9 +47,7 @@ Item { id:block PropertyChanges { target: img; opacity: 1 } }, State{ name: "DeathState"; when: dying == true - PropertyChanges { target: particles; count: 50 } - PropertyChanges { target: particles; opacity: 1 } - PropertyChanges { target: particles; emitting: false } // i.e. emit only once + StateChangeScript { script: particles.burst(50); } PropertyChanges { target: img; opacity: 0 } StateChangeScript { script: block.destroy(1000); } } diff --git a/doc/src/declarative/advtutorial4.qdoc b/doc/src/declarative/advtutorial4.qdoc index e30fe84..5f8c0e9 100644 --- a/doc/src/declarative/advtutorial4.qdoc +++ b/doc/src/declarative/advtutorial4.qdoc @@ -106,9 +106,9 @@ the block, like so: \snippet declarative/tutorials/samegame/samegame4/content/BoomBlock.qml 3 -To fully understand this you'll want to look at the Particles element documentation, but it's important to note that count is set -to zero. -We next extend the 'dying' state, which triggers the particles by setting the count to non-zero. The code for the states now look +To fully understand this you'll want to look at the Particles element documentation, but it's important to note that emissionRate is set +to zero, so that no particles are emitted normally. +We next extend the 'dying' state, which creates a burst of particles by calling the burst method on the particles element. The code for the states now look like this: \snippet declarative/tutorials/samegame/samegame4/content/BoomBlock.qml 4 diff --git a/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml b/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml index 7ad8b07..4c2ba43 100644 --- a/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml +++ b/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml @@ -31,9 +31,11 @@ Item { id:block //![3] Particles { id: particles - width:1; height:1; anchors.centerIn: parent; opacity: 0 - lifeSpan: 700; lifeSpanDeviation: 600; count:0; streamIn: false - angle: 0; angleDeviation: 360; velocity: 100; velocityDeviation:30 + width:1; height:1; anchors.centerIn: parent; + emissionRate: 0; + lifeSpan: 700; lifeSpanDeviation: 600; + angle: 0; angleDeviation: 360; + velocity: 100; velocityDeviation:30; source: { if(type == 0){ "pics/redStar.png"; @@ -52,10 +54,9 @@ Item { id:block PropertyChanges { target: img; opacity: 1 } }, State{ name: "DeathState"; when: dying == true - PropertyChanges { target: particles; count: 50 } - PropertyChanges { target: particles; opacity: 1 } - PropertyChanges { target: particles; emitting: false } // i.e. emit only once + StateChangeScript { script: particles.burst(50); } PropertyChanges { target: img; opacity: 0 } + StateChangeScript { script: block.destroy(1000); } } ] //![4] diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt index 465ee9e..c85ef77 100644 --- a/src/declarative/QmlChanges.txt +++ b/src/declarative/QmlChanges.txt @@ -82,6 +82,7 @@ Loader: add sourceComponent property Loader: add resizeMode property ListView: preferredHighlightBegin, preferredHighlightEnd ListView: strictlyEnforceHighlightRange +Particles: Added emissionRate, emissionVariance and burst() Deletions: Column/VerticalPositioner: lost "margins" property @@ -92,6 +93,7 @@ Flickable: removed "dragMode" property ComponentInstance: removed. Replaced by Loader.sourceComponent ListView: removed currentItemMode. Replaced by highligh range. ListView: removed snapPos. +Particles: removed streamIn. Replaced by emissionRate Other Changes: ids must be lowercase: Text { id: foo }, not Text { id: Foo } diff --git a/src/declarative/extra/extra.pri b/src/declarative/extra/extra.pri index 9d0e760..a81416d 100644 --- a/src/declarative/extra/extra.pri +++ b/src/declarative/extra/extra.pri @@ -4,7 +4,6 @@ SOURCES += \ extra/qmldatetimeformatter.cpp \ extra/qmlgraphicsintegermodel.cpp \ extra/qmlgraphicsanimatedimageitem.cpp \ - extra/qmlgraphicsparticles.cpp \ extra/qmlbehavior.cpp \ extra/qmlfontloader.cpp @@ -15,7 +14,6 @@ HEADERS += \ extra/qmlgraphicsintegermodel_p.h \ extra/qmlgraphicsanimatedimageitem_p.h \ extra/qmlgraphicsanimatedimageitem_p_p.h \ - extra/qmlgraphicsparticles_p.h \ extra/qmlbehavior_p.h \ extra/qmlfontloader_p.h diff --git a/src/declarative/extra/qmlgraphicsparticles.cpp b/src/declarative/extra/qmlgraphicsparticles.cpp deleted file mode 100644 index 0349a4e..0000000 --- a/src/declarative/extra/qmlgraphicsparticles.cpp +++ /dev/null @@ -1,1134 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtDeclarative module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "private/qmlgraphicsitem_p.h" - -#include -#include -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#define M_PI_2 (M_PI / 2.) -#endif -#ifndef INT_MAX -#define INT_MAX 2147483647 -#endif -#include -#include -#include -#include - -#include "qmlgraphicsparticles_p.h" -#include -#include -#include - -QT_BEGIN_NAMESPACE -#define PI_SQR 9.8696044 -// parabolic approximation -inline qreal fastSin(qreal theta) -{ - const qreal b = 4 / M_PI; - const qreal c = -4 / PI_SQR; - - qreal y = b * theta + c * theta * qAbs(theta); - return y; -} - -inline qreal fastCos(qreal theta) -{ - theta += M_PI_2; - if (theta > M_PI) - theta -= 2 * M_PI; - - return fastSin(theta); -} - -class QmlGraphicsParticle -{ -public: - QmlGraphicsParticle(int time) : lifeSpan(1000), fadeOutAge(800) - , opacity(0), birthTime(time), x_velocity(0), y_velocity(0) - , state(FadeIn), data(0) - { - } - - int lifeSpan; - int fadeOutAge; - qreal x; - qreal y; - qreal opacity; - int birthTime; - qreal x_velocity; - qreal y_velocity; - enum State { FadeIn, Solid, FadeOut }; - State state; - void *data; -}; - -//--------------------------------------------------------------------------- - -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParticleMotion,QmlGraphicsParticleMotion) - -/*! - \class QmlGraphicsParticleMotion - \ingroup group_effects - \brief The QmlGraphicsParticleMotion class is the base class for particle motion. - \internal - - This class causes the particles to remain static. -*/ - -/*! - Constructs a QmlGraphicsParticleMotion with parent object \a parent. -*/ -QmlGraphicsParticleMotion::QmlGraphicsParticleMotion(QObject *parent) : - QObject(parent) -{ -} - -/*! - Move the \a particle to its new position. \a interval is the number of - milliseconds elapsed since it was last moved. -*/ -void QmlGraphicsParticleMotion::advance(QmlGraphicsParticle &particle, int interval) -{ - Q_UNUSED(particle); - Q_UNUSED(interval); -} - -/*! - The \a particle has just been created. Some motion strategies require - additional state information. This can be allocated by this function. -*/ -void QmlGraphicsParticleMotion::created(QmlGraphicsParticle &particle) -{ - Q_UNUSED(particle); -} - -/*! - The \a particle is about to be destroyed. Any additional memory - that has been allocated for the particle should be freed. -*/ -void QmlGraphicsParticleMotion::destroy(QmlGraphicsParticle &particle) -{ - Q_UNUSED(particle); -} - -/*! - \qmlclass ParticleMotionLinear - \brief The ParticleMotionLinear object moves particles linearly. - - \sa Particles -*/ - -/*! - \internal - \class QmlGraphicsParticleMotionLinear - \ingroup group_effects - \brief The QmlGraphicsParticleMotionLinear class moves the particles linearly. -*/ - -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParticleMotionLinear,QmlGraphicsParticleMotionLinear) - -void QmlGraphicsParticleMotionLinear::advance(QmlGraphicsParticle &p, int interval) -{ - p.x += interval * p.x_velocity; - p.y += interval * p.y_velocity; -} - -/*! - \qmlclass ParticleMotionGravity - \brief The ParticleMotionGravity object moves particles towards a point. - - \sa Particles -*/ - -/*! - \internal - \class QmlGraphicsParticleMotionGravity - \ingroup group_effects - \brief The QmlGraphicsParticleMotionGravity class moves the particles towards a point. -*/ - -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParticleMotionGravity,QmlGraphicsParticleMotionGravity) - -/*! - \qmlproperty int ParticleMotionGravity::xattractor - \qmlproperty int ParticleMotionGravity::yattractor - These properties hold the x and y coordinates of the point attracting the particles. -*/ - -/*! - \qmlproperty int ParticleMotionGravity::acceleration - This property holds the acceleration to apply to the particles. -*/ - -/*! - \property QmlGraphicsParticleMotionGravity::xattractor - \brief the x coordinate of the point attracting the particles. -*/ - -/*! - \property QmlGraphicsParticleMotionGravity::yattractor - \brief the y coordinate of the point attracting the particles. -*/ - -/*! - \property QmlGraphicsParticleMotionGravity::acceleration - \brief the acceleration to apply to the particles. -*/ - -void QmlGraphicsParticleMotionGravity::advance(QmlGraphicsParticle &p, int interval) -{ - qreal xdiff = p.x - _xAttr; - qreal ydiff = p.y - _yAttr; - - qreal xcomp = xdiff / (xdiff + ydiff); - qreal ycomp = ydiff / (xdiff + ydiff); - - p.x_velocity += xcomp * _accel * interval; - p.y_velocity += ycomp * _accel * interval; - - p.x += interval * p.x_velocity; - p.y += interval * p.y_velocity; -} - -/*! - \qmlclass ParticleMotionWander - \brief The ParticleMotionWander object moves particles in a somewhat random fashion. - - The particles will continue roughly in the original direction, however will randomly - drift to each side. - - The code below produces an effect similar to falling snow. - - \qml -Rectangle { - width: 240 - height: 320 - color: "black" - - Particles { - y: 0 - width: parent.width - height: 30 - source: "star.png" - lifeSpan: 5000 - count: 50 - angle: 70 - angleDeviation: 36 - velocity: 30 - velocityDeviation: 10 - ParticleMotionWander { - xvariance: 30 - pace: 100 - } - } -} - \endqml - - \sa Particles -*/ - -/*! - \internal - \class QmlGraphicsParticleMotionWander - \ingroup group_effects - \brief The QmlGraphicsParticleMotionWander class moves particles in a somewhat random fashion. - - The particles will continue roughly in the original direction, however will randomly - drift to each side. -*/ - -/*! - \qmlproperty int QmlGraphicsParticleMotionWander::xvariance - \qmlproperty int QmlGraphicsParticleMotionWander::yvariance - - These properties set the amount to wander in the x and y directions. -*/ - -/*! - \qmlproperty int QmlGraphicsParticleMotionWander::pace - This property holds how quickly the paricles will move from side to side. -*/ - -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParticleMotionWander,QmlGraphicsParticleMotionWander) - -void QmlGraphicsParticleMotionWander::advance(QmlGraphicsParticle &p, int interval) -{ - if (!particles) - particles = qobject_cast(parent()); - if (particles) { - Data *d = (Data*)p.data; - if (_xvariance != 0.) { - qreal xdiff = p.x_velocity - d->x_targetV; - if ((xdiff > d->x_peak && d->x_var > 0.0) || (xdiff < -d->x_peak && d->x_var < 0.0)) { - d->x_var = -d->x_var; - d->x_peak = _xvariance + _xvariance * qreal(rand()) / RAND_MAX; - } - p.x_velocity += d->x_var * interval; - } - p.x += interval * p.x_velocity; - - if (_yvariance != 0.) { - qreal ydiff = p.y_velocity - d->y_targetV; - if ((ydiff > d->y_peak && d->y_var > 0.0) || (ydiff < -d->y_peak && d->y_var < 0.0)) { - d->y_var = -d->y_var; - d->y_peak = _yvariance + _yvariance * qreal(rand()) / RAND_MAX; - } - p.y_velocity += d->y_var * interval; - } - p.y += interval * p.y_velocity; - } -} - -void QmlGraphicsParticleMotionWander::created(QmlGraphicsParticle &p) -{ - if (!p.data) { - Data *d = new Data; - p.data = (void*)d; - d->x_targetV = p.x_velocity; - d->y_targetV = p.y_velocity; - d->x_peak = _xvariance; - d->y_peak = _yvariance; - d->x_var = _pace * qreal(rand()) / RAND_MAX / 1000.0; - d->y_var = _pace * qreal(rand()) / RAND_MAX / 1000.0; - } -} - -void QmlGraphicsParticleMotionWander::destroy(QmlGraphicsParticle &p) -{ - if (p.data) - delete (Data*)p.data; -} - -//--------------------------------------------------------------------------- -class QmlGraphicsParticlesPainter : public QmlGraphicsItem -{ -public: - QmlGraphicsParticlesPainter(QmlGraphicsParticlesPrivate *p, QmlGraphicsItem* parent) - : QmlGraphicsItem(parent), d(p) - { - setFlag(QGraphicsItem::ItemHasNoContents, false); - maxX = minX = maxY = minY = 0; - } - - void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); - - void updateSize(); - - qreal maxX; - qreal minX; - qreal maxY; - qreal minY; - QmlGraphicsParticlesPrivate* d; -}; - -//--------------------------------------------------------------------------- -class QmlGraphicsParticlesPrivate : public QmlGraphicsItemPrivate -{ - Q_DECLARE_PUBLIC(QmlGraphicsParticles) -public: - QmlGraphicsParticlesPrivate() - : count(1), lifeSpan(1000), lifeSpanDev(1000), fadeInDur(200), fadeOutDur(300) - , angle(0), angleDev(0), velocity(0), velocityDev(0) - , addParticleTime(0), addParticleCount(0), lastAdvTime(0), stream(false), streamDelay(0) - , emitting(true), motion(0), pendingPixmapCache(false), clock(this) - { - } - - ~QmlGraphicsParticlesPrivate() - { - } - - void init() - { - Q_Q(QmlGraphicsParticles); - paintItem = new QmlGraphicsParticlesPainter(this, q); - } - - void tick(int time); - void createParticle(int time); - void updateOpacity(QmlGraphicsParticle &p, int age); - - QUrl url; - QPixmap image; - int count; - int lifeSpan; - int lifeSpanDev; - int fadeInDur; - int fadeOutDur; - qreal angle; - qreal angleDev; - qreal velocity; - qreal velocityDev; - int addParticleTime; - int addParticleCount; - int lastAdvTime; - bool stream; - int streamDelay; - bool emitting; - QmlGraphicsParticleMotion *motion; - QmlGraphicsParticlesPainter *paintItem; - - bool pendingPixmapCache; - - QList particles; - QTickAnimationProxy clock; - -}; - -void QmlGraphicsParticlesPrivate::tick(int time) -{ - Q_Q(QmlGraphicsParticles); - if (!motion) - motion = new QmlGraphicsParticleMotionLinear(q); - - int oldCount = particles.count(); - int removed = 0; - int interval = time - lastAdvTime; - for (int i = 0; i < particles.count(); ) { - QmlGraphicsParticle &particle = particles[i]; - int age = time - particle.birthTime; - if (age >= particle.lifeSpan) { - QmlGraphicsParticle part = particles.takeAt(i); - motion->destroy(part); - ++removed; - } else { - updateOpacity(particle, age); - motion->advance(particle, interval); - ++i; - } - } - - while(removed-- && particles.count() < count && emitting) - createParticle(time); - - if (!addParticleTime) - addParticleTime = time; - - if (particles.count() < count && emitting) { - qreal perc = (lifeSpanDev <= 0)?(1.):(qreal(time - addParticleTime) / qreal(lifeSpanDev)); - int percCount = addParticleCount + (int)perc * (count - addParticleCount); - int streamWidth = -1; - if (stream){ - if (streamDelay > time){ - streamWidth = 0; - }else{ - int missed = time - streamDelay; - qreal streamWidthReal = qreal(count)/qreal(lifeSpan); - if (streamWidthReal < 1){ - streamDelay = time + (int)(1.0/streamWidthReal); - streamWidth = 1; - streamWidth += missed/streamDelay; - }else{ - streamWidth = qRound(streamWidthReal * (time-lastAdvTime)); - } - } - } - while(particles.count() < count && - (!stream || (particles.count() < percCount && streamWidth--))) - createParticle(time); - } - - lastAdvTime = time; - paintItem->updateSize(); - paintItem->update(); - if (!(oldCount || particles.count()) && (!count || !emitting)) { - lastAdvTime = 0; - clock.stop(); - } -} - -void QmlGraphicsParticlesPrivate::createParticle(int time) -{ -#ifdef Q_ENABLE_PERFORMANCE_LOG - QmlPerfTimer x; -#endif - Q_Q(QmlGraphicsParticles); - QmlGraphicsParticle p(time); - p.x = q->x() + q->width() * qreal(rand()) / RAND_MAX - image.width()/2.0; - p.y = q->y() + q->height() * qreal(rand()) / RAND_MAX - image.height()/2.0; - p.lifeSpan = lifeSpan; - if (lifeSpanDev) - p.lifeSpan += int(lifeSpanDev/2 - lifeSpanDev * qreal(rand()) / RAND_MAX); - p.fadeOutAge = p.lifeSpan - fadeOutDur; - if (fadeInDur == 0.) { - p.state= QmlGraphicsParticle::Solid; - p.opacity = 1.0; - } - qreal a = angle; - if (angleDev) - a += angleDev/2 - angleDev * qreal(rand()) / RAND_MAX; - if (a > M_PI) - a = a - 2 * M_PI; - qreal v = velocity; - if (velocityDev) - v += velocityDev/2 - velocityDev * qreal(rand()) / RAND_MAX; - p.x_velocity = v * fastCos(a); - p.y_velocity = v * fastSin(a); - particles.append(p); - motion->created(particles.last()); -} - -void QmlGraphicsParticlesPrivate::updateOpacity(QmlGraphicsParticle &p, int age) -{ - switch (p.state) { - case QmlGraphicsParticle::FadeIn: - if (age <= fadeInDur) { - p.opacity = qreal(age) / fadeInDur; - break; - } else { - p.opacity = 1.0; - p.state = QmlGraphicsParticle::Solid; - // Fall through - } - case QmlGraphicsParticle::Solid: - if (age <= p.fadeOutAge) { - break; - } else { - p.state = QmlGraphicsParticle::FadeOut; - // Fall through - } - case QmlGraphicsParticle::FadeOut: - p.opacity = qreal(p.lifeSpan - age) / fadeOutDur; - break; - } -} - -QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Particles,QmlGraphicsParticles) - -/*! - \qmlclass Particles - \brief The Particles object generates and moves particles. - \inherits Item - - The particles created by this object cannot be dealt with directly, they can only be controlled through the parameters of the Particles object. The particles are all the same pixmap, specified by the user. - - The particles are painted relative to the parent of the Particles object. Moving the - Particles object will not move the particles already emitted. - - The below example creates two differently behaving particle sources. - The top one has particles falling from the top like snow, - the lower one has particles expelled up like a fountain. - - \qml -Rectangle { - width: 240 - height: 320 - color: "black" - Particles { - y: 0 - width: parent.width - height: 30 - source: "star.png" - lifeSpan: 5000 - count: 50 - angle: 70 - angleDeviation: 36 - velocity: 30 - velocityDeviation: 10 - ParticleMotionWander { - xvariance: 30 - pace: 100 - } - } - Particles { - y: 300 - x: 120 - width: 1 - height: 1 - source: "star.png" - lifeSpan: 5000 - count: 200 - angle: 270 - angleDeviation: 45 - velocity: 50 - velocityDeviation: 30 - ParticleMotionGravity { - yattractor: 1000 - xattractor: 0 - acceleration: 25 - } - } -} - \endqml - \image particles.gif -*/ - -/*! - \internal - \class QmlGraphicsParticles - \ingroup group_effects - \brief The QmlGraphicsParticles class generates and moves particles. -*/ - -QmlGraphicsParticles::QmlGraphicsParticles(QmlGraphicsItem *parent) - : QmlGraphicsItem(*(new QmlGraphicsParticlesPrivate), parent) -{ - Q_D(QmlGraphicsParticles); - d->init(); -} - -QmlGraphicsParticles::QmlGraphicsParticles(QmlGraphicsParticlesPrivate &dd, QmlGraphicsItem *parent) - : QmlGraphicsItem(dd, parent) -{ - Q_D(QmlGraphicsParticles); - d->init(); -} - -QmlGraphicsParticles::~QmlGraphicsParticles() -{ - Q_D(QmlGraphicsParticles); - if (d->pendingPixmapCache) - QmlPixmapCache::cancelGet(d->url, this); -} - -/*! - \qmlproperty string Particles::src - This property holds the URL of the particle image. -*/ - -/*! - \property QmlGraphicsParticles::source - \brief the URL of the particle image. -*/ -QUrl QmlGraphicsParticles::source() const -{ - Q_D(const QmlGraphicsParticles); - return d->url; -} - -void QmlGraphicsParticles::imageLoaded() -{ - Q_D(QmlGraphicsParticles); - d->pendingPixmapCache = false; - QmlPixmapCache::find(d->url, &d->image); - d->paintItem->updateSize(); - d->paintItem->update(); -} - -void QmlGraphicsParticles::setSource(const QUrl &name) -{ - Q_D(QmlGraphicsParticles); - - if ((d->url.isEmpty() == name.isEmpty()) && name == d->url) - return; - - if (d->pendingPixmapCache) { - QmlPixmapCache::cancelGet(d->url, this); - d->pendingPixmapCache = false; - } - if (name.isEmpty()) { - d->url = name; - d->image = QPixmap(); - d->paintItem->updateSize(); - d->paintItem->update(); - } else { - d->url = name; - Q_ASSERT(!name.isRelative()); - QNetworkReply *reply = QmlPixmapCache::get(qmlEngine(this), d->url, &d->image); - if (reply) { - connect(reply, SIGNAL(finished()), this, SLOT(imageLoaded())); - d->pendingPixmapCache = true; - } else { - //### unify with imageLoaded - d->paintItem->updateSize(); - d->paintItem->update(); - } - } -} - -/*! - \qmlproperty int Particles::count - This property holds the target number of particles -*/ - -/*! - \property QmlGraphicsParticles::count - \brief the target number of particles -*/ -int QmlGraphicsParticles::count() const -{ - Q_D(const QmlGraphicsParticles); - return d->count; -} - -void QmlGraphicsParticles::setCount(int cnt) -{ - Q_D(QmlGraphicsParticles); - if (cnt == d->count) - return; - - int oldCount = d->count; - d->count = cnt; - d->addParticleTime = 0; - d->addParticleCount = d->particles.count(); - if (!oldCount && d->clock.state() != QAbstractAnimation::Running && d->count) { - d->clock.start(); - } - d->paintItem->updateSize(); - d->paintItem->update(); -} - -/*! - \qmlproperty int Particles::lifeSpan - \qmlproperty int Particles::lifeSpanDeviation - - These properties describe the life span of each particle. - - The default lifespan for a particle is 1000ms. - - lifeSpanDeviation randomly varies the lifeSpan up to the specified variation. For - example, the following creates particles whose lifeSpan will vary - from 150ms to 250ms: - - \qml -Particles { - source: "star.png" - lifeSpan: 200 - lifeSpanDeviation: 100 -} - \endqml -*/ - -/*! - \property QmlGraphicsParticles::lifeSpan - \brief the life span of each particle. - - Default value is 1000ms. - - \sa QmlGraphicsParticles::lifeSpanDeviation -*/ -int QmlGraphicsParticles::lifeSpan() const -{ - Q_D(const QmlGraphicsParticles); - return d->lifeSpan; -} - -void QmlGraphicsParticles::setLifeSpan(int ls) -{ - Q_D(QmlGraphicsParticles); - d->lifeSpan = ls; -} - -/*! - \property QmlGraphicsParticles::lifeSpanDeviation - \brief the maximum possible deviation from the set lifeSpan. - - Randomly varies the lifeSpan up to the specified variation. For - example, the following creates particles whose lifeSpan will vary - from 150ms to 250ms: - -\qml -Particles { - source: "star.png" - lifeSpan: 200 - lifeSpanDeviation: 100 -} -\endqml - - \sa QmlGraphicsParticles::lifeSpan -*/ -int QmlGraphicsParticles::lifeSpanDeviation() const -{ - Q_D(const QmlGraphicsParticles); - return d->lifeSpanDev; -} - -void QmlGraphicsParticles::setLifeSpanDeviation(int dev) -{ - Q_D(QmlGraphicsParticles); - d->lifeSpanDev = dev; -} - -/*! - \qmlproperty int Particles::fadeInDuration - \qmlproperty int Particles::fadeOutDuration - These properties hold the time taken to fade the particles in and out. - - By default fade in is 200ms and fade out is 300ms. -*/ - -/*! - \property QmlGraphicsParticles::fadeInDuration - \brief the time taken to fade in the particles. - - Default value is 200ms. -*/ -int QmlGraphicsParticles::fadeInDuration() const -{ - Q_D(const QmlGraphicsParticles); - return d->fadeInDur; -} - -void QmlGraphicsParticles::setFadeInDuration(int dur) -{ - Q_D(QmlGraphicsParticles); - if (dur >= 0.0) - d->fadeInDur = dur; -} - -/*! - \property QmlGraphicsParticles::fadeOutDuration - \brief the time taken to fade out the particles. - - Default value is 300ms. -*/ -int QmlGraphicsParticles::fadeOutDuration() const -{ - Q_D(const QmlGraphicsParticles); - return d->fadeOutDur; -} - -void QmlGraphicsParticles::setFadeOutDuration(int dur) -{ - Q_D(QmlGraphicsParticles); - if (dur >= 0.0) - d->fadeOutDur = dur; -} - -/*! - \qmlproperty real Particles::angle - \qmlproperty real Particles::angleDeviation - - These properties control particle direction. - - angleDeviation randomly varies the direction up to the specified variation. For - example, the following creates particles whose initial direction will - vary from 15 degrees to 105 degrees: - - \qml -Particles { - source: "star.png" - angle: 60 - angleDeviation: 90 -} - \endqml -*/ - -/*! - \property QmlGraphicsParticles::angle - \brief the initial angle of direction. - - \sa QmlGraphicsParticles::angleDeviation -*/ -qreal QmlGraphicsParticles::angle() const -{ - Q_D(const QmlGraphicsParticles); - return d->angle * 180.0 / M_PI; -} - -void QmlGraphicsParticles::setAngle(qreal angle) -{ - Q_D(QmlGraphicsParticles); - d->angle = angle * M_PI / 180.0; -} - -/*! - \property QmlGraphicsParticles::angleDeviation - \brief the maximum possible deviation from the set angle. - - Randomly varies the direction up to the specified variation. For - example, the following creates particles whose initial direction will - vary from 15 degrees to 105 degrees: - -\qml -Particles { - source: "star.png" - angle: 60 - angleDeviation: 90 -} -\endqml - - \sa QmlGraphicsParticles::angle -*/ -qreal QmlGraphicsParticles::angleDeviation() const -{ - Q_D(const QmlGraphicsParticles); - return d->angleDev * 180.0 / M_PI; -} - -void QmlGraphicsParticles::setAngleDeviation(qreal dev) -{ - Q_D(QmlGraphicsParticles); - d->angleDev = dev * M_PI / 180.0;; -} - -/*! - \qmlproperty real Particles::velocity - \qmlproperty real Particles::velocityDeviation - - These properties control the velocity of the particles. - - velocityDeviation randomly varies the velocity up to the specified variation. For - example, the following creates particles whose initial velocity will - vary from 40 to 60. - - \qml -Particles { - source: "star.png" - velocity: 50 - velocityDeviation: 20 -} - \endqml -*/ - -/*! - \property QmlGraphicsParticles::velocity - \brief the initial velocity of the particles. - - \sa QmlGraphicsParticles::velocityDeviation -*/ -qreal QmlGraphicsParticles::velocity() const -{ - Q_D(const QmlGraphicsParticles); - return d->velocity * 1000.0; -} - -void QmlGraphicsParticles::setVelocity(qreal velocity) -{ - Q_D(QmlGraphicsParticles); - d->velocity = velocity / 1000.0; -} - -/*! - \property QmlGraphicsParticles::velocityDeviation - \brief the maximum possible deviation from the set velocity. - - Randomly varies the velocity up to the specified variation. For - example, the following creates particles whose initial velocity will - vary from 40 to 60. - -\qml -Particles { - source: "star.png" - velocity: 50 - velocityDeviation: 20 -} -\endqml - - \sa QmlGraphicsParticles::velocity -*/ -qreal QmlGraphicsParticles::velocityDeviation() const -{ - Q_D(const QmlGraphicsParticles); - return d->velocityDev * 1000.0; -} - -void QmlGraphicsParticles::setVelocityDeviation(qreal velocity) -{ - Q_D(QmlGraphicsParticles); - d->velocityDev = velocity / 1000.0; -} - -/*! - \qmlproperty bool Particles::streamIn - This property determines whether the particles stream in at a constant rate - - When stream is set to true the particles will stream in at a constant rate. - Otherwise the particles will appear as a clump. Note that this only affects the - start of the particle effect, variables such as lifespan deviation can cause the - particles to unclump over time. -*/ -/*! - \property QmlGraphicsParticles::streamIn - \brief determines whether the particles stream in at a constant rate - - When stream is set to true the particles will stream in at a constant rate. - Otherwise the particles will appear as a clump. Note that this only affects the - start of the particle effect, variables such as lifespan deviation can cause the - -*/ -//The name may need a rethink -bool QmlGraphicsParticles::streamIn() const -{ - Q_D(const QmlGraphicsParticles); - return d->stream; -} - -void QmlGraphicsParticles::setStreamIn(bool b) -{ - Q_D(QmlGraphicsParticles); - d->stream = b; -} - -/*! - \qmlproperty bool Particles::emitting - This property determines whether new particles are created - - If emitting is set to false no new particles will be created. This means that - when a particle reaches the end of its lifespan it is not replaced. This - property can be used to turn particles on and off with a more natural look. - - The default setting is true. Note that if it initialized to false no particles - will be produced until it is set to true. -*/ -/*! - \property QmlGraphicsParticles::emitting - If emitting is set to false no new particles will be created. This means that - when a particle reaches the end of its lifespan it is not replaced. This - property can be used to turn particles on and off with a more natural look. - - The default setting is true. Note that if it initialized to false no particles - will be produced until it is set to true. -*/ -bool QmlGraphicsParticles::emitting() const -{ - Q_D(const QmlGraphicsParticles); - return d->emitting; -} - -void QmlGraphicsParticles::setEmitting(bool r) -{ - Q_D(QmlGraphicsParticles); - d->emitting = r; - if (d->count && r) - d->clock.start(); -} -/*! - \qmlproperty ParticleMotion Particles::motion - This property sets the type of motion to apply to the particles. - - When a particle is created it will have an initial direction and velocity. - The motion of the particle during its lifeSpan is then influenced by the - motion property. - - Default motion is ParticleMotionLinear. -*/ - -/*! - \property QmlGraphicsParticles::motion - \brief sets the type of motion to apply to the particles. - - When a particle is created it will have an initial direction and velocity. - The motion of the particle during its lifeSpan is then influenced by the - motion property. - - Default motion is QmlGraphicsParticleMotionLinear. -*/ -QmlGraphicsParticleMotion *QmlGraphicsParticles::motion() const -{ - Q_D(const QmlGraphicsParticles); - return d->motion; -} - -void QmlGraphicsParticles::setMotion(QmlGraphicsParticleMotion *motion) -{ - Q_D(QmlGraphicsParticles); - d->motion = motion; -} - -void QmlGraphicsParticlesPainter::updateSize() -{ - if (!isComponentComplete()) - return; - - const int parentX = parentItem()->x(); - const int parentY = parentItem()->y(); - for (int i = 0; i < d->particles.count(); ++i) { - const QmlGraphicsParticle &particle = d->particles.at(i); - if(particle.x > maxX) - maxX = particle.x; - if(particle.x < minX) - minX = particle.x; - if(particle.y > maxY) - maxY = particle.y; - if(particle.y < minY) - minY = particle.y; - } - - int myWidth = (int)(maxX-minX+0.5)+d->image.width(); - int myX = (int)(minX - parentX); - int myHeight = (int)(maxY-minY+0.5)+d->image.height(); - int myY = (int)(minY - parentY); - setWidth(myWidth); - setHeight(myHeight); - setX(myX); - setY(myY); -} - -void QmlGraphicsParticles::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *) -{ - Q_UNUSED(p); - //painting is done by the ParticlesPainter, so it can have the right size -} - -void QmlGraphicsParticlesPainter::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *) -{ - if (d->image.isNull() || d->particles.isEmpty()) - return; - - const int myX = x() + parentItem()->x(); - const int myY = y() + parentItem()->y(); - - static QVarLengthArray pixmapData; - if (pixmapData.count() < d->particles.count()) - pixmapData.resize(d->particles.count()); - - const QRectF sourceRect = d->image.rect(); - for (int i = 0; i < d->particles.count(); ++i) { - const QmlGraphicsParticle &particle = d->particles.at(i); - pixmapData[i].point = QPointF(particle.x - myX, particle.y - myY); - pixmapData[i].opacity = particle.opacity; - - //these never change - pixmapData[i].rotation = 0; - pixmapData[i].scaleX = 1; - pixmapData[i].scaleY = 1; - pixmapData[i].source = sourceRect; - } - qDrawPixmaps(p, pixmapData.data(), d->particles.count(), d->image); -} - -void QmlGraphicsParticles::componentComplete() -{ - Q_D(QmlGraphicsParticles); - QmlGraphicsItem::componentComplete(); - if (d->count) { - d->paintItem->updateSize(); - d->clock.start(); - } - if (d->lifeSpanDev > d->lifeSpan) - d->lifeSpanDev = d->lifeSpan; -} - -QT_END_NAMESPACE diff --git a/src/declarative/extra/qmlgraphicsparticles_p.h b/src/declarative/extra/qmlgraphicsparticles_p.h deleted file mode 100644 index 9eca762..0000000 --- a/src/declarative/extra/qmlgraphicsparticles_p.h +++ /dev/null @@ -1,230 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtDeclarative module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QMLGRAPHICSPARTICLES_H -#define QMLGRAPHICSPARTICLES_H - -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -class QmlGraphicsParticle; -class QmlGraphicsParticles; -class Q_DECLARATIVE_EXPORT QmlGraphicsParticleMotion : public QObject -{ - Q_OBJECT -public: - QmlGraphicsParticleMotion(QObject *parent=0); - - virtual void advance(QmlGraphicsParticle &, int interval); - virtual void created(QmlGraphicsParticle &); - virtual void destroy(QmlGraphicsParticle &); -}; - -class Q_DECLARATIVE_EXPORT QmlGraphicsParticleMotionLinear : public QmlGraphicsParticleMotion -{ - Q_OBJECT -public: - QmlGraphicsParticleMotionLinear(QObject *parent=0) - : QmlGraphicsParticleMotion(parent) {} - - virtual void advance(QmlGraphicsParticle &, int interval); -}; - -class Q_DECLARATIVE_EXPORT QmlGraphicsParticleMotionGravity : public QmlGraphicsParticleMotion -{ - Q_OBJECT - - Q_PROPERTY(int xattractor READ xAttractor WRITE setXAttractor) - Q_PROPERTY(int yattractor READ yAttractor WRITE setYAttractor) - Q_PROPERTY(int acceleration READ acceleration WRITE setAcceleration) -public: - QmlGraphicsParticleMotionGravity(QObject *parent=0) - : QmlGraphicsParticleMotion(parent), _xAttr(0), _yAttr(0), _accel(0.00005) {} - - int xAttractor() const { return _xAttr; } - void setXAttractor(int x) { _xAttr = x; } - - int yAttractor() const { return _yAttr; } - void setYAttractor(int y) { _yAttr = y; } - - int acceleration() const { return int(_accel * 1000000); } - void setAcceleration(int accel) { _accel = qreal(accel)/1000000.0; } - - virtual void advance(QmlGraphicsParticle &, int interval); - -private: - int _xAttr; - int _yAttr; - qreal _accel; -}; - -class Q_DECLARATIVE_EXPORT QmlGraphicsParticleMotionWander : public QmlGraphicsParticleMotion -{ - Q_OBJECT -public: - QmlGraphicsParticleMotionWander() - : QmlGraphicsParticleMotion(), particles(0), _xvariance(0), _yvariance(0) {} - - virtual void advance(QmlGraphicsParticle &, int interval); - virtual void created(QmlGraphicsParticle &); - virtual void destroy(QmlGraphicsParticle &); - - struct Data { - qreal x_targetV; - qreal y_targetV; - qreal x_peak; - qreal y_peak; - qreal x_var; - qreal y_var; - }; - - Q_PROPERTY(int xvariance READ xVariance WRITE setXVariance) - int xVariance() const { return int(_xvariance * 1000); } - void setXVariance(int var) { _xvariance = var / 1000.0; } - - Q_PROPERTY(int yvariance READ yVariance WRITE setYVariance) - int yVariance() const { return int(_yvariance * 1000); } - void setYVariance(int var) { _yvariance = var / 1000.0; } - - Q_PROPERTY(int pace READ pace WRITE setPace) - int pace() const { return int(_pace * 1000); } - void setPace(int pace) { _pace = pace / 1000.0; } - -private: - QmlGraphicsParticles *particles; - qreal _xvariance; - qreal _yvariance; - qreal _pace; -}; - -class QmlGraphicsParticlesPrivate; -class Q_DECLARATIVE_EXPORT QmlGraphicsParticles : public QmlGraphicsItem -{ - Q_OBJECT - - Q_PROPERTY(QUrl source READ source WRITE setSource) - Q_PROPERTY(int count READ count WRITE setCount) - Q_PROPERTY(int lifeSpan READ lifeSpan WRITE setLifeSpan) - Q_PROPERTY(int lifeSpanDeviation READ lifeSpanDeviation WRITE setLifeSpanDeviation) - Q_PROPERTY(int fadeInDuration READ fadeInDuration WRITE setFadeInDuration) - Q_PROPERTY(int fadeOutDuration READ fadeOutDuration WRITE setFadeOutDuration) - Q_PROPERTY(qreal angle READ angle WRITE setAngle) - Q_PROPERTY(qreal angleDeviation READ angleDeviation WRITE setAngleDeviation) - Q_PROPERTY(qreal velocity READ velocity WRITE setVelocity) - Q_PROPERTY(qreal velocityDeviation READ velocityDeviation WRITE setVelocityDeviation) - Q_PROPERTY(bool streamIn READ streamIn WRITE setStreamIn) - Q_PROPERTY(bool emitting READ emitting WRITE setEmitting) - Q_PROPERTY(QmlGraphicsParticleMotion *motion READ motion WRITE setMotion) - Q_CLASSINFO("DefaultProperty", "motion") - -public: - QmlGraphicsParticles(QmlGraphicsItem *parent=0); - ~QmlGraphicsParticles(); - - QUrl source() const; - void setSource(const QUrl &); - - int count() const; - void setCount(int cnt); - - int lifeSpan() const; - void setLifeSpan(int); - - int lifeSpanDeviation() const; - void setLifeSpanDeviation(int); - - int fadeInDuration() const; - void setFadeInDuration(int); - - int fadeOutDuration() const; - void setFadeOutDuration(int); - - qreal angle() const; - void setAngle(qreal); - - qreal angleDeviation() const; - void setAngleDeviation(qreal); - - qreal velocity() const; - void setVelocity(qreal); - - qreal velocityDeviation() const; - void setVelocityDeviation(qreal); - - bool streamIn() const; - void setStreamIn(bool); - - bool emitting() const; - void setEmitting(bool); - - QmlGraphicsParticleMotion *motion() const; - void setMotion(QmlGraphicsParticleMotion *); - - void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); - -protected: - virtual void componentComplete(); - QmlGraphicsParticles(QmlGraphicsParticlesPrivate &dd, QmlGraphicsItem *parent); - -private Q_SLOTS: - void imageLoaded(); - -private: - Q_DISABLE_COPY(QmlGraphicsParticles) - Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QmlGraphicsParticles) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QmlGraphicsParticleMotion) -QML_DECLARE_TYPE(QmlGraphicsParticleMotionLinear) -QML_DECLARE_TYPE(QmlGraphicsParticleMotionGravity) -QML_DECLARE_TYPE(QmlGraphicsParticleMotionWander) -QML_DECLARE_TYPE(QmlGraphicsParticles) - -QT_END_HEADER - -#endif diff --git a/src/declarative/graphicsitems/graphicsitems.pri b/src/declarative/graphicsitems/graphicsitems.pri index cf71451..3c4e39a 100644 --- a/src/declarative/graphicsitems/graphicsitems.pri +++ b/src/declarative/graphicsitems/graphicsitems.pri @@ -42,6 +42,7 @@ HEADERS += \ graphicsitems/qmlgraphicsvisualitemmodel_p.h \ graphicsitems/qmlgraphicslistview_p.h \ graphicsitems/qmlgraphicsgraphicsobjectcontainer_p.h \ + graphicsitems/qmlgraphicsparticles_p.h \ graphicsitems/qmlgraphicslayoutitem_p.h \ graphicsitems/qmlgraphicseffects.cpp @@ -72,6 +73,7 @@ SOURCES += \ graphicsitems/qmlgraphicsvisualitemmodel.cpp \ graphicsitems/qmlgraphicslistview.cpp \ graphicsitems/qmlgraphicsgraphicsobjectcontainer.cpp \ + graphicsitems/qmlgraphicsparticles.cpp \ graphicsitems/qmlgraphicslayoutitem.cpp \ contains(QT_CONFIG, webkit) { diff --git a/src/declarative/graphicsitems/qmlgraphicsparticles.cpp b/src/declarative/graphicsitems/qmlgraphicsparticles.cpp new file mode 100644 index 0000000..d906fd3 --- /dev/null +++ b/src/declarative/graphicsitems/qmlgraphicsparticles.cpp @@ -0,0 +1,1278 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "private/qmlgraphicsitem_p.h" + +#include +#include +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#define M_PI_2 (M_PI / 2.) +#endif +#ifndef INT_MAX +#define INT_MAX 2147483647 +#endif +#include +#include +#include +#include + +#include "qmlgraphicsparticles_p.h" +#include +#include +#include + +QT_BEGIN_NAMESPACE +#define PI_SQR 9.8696044 +// parabolic approximation +inline qreal fastSin(qreal theta) +{ + const qreal b = 4 / M_PI; + const qreal c = -4 / PI_SQR; + + qreal y = b * theta + c * theta * qAbs(theta); + return y; +} + +inline qreal fastCos(qreal theta) +{ + theta += M_PI_2; + if (theta > M_PI) + theta -= 2 * M_PI; + + return fastSin(theta); +} + +class QmlGraphicsParticle +{ +public: + QmlGraphicsParticle(int time) : lifeSpan(1000), fadeOutAge(800) + , opacity(0), birthTime(time), x_velocity(0), y_velocity(0) + , state(FadeIn), data(0) + { + } + + int lifeSpan; + int fadeOutAge; + qreal x; + qreal y; + qreal opacity; + int birthTime; + qreal x_velocity; + qreal y_velocity; + enum State { FadeIn, Solid, FadeOut }; + State state; + void *data; +}; + +//--------------------------------------------------------------------------- + +QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParticleMotion,QmlGraphicsParticleMotion) + +/*! + \class QmlGraphicsParticleMotion + \ingroup group_effects + \brief The QmlGraphicsParticleMotion class is the base class for particle motion. + \internal + + This class causes the particles to remain static. +*/ + +/*! + Constructs a QmlGraphicsParticleMotion with parent object \a parent. +*/ +QmlGraphicsParticleMotion::QmlGraphicsParticleMotion(QObject *parent) : + QObject(parent) +{ +} + +/*! + Move the \a particle to its new position. \a interval is the number of + milliseconds elapsed since it was last moved. +*/ +void QmlGraphicsParticleMotion::advance(QmlGraphicsParticle &particle, int interval) +{ + Q_UNUSED(particle); + Q_UNUSED(interval); +} + +/*! + The \a particle has just been created. Some motion strategies require + additional state information. This can be allocated by this function. +*/ +void QmlGraphicsParticleMotion::created(QmlGraphicsParticle &particle) +{ + Q_UNUSED(particle); +} + +/*! + The \a particle is about to be destroyed. Any additional memory + that has been allocated for the particle should be freed. +*/ +void QmlGraphicsParticleMotion::destroy(QmlGraphicsParticle &particle) +{ + Q_UNUSED(particle); +} + +/*! + \qmlclass ParticleMotionLinear + \brief The ParticleMotionLinear object moves particles linearly. + + \sa Particles +*/ + +/*! + \internal + \class QmlGraphicsParticleMotionLinear + \ingroup group_effects + \brief The QmlGraphicsParticleMotionLinear class moves the particles linearly. +*/ + +QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParticleMotionLinear,QmlGraphicsParticleMotionLinear) + +void QmlGraphicsParticleMotionLinear::advance(QmlGraphicsParticle &p, int interval) +{ + p.x += interval * p.x_velocity; + p.y += interval * p.y_velocity; +} + +/*! + \qmlclass ParticleMotionGravity + \brief The ParticleMotionGravity object moves particles towards a point. + + \sa Particles +*/ + +/*! + \internal + \class QmlGraphicsParticleMotionGravity + \ingroup group_effects + \brief The QmlGraphicsParticleMotionGravity class moves the particles towards a point. +*/ + +QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParticleMotionGravity,QmlGraphicsParticleMotionGravity) + +/*! + \qmlproperty int ParticleMotionGravity::xattractor + \qmlproperty int ParticleMotionGravity::yattractor + These properties hold the x and y coordinates of the point attracting the particles. +*/ + +/*! + \qmlproperty int ParticleMotionGravity::acceleration + This property holds the acceleration to apply to the particles. +*/ + +/*! + \property QmlGraphicsParticleMotionGravity::xattractor + \brief the x coordinate of the point attracting the particles. +*/ + +/*! + \property QmlGraphicsParticleMotionGravity::yattractor + \brief the y coordinate of the point attracting the particles. +*/ + +/*! + \property QmlGraphicsParticleMotionGravity::acceleration + \brief the acceleration to apply to the particles. +*/ + +void QmlGraphicsParticleMotionGravity::advance(QmlGraphicsParticle &p, int interval) +{ + qreal xdiff = p.x - _xAttr; + qreal ydiff = p.y - _yAttr; + + qreal xcomp = xdiff / (xdiff + ydiff); + qreal ycomp = ydiff / (xdiff + ydiff); + + p.x_velocity += xcomp * _accel * interval; + p.y_velocity += ycomp * _accel * interval; + + p.x += interval * p.x_velocity; + p.y += interval * p.y_velocity; +} + +/*! + \qmlclass ParticleMotionWander + \brief The ParticleMotionWander object moves particles in a somewhat random fashion. + + The particles will continue roughly in the original direction, however will randomly + drift to each side. + + The code below produces an effect similar to falling snow. + + \qml +Rectangle { + width: 240 + height: 320 + color: "black" + + Particles { + y: 0 + width: parent.width + height: 30 + source: "star.png" + lifeSpan: 5000 + count: 50 + angle: 70 + angleDeviation: 36 + velocity: 30 + velocityDeviation: 10 + ParticleMotionWander { + xvariance: 30 + pace: 100 + } + } +} + \endqml + + \sa Particles +*/ + +/*! + \internal + \class QmlGraphicsParticleMotionWander + \ingroup group_effects + \brief The QmlGraphicsParticleMotionWander class moves particles in a somewhat random fashion. + + The particles will continue roughly in the original direction, however will randomly + drift to each side. +*/ + +/*! + \qmlproperty int QmlGraphicsParticleMotionWander::xvariance + \qmlproperty int QmlGraphicsParticleMotionWander::yvariance + + These properties set the amount to wander in the x and y directions. +*/ + +/*! + \qmlproperty int QmlGraphicsParticleMotionWander::pace + This property holds how quickly the paricles will move from side to side. +*/ + +QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,ParticleMotionWander,QmlGraphicsParticleMotionWander) + +void QmlGraphicsParticleMotionWander::advance(QmlGraphicsParticle &p, int interval) +{ + if (!particles) + particles = qobject_cast(parent()); + if (particles) { + Data *d = (Data*)p.data; + if (_xvariance != 0.) { + qreal xdiff = p.x_velocity - d->x_targetV; + if ((xdiff > d->x_peak && d->x_var > 0.0) || (xdiff < -d->x_peak && d->x_var < 0.0)) { + d->x_var = -d->x_var; + d->x_peak = _xvariance + _xvariance * qreal(rand()) / RAND_MAX; + } + p.x_velocity += d->x_var * interval; + } + p.x += interval * p.x_velocity; + + if (_yvariance != 0.) { + qreal ydiff = p.y_velocity - d->y_targetV; + if ((ydiff > d->y_peak && d->y_var > 0.0) || (ydiff < -d->y_peak && d->y_var < 0.0)) { + d->y_var = -d->y_var; + d->y_peak = _yvariance + _yvariance * qreal(rand()) / RAND_MAX; + } + p.y_velocity += d->y_var * interval; + } + p.y += interval * p.y_velocity; + } +} + +void QmlGraphicsParticleMotionWander::created(QmlGraphicsParticle &p) +{ + if (!p.data) { + Data *d = new Data; + p.data = (void*)d; + d->x_targetV = p.x_velocity; + d->y_targetV = p.y_velocity; + d->x_peak = _xvariance; + d->y_peak = _yvariance; + d->x_var = _pace * qreal(rand()) / RAND_MAX / 1000.0; + d->y_var = _pace * qreal(rand()) / RAND_MAX / 1000.0; + } +} + +void QmlGraphicsParticleMotionWander::destroy(QmlGraphicsParticle &p) +{ + if (p.data) + delete (Data*)p.data; +} + +//--------------------------------------------------------------------------- +class QmlGraphicsParticlesPainter : public QmlGraphicsItem +{ +public: + QmlGraphicsParticlesPainter(QmlGraphicsParticlesPrivate *p, QmlGraphicsItem* parent) + : QmlGraphicsItem(parent), d(p) + { + setFlag(QGraphicsItem::ItemHasNoContents, false); + maxX = minX = maxY = minY = 0; + } + + void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); + + void updateSize(); + + qreal maxX; + qreal minX; + qreal maxY; + qreal minY; + QmlGraphicsParticlesPrivate* d; +}; + +//--------------------------------------------------------------------------- +class QmlGraphicsParticlesPrivate : public QmlGraphicsItemPrivate +{ + Q_DECLARE_PUBLIC(QmlGraphicsParticles) +public: + QmlGraphicsParticlesPrivate() + : count(1), emissionRate(-1), emissionVariance(0.5), lifeSpan(1000) + , lifeSpanDev(1000), fadeInDur(200), fadeOutDur(300) + , angle(0), angleDev(0), velocity(0), velocityDev(0), emissionCarry(0.) + , addParticleTime(0), addParticleCount(0), lastAdvTime(0) + , emitting(true), motion(0), pendingPixmapCache(false), clock(this) + { + } + + ~QmlGraphicsParticlesPrivate() + { + } + + void init() + { + Q_Q(QmlGraphicsParticles); + paintItem = new QmlGraphicsParticlesPainter(this, q); + } + + void tick(int time); + void createParticle(int time); + void updateOpacity(QmlGraphicsParticle &p, int age); + + QUrl url; + QPixmap image; + int count; + int emissionRate; + qreal emissionVariance; + int lifeSpan; + int lifeSpanDev; + int fadeInDur; + int fadeOutDur; + qreal angle; + qreal angleDev; + qreal velocity; + qreal velocityDev; + qreal emissionCarry; + int addParticleTime; + int addParticleCount; + int lastAdvTime; + bool emitting; + QmlGraphicsParticleMotion *motion; + QmlGraphicsParticlesPainter *paintItem; + + bool pendingPixmapCache; + + QList > bursts;//countLeft, emissionRate pairs + QList particles; + QTickAnimationProxy clock; + +}; + +void QmlGraphicsParticlesPrivate::tick(int time) +{ + Q_Q(QmlGraphicsParticles); + if (!motion) + motion = new QmlGraphicsParticleMotionLinear(q); + + int oldCount = particles.count(); + int removed = 0; + int interval = time - lastAdvTime; + for (int i = 0; i < particles.count(); ) { + QmlGraphicsParticle &particle = particles[i]; + int age = time - particle.birthTime; + if (age >= particle.lifeSpan) { + QmlGraphicsParticle part = particles.takeAt(i); + motion->destroy(part); + ++removed; + } else { + updateOpacity(particle, age); + motion->advance(particle, interval); + ++i; + } + } + + if(emissionRate == -1)//Otherwise leave emission to the emission rate + while(removed-- && ((count == -1) || particles.count() < count) && emitting) + createParticle(time); + + if (!addParticleTime) + addParticleTime = time; + + //Possibly emit new particles + if (((count == -1) || particles.count() < count) && emitting + && !(count==-1 && emissionRate==-1)) { + int emissionCount = -1; + if (emissionRate != -1){ + qreal variance = 1.; + if (emissionVariance > 0.){ + variance += (qreal(rand())/RAND_MAX) * emissionVariance * (rand()%2?-1.:1.); + } + qreal emission = emissionRate * (qreal(interval)/1000.); + emission = emission * variance + emissionCarry; + double tmpDbl; + emissionCarry = modf(emission, &tmpDbl); + emissionCount = (int)tmpDbl; + emissionCount = qMax(0,emissionCount); + } + while(((count == -1) || particles.count() < count) && + (emissionRate==-1 || emissionCount--)) + createParticle(time); + } + + //Deal with emissions from requested bursts + for(int i=0; i 0.){ + variance += (qreal(rand())/RAND_MAX) * emissionVariance * (rand()%2?-1.:1.); + } + qreal workingEmission = bursts[i].second * (qreal(interval)/1000.); + workingEmission *= variance; + emission = (int)workingEmission; + emission = qMax(emission, 0); + } + emission = qMin(emission, bursts[i].first); + bursts[i].first -= emission; + while(emission--) + createParticle(time); + } + for(int i=bursts.size()-1; i>=0; i--) + if(bursts[i].first <= 0) + bursts.removeAt(i); + + lastAdvTime = time; + paintItem->updateSize(); + paintItem->update(); + if (!(oldCount || particles.count()) && (!count || !emitting) && bursts.isEmpty()) { + lastAdvTime = 0; + clock.stop(); + } +} + +void QmlGraphicsParticlesPrivate::createParticle(int time) +{ +#ifdef Q_ENABLE_PERFORMANCE_LOG + QmlPerfTimer x; +#endif + Q_Q(QmlGraphicsParticles); + QmlGraphicsParticle p(time); + p.x = q->x() + q->width() * qreal(rand()) / RAND_MAX - image.width()/2.0; + p.y = q->y() + q->height() * qreal(rand()) / RAND_MAX - image.height()/2.0; + p.lifeSpan = lifeSpan; + if (lifeSpanDev) + p.lifeSpan += int(lifeSpanDev/2 - lifeSpanDev * qreal(rand()) / RAND_MAX); + p.fadeOutAge = p.lifeSpan - fadeOutDur; + if (fadeInDur == 0.) { + p.state= QmlGraphicsParticle::Solid; + p.opacity = 1.0; + } + qreal a = angle; + if (angleDev) + a += angleDev/2 - angleDev * qreal(rand()) / RAND_MAX; + if (a > M_PI) + a = a - 2 * M_PI; + qreal v = velocity; + if (velocityDev) + v += velocityDev/2 - velocityDev * qreal(rand()) / RAND_MAX; + p.x_velocity = v * fastCos(a); + p.y_velocity = v * fastSin(a); + particles.append(p); + motion->created(particles.last()); +} + +void QmlGraphicsParticlesPrivate::updateOpacity(QmlGraphicsParticle &p, int age) +{ + switch (p.state) { + case QmlGraphicsParticle::FadeIn: + if (age <= fadeInDur) { + p.opacity = qreal(age) / fadeInDur; + break; + } else { + p.opacity = 1.0; + p.state = QmlGraphicsParticle::Solid; + // Fall through + } + case QmlGraphicsParticle::Solid: + if (age <= p.fadeOutAge) { + break; + } else { + p.state = QmlGraphicsParticle::FadeOut; + // Fall through + } + case QmlGraphicsParticle::FadeOut: + p.opacity = qreal(p.lifeSpan - age) / fadeOutDur; + break; + } +} + +QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Particles,QmlGraphicsParticles) + +/*! + \qmlclass Particles + \brief The Particles object generates and moves particles. + \inherits Item + + This element provides preliminary support for particles in QML, and may be heavily changed or removed in later versions. + + The particles created by this object cannot be dealt with directly, they can only be controlled through the parameters of the Particles object. The particles are all the same pixmap, specified by the user. + + The particles are painted relative to the parent of the Particles object. Moving the + Particles object will not move the particles already emitted. + + The below example creates two differently behaving particle sources. + The top one has particles falling from the top like snow, + the lower one has particles expelled up like a fountain. + + \qml +Rectangle { + width: 240 + height: 320 + color: "black" + Particles { + y: 0 + width: parent.width + height: 30 + source: "star.png" + lifeSpan: 5000 + count: 50 + angle: 70 + angleDeviation: 36 + velocity: 30 + velocityDeviation: 10 + ParticleMotionWander { + xvariance: 30 + pace: 100 + } + } + Particles { + y: 300 + x: 120 + width: 1 + height: 1 + source: "star.png" + lifeSpan: 5000 + count: 200 + angle: 270 + angleDeviation: 45 + velocity: 50 + velocityDeviation: 30 + ParticleMotionGravity { + yattractor: 1000 + xattractor: 0 + acceleration: 25 + } + } +} + \endqml + \image particles.gif +*/ + +/*! + \internal + \class QmlGraphicsParticles + \ingroup group_effects + \brief The QmlGraphicsParticles class generates and moves particles. +*/ + +QmlGraphicsParticles::QmlGraphicsParticles(QmlGraphicsItem *parent) + : QmlGraphicsItem(*(new QmlGraphicsParticlesPrivate), parent) +{ + Q_D(QmlGraphicsParticles); + d->init(); +} + +QmlGraphicsParticles::QmlGraphicsParticles(QmlGraphicsParticlesPrivate &dd, QmlGraphicsItem *parent) + : QmlGraphicsItem(dd, parent) +{ + Q_D(QmlGraphicsParticles); + d->init(); +} + +QmlGraphicsParticles::~QmlGraphicsParticles() +{ + Q_D(QmlGraphicsParticles); + if (d->pendingPixmapCache) + QmlPixmapCache::cancelGet(d->url, this); +} + +/*! + \qmlproperty string Particles::src + This property holds the URL of the particle image. +*/ + +/*! + \property QmlGraphicsParticles::source + \brief the URL of the particle image. +*/ +QUrl QmlGraphicsParticles::source() const +{ + Q_D(const QmlGraphicsParticles); + return d->url; +} + +void QmlGraphicsParticles::imageLoaded() +{ + Q_D(QmlGraphicsParticles); + d->pendingPixmapCache = false; + QmlPixmapCache::find(d->url, &d->image); + d->paintItem->updateSize(); + d->paintItem->update(); +} + +void QmlGraphicsParticles::setSource(const QUrl &name) +{ + Q_D(QmlGraphicsParticles); + + if ((d->url.isEmpty() == name.isEmpty()) && name == d->url) + return; + + if (d->pendingPixmapCache) { + QmlPixmapCache::cancelGet(d->url, this); + d->pendingPixmapCache = false; + } + if (name.isEmpty()) { + d->url = name; + d->image = QPixmap(); + d->paintItem->updateSize(); + d->paintItem->update(); + } else { + d->url = name; + Q_ASSERT(!name.isRelative()); + QNetworkReply *reply = QmlPixmapCache::get(qmlEngine(this), d->url, &d->image); + if (reply) { + connect(reply, SIGNAL(finished()), this, SLOT(imageLoaded())); + d->pendingPixmapCache = true; + } else { + //### unify with imageLoaded + d->paintItem->updateSize(); + d->paintItem->update(); + } + } + emit sourceChanged(); +} + +/*! + \qmlproperty int Particles::count + This property holds the maximum number of particles + + The particles element emits particles until it has count active + particles. When this number is reached, new particles are not emitted until + some of the current particles reach theend of their lifespan. + + If count is -1 then there is no maximum number of active particles, and + particles will be constantly emitted at the rate specified by emissionRate. + + If both count and emissionRate are set to -1, nothing will be emitted. + +*/ + +/*! + \property QmlGraphicsParticles::count + \brief the maximum number of particles +*/ +int QmlGraphicsParticles::count() const +{ + Q_D(const QmlGraphicsParticles); + return d->count; +} + +void QmlGraphicsParticles::setCount(int cnt) +{ + Q_D(QmlGraphicsParticles); + if (cnt == d->count) + return; + + int oldCount = d->count; + d->count = cnt; + d->addParticleTime = 0; + d->addParticleCount = d->particles.count(); + if (!oldCount && d->clock.state() != QAbstractAnimation::Running && d->count && d->emitting) { + d->clock.start(); + } + d->paintItem->updateSize(); + d->paintItem->update(); + emit countChanged(); +} + + +/*! + \qmlproperty int Particles::emissionRate + This property holds the target number of particles to emit every second. + + The particles element will emit up to emissionRate particles every + second. Fewer particles may be emitted per second if the maximum number of + particles has been reached. + + If emissionRate is set to -1 there is no limit to the number of + particles emitted per second, and particles will be instantly emitted to + reach the maximum number of particles specified by count. + + The default value for emissionRate is -1. + + If both count and emissionRate are set to -1, nothing will be emitted. +*/ + +/*! + \property QmlGraphicsParticles::emissionRate + \brief the emission rate of particles +*/ +int QmlGraphicsParticles::emissionRate() const +{ + Q_D(const QmlGraphicsParticles); + return d->emissionRate; +} +void QmlGraphicsParticles::setEmissionRate(int er) +{ + Q_D(QmlGraphicsParticles); + if(er == d->emissionRate) + return; + d->emissionRate = er; + emit emissionRateChanged(); +} + +/*! + \qmlproperty qreal Particles::emissionVariance + This property holds how inconsistent the rate of particle emissions are. + It is a number between 0 (no variance) and 1 (some variance). + + The expected number of particles emitted per second is emissionRate. If + emissionVariance is 0 then particles will be emitted consistently throughout + each second to reach that number. If emissionVariance is greater than 0 the + rate of particle emission will vary randomly throughout the second, with the + consequence that the actual number of particles emitted in one second will + vary randomly as well. + + emissionVariance is the maximum deviation from emitting + emissionRate particles per second. An emissionVariance of 0 means you should + get exactly emissionRate particles emitted per second, + and an emissionVariance of 1 means you will get between zero and two times + emissionRate particles per second, but you should get emissionRate particles + per second on average. + + Note that even with an emissionVariance of 0 there may be some variance due + to performance and hardware constraints. + + The default value of emissionVariance is 0.5 +*/ + +/*! + \property QmlGraphicsParticles::emissionVariance + \brief how much the particle emission amounts vary per tick +*/ + +qreal QmlGraphicsParticles::emissionVariance() const +{ + Q_D(const QmlGraphicsParticles); + return d->emissionVariance; +} + +void QmlGraphicsParticles::setEmissionVariance(qreal ev) +{ + Q_D(QmlGraphicsParticles); + if(d->emissionVariance == ev) + return; + d->emissionVariance = ev; + emit emissionVarianceChanged(); +} + +/*! + \qmlproperty int Particles::lifeSpan + \qmlproperty int Particles::lifeSpanDeviation + + These properties describe the life span of each particle. + + The default lifespan for a particle is 1000ms. + + lifeSpanDeviation randomly varies the lifeSpan up to the specified variation. For + example, the following creates particles whose lifeSpan will vary + from 150ms to 250ms: + + \qml +Particles { + source: "star.png" + lifeSpan: 200 + lifeSpanDeviation: 100 +} + \endqml +*/ + +/*! + \property QmlGraphicsParticles::lifeSpan + \brief the life span of each particle. + + Default value is 1000ms. + + \sa QmlGraphicsParticles::lifeSpanDeviation +*/ +int QmlGraphicsParticles::lifeSpan() const +{ + Q_D(const QmlGraphicsParticles); + return d->lifeSpan; +} + +void QmlGraphicsParticles::setLifeSpan(int ls) +{ + Q_D(QmlGraphicsParticles); + if(d->lifeSpan == ls) + return; + d->lifeSpan = ls; + emit lifeSpanChanged(); +} + +/*! + \property QmlGraphicsParticles::lifeSpanDeviation + \brief the maximum possible deviation from the set lifeSpan. + + Randomly varies the lifeSpan up to the specified variation. For + example, the following creates particles whose lifeSpan will vary + from 150ms to 250ms: + +\qml +Particles { + source: "star.png" + lifeSpan: 200 + lifeSpanDeviation: 100 +} +\endqml + + \sa QmlGraphicsParticles::lifeSpan +*/ +int QmlGraphicsParticles::lifeSpanDeviation() const +{ + Q_D(const QmlGraphicsParticles); + return d->lifeSpanDev; +} + +void QmlGraphicsParticles::setLifeSpanDeviation(int dev) +{ + Q_D(QmlGraphicsParticles); + if(d->lifeSpanDev == dev) + return; + d->lifeSpanDev = dev; + emit lifeSpanDeviationChanged(); +} + +/*! + \qmlproperty int Particles::fadeInDuration + \qmlproperty int Particles::fadeOutDuration + These properties hold the time taken to fade the particles in and out. + + By default fade in is 200ms and fade out is 300ms. +*/ + +/*! + \property QmlGraphicsParticles::fadeInDuration + \brief the time taken to fade in the particles. + + Default value is 200ms. +*/ +int QmlGraphicsParticles::fadeInDuration() const +{ + Q_D(const QmlGraphicsParticles); + return d->fadeInDur; +} + +void QmlGraphicsParticles::setFadeInDuration(int dur) +{ + Q_D(QmlGraphicsParticles); + if (dur < 0.0 || dur == d->fadeInDur) + return; + d->fadeInDur = dur; + emit fadeInDurationChanged(); +} + +/*! + \property QmlGraphicsParticles::fadeOutDuration + \brief the time taken to fade out the particles. + + Default value is 300ms. +*/ +int QmlGraphicsParticles::fadeOutDuration() const +{ + Q_D(const QmlGraphicsParticles); + return d->fadeOutDur; +} + +void QmlGraphicsParticles::setFadeOutDuration(int dur) +{ + Q_D(QmlGraphicsParticles); + if (dur < 0.0 || d->fadeOutDur == dur) + return; + d->fadeOutDur = dur; + emit fadeOutDurationChanged(); +} + +/*! + \qmlproperty real Particles::angle + \qmlproperty real Particles::angleDeviation + + These properties control particle direction. + + angleDeviation randomly varies the direction up to the specified variation. For + example, the following creates particles whose initial direction will + vary from 15 degrees to 105 degrees: + + \qml +Particles { + source: "star.png" + angle: 60 + angleDeviation: 90 +} + \endqml +*/ + +/*! + \property QmlGraphicsParticles::angle + \brief the initial angle of direction. + + \sa QmlGraphicsParticles::angleDeviation +*/ +qreal QmlGraphicsParticles::angle() const +{ + Q_D(const QmlGraphicsParticles); + return d->angle * 180.0 / M_PI; +} + +void QmlGraphicsParticles::setAngle(qreal angle) +{ + Q_D(QmlGraphicsParticles); + qreal radAngle = angle * M_PI / 180.0; + if(radAngle == d->angle) + return; + d->angle = radAngle; + emit angleChanged(); +} + +/*! + \property QmlGraphicsParticles::angleDeviation + \brief the maximum possible deviation from the set angle. + + Randomly varies the direction up to the specified variation. For + example, the following creates particles whose initial direction will + vary from 15 degrees to 105 degrees: + +\qml +Particles { + source: "star.png" + angle: 60 + angleDeviation: 90 +} +\endqml + + \sa QmlGraphicsParticles::angle +*/ +qreal QmlGraphicsParticles::angleDeviation() const +{ + Q_D(const QmlGraphicsParticles); + return d->angleDev * 180.0 / M_PI; +} + +void QmlGraphicsParticles::setAngleDeviation(qreal dev) +{ + Q_D(QmlGraphicsParticles); + qreal radDev = dev * M_PI / 180.0; + if(radDev == d->angleDev) + return; + d->angleDev = radDev; + emit angleDeviationChanged(); +} + +/*! + \qmlproperty real Particles::velocity + \qmlproperty real Particles::velocityDeviation + + These properties control the velocity of the particles. + + velocityDeviation randomly varies the velocity up to the specified variation. For + example, the following creates particles whose initial velocity will + vary from 40 to 60. + + \qml +Particles { + source: "star.png" + velocity: 50 + velocityDeviation: 20 +} + \endqml +*/ + +/*! + \property QmlGraphicsParticles::velocity + \brief the initial velocity of the particles. + + \sa QmlGraphicsParticles::velocityDeviation +*/ +qreal QmlGraphicsParticles::velocity() const +{ + Q_D(const QmlGraphicsParticles); + return d->velocity * 1000.0; +} + +void QmlGraphicsParticles::setVelocity(qreal velocity) +{ + Q_D(QmlGraphicsParticles); + qreal realVel = velocity / 1000.0; + if(realVel == d->velocity) + return; + d->velocity = realVel; + emit velocityChanged(); +} + +/*! + \property QmlGraphicsParticles::velocityDeviation + \brief the maximum possible deviation from the set velocity. + + Randomly varies the velocity up to the specified variation. For + example, the following creates particles whose initial velocity will + vary from 40 to 60. + +\qml +Particles { + source: "star.png" + velocity: 50 + velocityDeviation: 20 +} +\endqml + + \sa QmlGraphicsParticles::velocity +*/ +qreal QmlGraphicsParticles::velocityDeviation() const +{ + Q_D(const QmlGraphicsParticles); + return d->velocityDev * 1000.0; +} + +void QmlGraphicsParticles::setVelocityDeviation(qreal velocity) +{ + Q_D(QmlGraphicsParticles); + qreal realDev = velocity / 1000.0; + if(realDev == d->velocityDev) + return; + d->velocityDev = realDev; + emit velocityDeviationChanged(); +} + +/*! + \qmlproperty bool Particles::emitting + This property determines whether new particles are created + + If emitting is set to false no new particles will be created. This means that + when a particle reaches the end of its lifespan it is not replaced. This + property can be used to turn particles on and off with a more natural look. + + The default setting is true. Note that if it initialized to false no particles + will be produced until it is set to true. +*/ +/*! + \property QmlGraphicsParticles::emitting + If emitting is set to false no new particles will be created. This means that + when a particle reaches the end of its lifespan it is not replaced. This + property can be used to turn particles on and off with a more natural look. + + The default setting is true. Note that if it initialized to false no particles + will be produced until it is set to true. +*/ +bool QmlGraphicsParticles::emitting() const +{ + Q_D(const QmlGraphicsParticles); + return d->emitting; +} + +void QmlGraphicsParticles::setEmitting(bool r) +{ + Q_D(QmlGraphicsParticles); + if(d->emitting == r) + return; + d->emitting = r; + if (d->count && r) + d->clock.start(); + emit emittingChanged(); +} +/*! + \qmlproperty ParticleMotion Particles::motion + This property sets the type of motion to apply to the particles. + + When a particle is created it will have an initial direction and velocity. + The motion of the particle during its lifeSpan is then influenced by the + motion property. + + Default motion is ParticleMotionLinear. +*/ + +/*! + \property QmlGraphicsParticles::motion + \brief sets the type of motion to apply to the particles. + + When a particle is created it will have an initial direction and velocity. + The motion of the particle during its lifeSpan is then influenced by the + motion property. + + Default motion is QmlGraphicsParticleMotionLinear. +*/ +QmlGraphicsParticleMotion *QmlGraphicsParticles::motion() const +{ + Q_D(const QmlGraphicsParticles); + return d->motion; +} + +void QmlGraphicsParticles::setMotion(QmlGraphicsParticleMotion *motion) +{ + Q_D(QmlGraphicsParticles); + d->motion = motion; +} + +/*! + \qmlmethod Particles::burst + + Initiates a burst of particles. + + This method takes two arguments. The first argument is the number + of particles to emit and the second argument is the emissionRate for the + burst. If the second argument is omitted, it is treated as -1. The burst + of particles has a separate emissionRate and count to the normal emission of + particles. The burst uses the same values as normal emission for all other + properties, including emissionVariance and emitting. + + The normal emission of particles will continue during the burst, however + the particles created by the burst count towards the maximum number used by + normal emission. To avoid this behavior, use two Particles elements. + +*/ +void QmlGraphicsParticles::burst(int count, int emissionRate) +{ + Q_D(QmlGraphicsParticles); + d->bursts << qMakePair(count, emissionRate); + if (d->clock.state() != QAbstractAnimation::Running && d->emitting) + d->clock.start(); +} + +void QmlGraphicsParticlesPainter::updateSize() +{ + if (!isComponentComplete()) + return; + + const int parentX = parentItem()->x(); + const int parentY = parentItem()->y(); + for (int i = 0; i < d->particles.count(); ++i) { + const QmlGraphicsParticle &particle = d->particles.at(i); + if(particle.x > maxX) + maxX = particle.x; + if(particle.x < minX) + minX = particle.x; + if(particle.y > maxY) + maxY = particle.y; + if(particle.y < minY) + minY = particle.y; + } + + int myWidth = (int)(maxX-minX+0.5)+d->image.width(); + int myX = (int)(minX - parentX); + int myHeight = (int)(maxY-minY+0.5)+d->image.height(); + int myY = (int)(minY - parentY); + setWidth(myWidth); + setHeight(myHeight); + setX(myX); + setY(myY); +} + +void QmlGraphicsParticles::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *) +{ + Q_UNUSED(p); + //painting is done by the ParticlesPainter, so it can have the right size +} + +void QmlGraphicsParticlesPainter::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *) +{ + if (d->image.isNull() || d->particles.isEmpty()) + return; + + const int myX = x() + parentItem()->x(); + const int myY = y() + parentItem()->y(); + + QVarLengthArray pixmapData; + pixmapData.resize(d->particles.count()); + + const QRectF sourceRect = d->image.rect(); + qreal halfPWidth = sourceRect.width()/2.; + qreal halfPHeight = sourceRect.height()/2.; + for (int i = 0; i < d->particles.count(); ++i) { + const QmlGraphicsParticle &particle = d->particles.at(i); + pixmapData[i].point = QPointF(particle.x - myX + halfPWidth, particle.y - myY + halfPHeight); + pixmapData[i].opacity = particle.opacity; + + //these never change + pixmapData[i].rotation = 0; + pixmapData[i].scaleX = 1; + pixmapData[i].scaleY = 1; + pixmapData[i].source = sourceRect; + } + qDrawPixmaps(p, pixmapData.data(), d->particles.count(), d->image); +} + +void QmlGraphicsParticles::componentComplete() +{ + Q_D(QmlGraphicsParticles); + QmlGraphicsItem::componentComplete(); + if (d->count) { + d->paintItem->updateSize(); + d->clock.start(); + } + if (d->lifeSpanDev > d->lifeSpan) + d->lifeSpanDev = d->lifeSpan; +} + +QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qmlgraphicsparticles_p.h b/src/declarative/graphicsitems/qmlgraphicsparticles_p.h new file mode 100644 index 0000000..851edd7 --- /dev/null +++ b/src/declarative/graphicsitems/qmlgraphicsparticles_p.h @@ -0,0 +1,252 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMLGRAPHICSPARTICLES_H +#define QMLGRAPHICSPARTICLES_H + +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) + +class QmlGraphicsParticle; +class QmlGraphicsParticles; +class Q_DECLARATIVE_EXPORT QmlGraphicsParticleMotion : public QObject +{ + Q_OBJECT +public: + QmlGraphicsParticleMotion(QObject *parent=0); + + virtual void advance(QmlGraphicsParticle &, int interval); + virtual void created(QmlGraphicsParticle &); + virtual void destroy(QmlGraphicsParticle &); +}; + +class Q_DECLARATIVE_EXPORT QmlGraphicsParticleMotionLinear : public QmlGraphicsParticleMotion +{ + Q_OBJECT +public: + QmlGraphicsParticleMotionLinear(QObject *parent=0) + : QmlGraphicsParticleMotion(parent) {} + + virtual void advance(QmlGraphicsParticle &, int interval); +}; + +class Q_DECLARATIVE_EXPORT QmlGraphicsParticleMotionGravity : public QmlGraphicsParticleMotion +{ + Q_OBJECT + + Q_PROPERTY(int xattractor READ xAttractor WRITE setXAttractor) + Q_PROPERTY(int yattractor READ yAttractor WRITE setYAttractor) + Q_PROPERTY(int acceleration READ acceleration WRITE setAcceleration) +public: + QmlGraphicsParticleMotionGravity(QObject *parent=0) + : QmlGraphicsParticleMotion(parent), _xAttr(0), _yAttr(0), _accel(0.00005) {} + + int xAttractor() const { return _xAttr; } + void setXAttractor(int x) { _xAttr = x; } + + int yAttractor() const { return _yAttr; } + void setYAttractor(int y) { _yAttr = y; } + + int acceleration() const { return int(_accel * 1000000); } + void setAcceleration(int accel) { _accel = qreal(accel)/1000000.0; } + + virtual void advance(QmlGraphicsParticle &, int interval); + +private: + int _xAttr; + int _yAttr; + qreal _accel; +}; + +class Q_DECLARATIVE_EXPORT QmlGraphicsParticleMotionWander : public QmlGraphicsParticleMotion +{ + Q_OBJECT +public: + QmlGraphicsParticleMotionWander() + : QmlGraphicsParticleMotion(), particles(0), _xvariance(0), _yvariance(0) {} + + virtual void advance(QmlGraphicsParticle &, int interval); + virtual void created(QmlGraphicsParticle &); + virtual void destroy(QmlGraphicsParticle &); + + struct Data { + qreal x_targetV; + qreal y_targetV; + qreal x_peak; + qreal y_peak; + qreal x_var; + qreal y_var; + }; + + Q_PROPERTY(int xvariance READ xVariance WRITE setXVariance) + int xVariance() const { return int(_xvariance * 1000); } + void setXVariance(int var) { _xvariance = var / 1000.0; } + + Q_PROPERTY(int yvariance READ yVariance WRITE setYVariance) + int yVariance() const { return int(_yvariance * 1000); } + void setYVariance(int var) { _yvariance = var / 1000.0; } + + Q_PROPERTY(int pace READ pace WRITE setPace) + int pace() const { return int(_pace * 1000); } + void setPace(int pace) { _pace = pace / 1000.0; } + +private: + QmlGraphicsParticles *particles; + qreal _xvariance; + qreal _yvariance; + qreal _pace; +}; + +class QmlGraphicsParticlesPrivate; +class Q_DECLARATIVE_EXPORT QmlGraphicsParticles : public QmlGraphicsItem +{ + Q_OBJECT + + Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) + Q_PROPERTY(int count READ count WRITE setCount NOTIFY countChanged) + Q_PROPERTY(int emissionRate READ emissionRate WRITE setEmissionRate NOTIFY emissionRateChanged) + Q_PROPERTY(qreal emissionVariance READ emissionVariance WRITE setEmissionVariance NOTIFY emissionVarianceChanged) + Q_PROPERTY(int lifeSpan READ lifeSpan WRITE setLifeSpan NOTIFY lifeSpanChanged) + Q_PROPERTY(int lifeSpanDeviation READ lifeSpanDeviation WRITE setLifeSpanDeviation NOTIFY lifeSpanDeviationChanged) + Q_PROPERTY(int fadeInDuration READ fadeInDuration WRITE setFadeInDuration NOTIFY fadeInDurationChanged) + Q_PROPERTY(int fadeOutDuration READ fadeOutDuration WRITE setFadeOutDuration NOTIFY fadeOutDurationChanged) + Q_PROPERTY(qreal angle READ angle WRITE setAngle NOTIFY angleChanged) + Q_PROPERTY(qreal angleDeviation READ angleDeviation WRITE setAngleDeviation NOTIFY angleDeviationChanged) + Q_PROPERTY(qreal velocity READ velocity WRITE setVelocity NOTIFY velocityChanged) + Q_PROPERTY(qreal velocityDeviation READ velocityDeviation WRITE setVelocityDeviation NOTIFY velocityDeviationChanged) + Q_PROPERTY(bool emitting READ emitting WRITE setEmitting NOTIFY emittingChanged) + Q_PROPERTY(QmlGraphicsParticleMotion *motion READ motion WRITE setMotion) + Q_CLASSINFO("DefaultProperty", "motion") + +public: + QmlGraphicsParticles(QmlGraphicsItem *parent=0); + ~QmlGraphicsParticles(); + + QUrl source() const; + void setSource(const QUrl &); + + int count() const; + void setCount(int cnt); + + int emissionRate() const; + void setEmissionRate(int); + + qreal emissionVariance() const; + void setEmissionVariance(qreal); + + int lifeSpan() const; + void setLifeSpan(int); + + int lifeSpanDeviation() const; + void setLifeSpanDeviation(int); + + int fadeInDuration() const; + void setFadeInDuration(int); + + int fadeOutDuration() const; + void setFadeOutDuration(int); + + qreal angle() const; + void setAngle(qreal); + + qreal angleDeviation() const; + void setAngleDeviation(qreal); + + qreal velocity() const; + void setVelocity(qreal); + + qreal velocityDeviation() const; + void setVelocityDeviation(qreal); + + bool emitting() const; + void setEmitting(bool); + + QmlGraphicsParticleMotion *motion() const; + void setMotion(QmlGraphicsParticleMotion *); + + void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); + +public Q_SLOTS: + void burst(int count, int emissionRate=-1); + +protected: + virtual void componentComplete(); + QmlGraphicsParticles(QmlGraphicsParticlesPrivate &dd, QmlGraphicsItem *parent); + +Q_SIGNALS: + void sourceChanged(); + void countChanged(); + void emissionRateChanged(); + void emissionVarianceChanged(); + void lifeSpanChanged(); + void lifeSpanDeviationChanged(); + void fadeInDurationChanged(); + void fadeOutDurationChanged(); + void angleChanged(); + void angleDeviationChanged(); + void velocityChanged(); + void velocityDeviationChanged(); + void emittingChanged(); + +private Q_SLOTS: + void imageLoaded(); + +private: + Q_DISABLE_COPY(QmlGraphicsParticles) + Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QmlGraphicsParticles) +}; + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QmlGraphicsParticleMotion) +QML_DECLARE_TYPE(QmlGraphicsParticleMotionLinear) +QML_DECLARE_TYPE(QmlGraphicsParticleMotionGravity) +QML_DECLARE_TYPE(QmlGraphicsParticleMotionWander) +QML_DECLARE_TYPE(QmlGraphicsParticles) + +QT_END_HEADER + +#endif diff --git a/tests/auto/declarative/qmlgraphicsparticles/data/particles.qml b/tests/auto/declarative/qmlgraphicsparticles/data/particles.qml index dccd2c7..c58927e 100644 --- a/tests/auto/declarative/qmlgraphicsparticles/data/particles.qml +++ b/tests/auto/declarative/qmlgraphicsparticles/data/particles.qml @@ -8,7 +8,7 @@ Rectangle{ objectName: "particles" width:1; height:1; anchors.centerIn: parent; opacity: 1 lifeSpan: 100; lifeSpanDeviation: 20; count:1000; - fadeInDuration: 20; fadeOutDuration: 20; + fadeInDuration: 20; fadeOutDuration: 20; count: -1; emissionRate: 1000 angle: 0; angleDeviation: 360; velocity: 500; velocityDeviation:30 source: "particle.png" } diff --git a/tests/auto/declarative/qmlgraphicsparticles/tst_qmlgraphicsparticles.cpp b/tests/auto/declarative/qmlgraphicsparticles/tst_qmlgraphicsparticles.cpp index e50437a..ed68eaf 100644 --- a/tests/auto/declarative/qmlgraphicsparticles/tst_qmlgraphicsparticles.cpp +++ b/tests/auto/declarative/qmlgraphicsparticles/tst_qmlgraphicsparticles.cpp @@ -91,8 +91,11 @@ void tst_QmlGraphicsParticles::properties() particles->setVelocityDeviation(100.0); QCOMPARE(particles->velocityDeviation(), 100.0); - particles->setEmitting(false); - QCOMPARE(particles->emitting(), false); + particles->setEmissionVariance(0.5); + QCOMPARE(particles->emissionVariance(),0.5); + + particles->setEmissionRate(12); + QCOMPARE(particles->emissionRate(), 12); } void tst_QmlGraphicsParticles::runs() -- cgit v0.12 From 656870157932a0b44de69927faa003c71eeb2a47 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 5 Nov 2009 13:56:56 +1000 Subject: Fix signal overriding. --- src/declarative/util/qmlpropertychanges.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/declarative/util/qmlpropertychanges.cpp b/src/declarative/util/qmlpropertychanges.cpp index dbf2bc4..3cc6ca9 100644 --- a/src/declarative/util/qmlpropertychanges.cpp +++ b/src/declarative/util/qmlpropertychanges.cpp @@ -307,7 +307,7 @@ QmlPropertyChangesPrivate::property(const QByteArray &property) if (!prop.isValid()) { qmlInfo(QmlPropertyChanges::tr("Cannot assign to non-existant property \"%1\"").arg(QString::fromUtf8(property)), q); return QmlMetaProperty(); - } else if (!prop.isWritable()) { + } else if (prop.type() != QmlMetaProperty::SignalProperty && !prop.isWritable()) { qmlInfo(QmlPropertyChanges::tr("Cannot assign to read-only property \"%1\"").arg(QString::fromUtf8(property)), q); return QmlMetaProperty(); } -- cgit v0.12 From 21ccecb582b251b9f7f3850b294868854ddac478 Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Thu, 5 Nov 2009 14:49:30 +1000 Subject: qmlgraphicstext visual tests --- .../visual/qfxtext/font/data-MAC/plaintext.0.png | Bin 0 -> 94120 bytes .../visual/qfxtext/font/data-MAC/plaintext.qml | 351 ++++++++++++++++++++ .../visual/qfxtext/font/data-MAC/richtext.0.png | Bin 0 -> 121122 bytes .../visual/qfxtext/font/data-MAC/richtext.qml | 359 +++++++++++++++++++++ .../visual/qfxtext/font/data/plaintext.0.png | Bin 0 -> 94120 bytes .../visual/qfxtext/font/data/plaintext.qml | 351 ++++++++++++++++++++ .../visual/qfxtext/font/data/richtext.0.png | Bin 0 -> 121122 bytes .../visual/qfxtext/font/data/richtext.qml | 359 +++++++++++++++++++++ .../declarative/visual/qfxtext/font/plaintext.qml | 76 +++++ .../declarative/visual/qfxtext/font/richtext.qml | 76 +++++ 10 files changed, 1572 insertions(+) create mode 100644 tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.0.png create mode 100644 tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.qml create mode 100644 tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.0.png create mode 100644 tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.qml create mode 100644 tests/auto/declarative/visual/qfxtext/font/data/plaintext.0.png create mode 100644 tests/auto/declarative/visual/qfxtext/font/data/plaintext.qml create mode 100644 tests/auto/declarative/visual/qfxtext/font/data/richtext.0.png create mode 100644 tests/auto/declarative/visual/qfxtext/font/data/richtext.qml create mode 100644 tests/auto/declarative/visual/qfxtext/font/plaintext.qml create mode 100644 tests/auto/declarative/visual/qfxtext/font/richtext.qml diff --git a/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.0.png b/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.0.png new file mode 100644 index 0000000..50d56dc Binary files /dev/null and b/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.0.png differ diff --git a/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.qml b/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.qml new file mode 100644 index 0000000..63e20d4 --- /dev/null +++ b/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.qml @@ -0,0 +1,351 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 32 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 48 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 64 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 80 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 96 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 112 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 128 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 144 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 160 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 176 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 192 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 208 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 224 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 240 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 256 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 272 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 288 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 304 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 320 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 336 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 352 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 368 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 384 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 400 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 416 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 432 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 448 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 464 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 480 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 496 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 512 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 528 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 544 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 560 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 576 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 592 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 608 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 624 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 640 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 656 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 672 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 688 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 704 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 720 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 736 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 752 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 768 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 784 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 800 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 816 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 832 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 848 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 864 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 880 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 896 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 912 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 928 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 944 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 960 + image: "plaintext.0.png" + } + Frame { + msec: 976 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 992 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1008 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1024 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1040 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1056 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1072 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1088 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1104 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1120 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1136 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1152 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1168 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1184 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 1200 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1216 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1232 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1248 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1264 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1280 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1296 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1312 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1328 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1344 + hash: "d553014bc56a46787e30459b0f44f57a" + } +} diff --git a/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.0.png b/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.0.png new file mode 100644 index 0000000..2910670 Binary files /dev/null and b/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.0.png differ diff --git a/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.qml b/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.qml new file mode 100644 index 0000000..d55ad90 --- /dev/null +++ b/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.qml @@ -0,0 +1,359 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 32 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 48 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 64 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 80 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 96 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 112 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 128 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 144 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 160 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 176 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 192 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 208 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 224 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 240 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 256 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 272 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 288 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 304 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 320 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 336 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 352 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 368 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 384 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 400 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 416 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 432 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 448 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 464 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 480 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 496 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 512 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 528 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 544 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 560 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 576 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 592 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 608 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 624 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 640 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 656 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 672 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 688 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 704 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 720 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 736 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 752 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 768 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 784 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 800 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 816 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 832 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 848 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 864 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 880 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 896 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 912 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 928 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 944 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 960 + image: "richtext.0.png" + } + Frame { + msec: 976 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 992 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1008 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1024 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1040 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1056 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1072 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1088 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1104 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1120 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1136 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1152 + hash: "dfea78484b840b8cab690e277b960723" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 1168 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1184 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1200 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1216 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1232 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1248 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1264 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1280 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1296 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1312 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1328 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1344 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1360 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1376 + hash: "dfea78484b840b8cab690e277b960723" + } +} diff --git a/tests/auto/declarative/visual/qfxtext/font/data/plaintext.0.png b/tests/auto/declarative/visual/qfxtext/font/data/plaintext.0.png new file mode 100644 index 0000000..50d56dc Binary files /dev/null and b/tests/auto/declarative/visual/qfxtext/font/data/plaintext.0.png differ diff --git a/tests/auto/declarative/visual/qfxtext/font/data/plaintext.qml b/tests/auto/declarative/visual/qfxtext/font/data/plaintext.qml new file mode 100644 index 0000000..f4cbcbd --- /dev/null +++ b/tests/auto/declarative/visual/qfxtext/font/data/plaintext.qml @@ -0,0 +1,351 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 32 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 48 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 64 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 80 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 96 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 112 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 128 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 144 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 160 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 176 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 192 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 208 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 224 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 240 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 256 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 272 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 288 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 304 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 320 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 336 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 352 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 368 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 384 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 400 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 416 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 432 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 448 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 464 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 480 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 496 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 512 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 528 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 544 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 560 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 576 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 592 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 608 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 624 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 640 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 656 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 672 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 688 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 704 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 720 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 736 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 752 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 768 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 784 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 800 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 816 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 832 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 848 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 864 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 880 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 896 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 912 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 928 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 944 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 960 + image: "plaintext.0.png" + } + Frame { + msec: 976 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 992 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1008 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1024 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1040 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1056 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1072 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1088 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1104 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1120 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1136 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1152 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1168 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1184 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 1200 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1216 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1232 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1248 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1264 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1280 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1296 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1312 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1328 + hash: "d553014bc56a46787e30459b0f44f57a" + } + Frame { + msec: 1344 + hash: "d553014bc56a46787e30459b0f44f57a" + } +} diff --git a/tests/auto/declarative/visual/qfxtext/font/data/richtext.0.png b/tests/auto/declarative/visual/qfxtext/font/data/richtext.0.png new file mode 100644 index 0000000..2910670 Binary files /dev/null and b/tests/auto/declarative/visual/qfxtext/font/data/richtext.0.png differ diff --git a/tests/auto/declarative/visual/qfxtext/font/data/richtext.qml b/tests/auto/declarative/visual/qfxtext/font/data/richtext.qml new file mode 100644 index 0000000..9f396c2 --- /dev/null +++ b/tests/auto/declarative/visual/qfxtext/font/data/richtext.qml @@ -0,0 +1,359 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 32 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 48 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 64 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 80 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 96 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 112 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 128 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 144 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 160 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 176 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 192 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 208 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 224 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 240 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 256 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 272 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 288 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 304 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 320 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 336 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 352 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 368 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 384 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 400 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 416 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 432 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 448 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 464 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 480 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 496 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 512 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 528 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 544 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 560 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 576 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 592 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 608 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 624 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 640 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 656 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 672 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 688 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 704 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 720 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 736 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 752 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 768 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 784 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 800 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 816 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 832 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 848 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 864 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 880 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 896 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 912 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 928 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 944 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 960 + image: "richtext.0.png" + } + Frame { + msec: 976 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 992 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1008 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1024 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1040 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1056 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1072 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1088 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1104 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1120 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1136 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1152 + hash: "dfea78484b840b8cab690e277b960723" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 1168 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1184 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1200 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1216 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1232 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1248 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1264 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1280 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1296 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1312 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1328 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1344 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1360 + hash: "dfea78484b840b8cab690e277b960723" + } + Frame { + msec: 1376 + hash: "dfea78484b840b8cab690e277b960723" + } +} diff --git a/tests/auto/declarative/visual/qfxtext/font/plaintext.qml b/tests/auto/declarative/visual/qfxtext/font/plaintext.qml new file mode 100644 index 0000000..c58b95c --- /dev/null +++ b/tests/auto/declarative/visual/qfxtext/font/plaintext.qml @@ -0,0 +1,76 @@ +import Qt 4.6 + +Rectangle { + id: s; width: 800; height: 800; color: "lightsteelblue" + property string text: "The quick brown fox jumps over the lazy dog." + + Column { + spacing: 10 + Text { + text: s.text + } + Text { + text: s.text; font.pixelSize: 18 + } + Text { + text: s.text; font.pointSize: 25 + } + Text { + text: s.text; color: "red" + } + Text { + text: s.text; font.capitalization: "AllUppercase" + } + Text { + text: s.text; font.underline: true + } + Text { + text: s.text; font.overline: true + } + Text { + text: s.text; font.strikeout: true + } + Text { + text: s.text; font.underline: true; font.overline: true; font.strikeout: true + } + Text { + text: s.text; font.letterSpacing: 200 + } + Text { + text: s.text; font.underline: true; font.letterSpacing: 200; font.capitalization: "AllUppercase"; color: "blue" + } + Text { + text: s.text; font.overline: true; font.wordSpacing: 25; font.capitalization: "Capitalize"; color: "green" + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white" + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Sunken; styleColor: "gray" + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Raised; styleColor: "yellow" + } + Text { + text: s.text; horizontalAlignment: Text.AlignLeft; width: 800 + } + Text { + text: s.text; horizontalAlignment: Text.AlignHCenter; width: 800 + } + Text { + text: s.text; horizontalAlignment: Text.AlignRight; width: 800 + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrap: true; width: 200 + } + Text { + text: s.text; elide: Text.ElideLeft; width: 200 + } + Text { + text: s.text; elide: Text.ElideMiddle; width: 200 + } + Text { + text: s.text; elide: Text.ElideRight; width: 200 + } + } +} diff --git a/tests/auto/declarative/visual/qfxtext/font/richtext.qml b/tests/auto/declarative/visual/qfxtext/font/richtext.qml new file mode 100644 index 0000000..390527a --- /dev/null +++ b/tests/auto/declarative/visual/qfxtext/font/richtext.qml @@ -0,0 +1,76 @@ +import Qt 4.6 + +Rectangle { + id: s; width: 800; height: 800; color: "lightsteelblue" + property string text: "The quick brown fox jumps over the lazy dog." + + Column { + spacing: 10 + Text { + text: s.text + } + Text { + text: s.text; font.pixelSize: 18 + } + Text { + text: s.text; font.pointSize: 25 + } + Text { + text: s.text; color: "red" + } + Text { + text: s.text; font.capitalization: "AllUppercase" + } + Text { + text: s.text; font.underline: true + } + Text { + text: s.text; font.overline: true + } + Text { + text: s.text; font.strikeout: true + } + Text { + text: s.text; font.underline: true; font.overline: true; font.strikeout: true + } + Text { + text: s.text; font.letterSpacing: 200 + } + Text { + text: s.text; font.underline: true; font.letterSpacing: 200; font.capitalization: "AllUppercase"; color: "blue" + } + Text { + text: s.text; font.overline: true; font.wordSpacing: 25; font.capitalization: "Capitalize"; color: "green" + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white" + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Sunken; styleColor: "gray" + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Raised; styleColor: "yellow" + } + Text { + text: s.text; horizontalAlignment: Text.AlignLeft; width: 800 + } + Text { + text: s.text; horizontalAlignment: Text.AlignHCenter; width: 800 + } + Text { + text: s.text; horizontalAlignment: Text.AlignRight; width: 800 + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrap: true; width: 200 + } + Text { + text: s.text; elide: Text.ElideLeft; width: 200 + } + Text { + text: s.text; elide: Text.ElideMiddle; width: 200 + } + Text { + text: s.text; elide: Text.ElideRight; width: 200 + } + } +} -- cgit v0.12