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 zcmb7Lg<DkL(_dJY?(W>BQ%XR(LFrg}=}rMb5LiG`U}*zTQeuGxDaoZlknWHrR9Zj@ zrQZGi{)6{EH=cXXIdkXC%yaI{XXYjw8EBIcGZO;<05V-24HEzWNBF;k5Fh&_{6%^Q z_Ja3RP1lSNyG0VZBw_D~0(7jNV*4**4@aDn)+{XmfD@prp=uUZa8wu`X&dtSeuK|$ zCU`^tGVho~-*cIGgqIeNI0@GEfj<_LVEJ+^WU<CRIt6>8ovJ1rNuP33brCY!?Z(SG z-pdm8Y_EuT>+<8~F6_Y(_zn1H#KoKNZ}p4e)1*HmCL~wgyElGb3xD8GDf$2IJDe7C z_&bDl@LrXTf29;tRQyO~VT^b{*<DW}To5LSs=D)sL_t;jVT|I0yRn`1h5H%gDr^Cy zmH6bi3I`c_FcKr0mg�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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 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 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