diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-03-21 08:59:26 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-03-21 08:59:26 +0100 |
commit | cc920b4cddc170a7442d8fdfb53076c208a3d71e (patch) | |
tree | e4757cffe420bd3c61dda1d369b452a0fac9eff7 /src/gui/image | |
parent | c8c8cc790a315710b0dae2282dc32e3472e107ee (diff) | |
parent | fc8fd508165c8e4dcfe0da397b63cf99f15178e3 (diff) |
Merge remote-tracking branch 'origin/5.11' into dev
Change-Id: I35a6555e3885e489f88aa9b4b0142e1017f7a959
Diffstat (limited to 'src/gui/image')
-rw-r--r-- | src/gui/image/qimage_p.h | 30 | ||||
-rw-r--r-- | src/gui/image/qpixmap_raster.cpp | 9 | ||||
-rw-r--r-- | src/gui/image/qpixmap_raster_p.h | 2 |
3 files changed, 36 insertions, 5 deletions
diff --git a/src/gui/image/qimage_p.h b/src/gui/image/qimage_p.h index befecbfe8b..f5fea2ed00 100644 --- a/src/gui/image/qimage_p.h +++ b/src/gui/image/qimage_p.h @@ -172,6 +172,31 @@ inline int qt_depthForFormat(QImage::Format format) #pragma optimize("", on) #endif +inline QImage::Format qt_opaqueVersion(QImage::Format format) +{ + switch (format) { + case QImage::Format_ARGB8565_Premultiplied: + return QImage::Format_RGB16; + case QImage::Format_ARGB8555_Premultiplied: + return QImage::Format_RGB555; + case QImage::Format_ARGB6666_Premultiplied: + return QImage::Format_RGB666; + case QImage::Format_ARGB4444_Premultiplied: + return QImage::Format_RGB444; + case QImage::Format_RGBA8888: + case QImage::Format_RGBA8888_Premultiplied: + return QImage::Format_RGBX8888; + case QImage::Format_A2BGR30_Premultiplied: + return QImage::Format_BGR30; + case QImage::Format_A2RGB30_Premultiplied: + return QImage::Format_RGB30; + case QImage::Format_ARGB32_Premultiplied: + case QImage::Format_ARGB32: + default: + return QImage::Format_RGB32; + } +} + inline QImage::Format qt_alphaVersion(QImage::Format format) { switch (format) { @@ -201,6 +226,11 @@ inline QImage::Format qt_maybeAlphaVersionWithSameDepth(QImage::Format format) return qt_depthForFormat(format) == qt_depthForFormat(toFormat) ? toFormat : format; } +inline QImage::Format qt_opaqueVersionForPainting(QImage::Format format) +{ + return qt_opaqueVersion(format); +} + inline QImage::Format qt_alphaVersionForPainting(QImage::Format format) { QImage::Format toFormat = qt_alphaVersion(format); diff --git a/src/gui/image/qpixmap_raster.cpp b/src/gui/image/qpixmap_raster.cpp index 51b4309e0a..431002d032 100644 --- a/src/gui/image/qpixmap_raster.cpp +++ b/src/gui/image/qpixmap_raster.cpp @@ -89,7 +89,7 @@ QRasterPlatformPixmap::~QRasterPlatformPixmap() { } -QImage::Format QRasterPlatformPixmap::systemOpaqueFormat() +QImage::Format QRasterPlatformPixmap::systemNativeFormat() { if (!QGuiApplication::primaryScreen()) return QImage::Format_RGB32; @@ -107,7 +107,7 @@ void QRasterPlatformPixmap::resize(int width, int height) if (pixelType() == BitmapType) format = QImage::Format_MonoLSB; else - format = systemOpaqueFormat(); + format = systemNativeFormat(); image = QImage(width, height, format); w = width; @@ -314,8 +314,9 @@ void QRasterPlatformPixmap::createPixmapForImage(QImage sourceImage, Qt::ImageCo ? QImage::Format_ARGB32_Premultiplied : QImage::Format_RGB32; } else { - QImage::Format opaqueFormat = systemOpaqueFormat(); - QImage::Format alphaFormat = qt_alphaVersionForPainting(opaqueFormat); + QImage::Format nativeFormat = systemNativeFormat(); + QImage::Format opaqueFormat = qt_opaqueVersionForPainting(nativeFormat); + QImage::Format alphaFormat = qt_alphaVersionForPainting(nativeFormat); if (!sourceImage.hasAlphaChannel()) { format = opaqueFormat; diff --git a/src/gui/image/qpixmap_raster_p.h b/src/gui/image/qpixmap_raster_p.h index cff962181a..fe2a1e581d 100644 --- a/src/gui/image/qpixmap_raster_p.h +++ b/src/gui/image/qpixmap_raster_p.h @@ -88,7 +88,7 @@ protected: void createPixmapForImage(QImage sourceImage, Qt::ImageConversionFlags flags); void setImage(const QImage &image); QImage image; - static QImage::Format systemOpaqueFormat(); + static QImage::Format systemNativeFormat(); private: friend class QPixmap; |