X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0a67a93b17c37c018f60e662645ee2a44ba4e58e..cf1a9b45c7b70f217d3cc282ab77df8feaadcdeb:/src/mac/carbon/dc.cpp diff --git a/src/mac/carbon/dc.cpp b/src/mac/carbon/dc.cpp index 119818f6c6..8285afd1c6 100644 --- a/src/mac/carbon/dc.cpp +++ b/src/mac/carbon/dc.cpp @@ -36,8 +36,6 @@ IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject) #define mm2pt 2.83464566929 #define pt2mm 0.352777777778 -long wxDC::m_macCurrentPortId = 1 ; - //----------------------------------------------------------------------------- // wxDC //----------------------------------------------------------------------------- @@ -76,43 +74,36 @@ wxDC::wxDC() m_macBrushInstalled = false ; m_macPenInstalled = false ; - m_macPortId = 0 ; m_macLocalOrigin.h = m_macLocalOrigin.v = 0 ; m_macClipRect.left = -32000 ; m_macClipRect.top = -32000 ; m_macClipRect.right = 32000 ; m_macClipRect.bottom = 32000 ; - ::GetPort( &m_macOrigPort ) ; + + m_pen = *wxBLACK_PEN; + m_font = *wxNORMAL_FONT; + m_brush = *wxWHITE_BRUSH; }; +wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) : + m_ph( dc->m_macPort ) +{ + wxASSERT( dc->Ok() ) ; + + dc->MacSetupPort(&m_ph) ; +} + +wxMacPortSetter::~wxMacPortSetter() +{ +} + wxDC::~wxDC(void) { - if ( !m_macPortHelper.IsCleared() ) - { - GrafPtr port ; - GetPort( &port ) ; - SetPort( m_macPortHelper.GetCurrentPort() ) ; - SetOrigin( 0 , 0 ) ; - SetPort( port ) ; - } - /* - if ( m_macPort ) - { - ::SetPort( m_macPort ) ; - ::SetOrigin( 0 , 0 ) ; - ::ClipRect( &m_macPort->portRect ) ; - ::PenNormal() ; - ::SetPort( m_macOrigPort ) ; - } - */ - ++m_macCurrentPortId ; }; -void wxDC::MacSetupPort() const +void wxDC::MacSetupPort(AGAPortHelper* help) const { - AGAPortHelper* help = (AGAPortHelper*) &m_macPortHelper ; help->Setup( m_macPort ) ; - m_macPortId = ++m_macCurrentPortId ; ::SetOrigin(-m_macLocalOrigin.h, -m_macLocalOrigin.v); ::ClipRect(&m_macClipRect); @@ -127,7 +118,7 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask if (!Ok()) return; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; long xx1 = XLOG2DEV(x); long yy1 = YLOG2DEV(y); @@ -196,7 +187,7 @@ void wxDC::DoDrawIcon( const wxIcon &icon, wxCoord x, wxCoord y ) { if (!Ok()) return; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; long xx1 = XLOG2DEV(x); long yy1 = YLOG2DEV(y); @@ -215,7 +206,7 @@ void wxDC::DoDrawIcon( const wxIcon &icon, wxCoord x, wxCoord y ) void wxDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord height ) { - MacVerifySetup() ; + wxMacPortSetter helper(this) ; if( m_clipping ) { m_clipX1 = wxMax( m_clipX1 , x ) ; @@ -248,7 +239,7 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion ®ion ) { wxCHECK_RET( Ok(), wxT("invalid window dc") ); - MacVerifySetup() ; + wxMacPortSetter helper(this) ; if (region.Empty()) { DestroyClippingRegion(); @@ -262,7 +253,7 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion ®ion ) void wxDC::DestroyClippingRegion(void) { - MacVerifySetup() ; + wxMacPortSetter helper(this) ; m_clipping = FALSE; // Rect clip = { -32000 , -32000 , 32000 , 32000 } ; ::ClipRect(&m_macClipRect); @@ -432,7 +423,7 @@ void wxDC::SetFont( const wxFont &font ) if (!Ok()) return; - MacVerifySetup() ; +// wxMacPortSetter helper(this) ; m_font = font; m_macFontInstalled = false ; @@ -443,7 +434,7 @@ void wxDC::SetPen( const wxPen &pen ) if (!Ok() ) return; - MacVerifySetup() ; +// wxMacPortSetter helper(this) ; if ( m_pen == pen ) return ; @@ -460,7 +451,7 @@ void wxDC::SetBrush( const wxBrush &brush ) { if (!Ok() ) return; - MacVerifySetup() ; +// wxMacPortSetter helper(this) ; if (m_brush == brush) return; @@ -473,7 +464,7 @@ void wxDC::SetBackground( const wxBrush &brush ) { if (!Ok()) return; - MacVerifySetup() ; +// wxMacPortSetter helper(this) ; if (m_backgroundBrush == brush) return; @@ -511,7 +502,7 @@ void wxDC::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 ) if (!Ok()) return; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; if (m_pen.GetStyle() != wxTRANSPARENT) { @@ -547,7 +538,7 @@ void wxDC::DoDrawPoint( wxCoord x, wxCoord y ) if (!Ok()) return; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; if (m_pen.GetStyle() != wxTRANSPARENT) { @@ -565,7 +556,7 @@ void wxDC::DoDrawLines(int n, wxPoint points[], { if (!Ok()) return; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; if (m_pen.GetStyle() == wxTRANSPARENT) return; @@ -592,7 +583,7 @@ void wxDC::DoDrawPolygon(int n, wxPoint points[], { if (!Ok()) return; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; PolyHandle polygon = OpenPoly() ; long x1, x2 , y1 , y2 ; @@ -626,7 +617,7 @@ void wxDC::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height) { if (!Ok()) return; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; long xx = XLOG2DEV(x); long yy = YLOG2DEV(y); @@ -671,7 +662,7 @@ void wxDC::DoDrawRoundedRectangle(wxCoord x, wxCoord y, { if (!Ok()) return; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; if (radius < 0.0) radius = - radius * ((width < height) ? width : height); @@ -717,7 +708,7 @@ void wxDC::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height) { if (!Ok()) return; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; long xx = XLOG2DEV(x); long yy = YLOG2DEV(y); @@ -768,7 +759,7 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, wxDC *source, wxCoord xsrc, wxCoord ysrc, int logical_func , bool useMask ) { if (!Ok()) return FALSE; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; CGrafPtr sourcePort = (CGrafPtr) source->m_macPort ; PixMapHandle bmappixels = GetGWorldPixMap( sourcePort ) ; @@ -839,7 +830,7 @@ void wxDC::DoDrawText(const wxString& strtext, wxCoord x, wxCoord y) { if (!Ok()) return; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; long xx = XLOG2DEV(x); long yy = YLOG2DEV(y); @@ -919,7 +910,7 @@ void wxDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoord *he if (!Ok()) return; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; wxFont formerFont = m_font ; @@ -1001,7 +992,7 @@ wxCoord wxDC::GetCharWidth(void) const if (!Ok()) return 1; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; MacInstallFont() ; @@ -1016,7 +1007,7 @@ wxCoord wxDC::GetCharHeight(void) const if (!Ok()) return 1; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; MacInstallFont() ; @@ -1030,7 +1021,7 @@ void wxDC::Clear(void) { if (!Ok()) return; - MacVerifySetup() ; + wxMacPortSetter helper(this) ; Rect rect = { -32767 , -32767 , 32767 , 32767 } ; if (m_backgroundBrush.GetStyle() != wxTRANSPARENT) @@ -1044,10 +1035,9 @@ void wxDC::MacInstallFont() const { if (!Ok()) return; - MacVerifySetup() ; - if ( m_macFontInstalled ) - return ; +// if ( m_macFontInstalled ) +// return ; Pattern blackColor ; wxFontRefData * font = (wxFontRefData*) m_font.GetRefData() ; @@ -1166,12 +1156,11 @@ void wxDC::MacInstallPen() const { if (!Ok()) return; - MacVerifySetup() ; Pattern blackColor; - if ( m_macPenInstalled ) - return ; +// if ( m_macPenInstalled ) +// return ; RGBColor forecolor = m_pen.GetColour().GetPixel(); RGBColor backcolor = m_backgroundBrush.GetColour().GetPixel(); @@ -1253,10 +1242,10 @@ void wxDC::MacInstallBrush() const { if (!Ok()) return; - MacVerifySetup() ; + Pattern blackColor, whiteColor ; - if ( m_macBrushInstalled ) - return ; +// if ( m_macBrushInstalled ) +// return ; // foreground