summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/image/qpixmap
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2016-11-11 13:33:20 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-01-26 09:14:27 +0000
commit17e672a67ed2ba6c8ec3952ff4ab255cb45fcce6 (patch)
tree2a4d8cf1f73e8893d1cdd7bd020953ba338f1904 /tests/auto/gui/image/qpixmap
parentffecbfc980c97290a66a2b569ee663c97c8c1298 (diff)
Use QImage::reinterpretAsFormat in QPixmap
Use the new QImage method instead of operating on private API. At the same time the code is improved to ensure the QImage is detached. Change-Id: Ia015c0bb18d7bc62da38397594730254843e5a0d Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Diffstat (limited to 'tests/auto/gui/image/qpixmap')
-rw-r--r--tests/auto/gui/image/qpixmap/tst_qpixmap.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
index ad7de09c48..72609d4095 100644
--- a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
+++ b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
@@ -99,6 +99,7 @@ private slots:
void task_51271();
void convertFromImageNoDetach();
+ void convertFromImageNoDetach2();
void convertFromImageDetach();
void convertFromImageCacheKey();
@@ -766,6 +767,33 @@ void tst_QPixmap::convertFromImageNoDetach()
QCOMPARE(constOrig.bits(), constCopy.bits());
}
+void tst_QPixmap::convertFromImageNoDetach2()
+{
+ QPixmap randomPixmap(10, 10);
+ if (randomPixmap.handle()->classId() != QPlatformPixmap::RasterClass)
+ QSKIP("Test only valid for raster pixmaps");
+
+ //first get the screen format
+ QImage::Format screenFormat = randomPixmap.toImage().format();
+ QVERIFY(screenFormat != QImage::Format_Invalid);
+ if (screenFormat != QImage::Format_RGB32 &&
+ screenFormat != QImage::Format_ARGB32_Premultiplied)
+ QSKIP("Test only valid for platforms with RGB32 pixmaps");
+
+ QImage orig(100,100, QImage::Format_ARGB32_Premultiplied);
+ orig.fill(Qt::white);
+
+ const uchar *origBits = orig.constBits();
+
+ QPixmap pix = QPixmap::fromImage(std::move(orig));
+ QImage copy = pix.toImage();
+
+ QVERIFY(!copy.hasAlphaChannel());
+ QCOMPARE(copy.format(), QImage::Format_RGB32);
+
+ QCOMPARE(origBits, copy.constBits());
+}
+
void tst_QPixmap::convertFromImageDetach()
{
QImage img(10,10, QImage::Format_RGB32);