diff options
author | aavit <eirik.aavitsland@digia.com> | 2014-07-01 11:06:01 +0200 |
---|---|---|
committer | aavit <eirik.aavitsland@digia.com> | 2014-07-01 11:25:15 +0200 |
commit | 85e621e3ecf449bb0587bd4da97ca66179b24f31 (patch) | |
tree | f0a78c9dfd20c850bd0111c5811d6647324e3394 | |
parent | 3b24bce1d7147e18a997e2792352e8213522230d (diff) | |
download | qtimageformats-85e621e3ecf449bb0587bd4da97ca66179b24f31.tar.gz |
Fix DDS image writing
The code did not correctly do the 90-degree rotation needed for DDS,
and would fail on non-square images.
Task-number: QTBUG-39899
Change-Id: I1599e3fe44ff7895db8aa6e325fa8fdba2106694
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
-rw-r--r-- | src/plugins/imageformats/dds/qddshandler.cpp | 6 | ||||
-rw-r--r-- | tests/auto/dds/tst_qdds.cpp | 2 | ||||
-rw-r--r-- | tests/shared/images/dds.qrc | 1 | ||||
-rw-r--r-- | tests/shared/images/dds/A8R8G8B8_2.dds | bin | 0 -> 8320 bytes |
4 files changed, 6 insertions, 3 deletions
diff --git a/src/plugins/imageformats/dds/qddshandler.cpp b/src/plugins/imageformats/dds/qddshandler.cpp index 13bb9aa..d5c8793 100644 --- a/src/plugins/imageformats/dds/qddshandler.cpp +++ b/src/plugins/imageformats/dds/qddshandler.cpp @@ -1338,9 +1338,9 @@ bool QDDSHandler::write(const QImage &outImage) dds.pixelFormat.bBitMask = 0x000000ff; s << dds; - for (int width = 0; width < image.width(); width++) { - for (int height = 0; height < image.height(); height++) { - QRgb pixel = image.pixel(height, width);; + for (int height = 0; height < image.height(); height++) { + for (int width = 0; width < image.width(); width++) { + QRgb pixel = image.pixel(width, height); quint32 color; quint8 alpha = qAlpha(pixel); quint8 red = qRed(pixel); diff --git a/tests/auto/dds/tst_qdds.cpp b/tests/auto/dds/tst_qdds.cpp index eb25849..d41ea25 100644 --- a/tests/auto/dds/tst_qdds.cpp +++ b/tests/auto/dds/tst_qdds.cpp @@ -109,6 +109,7 @@ void tst_qdds::readImage_data() QTest::newRow("46") << QString("RXGB") << QSize(64, 64); QTest::newRow("47") << QString("ATI2") << QSize(64, 64); QTest::newRow("48") << QString("P4") << QSize(64, 64); + QTest::newRow("49") << QString("A8R8G8B8_2") << QSize(64, 32); } void tst_qdds::readImage() @@ -158,6 +159,7 @@ void tst_qdds::testWriteImage_data() QTest::addColumn<QSize>("size"); QTest::newRow("1") << QString("A8R8G8B8") << QSize(64, 64); + QTest::newRow("2") << QString("A8R8G8B8_2") << QSize(64, 32); } void tst_qdds::testWriteImage() diff --git a/tests/shared/images/dds.qrc b/tests/shared/images/dds.qrc index 128a38d..c8f1bc0 100644 --- a/tests/shared/images/dds.qrc +++ b/tests/shared/images/dds.qrc @@ -49,5 +49,6 @@ <file>dds/YUY2.dds</file> <file>dds/RXGB.dds</file> <file>dds/ATI2.dds</file> + <file>dds/A8R8G8B8_2.dds</file> </qresource> </RCC> diff --git a/tests/shared/images/dds/A8R8G8B8_2.dds b/tests/shared/images/dds/A8R8G8B8_2.dds Binary files differnew file mode 100644 index 0000000..19fe92c --- /dev/null +++ b/tests/shared/images/dds/A8R8G8B8_2.dds |