]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/mac/carbon/private.h
not needed for CG
[wxWidgets.git] / include / wx / mac / carbon / private.h
index 17426052d28b38464390b47fdaecc8739140cc77..60872bdf36efcb5839eccc58873b6d22b9510c9a 100644 (file)
 #    include <LowMem.h>
 #    include <Gestalt.h>
 #    include <FixMath.h>
+#    include <CoreServices.h>
 #endif
 
-#if UNIVERSAL_INTERFACES_VERSION < 0x0340
+#if UNIVERSAL_INTERFACES_VERSION < 0x0342
     #error "please update to Apple's lastest universal headers from http://developer.apple.com/sdk/"
 #endif
 
@@ -64,6 +65,7 @@ inline int    FixedToInt( Fixed inFixed )
 
 #include "wx/dc.h"
 #include "wx/window.h"
+#include "wx/toplevel.h"
 
 class wxMacPortStateHelper 
 {
@@ -333,9 +335,13 @@ public :
     {
         return EventTimeToTicks( GetTime() ) ;
     }
-    OSStatus SetTime( EventTime inWhen = 0 /*now*/ ) 
+    OSStatus SetCurrentTime( )
     {
-        return ::SetEventTime( m_eventRef , inWhen ? inWhen : GetCurrentEventTime() ) ;
+        return ::SetEventTime( m_eventRef , GetCurrentEventTime() ) ;
+    }
+    OSStatus SetTime( EventTime when ) 
+    {
+        return ::SetEventTime( m_eventRef , when ) ;
     }
     operator EventRef () { return m_eventRef; }
     
@@ -369,6 +375,55 @@ private :
 
 typedef wxMacUPP<NMProcPtr,NMUPP,NewNMUPP,DisposeNMUPP> wxMacNMUPP ;
 
+template <typename refType> class wxMacCFRefHolder
+{
+public :
+    wxMacCFRefHolder()
+        : m_ref(NULL) , m_release(false) 
+    {
+    }
+    
+    wxMacCFRefHolder( refType ref , bool release = true ) 
+        : m_ref(ref) , m_release(release)
+    {
+    }
+    
+    ~wxMacCFRefHolder()
+    {
+        CFRelease( m_ref ) ;
+    }
+    
+    void Release()
+    {
+        if ( m_release && m_ref != NULL )
+            CFRelease( m_ref ) ;
+        m_ref = NULL ;
+    }
+    
+    refType Detach()
+    {
+        refType val = m_ref ;
+        m_release = false ;
+        m_ref = NULL ;
+        return val ;
+    }
+    
+    void Set( refType ref , bool release = true  )
+    {
+        Release() ;
+        m_release = release ;
+        m_ref = ref ;
+    }
+    
+    operator refType () const { return m_ref; }
+    
+private :
+    refType m_ref ;
+    bool m_release ;  
+    
+    DECLARE_NO_COPY_CLASS( wxMacCFRefHolder )
+} ;
+
 #if wxUSE_GUI
 /*
 GWorldPtr         wxMacCreateGWorld( int width , int height , int depth ) ;
@@ -400,6 +455,11 @@ private :
     WindowRef m_data ;
 } ;
 
+void wxMacRectToNative( const wxRect *wx , Rect *n ) ;
+void wxMacNativeToRect( const Rect *n , wxRect* wx ) ;
+void wxMacPointToNative( const wxPoint* wx , Point *n ) ;
+void wxMacNativeToPoint( const Point *n , wxPoint* wx ) ;
+
 wxWindow *              wxFindControlFromMacControl(ControlRef inControl ) ;
 wxTopLevelWindowMac*    wxFindWinFromMacWindow( WindowRef inWindow ) ;
 wxMenu*                 wxFindMenuFromMacMenu(MenuRef inMenuRef) ;
@@ -408,29 +468,17 @@ extern wxWindow* g_MacLastWindow ;
 pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , EventRef event , void *data ) ;
 Rect wxMacGetBoundsForControl( wxWindow* window , const wxPoint& pos , const wxSize &size , bool adjustForOrigin = true ) ;
 
+ControlActionUPP GetwxMacLiveScrollbarActionProc() ;
+
 class wxMacControl
 {
 public :
-    wxMacControl(wxWindow* peer)
-    {
-        m_peer = peer ;
-        m_controlRef = NULL ;
-    }
+    wxMacControl( wxWindow* peer , bool isRootControl = false ) ;    
+    wxMacControl( wxWindow* peer , ControlRef control ) ;
+    wxMacControl( wxWindow* peer , WXWidget control ) ;
+    virtual ~wxMacControl() ;
     
-    wxMacControl( wxWindow* peer , ControlRef control ) 
-    {
-        m_peer = peer ;
-        m_controlRef = control ;
-    }
-    wxMacControl( wxWindow* peer , WXWidget control )
-    {
-        m_peer = peer ;
-        m_controlRef = (ControlRef) control ;
-    }
-
-    virtual ~wxMacControl()
-    {
-    }
+    void Init() ;
     
     virtual void Dispose() ;
 
@@ -469,6 +517,7 @@ public :
     virtual OSStatus SetFocus( ControlFocusPart focusPart ) ;
     virtual bool HasFocus() const ;
     virtual bool NeedsFocusRect() const ;
+    virtual void SetNeedsFocusRect( bool needs ) ;
     
     // templated helpers
 
@@ -500,7 +549,11 @@ public :
        
     // Flash the control for the specified amount of time
     virtual void Flash( ControlPartCode part , UInt32 ticks = 8 ) ;
+
     virtual void VisibilityChanged( bool shown ) ;
+    virtual void SuperChangedPosition() ;
+
+
     virtual void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle ) ;
     virtual void SetBackground( const wxBrush &brush ) ;
     virtual ControlPartCode HandleKey(  SInt16 keyCode,  SInt16 charCode, EventModifiers modifiers ) ;
@@ -519,12 +572,21 @@ public :
     virtual void SetDrawingEnabled( bool enable ) ;
 #ifdef __WXMAC_OSX__
     virtual bool GetNeedsDisplay() const ;
-    virtual void SetNeedsDisplay( bool needsDisplay , RgnHandle where = NULL ) ;
 #endif
-    virtual void ScrollRect( const wxRect &rect , int dx , int dy ) ;
+    // where is in native window relative coordinates
+    virtual void SetNeedsDisplay( RgnHandle where ) ;
+    // where is in native window relative coordinates
+    virtual void SetNeedsDisplay( Rect* where = NULL ) ;
+
+       // if rect = NULL, entire view
+    virtual void ScrollRect( wxRect *rect , int dx , int dy ) ;
 
+    // in native parent window relative coordinates
     virtual void GetRect( Rect *r ) ;
+
+    // in native parent window relative coordinates
     virtual void SetRect( Rect *r ) ;
+
     virtual void GetRectInWindowCoords( Rect *r ) ;
     virtual void GetBestRect( Rect *r ) ;
     virtual void SetTitle( const wxString &title ) ;
@@ -566,11 +628,16 @@ public :
     // to be moved into a tab control class
     
     virtual OSStatus SetTabEnabled( SInt16 tabNo , bool enable ) ;
+    bool    IsCompositing() { return m_isCompositing ; }
+    bool    IsRootControl() { return m_isRootControl ; }
 protected :
     ControlRef  m_controlRef ;
     wxFont      m_font ;
     long        m_windowStyle ; 
     wxWindow*   m_peer ;
+    bool        m_needsFocusRect ;
+    bool        m_isCompositing ;
+    bool        m_isRootControl ;
 } ;
 
 #if wxMAC_USE_CORE_GRAPHICS
@@ -585,6 +652,7 @@ public :
     //  Starts a new subpath at
     void MoveToPoint( wxCoord x1 , wxCoord y1 ) ;
     void AddLineToPoint( wxCoord x1 , wxCoord y1 ) ;
+    void AddQuadCurveToPoint( wxCoord cx1, wxCoord cy1, wxCoord x1, wxCoord y1 ) ;
     void AddRectangle( wxCoord x, wxCoord y, wxCoord w, wxCoord h ) ;
     void AddCircle( wxCoord x, wxCoord y , wxCoord r ) ;
     
@@ -625,10 +693,14 @@ private:
     wxBrush m_brush ;
 } ;
 
+#endif // wxMAC_USE_CORE_GRAPHICS
+
+#ifdef __WXMAC_OSX__
+
 CGColorSpaceRef wxMacGetGenericRGBColorSpace(void) ;
 void wxMacMemoryBufferReleaseProc(void *info, const void *data, size_t size) ;
 
-#endif // wxMAC_USE_CORE_GRAPHICS
+#endif
 
 class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData
 {
@@ -666,7 +738,7 @@ public:
 #endif // wxUSE_PALETTE
     
     wxMask *      m_bitmapMask; // Optional mask
-#if wxMAC_USE_CORE_GRAPHICS
+#ifdef __WXMAC_OSX__
     CGImageRef    CGImageCreate() const ;
 #endif
      
@@ -698,7 +770,7 @@ private :
     wxMemoryBuffer m_memBuf ;
     int           m_rawAccessCount ;
     bool          m_ok;
-#if wxMAC_USE_CORE_GRAPHICS
+#ifdef __WXMAC_OSX__
     mutable CGImageRef    m_cgImageRef ;
 #endif
     IconRef       m_iconRef ;
@@ -732,8 +804,21 @@ private :
     int m_height ;
 };
 
+// toplevel.cpp
+
+ControlRef wxMacFindControlUnderMouse( wxTopLevelWindowMac* toplevelWindow, const Point& location , WindowRef window , ControlPartCode *outPart ) ;
+
 #endif // wxUSE_GUI
 
+#define wxMAC_DEFINE_PROC_GETTER( UPP , x ) \
+UPP Get##x()                                \
+{                                           \
+    static UPP sHandler = NULL;             \
+    if ( sHandler == NULL )                 \
+        sHandler = New##UPP( x );           \
+    return sHandler;                        \
+}
+
 //---------------------------------------------------------------------------
 // wxMac string conversions
 //---------------------------------------------------------------------------
@@ -744,10 +829,6 @@ void wxMacCleanupConverters() ;
 void wxMacStringToPascal( const wxString&from , StringPtr to ) ;
 wxString wxMacMakeStringFromPascal( ConstStringPtr from ) ;
 
-// toplevel.cpp
-
-ControlRef wxMacFindControlUnderMouse( Point location , WindowRef window , ControlPartCode *outPart ) ;
-
 // filefn.cpp
 
 wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathComponent = NULL ) ;