X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d23193b2245f256cf8ac05e9f70a0d303102dedb..7c2f14eeb84c08651a96050ff1f05d195fe3db7f:/src/cocoa/dcmemory.mm diff --git a/src/cocoa/dcmemory.mm b/src/cocoa/dcmemory.mm index 3e8d16339c..f3f2d3e2d0 100644 --- a/src/cocoa/dcmemory.mm +++ b/src/cocoa/dcmemory.mm @@ -6,7 +6,7 @@ // Created: 2003/03/16 // RCS-ID: $Id$ // Copyright: (c) 2002 David Elliott -// Licence: wxWindows licence +// Licence: wxWidgets licence ///////////////////////////////////////////////////////////////////////////// #include "wx/wxprec.h" @@ -15,9 +15,13 @@ #include "wx/dcmemory.h" #endif //WX_PRECOMP +#include "wx/cocoa/autorelease.h" + #import #import #import +#import +#import //----------------------------------------------------------------------------- // wxMemoryDC @@ -49,8 +53,7 @@ bool wxMemoryDC::CocoaLockFocus() { [m_cocoaNSImage lockFocus]; sm_cocoaDCStack.Insert(this); - m_cocoaFlipped = [m_cocoaNSImage isFlipped]; - m_cocoaHeight = [m_cocoaNSImage size].height; + m_cocoaWxToBoundsTransform = CocoaGetWxToBoundsTransform([m_cocoaNSImage isFlipped], [m_cocoaNSImage size].height); CocoaApplyTransformations(); return true; } @@ -67,6 +70,7 @@ bool wxMemoryDC::CocoaUnlockFocus() // instead copy the data to an offscreen window, then copy it back void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) { + wxAutoNSAutoreleasePool pool; if(m_selectedBitmap.Ok()) { CocoaTakeFocus(); @@ -135,7 +139,7 @@ bool wxMemoryDC::CocoaDoBlitOnFocusedDC(wxCoord xdest, wxCoord ydest, [transform concat]; [flipTransform concat]; - wxLogDebug(wxT("[m_cocoaNSImage isFlipped]=%d"), [m_cocoaNSImage isFlipped]); + wxLogTrace(wxTRACE_COCOA,wxT("[m_cocoaNSImage isFlipped]=%d"), [m_cocoaNSImage isFlipped]); [m_cocoaNSImage drawAtPoint: NSMakePoint(0,0) fromRect: NSMakeRect(xsrc, m_selectedBitmap.GetHeight()-height-ysrc, @@ -147,3 +151,20 @@ bool wxMemoryDC::CocoaDoBlitOnFocusedDC(wxCoord xdest, wxCoord ydest, return false; } +void wxMemoryDC::Clear() +{ + if(!CocoaTakeFocus()) return; + + NSGraphicsContext *context = [NSGraphicsContext currentContext]; + [context saveGraphicsState]; + + [m_backgroundBrush.GetNSColor() set]; + NSRect rect; + rect.origin.x = 0; + rect.origin.y = 0; + rect.size = [m_cocoaNSImage size]; + [NSBezierPath fillRect:rect]; + + [context restoreGraphicsState]; +} +