diff --git a/src/mac/carbon/dcclient.cpp b/src/mac/carbon/dcclient.cpp index a9475a34d5..2c470de33a 100644 --- a/src/mac/carbon/dcclient.cpp +++ b/src/mac/carbon/dcclient.cpp @@ -209,38 +209,23 @@ wxBitmap wxWindowDC::DoGetAsBitmap(const wxRect *subrect) const HIViewCreateOffscreenImage( handle, 0, &rect, &image); - int width = subrect != NULL ? subrect->width : (int)rect.size.width; int height = subrect != NULL ? subrect->height : (int)rect.size.height ; - bytesPerRow = ( ( width * 8 * 4 + 7 ) / 8 ); - - data = calloc( 1, bytesPerRow * height ); - context = CGBitmapContextCreate( data, width, height, 8, bytesPerRow, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedFirst ); - + wxBitmap bmp = wxBitmap(width, height, 32); + + context = (CGContextRef)bmp.GetHBITMAP(); + + CGContextSaveGState(context); + + CGContextTranslateCTM( context, 0, height ); + CGContextScaleCTM( context, 1, -1 ); + if ( subrect ) rect = CGRectOffset( rect, -subrect->x, -subrect->y ) ; CGContextDrawImage( context, rect, image ); - unsigned char* buffer = (unsigned char*) data; - wxBitmap bmp = wxBitmap(width, height, 32); - wxAlphaPixelData pixData(bmp, wxPoint(0,0), wxSize(width, height)); - - pixData.UseAlpha(); - wxAlphaPixelData::Iterator p(pixData); - for (int y=0; y