]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/dc.cpp
Fix wxListCtrl background colour bug Part I
[wxWidgets.git] / src / mac / carbon / dc.cpp
index aaabc6607b0a9bb5b64ce63d3dc3e8923a52acf8..5778b90b072740d901e9e6591795d84405ec4b8d 100644 (file)
@@ -19,6 +19,7 @@
 #include "wx/dcmemory.h"
 #include "wx/region.h"
 #include "wx/image.h"
+#include "wx/log.h"
 
 
 #if __MSL__ >= 0x6000
@@ -52,8 +53,6 @@ const double RAD2DEG  = 180.0 / M_PI;
 const short kEmulatedMode = -1 ;
 const short kUnsupportedMode = -2 ;
 
-#define wxMAC_EXPERIMENTAL_PATTERN 0
-
 wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) :
        m_ph( (GrafPtr) dc->m_macPort ) 
 {
@@ -250,14 +249,14 @@ void wxDC::MacCleanupPort(wxMacPortStateHelper* help) const
     {
         Pattern blackColor ;
         ::PenPat(GetQDGlobalsBlack(&blackColor));
-        DisposePixMap( (PixMapHandle) m_macForegroundPixMap ) ;
+        DisposePixPat( (PixPatHandle) m_macForegroundPixMap ) ;
         m_macForegroundPixMap = NULL ;
     }
     if ( m_macBackgroundPixMap )
     {
         Pattern whiteColor ;
         ::BackPat(GetQDGlobalsWhite(&whiteColor));
-        DisposePixMap( (PixMapHandle) m_macBackgroundPixMap ) ;
+        DisposePixPat( (PixPatHandle) m_macBackgroundPixMap ) ;
         m_macBackgroundPixMap = NULL ;
     }
 }
@@ -563,7 +562,11 @@ wxSize wxDC::GetPPI() const
 
 int wxDC::GetDepth() const
 {
-       return wxDisplayDepth() ;
+    if ( IsPortColor( (CGrafPtr) m_macPort ) )
+    {
+        return ( (**GetPortPixMap( (CGrafPtr) m_macPort)).pixelSize ) ;
+    }
+    return 1 ;
 }
 
 void wxDC::ComputeScaleAndOrigin()
@@ -646,9 +649,13 @@ void  wxDC::SetLogicalFunction( int function )
        m_macPenInstalled = false ;
 }
 
-void  wxDC::DoFloodFill( wxCoord x, wxCoord y, const wxColour& col,
-                             int style )
+extern void wxDoFloodFill(wxDC *dc, wxCoord x, wxCoord y, 
+                          const wxColour & col, int style);
+
+void wxDC::DoFloodFill(wxCoord x, wxCoord y,
+                       const wxColour& col, int style)
 {
+    wxDoFloodFill(this, x, y, col, style);
 }
 
 bool  wxDC::DoGetPixel( wxCoord x, wxCoord y, wxColour *col ) const 
@@ -1786,11 +1793,21 @@ void wxDC::MacInstallFont() const
 
 }
 
+Pattern gHatchPatterns[] =
+{   
+    { 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF } ,
+    { 0x01 , 0x02 , 0x04 , 0x08 , 0x10 , 0x20 , 0x40 , 0x80 } ,
+    { 0x80 , 0x40 , 0x20 , 0x10 , 0x08 , 0x04 , 0x02 , 0x01 } ,
+    { 0x10 , 0x10 , 0x10 , 0xFF , 0x10 , 0x10 , 0x10 , 0x10 } ,
+    { 0x00 , 0x00 , 0x00 , 0xFF , 0x00 , 0x00 , 0x00 , 0x00 } ,
+    { 0x10 , 0x10 , 0x10 , 0x10 , 0x10 , 0x10 , 0x10 , 0x10 } ,
+    { 0x81 , 0x42 , 0x24 , 0x18 , 0x18 , 0x24 , 0x42 , 0x81 } ,
+} ;
+
 static void wxMacGetHatchPattern(int hatchStyle, Pattern *pattern)
 {
-    // we have our own pattern list now
-       int thePatListID = 128;
-       int theIndex;
+       int theIndex = 1 ;
+       
        switch(hatchStyle)
        {
                case wxBDIAGONAL_HATCH:
@@ -1815,7 +1832,7 @@ static void wxMacGetHatchPattern(int hatchStyle, Pattern *pattern)
                        theIndex = 1; // solid pattern
                        break;
        }
-       GetIndPattern( pattern, thePatListID, theIndex);        
+       *pattern = gHatchPatterns[theIndex-1] ; 
 }
 
 void wxDC::MacInstallPen() const