From 63fb30eb29c26cd7ba0d9133610acb85cad83775 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= <morten.sorvig@digia.com>
Date: Mon, 19 Aug 2013 13:29:43 +0200
Subject: [PATCH] Implement high-dpi "@2x" image handling.

Make QQuickBaseImage::load() load "@2x" image files
on high-dpi displays. Reload images on screen change
in order to load the correct version depending on
screen dpi. Modify QQuickImageBase::updatePaintNode()
to work with @2x images.

QQuickBaseImage::load() now looks at the target
window's devicePixelRatio and checks for the presence
of a "@2x" file on disk. If found the @2x version
will be used.

Unlike QPixmap, QQuickPixmap has no special knowledge
of "@2x" files. They pixmap system will be asked to
load "@2x" files and will cache them and report the
(device) pixel size, like any other pixmap.

Add auto-test and manual test.

Task-number: QTBUG-32862, QTBUG-33069
Change-Id: I1f57a10075e499f6eee61df5421e1986521c6ab0
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
---
 src/quick/items/qquickimage.cpp               |  14 ++--
 src/quick/items/qquickimagebase.cpp           |  73 ++++++++++++++++-
 src/quick/items/qquickimagebase_p.h           |   4 +
 src/quick/items/qquickimagebase_p_p.h         |   2 +
 .../qquickimage/data/heart-highdpi@2x.png     | Bin 0 -> 12577 bytes
 .../quick/qquickimage/tst_qquickimage.cpp     |  44 ++++++++++
 tests/manual/highdpi/fillmodes.qml            |  72 +++++++++++++++++
 tests/manual/highdpi/heart-highdpi@2x.png     | Bin 0 -> 20654 bytes
 tests/manual/highdpi/heart-lowdpi.png         | Bin 0 -> 15194 bytes
 tests/manual/highdpi/heart.png                | Bin 0 -> 15194 bytes
 tests/manual/highdpi/heart@2x.png             | Bin 0 -> 20654 bytes
 tests/manual/highdpi/image.qml                |  52 ++++++++++++
 tests/manual/highdpi/image2.qml               |  64 +++++++++++++++
 tests/manual/highdpi/imagesize.qml            |  76 ++++++++++++++++++
 tests/manual/highdpi/mirror.qml               |  57 +++++++++++++
 tests/manual/highdpi/sourcesize.qml           |  76 ++++++++++++++++++
 16 files changed, 526 insertions(+), 8 deletions(-)
 create mode 100644 tests/auto/quick/qquickimage/data/heart-highdpi@2x.png
 create mode 100644 tests/manual/highdpi/fillmodes.qml
 create mode 100644 tests/manual/highdpi/heart-highdpi@2x.png
 create mode 100644 tests/manual/highdpi/heart-lowdpi.png
 create mode 100644 tests/manual/highdpi/heart.png
 create mode 100644 tests/manual/highdpi/heart@2x.png
 create mode 100644 tests/manual/highdpi/image.qml
 create mode 100644 tests/manual/highdpi/image2.qml
 create mode 100644 tests/manual/highdpi/imagesize.qml
 create mode 100644 tests/manual/highdpi/mirror.qml
 create mode 100644 tests/manual/highdpi/sourcesize.qml

diff --git a/src/quick/items/qquickimage.cpp b/src/quick/items/qquickimage.cpp
index 69a39d2396..08dbfa3c23 100644
--- a/src/quick/items/qquickimage.cpp
+++ b/src/quick/items/qquickimage.cpp
@@ -589,8 +589,8 @@ QSGNode *QQuickImage::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
     QSGTexture::WrapMode hWrap = QSGTexture::ClampToEdge;
     QSGTexture::WrapMode vWrap = QSGTexture::ClampToEdge;
 
-    qreal pixWidth = (d->fillMode == PreserveAspectFit) ? d->paintedWidth : d->pix.width();
-    qreal pixHeight = (d->fillMode == PreserveAspectFit) ? d->paintedHeight : d->pix.height();
+    qreal pixWidth = (d->fillMode == PreserveAspectFit) ? d->paintedWidth : d->pix.width() / d->devicePixelRatio;
+    qreal pixHeight = (d->fillMode == PreserveAspectFit) ? d->paintedHeight :  d->pix.height() / d->devicePixelRatio;
 
     int xOffset = 0;
     if (d->hAlign == QQuickImage::AlignHCenter)
@@ -671,10 +671,12 @@ QSGNode *QQuickImage::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
         break;
     };
 
