summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoahelpers.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoahelpers.mm')
-rw-r--r--src/plugins/platforms/cocoa/qcocoahelpers.mm22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.mm b/src/plugins/platforms/cocoa/qcocoahelpers.mm
index 8975605e5c..a73944c07c 100644
--- a/src/plugins/platforms/cocoa/qcocoahelpers.mm
+++ b/src/plugins/platforms/cocoa/qcocoahelpers.mm
@@ -102,21 +102,31 @@ CGImageRef qt_mac_toCGImage(const QImage &inImage)
uint cgflags = kCGImageAlphaNone;
switch (image.format()) {
case QImage::Format_ARGB32_Premultiplied:
- cgflags = kCGImageAlphaPremultipliedFirst;
+ cgflags = kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host;
break;
case QImage::Format_ARGB32:
- cgflags = kCGImageAlphaFirst;
+ cgflags = kCGImageAlphaFirst | kCGBitmapByteOrder32Host;
break;
case QImage::Format_RGB32:
- cgflags = kCGImageAlphaNoneSkipFirst;
+ cgflags = kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Host;
break;
case QImage::Format_RGB888:
- cgflags |= kCGImageAlphaNone;
- break;
+ cgflags = kCGImageAlphaNone | kCGBitmapByteOrder32Big;
+ break;
+ case QImage::Format_RGBA8888_Premultiplied:
+ cgflags = kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big;
+ break;
+ case QImage::Format_RGBA8888:
+ cgflags = kCGImageAlphaLast | kCGBitmapByteOrder32Big;
+ break;
+ case QImage::Format_RGBX8888:
+ cgflags = kCGImageAlphaNoneSkipLast | kCGBitmapByteOrder32Big;
+ break;
default:
+ Q_ASSERT(false); // Should never be reached.
break;
}
- cgflags |= kCGBitmapByteOrder32Host;
+
QCFType<CGDataProviderRef> dataProvider = qt_mac_CGDataProvider(image);
return CGImageCreate(image.width(), image.height(), 8, 32,
image.bytesPerLine(),