summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMorten Johan Sorvig <morten.sorvig@digia.com>2012-12-04 17:02:59 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-12-07 12:06:05 +0100
commit13fcd1c342b7d60640fb82956149d00f1ee2f3c7 (patch)
treecfe56d52d5382936152f6bb2b9e68eb79baf4225 /src
parent2e142143579c0db098d966d40ddc871c9c7119f9 (diff)
Set CGImage format when converting from QImage.
Set the CGImage format based on QImage::format(). Handle8-bit per component (A)RGB. Change-Id: I041b0ee53d3943a0aaf9e813eb0a235c4de619dd Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/cocoa/qcocoahelpers.mm23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.mm b/src/plugins/platforms/cocoa/qcocoahelpers.mm
index 0d0d2eb106..c1146612a6 100644
--- a/src/plugins/platforms/cocoa/qcocoahelpers.mm
+++ b/src/plugins/platforms/cocoa/qcocoahelpers.mm
@@ -804,13 +804,34 @@ CGImageRef qt_mac_toCGImage(const QImage &qImage, bool isMask, uchar **dataCopy)
if (!cgColourSpaceRef)
cgColourSpaceRef = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
+ // Create a CGBitmapInfo contiaining the image format.
+ // Support the 8-bit per component (A)RGB formats.
+ CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Little;
+ switch (qImage.format()) {
+ case QImage::Format_ARGB32_Premultiplied :
+ bitmapInfo |= kCGImageAlphaPremultipliedFirst;
+ break;
+ case QImage::Format_ARGB32 :
+ bitmapInfo |= kCGImageAlphaFirst;
+ break;
+ case QImage::Format_RGB32 :
+ bitmapInfo |= kCGImageAlphaNoneSkipFirst;
+ break;
+ case QImage::Format_RGB888 :
+ bitmapInfo |= kCGImageAlphaNone;
+ break;
+ default:
+ qWarning() << "qt_mac_toCGImage: Unsupported image format" << qImage.format();
+ break;
+ }
+
cgImage = CGImageCreate(width,
height,
colorBufferSize,
bitDepth,
bytesPrLine,
cgColourSpaceRef,
- kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipFirst,
+ bitmapInfo,
cgDataProviderRef,
NULL,
false,