+
+wxMacPortStateHelper::wxMacPortStateHelper( GrafPtr newport)
+{
+ m_clip = NULL ;
+ Setup( newport ) ;
+}
+
+wxMacPortStateHelper::wxMacPortStateHelper()
+{
+ m_clip = NULL ;
+}
+
+void wxMacPortStateHelper::Setup( GrafPtr newport )
+{
+ GetPort( &m_oldPort ) ;
+ SetPort( newport ) ;
+ SetOrigin(0,0);
+ wxASSERT_MSG( m_clip == NULL , wxT("Cannot call setup twice") ) ;
+ m_clip = NewRgn() ;
+ GetClip( m_clip );
+ m_textFont = GetPortTextFont( (CGrafPtr) newport);
+ m_textSize = GetPortTextSize( (CGrafPtr) newport);
+ m_textStyle = GetPortTextFace( (CGrafPtr) newport);
+ m_textMode = GetPortTextMode( (CGrafPtr) newport);
+ GetThemeDrawingState( &m_drawingState ) ;
+ m_currentPort = newport ;
+}
+void wxMacPortStateHelper::Clear()
+{
+ if ( m_clip )
+ {
+ DisposeRgn( m_clip ) ;
+ DisposeThemeDrawingState( m_drawingState ) ;
+ m_clip = NULL ;
+ }
+}
+
+wxMacPortStateHelper::~wxMacPortStateHelper()
+{
+ if ( m_clip )
+ {
+ SetPort( m_currentPort ) ;
+ SetClip( m_clip ) ;
+ DisposeRgn( m_clip ) ;
+ TextFont( m_textFont );
+ TextSize( m_textSize );
+ TextFace( m_textStyle );
+ TextMode( m_textMode );
+ SetThemeDrawingState( m_drawingState , true ) ;
+ SetPort( m_oldPort ) ;
+ }
+}
+
+OSStatus UMAPutScrap( Size size , OSType type , void *data )
+{
+ OSStatus err = noErr ;
+#if !TARGET_CARBON
+ err = PutScrap( size , type , data ) ;
+#else
+ ScrapRef scrap;
+ err = GetCurrentScrap (&scrap);
+ if ( !err )
+ {
+ err = PutScrapFlavor (scrap, type , 0, size, data);
+ }
+#endif
+ return err ;
+}
+
+Rect* UMAGetControlBoundsInWindowCoords(ControlRef theControl, Rect *bounds)
+{
+ wxWindow* win = wxFindControlFromMacControl( theControl ) ;
+
+ GetControlBounds( theControl , bounds ) ;
+#if TARGET_API_MAC_OSX
+ if ( win != NULL && win->MacGetTopLevelWindow() != NULL )
+ {
+ int x , y ;
+ x = 0 ;
+ y = 0 ;
+
+ win->GetParent()->MacWindowToRootWindow( &x , & y ) ;
+ bounds->left += x ;
+ bounds->right += x ;
+ bounds->top += y ;
+ bounds->bottom += y ;
+ }
+#endif
+ return bounds ;
+}
+
+
+#endif // wxUSE_GUI
+
+#if wxUSE_BASE
+
+static bool sUMASystemInitialized = false ;
+
+bool UMASystemIsInitialized()
+{
+ return sUMASystemInitialized ;
+}
+
+void UMASetSystemIsInitialized(bool val)
+{
+ sUMASystemInitialized = val;
+}
+
+
+#endif // wxUSE_BASE