X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/626fd619040da4d81db610c6042cc3c427250255..f8855e47254a28f5141524b3aaaac03c2944e997:/src/mac/carbon/dcmemory.cpp diff --git a/src/mac/carbon/dcmemory.cpp b/src/mac/carbon/dcmemory.cpp index a1f563080a..c085610570 100644 --- a/src/mac/carbon/dcmemory.cpp +++ b/src/mac/carbon/dcmemory.cpp @@ -9,10 +9,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "dcmemory.h" -#endif - #include "wx/wxprec.h" #include "wx/dcmemory.h" @@ -24,27 +20,27 @@ IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxPaintDC) -wxMemoryDC::wxMemoryDC(void) +wxMemoryDC::wxMemoryDC() : m_selected() { - m_ok = TRUE; + m_ok = true; SetBackground(*wxWHITE_BRUSH); SetBrush(*wxWHITE_BRUSH); SetPen(*wxBLACK_PEN); - SetFont(*wxNORMAL_FONT) ; - m_ok = FALSE; -}; + SetFont(*wxNORMAL_FONT); + m_ok = false; +} wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) ) : m_selected() { - m_ok = TRUE; + m_ok = true; SetBackground(*wxWHITE_BRUSH); SetBrush(*wxWHITE_BRUSH); SetPen(*wxBLACK_PEN); - SetFont(*wxNORMAL_FONT) ; - m_ok = FALSE; -}; + SetFont(*wxNORMAL_FONT); + m_ok = false; +} wxMemoryDC::~wxMemoryDC() { @@ -57,10 +53,10 @@ wxMemoryDC::~wxMemoryDC() m_graphicContext = NULL ; CGContextRelease( bmCtx ) ; #else -// TODO UnlockPixels( GetGWorldPixMap(MAC_WXHBITMAP(m_selected.GetHBITMAP())) ); +// TODO: UnlockPixels( GetGWorldPixMap(MAC_WXHBITMAP(m_selected.GetHBITMAP())) ); #endif } -}; +} void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) { @@ -73,9 +69,10 @@ void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) m_graphicContext = NULL ; CGContextRelease( bmCtx ) ; #else -// TODO UnlockPixels( GetGWorldPixMap(MAC_WXHBITMAP(m_selected.GetHBITMAP())) ); +// TODO: UnlockPixels( GetGWorldPixMap(MAC_WXHBITMAP(m_selected.GetHBITMAP())) ); #endif } + m_selected = bitmap; if (m_selected.Ok()) { @@ -87,47 +84,42 @@ void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) int bytesPerPixel = 4 ; int w = bitmap.GetWidth() ; int h = bitmap.GetHeight() ; + + // TODO: should this be kCGImageAlphaPremultiplied[First,Last] ? CGImageAlphaInfo a = kCGImageAlphaNoneSkipFirst ; + CGColorSpaceRef genericColorSpace = wxMacGetGenericRGBColorSpace(); - CGContextRef bmCtx = CGBitmapContextCreate(data , w, h, bitsPerComp , bytesPerPixel * w , genericColorSpace, a); + CGContextRef bmCtx = CGBitmapContextCreate( data , w, h, bitsPerComp , bytesPerPixel * w , genericColorSpace, a ); wxASSERT_MSG( bmCtx , wxT("Unable to create bitmap context") ) ; - CGContextSetFillColorSpace(bmCtx, genericColorSpace); - CGContextSetStrokeColorSpace(bmCtx, genericColorSpace); - - if( bmCtx ) + if ( bmCtx ) { + CGContextSetFillColorSpace( bmCtx, genericColorSpace ); + CGContextSetStrokeColorSpace( bmCtx, genericColorSpace ); + 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 ) ; } - m_ok = (m_graphicContext != NULL) ; + m_ok = (m_graphicContext != NULL) ; + #else - if ( ( m_macPort = m_selected.GetHBITMAP( &m_macMask ) ) != NULL ) + m_macPort = m_selected.GetHBITMAP( &m_macMask ) ; + m_ok = (m_macPort != NULL) ; + if (m_ok) { - LockPixels( GetGWorldPixMap( (CGrafPtr) m_macPort ) ) ; - /* - wxMask * mask = bitmap.GetMask() ; - if ( mask ) - { - m_macMask = mask->GetHBITMAP() ; - } - */ + LockPixels( GetGWorldPixMap( (CGrafPtr) m_macPort ) ) ; SetRectRgn( (RgnHandle) m_macBoundaryClipRgn , 0 , 0 , m_selected.GetWidth() , m_selected.GetHeight() ) ; - CopyRgn( (RgnHandle) m_macBoundaryClipRgn ,(RgnHandle) m_macCurrentClipRgn ) ; - m_ok = TRUE ; - } - else - { - m_ok = FALSE; + CopyRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ; } #endif } else { - m_ok = FALSE; + m_ok = false; } } @@ -135,14 +127,16 @@ void wxMemoryDC::DoGetSize( int *width, int *height ) const { if (m_selected.Ok()) { - if (width) (*width) = m_selected.GetWidth(); - if (height) (*height) = m_selected.GetHeight(); + if (width) + (*width) = m_selected.GetWidth(); + if (height) + (*height) = m_selected.GetHeight(); } else { - if (width) (*width) = 0; - if (height) (*height) = 0; + if (width) + (*width) = 0; + if (height) + (*height) = 0; } } - -