]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/dc.cpp
make sure we always restore the passed in cg in a paint event
[wxWidgets.git] / src / mac / carbon / dc.cpp
index 6f8ecf23dfa9a95c91c47bd524a24b5e1c71a2bf..9bc9f204b513a444a17dd5d028ce86cd1e04b7fc 100644 (file)
     #include "wx/dcmemory.h"
     #include "wx/dcprint.h"
     #include "wx/region.h"
+    #include "wx/image.h"
 #endif
 
 #include "wx/mac/uma.h"
-#include "wx/image.h"
 
 #ifdef __MSL__
     #if __MSL__ >= 0x6000
@@ -55,9 +55,6 @@ const double RAD2DEG  = 180.0 / M_PI;
 const short kEmulatedMode = -1 ;
 const short kUnsupportedMode = -2 ;
 
-extern TECObjectRef s_TECNativeCToUnicode ;
-
-
 wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) :
     m_ph( (GrafPtr) dc->m_macPort )
 {
@@ -154,13 +151,6 @@ wxMacWindowStateSaver::~wxMacWindowStateSaver()
     SetThemeDrawingState( m_themeDrawingState , true ) ;
 }
 
-//-----------------------------------------------------------------------------
-// Local functions
-//-----------------------------------------------------------------------------
-static inline double dmin(double a, double b) { return a < b ? a : b; }
-static inline double dmax(double a, double b) { return a > b ? a : b; }
-static inline double DegToRad(double deg) { return (deg * M_PI) / 180.0; }
-
 //-----------------------------------------------------------------------------
 // wxDC
 //-----------------------------------------------------------------------------
@@ -1487,7 +1477,7 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y,
 
     wxMacUniCharBuffer unibuf( str ) ;
     UniCharCount chars = unibuf.GetChars() ;
-    
+
     status = ::ATSUCreateTextLayoutWithTextPtr( unibuf.GetBuffer() , 0 , chars , chars , 1 ,
         &chars , (ATSUStyle*) &m_macATSUIStyle , &atsuLayout ) ;
 
@@ -1504,12 +1494,12 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y,
     ATSUTextMeasurement ascent, descent ;
 
     ATSLineLayoutOptions layoutOptions = kATSLineNoLayoutOptions ;
-    
+
     if (m_font.GetNoAntiAliasing())
     {
         layoutOptions |= kATSLineNoAntiAliasing ;
     }
-    
+
     Fixed atsuAngle = IntToFixed( iAngle ) ;
 
     ATSUAttributeTag atsuTags[] =
@@ -1517,28 +1507,28 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y,
         kATSULineLayoutOptionsTag ,
         kATSULineRotationTag ,
     } ;
-    
+
     ByteCount atsuSizes[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] =
     {
         sizeof( ATSLineLayoutOptions ) ,
         sizeof( Fixed ) ,
     } ;
-    
+
     ATSUAttributeValuePtr    atsuValues[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] =
     {
         &layoutOptions ,
         &atsuAngle ,
     } ;
-    
+
     status = ::ATSUSetLayoutControls(atsuLayout , sizeof(atsuTags)/sizeof(ATSUAttributeTag) - ( abs(iAngle) > 0.001 ? 0 : 1),
             atsuTags, atsuSizes, atsuValues ) ;
 
     status = ::ATSUMeasureText( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd,
         &textBefore , &textAfter, &ascent , &descent );
     wxASSERT_MSG( status == noErr , wxT("couldn't measure the rotated text") );
-    
+
     if ( m_backgroundMode == wxSOLID )
-    {      
+    {
         // background painting must be done by hand, cannot be done by ATSUI
         wxCoord x2 , y2 ;
         PolyHandle polygon = OpenPoly();
@@ -1613,10 +1603,10 @@ void wxDC::DoGetTextExtent( const wxString &str, wxCoord *width, wxCoord *height
 
     OSStatus status = noErr ;
     ATSUTextLayout atsuLayout ;
-    
+
     wxMacUniCharBuffer unibuf( str ) ;
     UniCharCount chars = unibuf.GetChars() ;
-    
+
     status = ::ATSUCreateTextLayoutWithTextPtr( unibuf.GetBuffer() , 0 , chars , chars , 1 ,
         &chars , (ATSUStyle*) &m_macATSUIStyle , &atsuLayout ) ;
 
@@ -1626,30 +1616,30 @@ void wxDC::DoGetTextExtent( const wxString &str, wxCoord *width, wxCoord *height
     wxASSERT_MSG( status == noErr , wxT("couldn't setup transient font matching") );
 
     ATSLineLayoutOptions layoutOptions = kATSLineNoLayoutOptions ;
-    
+
     if (m_font.GetNoAntiAliasing())
     {
         layoutOptions |= kATSLineNoAntiAliasing ;
     }
-    
+
     ATSUAttributeTag atsuTags[] =
     {
         kATSULineLayoutOptionsTag ,
     } ;
-    
+
     ByteCount atsuSizes[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] =
     {
         sizeof( ATSLineLayoutOptions ) ,
     } ;
-    
+
     ATSUAttributeValuePtr    atsuValues[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] =
     {
         &layoutOptions ,
     } ;
-    
+
     status = ::ATSUSetLayoutControls(atsuLayout , sizeof(atsuTags)/sizeof(ATSUAttributeTag) ,
             atsuTags, atsuSizes, atsuValues ) ;
-            
+
     ATSUTextMeasurement textBefore, textAfter ;
     ATSUTextMeasurement textAscent, textDescent ;
 
@@ -1691,10 +1681,10 @@ bool wxDC::DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) con
 
     OSStatus status = noErr ;
     ATSUTextLayout atsuLayout ;
-    
+
     wxMacUniCharBuffer unibuf( text ) ;
     UniCharCount chars = unibuf.GetChars() ;
-    
+
     status = ::ATSUCreateTextLayoutWithTextPtr( unibuf.GetBuffer() , 0 , chars , chars , 1 ,
         &chars , (ATSUStyle*) &m_macATSUIStyle , &atsuLayout ) ;
 
@@ -1704,30 +1694,30 @@ bool wxDC::DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) con
     wxASSERT_MSG( status == noErr , wxT("couldn't setup transient font matching") );
 
     ATSLineLayoutOptions layoutOptions = kATSLineNoLayoutOptions ;
-    
+
     if (m_font.GetNoAntiAliasing())
     {
         layoutOptions |= kATSLineNoAntiAliasing ;
     }
-    
+
     ATSUAttributeTag atsuTags[] =
     {
         kATSULineLayoutOptionsTag ,
     } ;
-    
+
     ByteCount atsuSizes[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] =
     {
         sizeof( ATSLineLayoutOptions ) ,
     } ;
-    
+
     ATSUAttributeValuePtr    atsuValues[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] =
     {
         &layoutOptions ,
     } ;
-    
+
     status = ::ATSUSetLayoutControls(atsuLayout , sizeof(atsuTags)/sizeof(ATSUAttributeTag) ,
             atsuTags, atsuSizes, atsuValues ) ;
-            
+
     for ( int pos = 0; pos < (int)chars ; pos ++ )
     {
         unsigned long actualNumberOfBounds = 0;