From 959ddf25d3ef6b3f9031d693749a55a35f382ce1 Mon Sep 17 00:00:00 2001 From: Kevin Ollivier Date: Sun, 25 May 2008 17:56:21 +0000 Subject: [PATCH] Fix for wxClientDC::GetAsBitmap, which partially resolves ticket #9486 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@53742 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/mac/carbon/dcclient.cpp | 35 ++++++++++------------------------- 1 file changed, 10 insertions(+), 25 deletions(-) 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