-    QRectF nsrect(sourceRect.x() / d->pix.width(),
-                  sourceRect.y() / d->pix.height(),
-                  sourceRect.width() / d->pix.width(),
-                  sourceRect.height() / d->pix.height());
+    qreal nsWidth = (hWrap == QSGTexture::Repeat) ? d->pix.width() / d->devicePixelRatio : d->pix.width();
+    qreal nsHeight = (vWrap == QSGTexture::Repeat) ? d->pix.height() / d->devicePixelRatio : d->pix.height();
+    QRectF nsrect(sourceRect.x() / nsWidth,
+                  sourceRect.y() / nsHeight,
+                  sourceRect.width() / nsWidth,
+                  sourceRect.height() / nsHeight);
 
     if (targetRect.isEmpty()
         || !qIsFinite(targetRect.width()) || !qIsFinite(targetRect.height())
diff --git a/src/quick/items/qquickimagebase.cpp b/src/quick/items/qquickimagebase.cpp
index c842922dc6..edd6faa569 100644
--- a/src/quick/items/qquickimagebase.cpp
+++ b/src/quick/items/qquickimagebase.cpp
@@ -42,7 +42,10 @@
 #include "qquickimagebase_p.h"
 #include "qquickimagebase_p_p.h"
 
+#include <QtGui/qguiapplication.h>
+
 #include <QtQml/qqmlinfo.h>
+#include <QtQml/qqmlfile.h>
 
 QT_BEGIN_NAMESPACE
 
@@ -50,12 +53,14 @@ QQuickImageBase::QQuickImageBase(QQuickItem *parent)
 : QQuickImplicitSizeItem(*(new QQuickImageBasePrivate), parent)
 {
     setFlag(ItemHasContents);
+    connect(this, SIGNAL(windowChanged(QQuickWindow*)), SLOT(handleWindowChanged(QQuickWindow*)));
 }
 
 QQuickImageBase::QQuickImageBase(QQuickImageBasePrivate &dd, QQuickItem *parent)
 : QQuickImplicitSizeItem(dd, parent)
 {
     setFlag(ItemHasContents);
+    connect(this, SIGNAL(windowChanged(QQuickWindow*)), SLOT(handleWindowChanged(QQuickWindow*)));
 }
 
 QQuickImageBase::~QQuickImageBase()
@@ -208,7 +213,13 @@ void QQuickImageBase::load()
         if (d->cache)
             options |= QQuickPixmap::Cache;
         d->pix.clear(this);
-        d->pix.load(qmlEngine(this), d->url, d->sourcesize, options);
+
+        const qreal targetDevicePixelRatio = (window() ? window()->devicePixelRatio() : qApp->devicePixelRatio());
+        d->devicePixelRatio = 1.0;
+
+        QUrl loadUrl = d->url;
+        resolve2xLocalFile(d->url, targetDevicePixelRatio, &loadUrl, &d->devicePixelRatio);
+        d->pix.load(qmlEngine(this), loadUrl, d->sourcesize * d->devicePixelRatio, options);
 
         if (d->pix.isLoading()) {
             if (d->progress != 0.0) {
@@ -275,6 +286,19 @@ void QQuickImageBase::requestProgress(qint64 received, qint64 total)
     }
 }
 
+void QQuickImageBase::handleWindowChanged(QQuickWindow* window)
+{
+    if (window)
+        connect(window, SIGNAL(screenChanged(QScreen*)), this, SLOT(handleScreenChanged(QScreen*)));
+}
+
+void QQuickImageBase::handleScreenChanged(QScreen*)
+{
+    // Screen DPI might have changed, reload images on screen change.
+    if (isComponentComplete())
+        load();
+}
+
 void QQuickImageBase::componentComplete()
 {
     Q_D(QQuickImageBase);
@@ -286,7 +310,52 @@ void QQuickImageBase::componentComplete()
 void QQuickImageBase::pixmapChange()
 {
     Q_D(QQuickImageBase);
-    setImplicitSize(d->pix.width(), d->pix.height());
+    setImplicitSize(d->pix.width() / d->devicePixelRatio, d->pix.height() / d->devicePixelRatio);
+}
+
+// /path/to/foo.png -> path/too/foo@2x.png
+static QString image2xPath(const QString &path)
+{
+    const int dotIndex = path.lastIndexOf(QLatin1Char('.'));
+    if (dotIndex == -1)
+        return path;
+    if (path.contains("@2x."))
+        return path;
+
+    QString retinaPath = path;
+    retinaPath.insert(dotIndex, QStringLiteral("@2x"));
+    return retinaPath;
+}
+
+void QQuickImageBase::resolve2xLocalFile(const QUrl &url, qreal targetDevicePixelRatio, QUrl *sourceUrl, qreal *sourceDevicePixelRatio)
+{
+    Q_ASSERT(sourceUrl);
+    Q_ASSERT(sourceDevicePixelRatio);
+
+    QString localFile = QQmlFile::urlToLocalFileOrQrc(url);
+
+    // Non-local file path: @2x loading is not supported.
+    if (localFile.isEmpty())
+        return;
+
+    // Special case: the url in the QML source refers directly to an "@2x" file.
+    if (localFile.contains("@2x")) {
+        *sourceDevicePixelRatio = qreal(2.0);
+        return;
+    }
+
+    // Don't load @2x files non normal-dpi displays.
+    if (!(targetDevicePixelRatio > qreal(1.0)))
+        return;
+
+    // Look for an @2x version
+    QString localFile2x = image2xPath(localFile);
+    if (!QFile(localFile2x).exists())
+        return;
+
+    // @2x file found found: Change url and devicePixelRatio
+    *sourceUrl = QUrl::fromLocalFile(localFile2x);
+    *sourceDevicePixelRatio = qreal(2.0);
 }
 
 QT_END_NAMESPACE
diff --git a/src/quick/items/qquickimagebase_p.h b/src/quick/items/qquickimagebase_p.h
index 72258b4971..67f1e81cae 100644
--- a/src/quick/items/qquickimagebase_p.h
+++ b/src/quick/items/qquickimagebase_p.h
@@ -86,6 +86,8 @@ public:
     virtual void setMirror(bool mirror);
     bool mirror() const;
 
+    void resolve2xLocalFile(const QUrl &url, qreal targetDevicePixelRatio, QUrl *sourceUrl, qreal *sourceDevicePixelRatio);
+
 Q_SIGNALS:
     void sourceChanged(const QUrl &);
     void sourceSizeChanged();
@@ -104,6 +106,8 @@ protected:
 private Q_SLOTS:
     virtual void requestFinished();
     void requestProgress(qint64,qint64);
+    void handleWindowChanged(QQuickWindow *window);
+    void handleScreenChanged(QScreen *);
 
 private:
     Q_DISABLE_COPY(QQuickImageBase)
diff --git a/src/quick/items/qquickimagebase_p_p.h b/src/quick/items/qquickimagebase_p_p.h
index 395abf01fa..bb8778d789 100644
--- a/src/quick/items/qquickimagebase_p_p.h
+++ b/src/quick/items/qquickimagebase_p_p.h
@@ -69,6 +69,7 @@ public:
     QQuickImageBasePrivate()
       : status(QQuickImageBase::Null),
         progress(0.0),
+        devicePixelRatio(1.0),
         async(false),
         cache(true),
         mirror(false)
@@ -81,6 +82,7 @@ public:
     qreal progress;
     QSize sourcesize;
     QSize oldSourceSize;
+    qreal devicePixelRatio;
     bool async : 1;
     bool cache : 1;
     bool mirror: 1;
diff --git a/tests/auto/quick/qquickimage/data/heart-highdpi@2x.png b/tests/auto/quick/qquickimage/data/heart-highdpi@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..abe97fee4bbdca9b00962408956013bd2f237736
GIT binary patch
literal 12577
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
E0|#43N&o-=

literal 0
HcmV?d00001

diff --git a/tests/auto/quick/qquickimage/tst_qquickimage.cpp b/tests/auto/quick/qquickimage/tst_qquickimage.cpp
index b23591b593..0855403d5a 100644
--- a/tests/auto/quick/qquickimage/tst_qquickimage.cpp
+++ b/tests/auto/quick/qquickimage/tst_qquickimage.cpp
@@ -105,6 +105,7 @@ private slots:
     void progressAndStatusChanges();
     void sourceSizeChanges();
     void correctStatus();
+    void highdpi();
 
 private:
     QQmlEngine engine;
@@ -928,6 +929,49 @@ void tst_qquickimage::correctStatus()
     delete obj;
 }
 
+void tst_qquickimage::highdpi()
+{
+    TestHTTPServer server(14449);
+    QVERIFY(server.isValid());
+    server.serveDirectory(dataDirectory());
+
+    QString componentStr = "import QtQuick 2.0\nImage { source: srcImage ;  }";
+    QQmlComponent component(&engine);
+    component.setData(componentStr.toLatin1(), QUrl::fromLocalFile(""));
+    QQmlContext *ctxt = engine.rootContext();
+
+    // Testing "@2x" high-dpi image loading:
+    // The basic case is as follows. Suppose you have foo.png,
+    // which is a 64x64 png that fits in a QML layout. Now,
+    // on a high-dpi system that pixmap would not provide
+    // enough pixels. To fix this the app developer provides
+    // a 128x128 foo@2x.png, which Qt automatically loads.
+    // The image continues to be referred to as "foo.png" in
+    // the QML sources, and reports a size of 64x64.
+    //
+
+    // Load "heart-highdpi@2x.png", which is a 300x300 png. As a 2x scale image it
+    // should render and report a geometry of 150x150.
+    ctxt->setContextProperty("srcImage", testFileUrl("heart-highdpi@2x.png"));
+
+    QQuickImage *obj = qobject_cast<QQuickImage*>(component.create());
+    QVERIFY(obj != 0);
+
+    QCOMPARE(obj->width(), 150.0);
+    QCOMPARE(obj->height(), 150.0);
+    QCOMPARE(obj->paintedWidth(), 150.0);
+    QCOMPARE(obj->paintedHeight(), 150.0);
+
+    // Load a normal 1x image.
+    ctxt->setContextProperty("srcImage", testFileUrl("heart.png"));
+    QCOMPARE(obj->width(), 300.0);
+    QCOMPARE(obj->height(), 300.0);
+    QCOMPARE(obj->paintedWidth(), 300.0);
+    QCOMPARE(obj->paintedHeight(), 300.0);
+
+    delete obj;
+}
+
 QTEST_MAIN(tst_qquickimage)
 
 #include "tst_qquickimage.moc"
diff --git a/tests/manual/highdpi/fillmodes.qml b/tests/manual/highdpi/fillmodes.qml
new file mode 100644
index 0000000000..cff2bcc34c
--- /dev/null
+++ b/tests/manual/highdpi/fillmodes.qml
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtQml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.  For licensing terms and
+** conditions see http://qt.digia.com/licensing.  For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** 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, Digia gives you certain additional
+** rights.  These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Rectangle {
+    width: 400
+    height: 700
+
+    // the images should have the same display size and appearance on each row.
+    Column {
+        anchors.centerIn: parent.Center
+        Row {
+            Image {  width: 130; height: 70; fillMode: Image.Stretch; source : "heart-lowdpi.png" }
+            Image {  width: 130; height: 70; fillMode: Image.Stretch; source : "heart.png" }
+            Image {  width: 130; height: 70; fillMode: Image.Stretch; source : "heart-highdpi@2x.png" }
+        }
+        Row {
+            Image {  width: 130; height: 100; fillMode: Image.PreserveAspectFit; source : "heart-lowdpi.png" }
+            Image {  width: 130; height: 100; fillMode: Image.PreserveAspectFit; source : "heart.png" }
+            Image {  width: 130; height: 100; fillMode: Image.PreserveAspectFit; source : "heart-highdpi@2x.png" }
+        }
+        Row {
+            Image {  width: 130; height: 100; fillMode: Image.PreserveAspectCrop; source : "heart-lowdpi.png" }
+            Image {  width: 130; height: 100; fillMode: Image.PreserveAspectCrop; source : "heart.png" }
+            Image {  width: 130; height: 100; fillMode: Image.PreserveAspectCrop; source : "heart-highdpi@2x.png" }
+        }
+        Row {
+            Image {  width: 230; height: 200; fillMode: Image.Tile; source : "heart-lowdpi.png" }
+            Image {  width: 230; height: 200; fillMode: Image.Tile; source : "heart.png" }
+            Image {  width: 230; height: 200; fillMode: Image.Tile; source : "heart-highdpi@2x.png" }
+        }
+    }
+}
diff --git a/tests/manual/highdpi/heart-highdpi@2x.png b/tests/manual/highdpi/heart-highdpi@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7a1ca89a44edec0bcf6401594bc42759c6cf208
GIT binary patch
literal 20654
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
Cxl?oi

literal 0
HcmV?d00001

diff --git a/tests/manual/highdpi/heart-lowdpi.png b/tests/manual/highdpi/heart-lowdpi.png
new file mode 100644
index 0000000000000000000000000000000000000000..deaec182749735afd4af18478b0b309b8735c4f8
GIT binary patch
literal 15194
zcmZ{L19&D+vu|wM+Ss;j>y7iqwryLRY^;sVjcq&G*tV0+-T!yKbMCq4-aF6JGd<Py
ztFErD>8BbKrK~802!{s;0s?|4BQ37__nH1rf`R&b=LdD#0|9{(u@VzgmJt&pQFeAP
zx3V<@0g*<`N%v4!Tf>T&>Eh~|MI$4jc);_9C7I`w#)MFbk_l7>3lF7q7l)L@K&8<%
zRqq9riXbzQz<>`42Cl%~p(qdcsfbG)ZpPZcURQJ6Z)JUs0JhhTTUXXBuKiYifhd0j
zL-f09g9fq}Xk%QR_vxXbPYgbT;h=ybX@mCenwvvNy@-P?esl?BW|m10H$Gi42AXzk
z(Dx`)x-5SMB$086kwbyNNi1>l`%_{cf~Bf84&kzXL5x47(XfWIuwoU!7FLn%57yc~
z{XC-U82g?<c~F1{n8xj7&yDR+-pZobEsBLG(ECoYV^QP_ZPukOlLd14Ouex1k}VIy
zjFD+Lc}!Vg8^tPtfqNBo2L=L@I>^)Mj1=?AW0?!$S!!_*4G|>+EJa=UZgqGvYW{ZH
zsP+nEp-UZ5*p2j*pLu9Ph-bzQtaV720HpxfWm+a(Ruf!a0+x>~UwhWJiTu?*1xCH!
zHEt;{W^zSha{=477gbDMSRha2IzI>-yVEp4n(Uy24|l7Su1P@dAVHe8vhRt)Z4HtK
z_YkPyV=gXiT|o0}80k*9-t&ST#(Tnfo--$|-ZlA3v4w)Z$zZaXNgS5`ER_?VoJ2s%
zm@)l)M)}(B<*}L?8=%k5>&3neJJC=%NrerKvg`=s57JI#G=&QdSlSK1;iQ7b_0O@v
zuyiv7@eAWoZj*r?br1j%`vy*KFXRp8cdm=V0yo;-X<40A>yp6g{pa|N7+x>hepg<E
zOzr3iA;Hv{qL3c9Xgk!l4-734+BF}JJ&2JRjNS;5Adt-we2WAmG*B7^JRO`-8q7)<
zqCrG(^{)%Etb)3SSUZ9&26@jyC<b#nLg_(h^&&dLBLqqb!-e<BF@tUeS-}L~pkNk?
zR3u^*BWH>(qu}enc!`N9b7O!HiA5!%Bn!XJQkLP+hEx=YDGNM&bH)1wqaX5?4?Ro5
z4)qD@7mE5FY{3|D6{IC_t&WcXMyh{eN8A%L8ydTJV^_8fOAx8GAA1-7282G$us;Px
zcoYVFPEs2N|5jWyQJWkTmDDDQtQf3ZA}bN87{5JEI?3q(94ex~_&W~PFz$W?Aa)n1
zX}k=SWnTJj@?BFN`-syVg)QhcxCFRVU#d-2CFBmviTWdsVNla3!AQ3*qaJ+K_=1lB
zX`~l-kHFEt4M&gFo}&h$6?rALBk+6xahLMevy*lU<2o3*&*cW_OWF+=KoCH*oj^R?
zLzM`t17Q=4OqxzYZcDC?f(LU9^BIcT&#n?wrsPT%j^Z__2c)TwUlr+;A)r)D!H@|j
z$5th$$!rQzm$4?(rxc*<B25|NHI;J40SFr?)sW|r7*Zf73n`~kQ(`E|5=e-yDe}m+
z3wsHBiIu1#mf0_ASA74KqodR%?kDTVB$dLJai6h2R-ICrWRrHD;X|R6x{~3MVaS+A
zWk?zz`=|7y4NRp^xKAyps7|v$a<{2pAWTLgt1t~13CsdU0YmmUhEymzlY^35(Ui)C
zPwVC>N=WfU7fQV5+nN-bc-PI=nF*!1ir*JfPKO?dPr4pp%_z)t52+6c4)G2f$5o;F
znT=l9RB=mUQ(`+}6YklM+GqA>HaKgo48A&P(q3upX?@ek(#+F9(-JD=H5`^OmU1fW
zDwGzPttqXIt=FvIml!MKW`53i<j&+6vVR?XM4Z+Ait=uIvwj>n6F5u3%fjo%!^P9U
z%U~boz|FGH8p}G&I%XefvebcZhR`|GIc_#!PRqQSR5zz+jNvJ$uDSflFeg~NSt(F$
zQr4(#QKZ;7jjo@}sLLhNs@JOKA*v+Dq|Iblt8!f+sFGKmSKK4jqZ=^ZJ4>=|6eIGZ
zudE=tpvO4ZxM<hpTSZdk9Bq+K5#KPkNsCkTt>C^cWnEN`OtMVen1b5s;+DG6ubHM9
z1e+sEO7=>Qj*-H;-vB_B<Z?dG0RO0Ok=Kt`I(UH??U)>_O)NwDOL{eib9!O`4FFQx
zuIa4qZD4&c%SPYCZzSA$-=uN6bn~dWx}0I#z30-8FH65}6RSh9W9A9ziR_*7odsGT
z!ZV@^>3P-Fow_5`ZwdAMWVdblHg+GH%7?0cLFVUn4q%#Q8gaS^9s&CXdyxUhdCqCK
zjlemH(UdXP(9^MCQDY-*U+4U7Qeh?T*nQA$aC22)?X&Hj4p|O4Nh)R}^=Ha4-VD4!
zWJax4l2&bN@-y(-`ue9JuV9p5oFIC)dv~QD(~I#Z*r)s3=Kade@!QI~5(GCy73>LI
zF@z+9CbS?tD=ZqM8^k~#XkSM#G1I&ux!xicnCOR?dl)|~2ZBE4n+pyjJ$n`9g;$$~
zr@yBM1Ore)Tx_sII$?BvR4OJ8OAgCJa!hJSVo6Ft!bc)QLM}s_9?*Co8LJaZQYwH&
zjF0I<?(SUvJijRyv461#w|~XRrkCD$vF_Y_SUxdRlW5onaH1u`CnnrR`HDjCFF%y8
zc`$7EID}Y9>4<nwJ|3n!j=R-=G5bh@$Ovr+ofFR()Q>Wesgc2y*#}b+Y2I;bFuV&o
zC{ImHEuvv7pDUlT3T=96S`ei$j;^EAXA_|6Vj5sCVix-~Znbo!fnF#)mn2W^0x<9R
z9{)%FQ973V2So?~zR|j2%R<U5Z(L;(_2}Us>%e}3aO{5U-Jipp!^6#@+x<`YM<2(P
z4N`U3a*f_byP}7F->==r?(+mY5<BU&n+eH@I5Yfh`{=Djm3)=DZX?Ua>!V@Oc2Skx
zE{17cB-<fdOxw#%^TulHjSMn_xkuo{Ui6+4#qZ?vZGfNF>*nNB=w(;QQ^~u>jysIU
z@6FR+_u832fWg{q&5nNc;pAQ6U2BKdMYpE0u9Fe6Rf1_k6Kh#Rmu#)I)Y8wh;<F&U
zgsh{kGoRMWob{27m7Z<8fCbPv@F8eHA`F7gfYE1Vn`#leA>-e>RRc5Ug=fEdECLJz
z#4n|9lV+sCq)JBm6Wo^g7FW2+xKcU$<C2H#_nk%@K6f6)e9$XTmD!5gUm&<id2aVc
zUWl)A5%|}<qWvmPsXp_bT4r^kbqbb$FGsZ$b6WYx`)r>EF60nS6EX<>`0{;-eag&g
z9Ji30Nt(vY{=t*y;eRJO9CjNMg&o1G<tq5A>0mymrmkjdA}FKQ;I`ele533ALnEWo
zqJ~GG&o9TX>oWW^ZkebfH{I~U-|Dpa+OF%=vGFr~zdF7f((m|9|D9>;>6hPO{8tV>
zcns9r6=S#0m%(p=Q@^dxIp}g^1EEQ8?oZ24lZ*XADmW$D+zO%U&!v|Y^YX5Ti~JR%
znZ`(qgzz>ormwWuTBQNVnerJr$tKA&scNa2*w@%i@A`+Kn~B(rh5fJ|nm;YiX>*l%
z{vPjL7QnH=8=JZFOd;8=vTmNY<tMvi)02Y*53B3apV3>D-9k@6p9SwG4<kvZ7fLTm
zX?bx%9=@<2cb=4X=11Glq4)2sya4~dF(s^{G{EI=u(|S20u`nH;Ryl)#%!go?W(OH
z&uijf$7pQo05oItv~&E+{Wk{n<o%nqGjla2@wBtGcj5IEAo~{w@8A4CWF|6_f3djQ
z2#{$jD3gdeIGd4hFtRf;lL^9+kdW{@o0{{gic9_*{`XCQ%+l4>k(Y_d!^4BogN@O_
z*@B6MhlhuWnU#r^mEkW3gNv8FtFb48z00@%5b~dL#LZkxoUI&PtsLx0{*h}8bZ~PO
zAS3&yqW`-7t*4#ie^q4f^6ystZ6A}Tu_F@;BQw+g3*>5L{=e1xKT!Xa{0Hn`t@@A3
z`2U)QSIpVW*ww*V-NC_DP{hQ+*`CDR%-Q814cQr47+Lt4{wLG_R+j%Csk~wic8<<w
zF8@FTIry3WFWUd)2dJ94IM}-VV+27S=6?hJJMn)4wEtg#|4#fjfS>6foBlT&|3?S@
zi~6?*1>yd-<v+ba5KbJKp9%zoF+@gOMBNkgG6y!BP@?(kecE&zh9m}-933Jl;vJ3*
zXU(@JUr9oOdGu|>4-^9v#h39VH+mc$6Lbwj90S!WzzjW2LRsWVBApy!4IKv7H1oZC
z`%Ew;cTE0hE0Zsi;@MZQXJct|X{q_+Y_WV{$*-}BW(v=8S-24@i(|Gb$Q+T~CLaL)
z52?4VENC2M#_XW>eA!kjrqg2+>6YyAdlz*PDniDyfH_Zu0-(cu3k;!DJgg-#>Itm*
zXv8Ko?Yemm1|p(3b;8;}YdJ}-)(%pvrAjPJTQhmS*;zmk))tHt0=>`jhF%*k7X-c+
ztqv@eVxGX7JO*i&qvyyE%oC}uGkgSm4BgBx@<y}{;cscvpK$RAJb9o*EuGd4H|<f$
zj@yvCZVQ_TN=3FI-K-6E$m@=|<F_^_J!o>>QEIRd!0FM(@U`q+z`l0s<4|ZT$ax4$
z?~7S|m3tX<-{lT*Z$q?{urwfLsNM}|L$NVymN_;3+`B2<Uj;kIZ4>Q6Z1sWj!AHG4
z;h33yfz%dy6pP=L*jvBjT}Mz=PSBj~6U#mg{T^6OGWhOJVUdmRwBbxq8HNNF0I5$m
z3x{ou8<h(3ts>ZO&MCX@b}x&Ycw>Xx1ILjXktT&9p2OP)FhRbR^0^Jpp>!}+{a%^2
z#4V7z(lE@S&zEW5$JLuoV#>^`_A^*Y5(;Pox#3fV(Fz?h6UYz<gdAzd(jBZ9wls|e
zk8Upe{{4n*B-|ppIy@qZB*~!NsaZ)8VjB!8Z|=u801}7zWY%-@ZJI~$w?4YxG=nZ%
zJ^e~U&eq&IiWBFs@Fc0!wHFJk4U_3heuI`OP}h|>m+Chh%*fQabQM&W$nSa7Rgi0#
zAB5svfIh4i+184}kxI5+7hxL3DdX6bGx?q6hiG>BZO+I~AJ}Vf(TlmbWM@D#W&reF
z_tC(eCaEH(oBk$(Jah>+M}&e2<tmQw<m>@jmELmLMP;=Z9$;CzaicoNm}DqeJ9FCc
z4?Y1HM#374?(khBs-yQaJB$}*&~cDmA3bx6>KJWr%=(&U<<bSfk=U`S178nb^x_qT
z9nfseJ}BAfROB3>@bb-wC=rD-+Ubo}MYHyc{{@Zu=f+vQ*&}7eOyV)RC+I4aE$oSr
zOss<*8|5EJdr*&{2@wFN#W77CjAL9z+Qb|76EYYVSmo?Ju-7y{((D&jZ+{m-He?ka
zya{1*{QgLI9<t~YX&u{lSSRy&1e4*|G07m7zZ2a<08}96jZ=xtkt!h{r!J$8PQ&3u
zx|vJgXZ9DkDIWz{{U!oG99*zhz`b$D*zspCWG_Gb%nF@I#Z>!^e4ScSAfaVyls()9
zw-T5c_KkZTrX_ev5U#U!)7~$1^q5_P<SEE$5JhN3%rvWBXTd8)14TOeyJwdE?PrKR
zyEoNkS0@Ld^!7PmR=@l;q9V9To%$HoAJBYTL?p-!k<!y5Nwa;*{NL$}Q<}obCz?63
zLf-6W@B*#cY&5kwZ3SFo++PS*^x6&N@9^UMu*sVjPJ{1^(ghDGcwMUk@s}zRZMksI
z%fqd=?vO%|PuL6TRG1bBP()DUNjr!}ayu78E|M*=Dh92aGQTHX(wFf0u6P(aVL#Ba
z!BeLKM>tv%odHVbU%jsEJ)af1Is~?Z!=0R}@=RxkE}=cD<n~9pEBjIkhs?83-5~BD
z_#&aSIu?+oEQL|(27$pF)|K=>1PNo@`LUf#ibX@r1{K!Nao;G(Cl}4{kIk0&uKNdE
ze17GA2bk>*UZ^x}=0&+6yx;e_h{(9C=AOFS&Vamw4Lw~|_wVyA-2BP|q2MTt>&E?l
zj(R|Sqsa{Zz16H2zPd^}(r5~e{6WxMvk<_@H+Q;YAza@X#(9tCVD%u^o7*dAO+z<#
zhCZ=K9o0nNyV8rAU-U6sBqlf3BG6l!Xa=bxD@v1w-NQX$@JMSNa^{IdnCB8DpDTV(
zE{=m3F_$)AGLdmSaA5MV@Os~PX808?;bc;Avn-R+5W)Q=2Sc5imi)w;kUZM*YH0M{
z;qYS(Wi!eQGxrPP1xvZJ#tlwrRtT}jr(WaRf`V!=+BkleXAwCqAl%b%%^C9rLmR|A
z5L$Rnt*mU&PHJv55XygG%<Pa|bR6?j1MP#pZhpZDo)fzh&+|^gngGvdEk)@F)xF4<
z$p^Pu!KE@2!>*h)^R7tX3u-JmN}j!WEf^B;_;%iSW|mO`H&ZG<W*<11Cld1+LY-7g
zHdl5NvzDQE)I;SgA!gZ_4U&oxfDUGDdKl2F8z@G^%OO)l+bM0|9G3|bEK{M@#}%~S
z=r!9bRah19jUV5WdtAKkYrf1`vJ{C*&Ja4C>D3a*U8hS7M(~u|_eX`c){nvbN--99
zP?b-H5>G&AZKO&@QsPdQ74eT3LP~}~bcv52Ui8<H<D0&1TS_D+`frC1y~6&0zN?OC
z6Z2wec0!fLBuh@{Rr}~ndsv1teK#ae8s@^p0vol-#C16aH&kvA>LY~>_^1X08BYr%
z^+o_YNP&N3=t-^iocUQ-Z;PyGKjz5u>yGEmSMT8C@<gtL$@lm1K4>+9@kUaKG<lW{
z_$je$K^Z-!J~D+X6|Y_R#_^*c78AH+KOKFcFPb0Qu4~((4s=qtC*KmGnIPgVd%%g{
zfsp04k@rE#(i}N~ctB2Wcw6vvFs7zX8{G>;&gjC4Bg9_c%%5=}`WwzNH4MF)z0<{>
zRy{+5@81j@{#<6eBRp@60nWOR>s-iI@zqI}q9tM)(zUwLmcp*qo#l|Q;)qR248B4i
zY-JYIOsp;<DA|p}*Wtvjq9cgLB?UelpJb=)5Zb5r7v+@`C!#qp7p)qe2^q;#fdGp@
zxxN=*kA^B>S>SJPWlcb(DkEA^%%8@Hi%d2hy7&rVavN~7V;wYn>w=&M4}eH--qxuU
zI*j+#?b9AFPtgh2wDD(rVN{M|h)~y%*6`ZcaAr89S2EEBV;2R!xSXJuUdrDZevMni
zCGhuqdI)jIXjl&jyclVkdD`y&VbJq|^LinuyNfE(uD=s)JkZ!F1#a&LfbfChn=Y1q
zIA+*-<U{tb+>kL5$pVL+4#=U;<0XdG$6l5$#OF}>(7Opj%_&#8q9ER#o7ZK?{D|{|
z@1k=>gjM|@FOW5%%D0{cu_8MesZzw$ze!_;s?yO+GiIWmIgi?R<8l-dor>t(Y_)3f
z!I01pG;l%R-^tPcFjF_NgEq3!NxP9~iBeaCrH4p92ktb_1QtlrHl&I>mqXS-J3!!r
zM4A~FRz25OKHb&*PIUD{qpM-sbNf3(=xYt~viD;Y;-pwsdt#XdD_>tyPqrQ*<O#M^
z;)qtarjmJl*#|%l@beuLEF*siPW*XQI^t29lQ=D!6jUR)zPzC(Cy&f(WM+c8?`;;Y
zzIUBQhGi$zo=XVM125^<r$cCx;j;p_g$!pcA2pz@?HZV_-F#G2#+dFl0vxWt^^yS?
z{3taI*)^LYQsVJ@IgKc$R-(J5i4G0xH$Bf5ZP)t4023YCafdJA*~*-j0Wz3Yv87hn
zb6YPJ4UN-#@nJiv(qg2I-QvLgXR;?asL>0e8*3v5?BZMCL?zH0#uhPl3%EZC`7=;J
zcvT%DB20Vu8bk_f>=8t`u(J{N3sjmBQ+jhR>=BM3i}snh<r>mTdlpAriv0PJGlj}x
zX0OP4%?#U>QC5o;k~DI`f+bF~LR@NC-@|NejA|dYlXgY)cjEwlZA<}_sDz+tyZ}Jq
zk=2oC79^r2x1nJKJm$Of;jD$2FT@3OmDe{U?0R9&&aMM%N9g>grY*Hs81J(Yl1Rxq
z!SW1kv`z2d5ZSOz&~9|<MC3OTbyR|dX8fX7UR(DKwzXZ(Che#LdE!p13)DRy&ZS&G
zj|K<_>`L9|Np+wzN3E%naIkDCwZRy{hZ1oP$iM+H*6T<I)6YRB5i5vPKnXy3J9~fj
zl>0Z~_Ci04Iv=h!*iqCN-Hh+b0%*5F;}TChnCh-%X;Gc<Q|ho{Zvxk2toU81;lD!X
z+-?TZU+bPH43DgQ5b$dT%B?BiNSAX5Gu4Vg!_=x9>KRnmE>+ymiGw(evUkO48-5J-
ze}C2rR089uGZQQ1jzH(s$$L{k8G`UZcQ~n|YDcCgYhABQOX+nbUSKX!8h%5NuBEgJ
zRX7Z>@Kst{=}zxF#(mNyOSKP!iiRW~u_DCrkoB)FY*^5*`<4>agTArW+aX1VLf{UR
zny(RoB(LX3AsapLg#zc15#TR>560o#o=Lm28qz*<69k1mSSc#kWJRxRYBtMMob^YL
zBhQetr2SMed_$8&)=U`YNeK?Zp!-l5LTq!1@W9}u;z>1(5cXMfq)hi}{bmOm50(((
zECqZ<$uBEDPu9t_Bq}62#_+IIaifWk5d@b<-Fnl^-ITxhLZL1v(A2NKS*kr6$f*Gz
z;|K(bT(&O+>P+A@H*ip1ir0c85fA9=s)Qn`m~_^!x_E|S6o{KQzT+7g#+X3(Wava;
z-V#6>!0D-N0Ub2mjmoTB`wag$SM@RAi_!Y2dymfyxfL5<Rn=-6q-?wG1b8so2dVr(
zko7nYd=z<L4Ia=DwP{v?TT0QHxFf|<S)<!te8vwgf2{bTCaZ}p*kL1(KCf6UU4j#=
zal%?9hJA*Z&~LzZ7)5j=%(ambwXvK26hvH1k_*ybzOp%uWm6rziv{n%hMaE|eGSI<
z!T5R3y0^baHfGPYTo46RrBL$uRn9klK1**ht9e;PFuHDzwN5Lv@^ibc(!LAx>sq1{
z5NNhP>A(<^HkI92)Id!7K~V>bBQroUB$Ffl*o0`*DI+GhK+(R7(gx|tplrP>H-%c{
z(j80Ja!2dHn^5iHEBK_2hh;u<bPGG6p;LjDfl@#O+i^B01;BCw`XA~nsvlPAgrJ>3
zl9Wm|!mj8w4iYk=WetqUq+&`X6^g33PjN+sNH|X6%a<4o{b~a5>5gm%L-$UV-1>pr
zP`alo&Ff6LUeU9Ma>87}r9W4LM-KGznUDZ1AULsX9D`b@_+4=7@wg5_x&Ixh$zqTq
zq#ufM?lzGYR25nz%fqy{)V$of$7nS<U7BtA!u#rRmgNBAD|>j4f4Id=V6yqRh{19|
zk;uyFZ5~XssZRT<(>PS4FwJs|`%ra6)bb0LB_FJ;Ao&jz8PH-cXlkBQw6oNa!c^PB
zcy!S85o8R;#pkpd-b|V*t6e?+oGN)`SxHZYggn~p5+1p&x8oTVuW4eGixpNiSYYSN
z_8;8V_0J}yFW_9ou??ScsFHW$I{owk<&tY!n*9Nao9tK8;>;s!NMTEdwPU7bkon%{
zTWu2=DNw1kDI|Wko@c8q*?bohEgro)OR0IGE9*$MeZJeu#VJmv>(Z4yACMN`EK(db
zx$L{yg?7H|(<W0JG0^hswA7%8^BaO5;^6GyOG+_L!d|%5-ms#AUzH|sXm*3KBQ+C+
zPX8jNM9}>791f~EZCaU_+0fHC_XTBM(<^*A$8aNcSzgsLO_`C9fLgKEX#u}}518jj
ztwCrtj+H1Pr1bvwVztDLR$RNsJkA#=qlY?2tXo~{WoeLM-K!bP$w+h!QO_PW3nF7O
zRPU<bA=HIRw^~>v5M`=bT5mdZ+jd5GW1Za{UA$<yLR!(bRY4P?3f?fZI}7N!V-F+|
zDMVb01D#l~N!5wcc$v^-2*w=%-*X*_;~Xc(dX_Npid!GI2n=|Y%T>u(XE&R*7FJ-b
zZ+lm>m4k2!Md(r;Jn>TdRkI;oP%p~oE`F!0Aww=1AZ~Yj4p3SUa*ccn%l~W-xL;S~
zFbX->&C(!1bQ`JxS07;4O!}yxK<{fp0)yxyGw;%k!Z@!aw@T4|Ts9imucQ^_NQ*RM
zMtb(1*;-U6?jTo<1}B6#L9XxAd>>zF#>g09H&eFheOe0fv`B)tt5HoHu28V1NFS)4
zFQ|JkeAJa6z|BX_NjtJ-u8k1+Xx89Z$K1T60KT3ynS-|(0NvzKc`cW=3nsLhfdKgw
z?Uv*GD4hZKI13{0ExEyD_2f#*ITGCzhyY%8&EifRyM2Xk{aI+IPuZc1j?W@&+bSom
zOjR2{5I*|gX5^?YdIEC4<}Wo>OD%kVlo6{Mn_Y#5An9B>tu@%xPNjzgp=_`b2;!*|
zimCt6)MF2*ZM}-qPO?X-MEm6^I4C^>`+i?4zp8D%pw<4CqFF1U?-Hs~HH*XN;~ss0
zotZJ{UB_XVt^p7fIFn!+rzG$+I{t3CJ@TSC)KFP_<=YwGC1dyj<UEBpJaLuaGavZ&
z+aX^Z7)C15swJAl;#TWNeG#WkW9F~<Z8@Y$Fj2dD@}%Muz__nmR@McTq@7|l=+q5g
zz9>RpB=lOYWM<-Z-r*L*@Ovr@_sY9d{hgXlsKW1iYV47VT#DfPnsl{EN2HQ)^ZW8V
zh^!_0C3$~6T|F={+C<=}kPDv<tv4i-eEHZESu~RU&s%J5ZA;STxAc*R6=F@(I;J0R
zHa){{Q6+-1n9$e#$o`Ja-Z;&V%WDTr0quX(=eEvs+;y%z8TGp!CfOP-{BL9ClZK(}
zkTzV6lWeWGr~i(~bKYrNk(jXj>JU1>L_Zi&oEq+;6m7pu3fT>kRL&KWF;77~)mw^0
z|54WEB!)k=Upfq7QF$MxoaXPBT72E5;3@I^toWA^{&Ee;Gi(B{a|!A3?1I#|t}mgF
zSnI`Y=;4mZS=<Y{#lcOd4wLirskbXVE2A~x^2m(}V#bCX>94U`cVaGHwhYmT+=sf`
z)}w^jY}qv@zaB<NQ7_f#oTg?DW&*lh{7+nCo;H|lkfofD8xc1bnA^Lg>u+eGq^@d?
zC7o0pR!%H`tw{fF<DC)~slv+sp|MS)e!p1h7F#=4V`=y(aek<^@~LY)bl&FC&8GXc
z7t<I`M~g?Ik?X?v+ahn$4j?J;^}2SjA5TYoCMZuOCuX!LgL-~??Z@Qvlq~nFr&L6W
zkcqvmdFu}hxuo$Rv{bNmfo<em<Di7V(2f6akP<-0zZVqyodPH@%}f8SSc;XUxZN;D
znk?$@UZm%IYh|}7-G_z6^6;F?Wc%aDmMr{9oqco|r}x~Xw&@M_25Q{7d!_m1q)1DS
z1u@E>!W*%$zGluK9n<4?l7QPF>Y*4oS_@&OAO+AXWC|oMH!CB*2#7)#?^I?{Zl+0H
zZ)#;ZYAugi8${6IT!;z%Q|;jw1$#O?q<%WTFrH06D75K$j;reB+PNG+ww&qDFxR}P
zk$k2!QWT5ag*j=_71AbrPAKerzu)sz#pd8OMlC2`7T5aZ5L;p@8H06^w`>WTyF2g7
zhLQtbrSGTRkfNNYxq}g2PPUaVMD_YgfjsMwvU=?@-LXA&SUom6sb0NGGCR3Dmz;Q!
zVwfwh_(a1Co#9yeh;!jx6e!FD5%i4^w$=L+7uvwqV<<(YY&9jKDttYe6Tqe|4B;g&
zcx~yS?0q%9`+mApYe^1)BV_m;t5F*ARJH!KZ}+tWZR37SDZsmVQt4xmszEU;7AFOX
zj~@RL+go<;`6TZwKD2~84sIMHf>C3>T%u4SBhg`e`%b~G25Ntq6$47_n(U9>Z0Wc>
z{AGR2)v%;D%ad%_b?M4y0Y_Ac$pa65650Ha<rMPM*K;O3<EZ8f<{{Bwf%8W;k3jb2
z`!0phiwLKEf<QyPgZDy(_%DR0qLwwvAFh)umDA|+1r@`(x=1GY+8VBMNin##Rwvw5
zWE~CMn6jm-mtJag^_{ifcCJB?Ya7zI=OnFs4aeh`IHQ#ewLbYxyU5yoc{JwIVTuHW
z<`WGCmL`^Ws);(@uMpdnJfi3ic=jX{f0>2EFKq%4qLhgIJq01&6wPIF`xBbU(ycS%
zk=197Cx)9D(ttRr+SXM)U}@2N^;v`L=SeX!qYQE|(h)A6nw)u;Wi~Z3GgG_-xe|jM
z_T))_=rXw8RZxlj7WuMkZlOW~8ggXDQX+_c=|~cw{rq!4wRW=7S-Q|}rlpr8@OkOr
z!ONM*$0`vq1LlaAxTgr3G^^Ohm8Lupg~_EtafWT@L_7Y@^SfK%y#w!f%crqI#~5Q=
zfkC|zM{8sJ+L{KOo!}@6dHPzlTd3#Zr_iOZ3-9bp*YlODe85gWkIPwQk0Q-tkBMBl
ze!uc+D6?JVpryM?_l8Il&|~U{4u|INFQ?>=PHE>7zT^|%e0bpEWvkf|re(hOZzwc5
z*4LjIvLDrY-CRKbypNlR#<bgLUE~s-huZ`Tx=)+*W^&Go3#Svlo;E5a|1@RtX{cHm
zDNRB;_m$4_H0@F}r@u#!Oow(I@!CRnZ#2DkPT&JlH2kQmMHr3Gk`%b6O!y>fBfdZW
zHbL2MQDce`d?+AtxtXl>Ph$|cY$BRL9)#76WXvh`?J@4arS?q~sq)+-T#vzNmPss0
zUo9&n$GeFUro*k|HA@u7W+gaVu<ldS!)EE9zT^0`Yn`$XMRS3OPB7Ela#3of(7hWV
zcK7imLDrc-JB{6=ge(_Lnj2_ziBbD&i`Hiafx)}*qeD<fgCtixB$lp5;yTyC@`3M$
zU%a0STKYN@BRuPXTkdb&K(*hd#kP9QvsP1@<wk1EtNL-jTEt70_fLgv{D(B{N?L?P
zgSdIu;cf3hDX>mGCgJ{!5SpfX$Q!VaIteD2r{8=2bl$KltMTTxAuFC=mIS#ay@J6<
zlDaosNlD<PWisUI8H2oito3j)H$oc2(wJY9xEqq66;Pu2R4s68@dwtdd?0eu)6wbc
zl!dv1>72W_nD{?6%KsqqTC%Bc268W6?zFbJ@(nuU&EsDcQf7G%<5p(SXwG0kW=94I
zxv%I$cec@jH>V-dj{G_W=_xL3QB~3d`=cHz7E-U<u_#BcrU(~(88u`_8=qtq9lgv8
zuk^u&QgrCxT#Mwyy{K|R)s@!FO@F{e(6&v(pX$zG1;{-d=u&EcsY{vd^Htv5gZ6`#
zwxvUKPwR6U5{M?9?b;D5n_guCE_a_!g!S!w9dfQ<W&&QRgQoh%EUV8QabrJUXV`K=
z#?q8ymiN}#Q)1orYi{vC2MQ8gC|#WrE2gmT?uHgR>*_BO0-6p8=f{a_m0qVkc%Puj
z^37*!8qRHWF$atQy5;q;Sau3^f~WBHono;ARH+Ubi!|hKP@$f&=tTj~9lmqA3{RQ}
z5&l?X7B<QCc@tq1Uih(f+h#f5<203<>lDM~3o64B@7F!+4c~9+v0PDsMMI>CETjVH
zAN0C81=E9Yu#CRt6aLw?HuzCXZm3BiV-~30Xwpq-idvVTTDOzeVCntpo|7r<>aChR
z>87mqom=dan@H!oqL#2<1doN}0ZRZ)T}C=>=LdBz$xm<oUi-DdQioV>h_hH#zA#R0
z#nt`D^jN$z*L=IQ^%T3jlG?wHS<oC$eU<xk35p*w;EDQ(70L1>B{aVNdCb^#j%J~N
zrZeGS-?fMNI#D&?N;3tqT$bQ7!pEDo>;dNIS6RtFmGxe8UbE<q)|f<A?+;G^#i2_C
zEuHBibsQ1wFl0c?`AM3tBgcArmw=~j%y<baDE0w2+%~X(vb~e^9Ab?W)s;jS`*PXB
zmS)UD&@!Esrocn`AZmaRfX#9)mt(tBz<<y$+<B+JGM?b`zQG2&Zs-I<0BsKu5scUe
zrYs#RI8qltoETs*&vg1XPIfBGH-WLy%q*{%`Eh~TbF4BmqetjX$l2`xv0`fDRB%w}
z#QK%md(DeLwE}LI?frHN7;65Y@H+bK!Zw#u)pnR}>%_&RcfxIVIg-b=D*OxUyQJHP
zRQA3>A0<~y=J;+;5SsYJ^V`dYA#lu=&AdB-?k<s)GlB53nn^gevh2X=t;P5E{%nh6
z^^o$lDxQ{nsFDRvI}zpW-T;n4HIp1)49Sva*BFqXxI0!Q9Zu20@XyHv0zh@Gx9vxY
z!wF*x4(_h;bJMqYJDg0H?fuX6KWGyO5Ccn}S|Cy8Kc#6WFZq~{u8sN9w=xWnYlpT}
zZEn}qkHC2Jkq3GciQ|y%8v<6>B(Mm59ZUU|DsQ#|uaQfI6qqE4*nHfN-m1GJ;|dfW
z{g}}$!LiXU-O1m*iDL0aqN)A1*@Ly`SSE)eKuom8P2W|)@a{AhS=x~Dr8u*U$+{v=
zZkAJy;J$4cvm5w5&u~Q4so!iW9AduIoR6img1b^`SJHpIZ#NE&5clXjjCE@7vL5M3
za1`r@p(gu5*uoJ=z}4@|6;B9ri{VSsUeCb*Gvg1Li=Km(D<SSRf_^l1!BjtrEqe1Y
z;Wm9dwN`%U3M5U$Ea`0g!C$64Izm~|Ng)+m30JC=dcV>6*fU9((tPP`CXZ@!9oM-~
zz&GJ<BkXLK-lu6HV&ZH`<77EwiQ=~$MbR!^VFqUAcJ;En(chRDnJ*+-Dybj_5ISd1
z>_@9;>4_M&$9{`kFXwX(Th0nz-U|yQujdrp#%JxR$;^8}eH68r>&VT`bQk=6p37!w
z5mj!I27ITSIbh7=pv_Sf8DqoJKE9Tdx(kSS3}PemD!U<fdC7q%2lVlXBBJ5<B%xJ(
z;Y0z;f67x~+Q4#x6Cb~WXYA?|PyAq8s;n8eqmo%vi%_xQfoP-jhnYt4lj%S9(T_W)
zAh`E3GBo3vKD=7)R@&=8(l^A6@zH+ugm0wk#SU^4L`<#X+vpz`#A=HaRxO#HX(^bu
z1djPOFQe6Q&6XVccZ9VBD)v9`0oJzb@`jBAnhXQ{6l>z+#X}Qkbrd&0(Ot|U*L1p#
zHy=4ZAI!ejAb-FAz4G{u;UM|$52WhjRJe*|lxwRtq+7?`@#qZ;tkHhbk|Bw5739W~
zW{%<{L9?!(i;`0E<bsX3A8ybpy=$E9*u8Ft3-Px}Cu2G!wTsESJUz9uhCSlp2w8B_
z$I=(<G)_LR(5^2a&HgNpHxGUnAr+|zsH;6*^GeHL_k|&!B2V@u8AOn)`4OaJgS}J#
zU>JdqsvWHFhBfe;&q=^Gblq^8FA6g+?sPy_>|2s(Q=gvdzB3wOwRQE8VNvlqtZF%_
zBBWFhr!rZZ&RB~l#D$LS0=1~;zqU%l85$2izgdDaL0eh6X1l(1p!Dm795poIOEZ3G
zro}layHaF`FDyGBhJ^mgd5u?8YhLB0SLx&2%iMushW`x>SI_3N9=%SuI!Cb<h!|9y
zV@eWrh^XG0{<ZRVixEC?^ia(maiW8CGRLx-kaWS@vIvttva&6?iLQN7hgZ|>`=4Fp
zV)^-GJHj-QH2PPb7l`k$SKwjVJj*?WGS0BfZ-F@H#TznES=#B_KHAckGM`Xy@(g-0
z-D#&g#EF(f?h8n^KOe*yo6}A2Q>6C7@$W8qxyhl*vq9HQkU@V0K?fd3BVwjYA}CeP
zF5{KAX<56rg42l9{A?eC+|dtYvBPZtyOGQ*eb4N^=x$3TQ^SE6^GD;x4k6-CdkWEq
zo3u-s%p?ApT|hpd08}H^K@!!Pj(Eivf3+Rj_hp}mkaZT1&fZkyk_EnRNO*gb+{jor
z_dv>7U!QEnbZp4xIS1jbu9<R2D_zfD+)!(fx3KwFvbE5e{G&t3nYnN*n)}jiXaW@4
z<i3r@GFCl(DrCAIa)?~tR$%!St@D)8G41Fh%)p+_tY`|$iB=s{_a5!!tgHwl@%;;D
zLU?E6AgcXnhD?dVEh$O)MXJ1oXs|k!^Nw2Yt}^c2U_&65-hz?f3)>4wqOFVz0~yMJ
zx3qJ;kc4wR5lxaDxPj9-$_c{V-Gs}$OdEIJ2p&sMx=y&ZlL##VTa>zMHOi&t`5i{S
zehET!%iXYznu*t6C;;?1_`LUBWEF%#gfU_WGSPxBadc>d4pT^+&a29d<GW<%!JP)1
zmS|a@<o8sWl7eobMD=C0@+Ogr1)fe~W%4vP0cuv9!G?U18a~)B$SO%jyBZtPnNQ2Y
z%Q*wJPZP548a*cgUjW-_)@<Z4o9w9^hrR(AMW!*G2(8a9<PHc)c~iOUfMMd9Jkm9M
zst83IE)G4=>zcK_uAeW34&m*bbcGPb3YwtsT#hkP{WhrSK-K0nX$7j|Zrs;Xd?5~k
zCgsc*&Xw7d@dnfdxp+N7Z9G3^Tpoe4zB3^4oUuRo+^?5^ES_EWcWiH5;)x_o<F^TO
z&K<h`38!RD^T{0qvLxTdZ$N2+qegKV3cf}4<6yC%KZ3-2On?1WN|FcsLYDv^t(cW5
zM1lTZnR12W!UGR$Nl){vI&q?weP+03UE0}LO=FJ&yg6eA_p>mcnDKt>i<uBDM4k1(
zV#lO+`VmDN38hHeqGi*{2uV2{p?q>unI!#{I%Q&Q&nGA)zqtKjRtelgEPuPP!dR<m
zVYu_Pk$_mUq&lwR$oZm9e%~JlIm%2mN5M-7)I1QfH(GeSm^btDb778DlJ=fmJ<`k|
zSnrG67jhN;<anN2;cs-uauno}`Pl{OY}c<-bNEt6+t{*W&FEoX77*i5{IkFbX9{hi
zcph#AmIHkfS`$H)a_M<Zh@6lxxR}*YEK2)mgjZc{6Pgk98WdfaYy}AR{nV=dX)N)G
zu*!WE1C3#%u68nO2v_`hU_Zek6aFB43@(zjd^#T{4>Z}D@kXzn#nLASL=Y~Ol;h(N
zFdi_qs*J7xJ63|f_bB{B<C}(ai4bbC-uP3Mco(>H-17wI-)Wo;!zJCHSemF9P<=?2
zP>GiBVotn?>UKtqC!(}PzTn)Vv{%^U^q0uxc?G5Qh0dZbRt6tXo#@Qd)$@99F1{6?
zChRL4q$@5<dXsnywsWL&0T?c8_bBe!=`xS#<Idcc;Ljmw<*Rb!Z%QqB;Ay~s(d6h4
z#P)(&{xEGP>xzh=KYaqdP$Y;k$<ZQAN#_`&kD8+#45Np(bAUp7Xv3mAkw+BWaXrc<
ztJHm%S*X9G8pdx~ao#KwQB@iz#%=uIo{EJ6`ebS6O+<IvmaCtct+6S3<BA9|t=#l?
zexdFb;f!#<?OK07_GUQz>Xyzj<lydUAX|**Oe@ZU{3~s>JeF)xbtKrbl2nQIj<@*l
zN|c(Yi-5?>u`swSo1AlVMZ0HNiUB;Y#?+9lQ&yuy3#K9d{g<Eb)T9SmMBqNVwAuBn
z(&0rd;%{WQ`c4rt1;$I-=Pp<6#Ash6cwpuX$x2G-3}{ElDM^wIY!H&ONN(${cur|v
z3@-4Hf@#bm!uybP!$`1<G3AW^?qbm%>N_;t@ZV29=???*g|tL&1Y-T9O`;rynZ-8l
zDkI?m+>dkhW%J9ZN@KM=hQHyg#)lE(7g%2BUC2Q&j4IFOlF=fp*^DQOb{!BsOLp21
zo4fsPKG-8PJW5<7T*f_R_lmj!M!L!-(2k-#IW5nYF}tKz!eujz%b%Y(+U}U?y5ae3
zQVNF=`h0@J{GoM6xHp^Qu=S=agJVgG`%!?ToL}%CwfKge2L>eAPpVxxR%&*vXQT8c
zp)>hvq#ew+#2i1gda|0|FA|0Dl!&}7qHI)5hqWCcUq~ERmyP7RNU4-u9cA3eaF&b7
zz6O%Dk2c~BD6yAcX`NqtIeAo^SUMA0tB)Im;*m#N-rJ<6hMvDAcMaVJVQEZrI|_Jm
zeTQg*o%<1;4X^sz=_Q^x9=ygqpka$~pWq|#PV*gcJrJ+jj73PWt(#cEjg75;Ezy?N
za9Nkd$6fO_MVb+Tz{p2VH4eHpSU->zbmv2PvZqk4Z*99Z=n%JMfY|FgaaW!melAU~
z_E;NV8mbGi4Yv(aRUi`Df5hv)A&UPF(7vDukTA?(GI}Wy&e&wv7FFAn`?Y~>B^1G+
z#FExlP|S-)fV`+jl;8ppQH$UK1l)6m9xA)==>CSBgox66qcRV)VL8g{+pH7#n&A(}
zEW1peNVs|nR|@I6OP2j{Cc+FoI9nx#4SOeDybl*ktqPFFHzk+O)Y}zzBbOg2R2$`V
z#AWMed1*5U`8yTvsk3<&Blpc>=}Mg=IWEU_q71^!@WaZ-=KBo?f$3$@#rJ?KQC;GB
z8kv+NN{>GnK8IP4k&XNWqS%YpZhHdQAq($`!+A3pb{RTj>@d~P6jH})8XQI_^X}Z`
z>cbVbi-KktR6Dvgz1iK%AH-8BZqWM{rJXKiXEb1Ca2oM}Tqk%!qJ>|~n}E&SVqX2x
zGKr*hRVSu-TcY*F+Lrf}j&OT~b|w@g-c5{wR-F7mOdUUjg5xAPxf~qF9tD*x)#nbL
z#o6L<CoxS`M>DV$^wRKW(&Km}`02Sbq9}6W$2&FadL<KR1USc1SAOE?0_MfJn{t&8
z6MhmaT9lcXgxHphr$;`N8ei>0XiX#>9nn*$UhA#U)c$LsOUGBs5GO<ZuCD+YpDW!5
zcqg$uB;G}sxPd+J>$3Oc$ZRk<x}n5i-<>=fv4YU=+iD}Vk+pJEa{=^=!w?Tb0CKjU
zJ15q$Ra(!=lpb*5@I7~^dDGrBf=xK0lM9Q501W_JT1K&yu86V?M(!E$M9vQ!iY6KZ
zcF5HP1pD;z38QsxWB!bD0kl3sJS{7JT+e7<FbK8i-rgq2W%=AXSULS@V?@MO*o5+h
zdVvw{Y<;8~S<K2!S4Z<7oRFqUN5nz&1vkcb%h=QQzPF$(eq+mhEr-W4t$m2I{^M3P
z4(&?E@zS~|zZbD1Wkfj}E_R^z9d}(l1C*ytF)`Y?h7I^GCH56qhgb`~WY;`(84A0!
zuqw!Fq3HH!nokQG#emu0x0~ZPBud#E4mZAQu}bJ#hA@#30=0ETY3wW>3=q&6BMjZH
zOtFNhtBWqen8#WDwkiUxajXPjqEeHSYc2LpwW*n2C{r|z$w{lB+9bIs--5aAM)S!@
zb~a0R2<9V~^xBqKmC<YPG8OIE4%{ht07ZyGz6<o8yy~DRb#)UNB^qgx*wM~^F#?Fe
zsi<XAW}kb?Wg6wC29?JC#)~wzqKl>$I*4v;J#!r>lGJdD(!##@W%Jk<$5kU})TVk`
z-0Vo9p1{WVUB&hrV$1r~4{$U6I^+9f&Hyz;i1us>S(N6?vguH9dnGX6239I8W4o$X
z;f^zYBZAeG7N_cwUi=`m=h5e^o^yFb@qvI$G`UDq`~qMFKK8+{*t(X~P*s<L=!%sP
zGJnjUmZ1YRybWbt(jBXI_RA%B)cA|oYBxyE)ebn$b|X(nJF`^vgF(G*GYl=EA?iI0
zv@@;~R@f0gez=uG^?zSM{kxLDKBj>(@OzHH2Zb9VH!ZJrn!aUFp#^s%0JJTge4gI@
zFK;sxaCJQw4yKUYhi){?q0sxBmQ@2VklTcHtH$5rz(C71Px}vF7gR7xUMU&50^U}z
zaP9FbC}gI#0YPyz=}l<i9a)@P7vqmZrX}Gu#$T!Xga=to(b7w%K8NqS0I8&s3`hA2
zD=h%L0-zeI|G0_5LJx$reO@^Nyy=&S2=glXK;E$jgshtG;p6PbWdT$$Nra=pUZ^=M
zK_uzT3t3!S>0bl<Ju>ZwI9PQhswh`VlDx}&bxj_NPbcF7Lr+`S4sbz)sQ->px&ks0
z3J2_}mM$!>Ue?Q)YSgzTfoWtK3DGWS*QQA!w`~Bnwp%R=+i{>|O|)8*XWTHba%7?%
z-*+83G(uTd1(7J?-+pq(4!)5qixwUFOl>b&=a)}wRVK%Sqsf2?AhFLbsS|@lA7{;1
z1^KUl#E3UmN2`mbJo3$%gPpr0rf$M2s8(<2S$dvQXr-tl)-Ia||NoAB=dbjBfwJT7
WL`FW9*#Gmxf{cWsc#Wu0@c#lJrurxV

literal 0
HcmV?d00001

diff --git a/tests/manual/highdpi/heart.png b/tests/manual/highdpi/heart.png
new file mode 100644
index 0000000000000000000000000000000000000000..deaec182749735afd4af18478b0b309b8735c4f8
GIT binary patch
literal 15194
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
WL`FW9*#Gmxf{cWsc#Wu0@c#lJrurxV

literal 0
HcmV?d00001

diff --git a/tests/manual/highdpi/heart@2x.png b/tests/manual/highdpi/heart@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7a1ca89a44edec0bcf6401594bc42759c6cf208
GIT binary patch
literal 20654
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
Cxl?oi

literal 0
HcmV?d00001

diff --git a/tests/manual/highdpi/image.qml b/tests/manual/highdpi/image.qml
new file mode 100644
index 0000000000..8deab5c734
--- /dev/null
+++ b/tests/manual/highdpi/image.qml
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtQml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.  For licensing terms and
+** conditions see http://qt.digia.com/licensing.  For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** 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, Digia gives you certain additional
+** rights.  These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Rectangle {
+    width: 400
+    height: 400
+
+    Image {
+        source : "heart.png"
+        anchors.centerIn: parent
+    }
+}
diff --git a/tests/manual/highdpi/image2.qml b/tests/manual/highdpi/image2.qml
new file mode 100644
index 0000000000..b83c8006d8
--- /dev/null
+++ b/tests/manual/highdpi/image2.qml
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtQml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.  For licensing terms and
+** conditions see http://qt.digia.com/licensing.  For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** 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, Digia gives you certain additional
+** rights.  These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Rectangle {
+    width: 400
+    height: 400
+
+    // These images should all have the same visual size:
+    Row {
+        anchors.centerIn: parent
+        // 1X only
+        Image {
+            source : "heart-lowdpi.png"
+        }
+        // 1X and 2x, switches on screen change.
+        Image {
+            source : "heart.png"
+        }
+        // 2x only
+        Image {
+            source : "heart-highdpi@2x.png"
+        }
+    }
+}
diff --git a/tests/manual/highdpi/imagesize.qml b/tests/manual/highdpi/imagesize.qml
new file mode 100644
index 0000000000..ee6719a6ee
--- /dev/null
+++ b/tests/manual/highdpi/imagesize.qml
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtQml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.  For licensing terms and
+** conditions see http://qt.digia.com/licensing.  For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** 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, Digia gives you certain additional
+** rights.  These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Rectangle {
+    width: 400
+    height: 400
+
+    Column {
+        anchors.centerIn: parent.Center
+        Row {
+            Image {  width: 50; height: 50; fillMode: Image.Stretch; source : "heart-lowdpi.png" }
+            Image {  width: 50; height: 50; fillMode: Image.Stretch; source : "heart.png" }
+            Image {  width: 50; height: 50; fillMode: Image.Stretch; source : "heart-highdpi@2x.png" }
+        }
+        Row {
+            Image {  width: 100; height: 100; fillMode: Image.Stretch; source : "heart-lowdpi.png" }
+            Image {  width: 100; height: 100; fillMode: Image.Stretch; source : "heart.png" }
+            Image {  width: 100; height: 100; fillMode: Image.Stretch; source : "heart-highdpi@2x.png" }
+        }
+        Row {
+            Image {  width: 150; height: 150; fillMode: Image.Stretch; source : "heart-lowdpi.png" }
+            Image {  width: 150; height: 150; fillMode: Image.Stretch; source : "heart.png" }
+            Image {  width: 150; height: 150; fillMode: Image.Stretch; source : "heart-highdpi@2x.png" }
+        }
+        Row {
+            Image {  width: 200; height: 200; fillMode: Image.Stretch; source : "heart-lowdpi.png" }
+            Image {  width: 200; height: 200; fillMode: Image.Stretch; source : "heart.png" }
+            Image {  width: 200; height: 200; fillMode: Image.Stretch; source : "heart-highdpi@2x.png" }
+        }
+        Row {
+            Image {  width: 300; height: 300; fillMode: Image.Stretch; source : "heart-lowdpi.png" }
+            Image {  width: 300; height: 300; fillMode: Image.Stretch; source : "heart.png" }
+            Image {  width: 300; height: 300; fillMode: Image.Stretch; source : "heart-highdpi@2x.png" }
+        }
+    }
+}
diff --git a/tests/manual/highdpi/mirror.qml b/tests/manual/highdpi/mirror.qml
new file mode 100644
index 0000000000..3a92a9abd4
--- /dev/null
+++ b/tests/manual/highdpi/mirror.qml
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtQml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.  For licensing terms and
+** conditions see http://qt.digia.com/licensing.  For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** 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, Digia gives you certain additional
+** rights.  These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Rectangle {
+    width: 400
+    height: 700
+
+    // the images should have the same display size and appearance on each row.
+    Column {
+        anchors.centerIn: parent.Center
+        Row {
+            Image { mirror: true; source : "heart-lowdpi.png" }
+            Image { mirror: true; source : "heart.png" }
+            Image { mirror: true; source : "heart-highdpi@2x.png" }
+        }
+    }
+}
diff --git a/tests/manual/highdpi/sourcesize.qml b/tests/manual/highdpi/sourcesize.qml
new file mode 100644
index 0000000000..64bf8ad86b
--- /dev/null
+++ b/tests/manual/highdpi/sourcesize.qml
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtQml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.  For licensing terms and
+** conditions see http://qt.digia.com/licensing.  For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** 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, Digia gives you certain additional
+** rights.  These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Rectangle {
+    width: 400
+    height: 400
+
+    // SourceSize is in device-independent pixels. These images
+    // should display at the same visual size.
+    Column {
+        anchors.centerIn: parent.Center
+        Row {
+
+            // standard image with no @2x version
+            Image {
+                sourceSize.width: 75
+                sourceSize.height: 75
+                source : "heart-lowdpi.png"
+            }
+
+            // image with "@2x" version on disk
+            Image {
+                sourceSize.width: 75
+                sourceSize.height: 75
+                source : "heart.png"
+            }
+
+            // direct use of "@2x" image
+            Image {
+                sourceSize.width: 75
+                sourceSize.height: 75
+                source : "heart-highdpi@2x.png"
+            }
+        }
+    }
+}
-- 
GitLab