X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f38924e863cd44e2abd49d20d201d72aa773c51e..abb88ef36b622958aee316eae76c79b145b831dd:/src/mac/carbon/dcmemory.cpp diff --git a/src/mac/carbon/dcmemory.cpp b/src/mac/carbon/dcmemory.cpp index 79ef4ee3cc..f30ed64d0f 100644 --- a/src/mac/carbon/dcmemory.cpp +++ b/src/mac/carbon/dcmemory.cpp @@ -12,6 +12,7 @@ #include "wx/wxprec.h" #include "wx/dcmemory.h" +#include "wx/graphics.h" #include "wx/mac/private.h" @@ -21,8 +22,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxPaintDC) -wxMemoryDC::wxMemoryDC() -: m_selected() +void wxMemoryDC::Init() { m_ok = true; SetBackground(*wxWHITE_BRUSH); @@ -35,12 +35,7 @@ wxMemoryDC::wxMemoryDC() wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) ) : m_selected() { - m_ok = true; - SetBackground(*wxWHITE_BRUSH); - SetBrush(*wxWHITE_BRUSH); - SetPen(*wxBLACK_PEN); - SetFont(*wxNORMAL_FONT); - m_ok = false; + Init(); } wxMemoryDC::~wxMemoryDC() @@ -49,7 +44,7 @@ wxMemoryDC::~wxMemoryDC() { #if wxMAC_USE_CORE_GRAPHICS m_selected.EndRawAccess() ; - CGContextRef bmCtx = ((wxMacCGContext*)(m_graphicContext))->GetNativeContext() ; + CGContextRef bmCtx = (CGContextRef) m_graphicContext->GetNativeContext() ; delete m_graphicContext ; m_graphicContext = NULL ; CGContextRelease( bmCtx ) ; @@ -59,13 +54,13 @@ wxMemoryDC::~wxMemoryDC() } } -void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) +void wxMemoryDC::DoSelect( const wxBitmap& bitmap ) { if ( m_selected.Ok() ) { #if wxMAC_USE_CORE_GRAPHICS m_selected.EndRawAccess() ; - CGContextRef bmCtx = ((wxMacCGContext*)(m_graphicContext))->GetNativeContext() ; + CGContextRef bmCtx = (CGContextRef) m_graphicContext->GetNativeContext() ; delete m_graphicContext ; m_graphicContext = NULL ; CGContextRelease( bmCtx ) ; @@ -78,13 +73,16 @@ void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) if (m_selected.Ok()) { #if wxMAC_USE_CORE_GRAPHICS - m_selected.UseAlpha() ; + if ( m_selected.GetDepth() != 1 ) + m_selected.UseAlpha() ; void * data = m_selected.BeginRawAccess() ; int bitsPerComp = 8 ; int bytesPerPixel = 4 ; int w = bitmap.GetWidth() ; int h = bitmap.GetHeight() ; + m_width = w; + m_height = h; // TODO: should this be kCGImageAlphaPremultiplied[First,Last] ? CGImageAlphaInfo a = kCGImageAlphaNoneSkipFirst ; @@ -101,9 +99,7 @@ void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) CGContextTranslateCTM( bmCtx , 0 , m_selected.GetHeight() ) ; CGContextScaleCTM( bmCtx , 1 , -1 ) ; - m_graphicContext = new wxMacCGContext( bmCtx ) ; - m_graphicContext->SetPen( m_pen ) ; - m_graphicContext->SetBrush( m_brush ) ; + SetGraphicsContext( wxGraphicsContext::CreateFromNative( bmCtx ) ); } m_ok = (m_graphicContext != NULL) ;