aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qpixmap/tst_qpixmap.cpp
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2021-05-27 13:48:50 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2021-06-07 16:15:41 +0200
commitdb1ceebe72b806375c6cf4e4cafd8e8f81ad9dd9 (patch)
treeb0eb01720e15806cb145590b941c13cc786fd2b7 /tests/auto/qpixmap/tst_qpixmap.cpp
parentb61f0209c4ea9f92deaaa1828223f35c7fdb80e4 (diff)
Remove module and add note about current status in Qt 6HEADdev
See QTBUG-89564 for overview and replacements for the APIs. The Qt 6 porting guide will be updated to explain how to move away from the removed module. The 5.15 branch is still available for anyone wanting to look at or incorporate code in their own projects. Task-number: QTBUG-89564 Change-Id: I1f0afc5ba3e694623fbbb51f10967321e81f32c9 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'tests/auto/qpixmap/tst_qpixmap.cpp')
-rw-r--r--tests/auto/qpixmap/tst_qpixmap.cpp302
1 files changed, 0 insertions, 302 deletions
diff --git a/tests/auto/qpixmap/tst_qpixmap.cpp b/tests/auto/qpixmap/tst_qpixmap.cpp
deleted file mode 100644
index e16889d..0000000
--- a/tests/auto/qpixmap/tst_qpixmap.cpp
+++ /dev/null
@@ -1,302 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 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 <QtTest/QtTest>
-#include <QtCore/qt_windows.h>
-#include <QtCore/QFileInfo>
-#include <QtGui/QPainter>
-#include <QtGui/QPixmap>
-#include <QtGui/QImage>
-#include <QtWinExtras/QtWin>
-
-class tst_QPixmap : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QPixmap() : m_dataDirectory(QFINDTESTDATA("data")) {}
-
-private slots:
- void initTestCase();
-
- void toHBITMAP_data();
- void toHBITMAP();
- void fromHBITMAP_data();
- void fromHBITMAP();
-
- void toHICON_data();
- void toHICON();
- void fromHICON_data();
- void fromHICON();
-
- void imageConversion();
-
-private:
- const QString m_dataDirectory;
-};
-
-void tst_QPixmap::initTestCase()
-{
- QVERIFY(!m_dataDirectory.isEmpty());
-}
-
-void tst_QPixmap::toHBITMAP_data()
-{
- QTest::addColumn<int>("red");
- QTest::addColumn<int>("green");
- QTest::addColumn<int>("blue");
-
- QTest::newRow("red") << 255 << 0 << 0;
- QTest::newRow("green") << 0 << 255 << 0;
- QTest::newRow("blue") << 0 << 0 << 255;
-}
-
-void tst_QPixmap::toHBITMAP()
-{
- QFETCH(int, red);
- QFETCH(int, green);
- QFETCH(int, blue);
-
- QPixmap pm(100, 100);
- pm.fill(QColor(red, green, blue));
-
- const HBITMAP bitmap = QtWin::toHBITMAP(pm);
-
- QVERIFY(bitmap != nullptr);
-
- // Verify size
- BITMAP bitmapInfo;
- memset(&bitmapInfo, 0, sizeof(BITMAP));
-
- QVERIFY(GetObject(bitmap, sizeof(BITMAP), &bitmapInfo));
-
- QCOMPARE(LONG(100), bitmapInfo.bmWidth);
- QCOMPARE(LONG(100), bitmapInfo.bmHeight);
-
- const HDC displayDc = GetDC(nullptr);
- const HDC bitmapDc = CreateCompatibleDC(displayDc);
-
- const auto nullBitmap = static_cast<HBITMAP>(SelectObject(bitmapDc, bitmap));
-
- const COLORREF pixel = GetPixel(bitmapDc, 0, 0);
- QCOMPARE(int(GetRValue(pixel)), red);
- QCOMPARE(int(GetGValue(pixel)), green);
- QCOMPARE(int(GetBValue(pixel)), blue);
-
- // Clean up
- SelectObject(bitmapDc, nullBitmap);
- DeleteObject(bitmap);
- DeleteDC(bitmapDc);
- ReleaseDC(nullptr, displayDc);
-}
-
-void tst_QPixmap::fromHBITMAP_data()
-{
- toHBITMAP_data();
-}
-
-void tst_QPixmap::fromHBITMAP()
-{
- QFETCH(int, red);
- QFETCH(int, green);
- QFETCH(int, blue);
-
- const HDC displayDc = GetDC(nullptr);
- const HDC bitmapDc = CreateCompatibleDC(displayDc);
- const HBITMAP bitmap = CreateCompatibleBitmap(displayDc, 100, 100);
- SelectObject(bitmapDc, bitmap);
-
- SelectObject(bitmapDc, GetStockObject(NULL_PEN));
- const HGDIOBJ oldBrush = SelectObject(bitmapDc, CreateSolidBrush(RGB(red, green, blue)));
- Rectangle(bitmapDc, 0, 0, 100, 100);
-
- const QPixmap pixmap = QtWin::fromHBITMAP(bitmap);
- QCOMPARE(pixmap.width(), 100);
- QCOMPARE(pixmap.height(), 100);
-
- const QImage image = pixmap.toImage();
- const QRgb pixel = image.pixel(0, 0);
- QCOMPARE(qRed(pixel), red);
- QCOMPARE(qGreen(pixel), green);
- QCOMPARE(qBlue(pixel), blue);
-
- DeleteObject(SelectObject(bitmapDc, oldBrush));
- DeleteObject(SelectObject(bitmapDc, bitmap));
- DeleteDC(bitmapDc);
- ReleaseDC(nullptr, displayDc);
-}
-
-static bool compareImages(const QImage &actual, const QImage &expected,
- QByteArray *errorMessage)
-{
- if (actual.size() != expected.size()) {
- QString s;
- QDebug(&s) << "Size mismatch, actual: " << actual.size() << " expected: " << expected.size();
- *errorMessage = s.toLocal8Bit();
- return false;
- }
- if (actual.format() != expected.format()) {
- *errorMessage = QByteArrayLiteral("Format mismatch, actual: ")
- + QByteArray::number(actual.format())
- + QByteArrayLiteral(", expected: ") + QByteArray::number(expected.format());
- return false;
- }
-
- static const int fuzz = 1;
-
- for (int y = 0; y < actual.height(); ++y) {
- for (int x = 0; x < expected.width(); ++x) {
- const QRgb actualRgb = actual.pixel(x, y);
- const QRgb expectedRgb = expected.pixel(x, y);
- const bool pixelMatches =
- qAbs(qRed(actualRgb) - qRed(expectedRgb)) <= fuzz
- && qAbs(qGreen(actualRgb) - qGreen(expectedRgb)) <= fuzz
- && qAbs(qBlue(actualRgb) - qBlue(expectedRgb)) <= fuzz
- && qAbs(qAlpha(actualRgb) - qAlpha(expectedRgb)) <= fuzz;
- if (!pixelMatches) {
- QString s;
- QDebug(&s) << "Pixmal mismatch at " << x << ',' << y << " actual: "
- << QColor(actualRgb) << " expected: " << QColor(expectedRgb);
- *errorMessage = s.toLocal8Bit();
- return false;
- }
- }
- }
- return true;
-}
-
-static inline QString pngFileName(const QString &image, int width, int height)
-{
- return image + u'_' + QString::number(width)
- + u'x' + QString::number(height) + QStringLiteral(".png");
-}
-
-void tst_QPixmap::toHICON_data()
-{
- QTest::addColumn<QString>("image");
- QTest::addColumn<int>("width");
- QTest::addColumn<int>("height");
-
- QTest::newRow("32bpp_16x16") << m_dataDirectory + QStringLiteral("/icon_32bpp") << 16 << 16;
- QTest::newRow("32bpp_32x32") << m_dataDirectory + QStringLiteral("/icon_32bpp") << 32 << 32;
- QTest::newRow("32bpp_48x48") << m_dataDirectory + QStringLiteral("/icon_32bpp") << 48 << 48;
- QTest::newRow("32bpp_256x256") << m_dataDirectory + QStringLiteral("/icon_32bpp") << 256 << 256;
-
- QTest::newRow("8bpp_16x16") << m_dataDirectory + QStringLiteral("/icon_8bpp") << 16 << 16;
- QTest::newRow("8bpp_32x32") << m_dataDirectory + QStringLiteral("/icon_8bpp") << 32 << 32;
- QTest::newRow("8bpp_48x48") << m_dataDirectory + QStringLiteral("/icon_8bpp") << 48 << 48;
-}
-
-void tst_QPixmap::toHICON()
-{
- QFETCH(int, width);
- QFETCH(int, height);
- QFETCH(QString, image);
-
- QPixmap empty(width, height);
- empty.fill(Qt::transparent);
-
- const HDC displayDc = GetDC(nullptr);
- const HDC bitmapDc = CreateCompatibleDC(displayDc);
- const HBITMAP bitmap = QtWin::toHBITMAP(empty, QtWin::HBitmapAlpha);
- SelectObject(bitmapDc, bitmap);
-
- const QString imageFileName = pngFileName(image, width, height);
- QVERIFY2(QFileInfo::exists(imageFileName), qPrintable(imageFileName));
-
- const QImage imageFromFile = QImage(imageFileName).convertToFormat(QImage::Format_ARGB32_Premultiplied);
- QVERIFY(!imageFromFile.isNull());
-
- const HICON icon = QtWin::toHICON(QPixmap::fromImage(imageFromFile));
-
- DrawIconEx(bitmapDc, 0, 0, icon, width, height, 0, nullptr, DI_NORMAL);
-
- DestroyIcon(icon);
- DeleteDC(bitmapDc);
-
- const QImage imageFromHICON = QtWin::fromHBITMAP(bitmap, QtWin::HBitmapAlpha).toImage();
- QVERIFY(!imageFromHICON.isNull());
-
- ReleaseDC(nullptr, displayDc);
-
- // fuzzy comparison must be used, as the pixel values change slightly during conversion
- // between QImage::Format_ARGB32 and QImage::Format_ARGB32_Premultiplied, or elsewhere
- QByteArray errorMessage;
- QVERIFY2(compareImages(imageFromHICON, imageFromFile, &errorMessage), errorMessage.constData());
-}
-
-void tst_QPixmap::fromHICON_data()
-{
- toHICON_data();
-}
-
-void tst_QPixmap::fromHICON()
-{
- QFETCH(int, width);
- QFETCH(int, height);
- QFETCH(QString, image);
-
- const QString iconFileName = image + QStringLiteral(".ico");
- QVERIFY2(QFileInfo::exists(iconFileName), qPrintable(iconFileName));
-
- const auto icon =
- static_cast<HICON>(LoadImage(nullptr, reinterpret_cast<const wchar_t *>(iconFileName.utf16()),
- IMAGE_ICON, width, height, LR_LOADFROMFILE));
- const QImage imageFromHICON = QtWin::fromHICON(icon).toImage();
- DestroyIcon(icon);
-
- const QString imageFileName = pngFileName(image, width, height);
- QVERIFY2(QFileInfo::exists(imageFileName), qPrintable(imageFileName));
-
- const QImage imageFromFile = QImage(imageFileName).convertToFormat(QImage::Format_ARGB32_Premultiplied);
- QVERIFY(!imageFromFile.isNull());
-
- // fuzzy comparison must be used, as the pixel values change slightly during conversion
- // between QImage::Format_ARGB32 and QImage::Format_ARGB32_Premultiplied, or elsewhere
- QByteArray errorMessage;
- QVERIFY2(compareImages(imageFromHICON, imageFromFile, &errorMessage), errorMessage.constData());
-}
-
-void tst_QPixmap::imageConversion()
-{
- // Extensive testing of all formats is done in QtGui; this merely tests
- // the exports/linkage.
- QImage image(73, 57, QImage::Format_ARGB32_Premultiplied);
- image.fill(Qt::red);
- QPainter painter(&image);
- painter.drawLine(0, 0, image.width(), image.height());
- const HBITMAP hBitMap = QtWin::imageToHBITMAP(image);
- QVERIFY(hBitMap);
- const QImage fromHBitMap = QtWin::imageFromHBITMAP(hBitMap, QtWin::HBitmapPremultipliedAlpha);
- QCOMPARE(fromHBitMap, image);
- DeleteObject(hBitMap);
-}
-
-QTEST_MAIN(tst_QPixmap)
-
-#include "tst_qpixmap.moc"