diff --git a/include/wx/cocoa/bitmap.h b/include/wx/cocoa/bitmap.h index 622aab943e..053e85f29c 100644 --- a/include/wx/cocoa/bitmap.h +++ b/include/wx/cocoa/bitmap.h @@ -148,6 +148,7 @@ public: // wxCocoa WX_NSBitmapImageRep GetNSBitmapImageRep(); void SetNSBitmapImageRep(WX_NSBitmapImageRep bitmapImageRep); + WX_NSImage GetNSImage(bool useMask) const; static void InitStandardHandlers() { } static void CleanUpHandlers() { } diff --git a/src/cocoa/bitmap.mm b/src/cocoa/bitmap.mm index de552f5435..6e5702044d 100644 --- a/src/cocoa/bitmap.mm +++ b/src/cocoa/bitmap.mm @@ -27,6 +27,7 @@ #import #import +#import // ======================================================================== // wxBitmapRefData @@ -145,6 +146,27 @@ WX_NSBitmapImageRep wxBitmap::GetNSBitmapImageRep() return M_BITMAPDATA->m_cocoaNSBitmapImageRep; } +WX_NSImage wxBitmap::GetNSImage(bool useMask) const +{ + if(!Ok()) + return nil; + NSImage *nsimage = [[[NSImage alloc] + initWithSize:NSMakeSize(GetWidth(), GetHeight())] autorelease]; + if(!nsimage) + return nil; + [nsimage addRepresentation: M_BITMAPDATA->m_cocoaNSBitmapImageRep]; + if(useMask && GetMask()) + { + NSImage *maskImage = [[NSImage alloc] + initWithSize:NSMakeSize(GetWidth(), GetHeight())]; + [maskImage addRepresentation: GetMask()->GetNSBitmapImageRep()]; + [nsimage lockFocus]; + [maskImage compositeToPoint:NSZeroPoint operation:NSCompositeDestinationIn]; + [nsimage unlockFocus]; + } + return nsimage; +} + void wxBitmap::SetNSBitmapImageRep(WX_NSBitmapImageRep bitmapImageRep) { if(!M_BITMAPDATA)