X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a60a5499953215f46062de58c0fe5df7b3a27a60..850df2d78866c3edcf848103b5dbc7e7fa1ee5fa:/src/mac/carbon/dcmemory.cpp diff --git a/src/mac/carbon/dcmemory.cpp b/src/mac/carbon/dcmemory.cpp index ba8ecbe271..0ab0aea085 100644 --- a/src/mac/carbon/dcmemory.cpp +++ b/src/mac/carbon/dcmemory.cpp @@ -22,8 +22,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxPaintDC) -wxMemoryDC::wxMemoryDC( const wxBitmap& bitmap ) -: m_selected() +void wxMemoryDC::Init() { m_ok = true; SetBackground(*wxWHITE_BRUSH); @@ -31,100 +30,51 @@ wxMemoryDC::wxMemoryDC( const wxBitmap& bitmap ) SetPen(*wxBLACK_PEN); SetFont(*wxNORMAL_FONT); m_ok = false; - - if ( bitmap.IsOk() ) - SelectObject(bitmap); } 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() { if ( m_selected.Ok() ) { -#if wxMAC_USE_CORE_GRAPHICS m_selected.EndRawAccess() ; - CGContextRef bmCtx = (CGContextRef) m_graphicContext->GetNativeContext() ; delete m_graphicContext ; m_graphicContext = NULL ; - CGContextRelease( bmCtx ) ; -#else -// TODO: UnlockPixels( GetGWorldPixMap(MAC_WXHBITMAP(m_selected.GetHBITMAP())) ); -#endif } } -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 = (CGContextRef) m_graphicContext->GetNativeContext() ; delete m_graphicContext ; m_graphicContext = NULL ; - CGContextRelease( bmCtx ) ; -#else -// TODO: UnlockPixels( GetGWorldPixMap(MAC_WXHBITMAP(m_selected.GetHBITMAP())) ); -#endif } m_selected = bitmap; if (m_selected.Ok()) { -#if wxMAC_USE_CORE_GRAPHICS 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 ; - + m_selected.BeginRawAccess() ; + m_width = bitmap.GetWidth(); + m_height = bitmap.GetHeight(); CGColorSpaceRef genericColorSpace = wxMacGetGenericRGBColorSpace(); - CGContextRef bmCtx = CGBitmapContextCreate( data , w, h, bitsPerComp , bytesPerPixel * w , genericColorSpace, a ); - wxASSERT_MSG( bmCtx , wxT("Unable to create bitmap context") ) ; + CGContextRef bmCtx = (CGContextRef) m_selected.GetHBITMAP(); if ( bmCtx ) { CGContextSetFillColorSpace( bmCtx, genericColorSpace ); CGContextSetStrokeColorSpace( bmCtx, genericColorSpace ); - - CGContextTranslateCTM( bmCtx , 0 , m_selected.GetHeight() ) ; - CGContextScaleCTM( bmCtx , 1 , -1 ) ; - SetGraphicsContext( wxGraphicsContext::CreateFromNative( bmCtx ) ); - m_graphicContext->SetPen( m_pen ) ; - m_graphicContext->SetBrush( m_brush ) ; - m_graphicContext->SetFont( m_font , m_textForegroundColour) ; } m_ok = (m_graphicContext != NULL) ; - -#else - m_macPort = m_selected.GetHBITMAP( &m_macMask ) ; - m_ok = (m_macPort != NULL) ; - if (m_ok) - { - LockPixels( GetGWorldPixMap( (CGrafPtr) m_macPort ) ) ; - SetRectRgn( (RgnHandle) m_macBoundaryClipRgn , 0 , 0 , m_selected.GetWidth() , m_selected.GetHeight() ) ; - CopyRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ; - } -#endif } else {