summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraavit <eirik.aavitsland@digia.com>2014-07-01 11:06:01 +0200
committeraavit <eirik.aavitsland@digia.com>2014-07-01 11:25:15 +0200
commit85e621e3ecf449bb0587bd4da97ca66179b24f31 (patch)
treef0a78c9dfd20c850bd0111c5811d6647324e3394
parent3b24bce1d7147e18a997e2792352e8213522230d (diff)
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.cpp6
-rw-r--r--tests/auto/dds/tst_qdds.cpp2
-rw-r--r--tests/shared/images/dds.qrc1
-rw-r--r--tests/shared/images/dds/A8R8G8B8_2.ddsbin0 -> 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
new file mode 100644
index 0000000..19fe92c
--- /dev/null
+++ b/tests/shared/images/dds/A8R8G8B8_2.dds
Binary files differ