]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/dccg.cpp
support CGGraphics Masks, switch xbm interpretation to be in line with msw
[wxWidgets.git] / src / mac / carbon / dccg.cpp
index 150d697cce56ebada70b962d8f32ab3636549cb6..3bb0f6f514980749668eb988ef6538ee46258168 100755 (executable)
@@ -266,8 +266,23 @@ void wxMacCGContext::Clip( const wxRegion &region )
 void wxMacCGContext::StrokePath( const wxGraphicPath *p )
 {
     const wxMacCGPath* path = dynamic_cast< const wxMacCGPath*>( p ) ;
+
+    int width = m_pen.GetWidth();
+    if ( width == 0 )
+        width = 1 ;
+    if ( m_pen.GetStyle() == wxTRANSPARENT )
+        width = 0 ;
+        
+    bool offset = ( width % 2 ) == 1 ; 
+
+    if ( offset )
+        CGContextTranslateCTM( m_cgContext, 0.5, 0.5 );
+
     CGContextAddPath( m_cgContext , path->GetPath() ) ;
     CGContextStrokePath( m_cgContext ) ;
+
+    if ( offset )
+        CGContextTranslateCTM( m_cgContext, -0.5, -0.5 );
 }
 
 void wxMacCGContext::DrawPath( const wxGraphicPath *p , int fillStyle )
@@ -283,8 +298,22 @@ void wxMacCGContext::DrawPath( const wxGraphicPath *p , int fillStyle )
             mode = kCGPathEOFillStroke ;
     }
 
+    int width = m_pen.GetWidth();
+    if ( width == 0 )
+        width = 1 ;
+    if ( m_pen.GetStyle() == wxTRANSPARENT )
+        width = 0 ;
+        
+    bool offset = ( width % 2 ) == 1 ; 
+
+    if ( offset )
+        CGContextTranslateCTM( m_cgContext, 0.5, 0.5 );
+
     CGContextAddPath( m_cgContext , path->GetPath() ) ;
     CGContextDrawPath( m_cgContext , mode ) ;
+
+    if ( offset )
+        CGContextTranslateCTM( m_cgContext, -0.5, -0.5 );
 }
 
 void wxMacCGContext::FillPath( const wxGraphicPath *p , const wxColor &fillColor , int fillStyle )
@@ -1320,7 +1349,9 @@ void wxDC::SetTextForeground( const wxColour &col )
     if ( col != m_textForegroundColour )
     {
         m_textForegroundColour = col;
-        m_graphicContext->SetTextColor( col ) ;
+        m_graphicContext->SetTextColor( col );
+        // in the current implementation the font contains the text color
+        m_graphicContext->SetFont(m_font);
     }
 }
 
@@ -1453,7 +1484,7 @@ void wxDC::SetPen( const wxPen &pen )
 {
     if ( m_pen == pen )
         return ;
-
+    
     m_pen = pen;
     if ( m_graphicContext )
     {