From c88d91ba0731085cba1dee98ab376e8531097a8c Mon Sep 17 00:00:00 2001 From: Kevin Ollivier Date: Sun, 25 May 2008 21:54:32 +0000 Subject: [PATCH] (Port to trunk) Fix for wxClientDC::GetAsBitmap, which partially resolves ticket #9486 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53747 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/mac/carbon/dcclient.cpp | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/src/mac/carbon/dcclient.cpp b/src/mac/carbon/dcclient.cpp index 4c2c1a8b9f..0bd172fa84 100644 --- a/src/mac/carbon/dcclient.cpp +++ b/src/mac/carbon/dcclient.cpp @@ -121,33 +121,20 @@ wxBitmap wxWindowDCImpl::DoGetAsBitmap(const wxRect *subrect) const 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)); - - wxAlphaPixelData::Iterator p(pixData); - for (int y=0; y