diff --git a/src/cocoa/bitmap.mm b/src/cocoa/bitmap.mm index c73bc16b68..de552f5435 100644 --- a/src/cocoa/bitmap.mm +++ b/src/cocoa/bitmap.mm @@ -565,12 +565,22 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour) unsigned char *dstPlanes[5] = {NULL,NULL,NULL,NULL,NULL}; [maskRep getBitmapDataPlanes:dstPlanes]; unsigned char *dstData = dstPlanes[1]; + // The wxImage format (which we use whenever we imported from wxImage) if([srcBitmapRep bitsPerPixel]==24 && [srcBitmapRep bitsPerSample]==8 && [srcBitmapRep samplesPerPixel]==3 && [srcBitmapRep hasAlpha]==NO) { wxPixelData pixelData(const_cast(bitmap)); wxCHECK_MSG(wxMask_CreateFromBitmapData(pixelData, colour, dstData), false, "Unable to access raw data"); } + // 32-bpp RGBx (x=throw away, no alpha) + else if([srcBitmapRep bitsPerPixel]==32 && [srcBitmapRep bitsPerSample]==8 && [srcBitmapRep samplesPerPixel]==3 && [srcBitmapRep hasAlpha]==NO) + { + typedef wxPixelFormat PixelFormat; + wxPixelData pixelData(const_cast(bitmap)); + wxCHECK_MSG(wxMask_CreateFromBitmapData(pixelData, colour, dstData), + false, "Unable to access raw data"); + } + // 32-bpp RGBA else if([srcBitmapRep bitsPerPixel]==32 && [srcBitmapRep bitsPerSample]==8 && [srcBitmapRep samplesPerPixel]==4 && [srcBitmapRep hasAlpha]==YES) { wxPixelData pixelData(const_cast(bitmap));