From 2a8db3cddacf2c3fc244f109fdecbba3b0dfc386 Mon Sep 17 00:00:00 2001 From: David Elliott Date: Tue, 11 Jan 2005 15:27:38 +0000 Subject: [PATCH] Implemented simplistic ConvertToImage() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31316 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/cocoa/bitmap.mm | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/cocoa/bitmap.mm b/src/cocoa/bitmap.mm index 4d5a1b05cc..97d7712b1e 100644 --- a/src/cocoa/bitmap.mm +++ b/src/cocoa/bitmap.mm @@ -28,6 +28,7 @@ #import #import #import +#import // ======================================================================== // wxBitmapRefData @@ -386,9 +387,26 @@ wxBitmap wxBitmap::GetSubBitmap(wxRect const&) const wxImage wxBitmap::ConvertToImage() const { + wxAutoNSAutoreleasePool pool; if(!Ok()) return /*wxImage(5,5)*/wxNullImage; - return wxImage(M_BITMAPDATA->m_width,M_BITMAPDATA->m_height); + NSImage *nsimage = GetNSImage(false /* don't use mask */); + wxImage newImage(M_BITMAPDATA->m_width,M_BITMAPDATA->m_height); + [nsimage lockFocus]; + for(int i=0; i < M_BITMAPDATA->m_width; i++) + { + // Don't let the pool get too big as you'll notice we're creating + // two autoreleased NSColor objects with every iteration. + wxAutoNSAutoreleasePool loopPool; + for(int j=0; j < M_BITMAPDATA->m_height; j++) + { + NSColor *pixelColor = NSReadPixel(NSMakePoint(i,M_BITMAPDATA->m_height - j - 1)); + NSColor *color = [pixelColor colorUsingColorSpaceName:NSCalibratedRGBColorSpace]; + newImage.SetRGB(i,j,int([color redComponent]*255.0), int([color greenComponent]*255.0), int([color blueComponent]*255.0)); + } + } + [nsimage unlockFocus]; + return newImage; } bool wxBitmap::CreateFromXpm(const char **xpm) -- 2.47.2