From 1bcfc3de7586ddb9f5d1b778b97b26ae3dc9584d Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Wed, 6 Jan 2016 11:01:39 +0100 Subject: Use backing store formats with alpha We depend on being able to punch holes in the backing store when integrating with FBO elements. To do that we need a format with an alpha channel. This was only working previously because RGB32 didn't mask when filling or when converting to ARGB32_PM, but other formats didn't. Also unifies the logic for getting alpha versions of QImage formats. Task-number: QTBUG-50281 Change-Id: Ied1325f60e2b67d9ea2dfa9701b06fc2231ebfca Reviewed-by: Laszlo Agocs --- src/gui/image/qpixmap_raster.cpp | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) (limited to 'src/gui/image/qpixmap_raster.cpp') diff --git a/src/gui/image/qpixmap_raster.cpp b/src/gui/image/qpixmap_raster.cpp index a2b84b358e..bbdf77355e 100644 --- a/src/gui/image/qpixmap_raster.cpp +++ b/src/gui/image/qpixmap_raster.cpp @@ -178,20 +178,7 @@ void QRasterPlatformPixmap::fill(const QColor &color) int alpha = color.alpha(); if (alpha != 255) { if (!image.hasAlphaChannel()) { - QImage::Format toFormat; -#if !(defined(__ARM_NEON__) || defined(__SSE2__)) - if (image.format() == QImage::Format_RGB16) - toFormat = QImage::Format_ARGB8565_Premultiplied; - else if (image.format() == QImage::Format_RGB666) - toFormat = QImage::Format_ARGB6666_Premultiplied; - else if (image.format() == QImage::Format_RGB555) - toFormat = QImage::Format_ARGB8555_Premultiplied; - else if (image.format() == QImage::Format_RGB444) - toFormat = QImage::Format_ARGB4444_Premultiplied; - else -#endif - toFormat = QImage::Format_ARGB32_Premultiplied; - + QImage::Format toFormat = qt_alphaVersionForPainting(image.format()); if (!image.isNull() && qt_depthForFormat(image.format()) == qt_depthForFormat(toFormat)) { image.detach(); image.d->format = toFormat; @@ -314,17 +301,7 @@ void QRasterPlatformPixmap::createPixmapForImage(QImage &sourceImage, Qt::ImageC : QImage::Format_RGB32; } else { QImage::Format opaqueFormat = QNativeImage::systemFormat(); - QImage::Format alphaFormat = QImage::Format_ARGB32_Premultiplied; - -#if !defined(__ARM_NEON__) && !defined(__SSE2__) - switch (opaqueFormat) { - case QImage::Format_RGB16: - alphaFormat = QImage::Format_ARGB8565_Premultiplied; - break; - default: // We don't care about the others... - break; - } -#endif + QImage::Format alphaFormat = qt_alphaVersionForPainting(opaqueFormat); if (!sourceImage.hasAlphaChannel()) { format = opaqueFormat; -- cgit v1.2.3