summaryrefslogtreecommitdiffstats
path: root/src/gui/image
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2014-09-19 16:11:10 +0200
committerAllan Sandfeld Jensen <allan.jensen@digia.com>2014-09-25 18:34:30 +0200
commit8165a9c74b309a00c894504a5b6f26e696743c10 (patch)
tree76b68691489cbe755c070665a590e761479595b6 /src/gui/image
parent342533864b4ea6dda62bf35dfb265303a967f8b3 (diff)
Clean up QImage::Format switches
Changes some switches on QImage::Format that needed to be updated whenever a new image format was added. Two were changed to matching formats supported by BMP and PPM instead of what they don't support, and two were changed to now use QPixelFormat values. Change-Id: I5a14f1d7b7cc0451c68e4d6ab2361a5bd8dc8915 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Diffstat (limited to 'src/gui/image')
-rw-r--r--src/gui/image/qbmphandler.cpp31
-rw-r--r--src/gui/image/qimage.cpp22
-rw-r--r--src/gui/image/qppmhandler.cpp30
3 files changed, 29 insertions, 54 deletions
diff --git a/src/gui/image/qbmphandler.cpp b/src/gui/image/qbmphandler.cpp
index 5de2e7831f..21c1a2f813 100644
--- a/src/gui/image/qbmphandler.cpp
+++ b/src/gui/image/qbmphandler.cpp
@@ -784,28 +784,19 @@ bool QBmpHandler::write(const QImage &img)
QImage image;
switch (img.format()) {
- case QImage::Format_ARGB8565_Premultiplied:
- case QImage::Format_ARGB8555_Premultiplied:
- case QImage::Format_ARGB6666_Premultiplied:
- case QImage::Format_ARGB4444_Premultiplied:
- case QImage::Format_RGBA8888:
- case QImage::Format_RGBA8888_Premultiplied:
- case QImage::Format_A2BGR30_Premultiplied:
- case QImage::Format_A2RGB30_Premultiplied:
- image = img.convertToFormat(QImage::Format_ARGB32);
- break;
- case QImage::Format_RGB16:
- case QImage::Format_RGB888:
- case QImage::Format_RGB666:
- case QImage::Format_RGB555:
- case QImage::Format_RGB444:
- case QImage::Format_RGBX8888:
- case QImage::Format_BGR30:
- case QImage::Format_RGB30:
- image = img.convertToFormat(QImage::Format_RGB32);
+ case QImage::Format_Mono:
+ case QImage::Format_MonoLSB:
+ case QImage::Format_Indexed8:
+ case QImage::Format_RGB32:
+ case QImage::Format_ARGB32:
+ image = img;
break;
default:
- image = img;
+ if (img.hasAlphaChannel())
+ image = img.convertToFormat(QImage::Format_ARGB32);
+ else
+ image = img.convertToFormat(QImage::Format_RGB32);
+ break;
}
QIODevice *d = device();
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index df4bedc3cd..4e10b4cb4b 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -4151,22 +4151,16 @@ QImage QImage::alphaChannel() const
*/
bool QImage::hasAlphaChannel() const
{
- return d && (d->format == Format_ARGB32_Premultiplied
- || d->format == Format_ARGB32
- || d->format == Format_ARGB8565_Premultiplied
- || d->format == Format_ARGB8555_Premultiplied
- || d->format == Format_ARGB6666_Premultiplied
- || d->format == Format_ARGB4444_Premultiplied
- || d->format == Format_RGBA8888
- || d->format == Format_RGBA8888_Premultiplied
- || d->format == Format_A2BGR30_Premultiplied
- || d->format == Format_A2RGB30_Premultiplied
- || (d->has_alpha_clut && (d->format == Format_Indexed8
- || d->format == Format_Mono
- || d->format == Format_MonoLSB)));
+ if (!d)
+ return false;
+ const QPixelFormat format = pixelFormat();
+ if (format.alphaUsage() == QPixelFormat::UsesAlpha)
+ return true;
+ if (format.colorModel() == QPixelFormat::Indexed)
+ return d->has_alpha_clut;
+ return false;
}
-
/*!
\since 4.7
Returns the number of bit planes in the image.
diff --git a/src/gui/image/qppmhandler.cpp b/src/gui/image/qppmhandler.cpp
index a436d10800..314abca9f0 100644
--- a/src/gui/image/qppmhandler.cpp
+++ b/src/gui/image/qppmhandler.cpp
@@ -257,31 +257,21 @@ static bool write_pbm_image(QIODevice *out, const QImage &sourceImage, const QBy
if (format == "pbm") {
image = image.convertToFormat(QImage::Format_Mono);
- } else if (image.depth() == 1) {
- image = image.convertToFormat(QImage::Format_Indexed8);
} else {
switch (image.format()) {
- case QImage::Format_RGB16:
- case QImage::Format_RGB666:
- case QImage::Format_RGB555:
- case QImage::Format_RGB888:
- case QImage::Format_RGB444:
- case QImage::Format_RGBX8888:
- case QImage::Format_BGR30:
- case QImage::Format_RGB30:
- image = image.convertToFormat(QImage::Format_RGB32);
+ case QImage::Format_Mono:
+ case QImage::Format_MonoLSB:
+ image = image.convertToFormat(QImage::Format_Indexed8);
break;
- case QImage::Format_ARGB8565_Premultiplied:
- case QImage::Format_ARGB6666_Premultiplied:
- case QImage::Format_ARGB8555_Premultiplied:
- case QImage::Format_ARGB4444_Premultiplied:
- case QImage::Format_RGBA8888:
- case QImage::Format_RGBA8888_Premultiplied:
- case QImage::Format_A2BGR30_Premultiplied:
- case QImage::Format_A2RGB30_Premultiplied:
- image = image.convertToFormat(QImage::Format_ARGB32);
+ case QImage::Format_Indexed8:
+ case QImage::Format_RGB32:
+ case QImage::Format_ARGB32:
break;
default:
+ if (image.hasAlphaChannel())
+ image = image.convertToFormat(QImage::Format_ARGB32);
+ else
+ image = image.convertToFormat(QImage::Format_RGB32);
break;
}
}