aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qquickiconimage/tst_qquickiconimage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qquickiconimage/tst_qquickiconimage.cpp')
-rw-r--r--tests/auto/qquickiconimage/tst_qquickiconimage.cpp572
1 files changed, 0 insertions, 572 deletions
diff --git a/tests/auto/qquickiconimage/tst_qquickiconimage.cpp b/tests/auto/qquickiconimage/tst_qquickiconimage.cpp
deleted file mode 100644
index 370d2ef4..00000000
--- a/tests/auto/qquickiconimage/tst_qquickiconimage.cpp
+++ /dev/null
@@ -1,572 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** 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 The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QtTest/qsignalspy.h>
-
-#include <QtCore/qmath.h>
-#include <QtQml/qqmlapplicationengine.h>
-#include <QtQml/qqmlengine.h>
-#include <QtQml/qqmlcomponent.h>
-#include <QtQml/qqmlfileselector.h>
-#include <QtQuick/qquickitem.h>
-#include <QtQuick/qquickview.h>
-#include <QtQuick/qquickimageprovider.h>
-#include <QtQuick/qquickitemgrabresult.h>
-#include <QtQuick/private/qquickimage_p.h>
-#include <QtQuickControls2Impl/private/qquickiconimage_p.h>
-
-#include "../shared/util.h"
-#include "../shared/visualtestutil.h"
-
-using namespace QQuickVisualTestUtil;
-
-class tst_qquickiconimage : public QQmlDataTest
-{
- Q_OBJECT
-public:
- tst_qquickiconimage();
-
-private slots:
- void initTestCase();
- void defaults();
- void nameBindingSourceSize();
- void nameBindingSourceSizeWidthHeight();
- void nameBindingNoSizes();
- void sourceBindingNoSizes();
- void sourceBindingSourceSize();
- void sourceBindingSourceSizeWidthHeight();
- void sourceBindingSourceTooLarge();
- void changeSourceSize();
- void alignment_data();
- void alignment();
- void svgNoSizes();
- void svgSourceBindingSourceSize();
- void color();
- void fileSelectors();
- void imageProvider();
- void translucentColors();
-
-private:
- void setTheme();
-
- qreal dpr;
- int integerDpr;
-};
-
-static QImage grabItemToImage(QQuickItem *item)
-{
- QSharedPointer<QQuickItemGrabResult> result = item->grabToImage();
- QSignalSpy spy(result.data(), SIGNAL(ready()));
- spy.wait();
- return result->image();
-}
-
-#define SKIP_IF_DPR_TOO_HIGH() \
- if (dpr > 2) \
- QSKIP("Test does not support device pixel ratio greater than 2")
-
-tst_qquickiconimage::tst_qquickiconimage() :
- dpr(qGuiApp->devicePixelRatio()),
- integerDpr(qCeil(dpr))
-{
- QQuickStyle::setStyle("Basic");
-}
-
-void tst_qquickiconimage::initTestCase()
-{
- QQmlDataTest::initTestCase();
- QIcon::setThemeName(QStringLiteral("testtheme"));
-}
-
-void tst_qquickiconimage::defaults()
-{
- QQuickIconImage iconImage;
- QCOMPARE(iconImage.fillMode(), QQuickImage::Pad);
- QCOMPARE(iconImage.name(), QString());
- QCOMPARE(iconImage.source(), QUrl());
- QCOMPARE(iconImage.color(), QColor(Qt::transparent));
-}
-
-void tst_qquickiconimage::nameBindingSourceSize()
-{
- // We can't have images for every DPR.
- SKIP_IF_DPR_TOO_HIGH();
-
- QQuickView view(testFileUrl("nameBindingSourceSize.qml"));
- QCOMPARE(view.status(), QQuickView::Ready);
- view.show();
- view.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&view));
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(view.rootObject()->childItems().at(0));
- QVERIFY(iconImage);
-
- QQuickItem *image = view.rootObject()->childItems().at(1);
- QVERIFY(image);
-
- QCOMPARE(grabItemToImage(iconImage), grabItemToImage(image));
- QCOMPARE(iconImage->sourceSize().width(), 22);
- QCOMPARE(iconImage->sourceSize().height(), 22);
- QCOMPARE(iconImage->implicitWidth(), 22.0);
- QCOMPARE(iconImage->implicitHeight(), 22.0);
- QCOMPARE(iconImage->width(), 22.0);
- QCOMPARE(iconImage->height(), 22.0);
-
- // The requested width of 16 is less than the pixmap's size on disk which
- // is 22x22. Our default fillMode, Pad, would result in the image being clipped,
- // so instead we change the fillMode to PreserveAspectFit. Doing so causes
- // QQuickImage::updatePaintedGeometry() to set our implicit size to 22x16 to
- // ensure that the aspect ratio is respected. Since we have no explicit height,
- // the height (previously 22) becomes the implicit height (16).
- iconImage->setWidth(16.0);
- QCOMPARE(iconImage->fillMode(), QQuickImage::PreserveAspectFit);
- QCOMPARE(iconImage->sourceSize().width(), 22);
- QCOMPARE(iconImage->sourceSize().height(), 22);
- QCOMPARE(iconImage->implicitWidth(), 22.0);
- QCOMPARE(iconImage->implicitHeight(), 16.0);
- QCOMPARE(iconImage->width(), 16.0);
- QCOMPARE(iconImage->height(), 16.0);
-}
-
-void tst_qquickiconimage::nameBindingSourceSizeWidthHeight()
-{
- SKIP_IF_DPR_TOO_HIGH();
-
- QQuickView view(testFileUrl("nameBindingSourceSizeWidthHeight.qml"));
- QCOMPARE(view.status(), QQuickView::Ready);
- view.show();
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(view.rootObject());
- QVERIFY(iconImage);
- QCOMPARE(iconImage->sourceSize().width(), 22);
- QCOMPARE(iconImage->sourceSize().height(), 22);
- QCOMPARE(iconImage->implicitWidth(), 22.0);
- QCOMPARE(iconImage->implicitHeight(), 22.0);
- QCOMPARE(iconImage->width(), 16.0);
- QCOMPARE(iconImage->height(), 16.0);
-}
-
-void tst_qquickiconimage::nameBindingNoSizes()
-{
- SKIP_IF_DPR_TOO_HIGH();
-
- QQuickView view(testFileUrl("nameBindingNoSizes.qml"));
- QCOMPARE(view.status(), QQuickView::Ready);
- view.show();
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(view.rootObject());
- QVERIFY(iconImage);
- // The smallest available size will be chosen.
- QCOMPARE(iconImage->sourceSize().width(), 16);
- QCOMPARE(iconImage->sourceSize().height(), 16);
- QCOMPARE(iconImage->implicitWidth(), 16.0);
- QCOMPARE(iconImage->implicitHeight(), 16.0);
- QCOMPARE(iconImage->width(), 16.0);
- QCOMPARE(iconImage->height(), 16.0);
-}
-
-void tst_qquickiconimage::sourceBindingNoSizes()
-{
- SKIP_IF_DPR_TOO_HIGH();
-
- QQuickView view(testFileUrl("sourceBindingNoSizes.qml"));
- QCOMPARE(view.status(), QQuickView::Ready);
- view.show();
- view.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&view));
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(view.rootObject()->childItems().at(0));
- QVERIFY(iconImage);
-
- QQuickItem *image = view.rootObject()->childItems().at(1);
- QVERIFY(image);
-
- QCOMPARE(iconImage->sourceSize().width(), 22 * integerDpr);
- QCOMPARE(iconImage->sourceSize().height(), 22 * integerDpr);
- QCOMPARE(iconImage->implicitWidth(), 22.0);
- QCOMPARE(iconImage->implicitHeight(), 22.0);
- QCOMPARE(iconImage->width(), 22.0);
- QCOMPARE(iconImage->height(), 22.0);
- QCOMPARE(grabItemToImage(iconImage), grabItemToImage(image));
-}
-
-void tst_qquickiconimage::sourceBindingSourceSize()
-{
- SKIP_IF_DPR_TOO_HIGH();
-
- QQuickView view(testFileUrl("sourceBindingSourceSize.qml"));
- QCOMPARE(view.status(), QQuickView::Ready);
- view.show();
- view.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&view));
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(view.rootObject()->childItems().at(0));
- QVERIFY(iconImage);
-
- QQuickItem *image = view.rootObject()->childItems().at(1);
- QVERIFY(image);
-
- QCOMPARE(iconImage->sourceSize().width(), 22);
- QCOMPARE(iconImage->sourceSize().height(), 22);
- QCOMPARE(iconImage->implicitWidth(), 22.0);
- QCOMPARE(iconImage->implicitHeight(), 22.0);
- QCOMPARE(iconImage->width(), 22.0);
- QCOMPARE(iconImage->height(), 22.0);
- QCOMPARE(grabItemToImage(iconImage), grabItemToImage(image));
-
- // Changing width and height should not affect sourceSize.
- iconImage->setWidth(50);
- QCOMPARE(iconImage->sourceSize().width(), 22);
- QCOMPARE(iconImage->sourceSize().height(), 22);
- iconImage->setHeight(50);
- QCOMPARE(iconImage->sourceSize().width(), 22);
- QCOMPARE(iconImage->sourceSize().height(), 22);
-}
-
-void tst_qquickiconimage::sourceBindingSourceSizeWidthHeight()
-{
- SKIP_IF_DPR_TOO_HIGH();
-
- QQuickView view(testFileUrl("sourceBindingSourceSizeWidthHeight.qml"));
- QCOMPARE(view.status(), QQuickView::Ready);
- view.show();
- view.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&view));
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(view.rootObject());
- QVERIFY(iconImage);
- QCOMPARE(iconImage->sourceSize().width(), 22);
- QCOMPARE(iconImage->sourceSize().height(), 22);
- QCOMPARE(iconImage->implicitWidth(), 22.0);
- QCOMPARE(iconImage->implicitHeight(), 22.0);
- QCOMPARE(iconImage->width(), 16.0);
- QCOMPARE(iconImage->height(), 16.0);
-}
-
-void tst_qquickiconimage::sourceBindingSourceTooLarge()
-{
- SKIP_IF_DPR_TOO_HIGH();
-
- QQuickView view(testFileUrl("sourceBindingSourceTooLarge.qml"));
- QCOMPARE(view.status(), QQuickView::Ready);
- view.show();
- view.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&view));
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(view.rootObject());
- QVERIFY(iconImage);
- QCOMPARE(iconImage->sourceSize().width(), 32);
- QCOMPARE(iconImage->sourceSize().height(), 32);
- QCOMPARE(iconImage->implicitWidth(), 22.0);
- QCOMPARE(iconImage->implicitHeight(), 22.0);
- QCOMPARE(iconImage->width(), 22.0);
- QCOMPARE(iconImage->height(), 22.0);
-}
-
-void tst_qquickiconimage::alignment_data()
-{
- QTest::addColumn<QQuickImage::HAlignment>("horizontalAlignment");
- QTest::addColumn<QQuickImage::VAlignment>("verticalAlignment");
-
- QTest::newRow("AlignLeft,AlignTop") << QQuickImage::AlignLeft << QQuickImage::AlignTop;
- QTest::newRow("AlignLeft,AlignVCenter") << QQuickImage::AlignLeft << QQuickImage::AlignVCenter;
- QTest::newRow("AlignLeft,AlignBottom") << QQuickImage::AlignLeft << QQuickImage::AlignBottom;
- QTest::newRow("AlignHCenter,AlignTop") << QQuickImage::AlignHCenter << QQuickImage::AlignTop;
- QTest::newRow("AlignHCenter,AlignVCenter") << QQuickImage::AlignHCenter << QQuickImage::AlignVCenter;
- QTest::newRow("AlignHCenter,AlignBottom") << QQuickImage::AlignHCenter << QQuickImage::AlignBottom;
- QTest::newRow("AlignRight,AlignTop") << QQuickImage::AlignRight << QQuickImage::AlignTop;
- QTest::newRow("AlignRight,AlignVCenter") << QQuickImage::AlignRight << QQuickImage::AlignVCenter;
- QTest::newRow("AlignRight,AlignBottom") << QQuickImage::AlignRight << QQuickImage::AlignBottom;
-}
-
-void tst_qquickiconimage::alignment()
-{
- SKIP_IF_DPR_TOO_HIGH();
-
- QFETCH(QQuickImage::HAlignment, horizontalAlignment);
- QFETCH(QQuickImage::VAlignment, verticalAlignment);
-
- QQuickView view(testFileUrl("alignment.qml"));
- QCOMPARE(view.status(), QQuickView::Ready);
- view.show();
- view.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&view));
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(view.rootObject()->childItems().at(0));
- QVERIFY(iconImage);
-
- QQuickImage *image = qobject_cast<QQuickImage*>(view.rootObject()->childItems().at(1));
- QVERIFY(image);
-
- // The default fillMode for IconImage is Image::Pad, so these two grabs
- // should only be equal when the device pixel ratio is 1 or 2, as there is no
- // @3x version of the image, and hence the Image will be upscaled
- // and therefore blurry when the ratio is higher than 2.
- if (qGuiApp->devicePixelRatio() <= 2)
- QCOMPARE(grabItemToImage(iconImage), grabItemToImage(image));
- else
- QVERIFY(grabItemToImage(iconImage) != grabItemToImage(image));
-
- // Check that the images are what we expect in different alignment configurations.
- iconImage->setWidth(200);
- iconImage->setHeight(100);
- iconImage->setHorizontalAlignment(horizontalAlignment);
- iconImage->setVerticalAlignment(verticalAlignment);
- iconImage->setFillMode(QQuickImage::Pad);
- image->setWidth(200);
- image->setHeight(100);
- image->setHorizontalAlignment(horizontalAlignment);
- image->setVerticalAlignment(verticalAlignment);
- image->setFillMode(QQuickImage::Pad);
-
- if (qGuiApp->devicePixelRatio() <= 2)
- QCOMPARE(grabItemToImage(iconImage), grabItemToImage(image));
- else
- QVERIFY(grabItemToImage(iconImage) != grabItemToImage(image));
-}
-
-void tst_qquickiconimage::svgNoSizes()
-{
-#ifndef QT_SVG_LIB
- QSKIP("This test requires qtsvg");
-#else
- QQuickView view(testFileUrl("svgNoSizes.qml"));
- QCOMPARE(view.status(), QQuickView::Ready);
- view.show();
- view.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&view));
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(view.rootObject()->childItems().at(0));
- QVERIFY(iconImage);
-
- QQuickImage *image = qobject_cast<QQuickImage*>(view.rootObject()->childItems().at(1));
- QVERIFY(image);
-
- QCOMPARE(iconImage->sourceSize().width(), 48);
- QCOMPARE(iconImage->sourceSize().height(), 48);
- QCOMPARE(iconImage->implicitWidth(), 48.0);
- QCOMPARE(iconImage->implicitHeight(), 48.0);
- QCOMPARE(iconImage->width(), 48.0);
- QCOMPARE(iconImage->height(), 48.0);
- QCOMPARE(grabItemToImage(iconImage), grabItemToImage(image));
-#endif
-}
-
-void tst_qquickiconimage::svgSourceBindingSourceSize()
-{
-#ifndef QT_SVG_LIB
- QSKIP("This test requires qtsvg");
-#else
- QQuickView view(testFileUrl("alignment.qml"));
- QCOMPARE(view.status(), QQuickView::Ready);
- view.show();
- view.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&view));
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(view.rootObject()->childItems().at(0));
- QVERIFY(iconImage);
-
- QQuickImage *image = qobject_cast<QQuickImage*>(view.rootObject()->childItems().at(1));
- QVERIFY(image);
-
- QCOMPARE(iconImage->sourceSize().width(), 22);
- QCOMPARE(iconImage->sourceSize().height(), 22);
- QCOMPARE(iconImage->implicitWidth(), 22.0);
- QCOMPARE(iconImage->implicitHeight(), 22.0);
- QCOMPARE(iconImage->width(), 22.0);
- QCOMPARE(iconImage->height(), 22.0);
- QCOMPARE(grabItemToImage(iconImage), grabItemToImage(image));
-#endif
-}
-
-void tst_qquickiconimage::color()
-{
- SKIP_IF_DPR_TOO_HIGH();
-
- if (QGuiApplication::platformName() == QLatin1String("offscreen"))
- QSKIP("grabToImage() doesn't work on the \"offscreen\" platform plugin (QTBUG-63185)");
-
- QQuickView view(testFileUrl("color.qml"));
- QCOMPARE(view.status(), QQuickView::Ready);
- view.show();
- view.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&view));
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(view.rootObject()->childItems().at(0));
- QVERIFY(iconImage);
-
- QQuickImage *image = qobject_cast<QQuickImage*>(view.rootObject()->childItems().at(1));
- QVERIFY(image);
-
- QImage iconImageWindowGrab = grabItemToImage(iconImage);
- QCOMPARE(iconImageWindowGrab, grabItemToImage(image));
-
- // Transparent pixels should remain transparent.
- QCOMPARE(iconImageWindowGrab.pixelColor(0, 0), QColor(0, 0, 0, 0));
-
- // Set a color after component completion.
- iconImage->setColor(QColor(Qt::green));
- iconImageWindowGrab = grabItemToImage(iconImage);
- const QPoint centerPixelPos(11, 11);
- QCOMPARE(iconImageWindowGrab.pixelColor(centerPixelPos), QColor(Qt::green));
-
- // Set a semi-transparent color after component completion.
- iconImage->setColor(QColor(0, 0, 255, 127));
- iconImageWindowGrab = grabItemToImage(iconImage);
- QCOMPARE(iconImageWindowGrab.pixelColor(centerPixelPos).red(), 0);
- QCOMPARE(iconImageWindowGrab.pixelColor(centerPixelPos).green(), 0);
- QCOMPARE(iconImageWindowGrab.pixelColor(centerPixelPos).blue(), 255);
- QCOMPARE(iconImageWindowGrab.pixelColor(centerPixelPos).alpha(), 127);
-}
-
-void tst_qquickiconimage::changeSourceSize()
-{
- QQuickView view(testFileUrl("sourceBindingSourceSize.qml"));
- QCOMPARE(view.status(), QQuickView::Ready);
- view.show();
- view.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&view));
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(view.rootObject()->childItems().at(0));
- QVERIFY(iconImage);
-
- // Ensure that there isn't any infinite recursion when trying to change the sourceSize.
- QSize sourceSize = iconImage->sourceSize();
- sourceSize.setWidth(sourceSize.width() - 1);
- iconImage->setSourceSize(sourceSize);
-}
-
-
-void tst_qquickiconimage::fileSelectors()
-{
- SKIP_IF_DPR_TOO_HIGH();
-
- if (QGuiApplication::platformName() == QLatin1String("offscreen"))
- QSKIP("grabToImage() doesn't work on the \"offscreen\" platform plugin (QTBUG-63185)");
-
- QQuickView view;
- QQmlFileSelector* fileSelector = new QQmlFileSelector(view.engine());
- fileSelector->setExtraSelectors(QStringList() << "testselector");
- view.setSource(testFileUrl("fileSelectors.qml"));
- QCOMPARE(view.status(), QQuickView::Ready);
- view.show();
- view.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&view));
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(view.rootObject()->childItems().at(0));
- QVERIFY(iconImage);
-
- QQuickItem *image = view.rootObject()->childItems().at(1);
- QVERIFY(image);
-
- QImage iconImageWindowGrab = grabItemToImage(iconImage);
- QCOMPARE(iconImageWindowGrab, grabItemToImage(image));
-
- QCOMPARE(iconImageWindowGrab.pixelColor(iconImageWindowGrab.width() / 2, iconImageWindowGrab.height() / 2), QColor(Qt::blue));
-}
-
-class TestImageProvider : public QQuickImageProvider
-{
-public:
- TestImageProvider() : QQuickImageProvider(QQuickImageProvider::Pixmap) { }
-
- QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize)
- {
- QSize defaultSize(32, 32);
- if (size)
- *size = defaultSize;
-
- QPixmap pixmap(requestedSize.width() > 0 ? requestedSize.width() : defaultSize.width(),
- requestedSize.height() > 0 ? requestedSize.height() : defaultSize.height());
- pixmap.fill(QColor(id).rgba());
- return pixmap;
- }
-};
-
-// don't crash (QTBUG-63959)
-void tst_qquickiconimage::imageProvider()
-{
- if (QGuiApplication::platformName() == QLatin1String("offscreen"))
- QSKIP("grabToImage() doesn't work on the \"offscreen\" platform plugin (QTBUG-63185)");
-
- QQuickView view;
- view.engine()->addImageProvider("provider", new TestImageProvider);
- view.setSource(testFileUrl("imageProvider.qml"));
- QCOMPARE(view.status(), QQuickView::Ready);
- view.show();
- view.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&view));
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(view.rootObject()->findChild<QQuickIconImage *>());
- QVERIFY(iconImage);
-
- QImage image = grabItemToImage(iconImage);
- QVERIFY(!image.isNull());
- QCOMPARE(image.pixelColor(image.width() / 2, image.height() / 2), QColor(Qt::red));
-}
-
-/*
- QQuickIconImage::componentComplete() calls QQuickIconImagePrivate::updateIcon(),
- which loads the icon's image via QQuickImageBase::load(). That eventually calls
- QQuickImageBase::requestFinished(), which calls QQuickIconImage::pixmapChange().
- That then calls QQuickIconImagePrivate::updateFillMode(), which can in turn
- cause QQuickIconImage::pixmapChange() to be called again, causing recursion.
-
- This was a problem because it resulted in icon.color being applied twice.
-
- This test checks that that doesn't happen.
-*/
-void tst_qquickiconimage::translucentColors()
-{
- if (QGuiApplication::platformName() == QLatin1String("offscreen"))
- QSKIP("grabToImage() doesn't work on the \"offscreen\" platform plugin (QTBUG-63185)");
-
- // Doesn't reproduce with QQuickView.
- QQmlApplicationEngine engine;
- engine.load(testFileUrl("translucentColors.qml"));
- QQuickWindow *window = qobject_cast<QQuickWindow*>(engine.rootObjects().first());
-
- QQuickIconImage *iconImage = qobject_cast<QQuickIconImage*>(window->findChild<QQuickIconImage*>());
- QVERIFY(iconImage);
-
- const QImage image = grabItemToImage(iconImage);
- QVERIFY(!image.isNull());
- QCOMPARE(image.pixelColor(image.width() / 2, image.height() / 2), QColor::fromRgba(0x80000000));
-}
-
-int main(int argc, char *argv[])
-{
- QGuiApplication app(argc, argv);
- Q_UNUSED(app);
- tst_qquickiconimage test;
- QTEST_SET_MAIN_SOURCE_PATH
- return QTest::qExec(&test, argc, argv);
-}
-
-#include "tst_qquickiconimage.moc"