From 9c54e4ae1f401a9c337b97b588e5a356d79cbe82 Mon Sep 17 00:00:00 2001 From: David Elliott Date: Mon, 15 Dec 2003 19:30:54 +0000 Subject: [PATCH] Add wxBitmap::GetNSImage() which creates an autoreleased NSImage either with or without the bitmap mask applied. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24874 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/cocoa/bitmap.h | 1 + src/cocoa/bitmap.mm | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) 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) -- 2.45.2