diff options
Diffstat (limited to 'tests/auto/gui/image/qimage/tst_qimage.cpp')
-rw-r--r-- | tests/auto/gui/image/qimage/tst_qimage.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/auto/gui/image/qimage/tst_qimage.cpp b/tests/auto/gui/image/qimage/tst_qimage.cpp index f7a672ad18..9ddf571dbd 100644 --- a/tests/auto/gui/image/qimage/tst_qimage.cpp +++ b/tests/auto/gui/image/qimage/tst_qimage.cpp @@ -166,6 +166,8 @@ private slots: void deepCopyWhenPaintingActive(); void scaled_QTBUG19157(); + void convertOverUnPreMul(); + void cleanupFunctions(); }; @@ -2422,6 +2424,26 @@ void tst_QImage::scaled_QTBUG19157() QVERIFY(!foo.isNull()); } +void tst_QImage::convertOverUnPreMul() +{ + QImage image(256, 256, QImage::Format_ARGB32_Premultiplied); + + for (int j = 0; j < 256; j++) { + for (int i = 0; i <= j; i++) { + image.setPixel(i, j, qRgba(i, i, i, j)); + } + } + + QImage image2 = image.convertToFormat(QImage::Format_ARGB32).convertToFormat(QImage::Format_ARGB32_Premultiplied); + + for (int j = 0; j < 256; j++) { + for (int i = 0; i <= j; i++) { + QCOMPARE(qAlpha(image2.pixel(i, j)), qAlpha(image.pixel(i, j))); + QCOMPARE(qGray(image2.pixel(i, j)), qGray(image.pixel(i, j))); + } + } +} + static void cleanupFunction(void* info) { bool *called = static_cast<bool*>(info); |