X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2c01d33555e3125057f4575ca7d0d2aba93f421f..b377eda09d9eca8810cee1c252879bee3c9bd190:/include/wx/mac/carbon/private.h diff --git a/include/wx/mac/carbon/private.h b/include/wx/mac/carbon/private.h index a78ba80150..88f5113564 100644 --- a/include/wx/mac/carbon/private.h +++ b/include/wx/mac/carbon/private.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: private.h +// Name: wx/mac/carbon/private.h // Purpose: Private declarations: as this header is only included by // wxWidgets itself, it may contain identifiers which don't start // with "wx". @@ -67,12 +67,12 @@ inline int FixedToInt( Fixed inFixed ) #include "wx/window.h" #include "wx/toplevel.h" -class wxMacPortStateHelper +class wxMacPortStateHelper { DECLARE_NO_COPY_CLASS(wxMacPortStateHelper) - + public: - wxMacPortStateHelper( GrafPtr newport) ; + wxMacPortStateHelper( GrafPtr newport) ; wxMacPortStateHelper() ; ~wxMacPortStateHelper() ; @@ -95,9 +95,9 @@ private: class WXDLLEXPORT wxMacPortSaver { DECLARE_NO_COPY_CLASS(wxMacPortSaver) - + public: - wxMacPortSaver( GrafPtr port ) + wxMacPortSaver( GrafPtr port ) { ::GetPort( &m_port ) ; ::SetPort( port ) ; @@ -113,7 +113,7 @@ private : class WXDLLEXPORT wxMacPortSetter { DECLARE_NO_COPY_CLASS(wxMacPortSetter) - + public: wxMacPortSetter( const wxDC* dc ) ; ~wxMacPortSetter() ; @@ -125,11 +125,11 @@ private: /* Clips to the visible region of a control within the current port */ - + class WXDLLEXPORT wxMacWindowClipper : public wxMacPortSaver { DECLARE_NO_COPY_CLASS(wxMacWindowClipper) - + public: wxMacWindowClipper( const wxWindow* win ) ; ~wxMacWindowClipper() ; @@ -142,7 +142,7 @@ private: class WXDLLEXPORT wxMacWindowStateSaver : public wxMacWindowClipper { DECLARE_NO_COPY_CLASS(wxMacWindowStateSaver) - + public: wxMacWindowStateSaver( const wxWindow* win ) ; ~wxMacWindowStateSaver() ; @@ -152,17 +152,17 @@ private: } ; #if wxMAC_USE_CORE_GRAPHICS -class WXDLLEXPORT wxMacCGContextStateSaver +class WXDLLEXPORT wxMacCGContextStateSaver { DECLARE_NO_COPY_CLASS(wxMacCGContextStateSaver) - + public: - wxMacCGContextStateSaver( CGContextRef cg ) + wxMacCGContextStateSaver( CGContextRef cg ) { m_cg = cg ; CGContextSaveGState( cg ) ; } - ~wxMacCGContextStateSaver() + ~wxMacCGContextStateSaver() { CGContextRestoreGState( m_cg ) ; } @@ -175,7 +175,7 @@ private: class wxMacDrawingHelper { DECLARE_NO_COPY_CLASS(wxMacDrawingHelper) - + public: wxMacDrawingHelper( wxWindowMac * theWindow , bool clientArea = false ) ; ~wxMacDrawingHelper() ; @@ -235,34 +235,34 @@ template<> inline EventParamType wxMacGetEventParamType() { return class wxMacCarbonEvent { - + public : wxMacCarbonEvent() { m_eventRef = 0 ; m_release = false ; } - - wxMacCarbonEvent( EventRef event , bool release = false ) + + wxMacCarbonEvent( EventRef event , bool release = false ) { m_eventRef = event ; m_release = release ; } - - wxMacCarbonEvent(UInt32 inClassID,UInt32 inKind,EventTime inWhen = 0 /*now*/,EventAttributes inAttributes=kEventAttributeNone) + + wxMacCarbonEvent(UInt32 inClassID,UInt32 inKind,EventTime inWhen = 0 /*now*/,EventAttributes inAttributes=kEventAttributeNone) { m_eventRef = NULL ; verify_noerr( MacCreateEvent( NULL , inClassID, inKind,inWhen,inAttributes,&m_eventRef) ) ; m_release = true ; } - + ~wxMacCarbonEvent() { if ( m_release ) ReleaseEvent( m_eventRef ) ; } - - OSStatus Create(UInt32 inClassID,UInt32 inKind,EventTime inWhen = 0 /*now*/,EventAttributes inAttributes=kEventAttributeNone) + + OSStatus Create(UInt32 inClassID,UInt32 inKind,EventTime inWhen = 0 /*now*/,EventAttributes inAttributes=kEventAttributeNone) { verify( (m_eventRef == NULL) || m_release ) ; if ( m_eventRef && m_release ) @@ -270,16 +270,15 @@ public : ReleaseEvent( m_eventRef ) ; m_release = false ; m_eventRef = NULL ; - } OSStatus err = MacCreateEvent( NULL , inClassID, inKind,inWhen,inAttributes,&m_eventRef) ; if ( err == noErr ) m_release = true ; return err ; } - + OSStatus GetParameter( EventParamName inName, EventParamType inDesiredType, UInt32 inBufferSize, void * outData) ; - + template OSStatus GetParameter( EventParamName inName, EventParamType type , T *data ) { return GetParameter( inName, type , sizeof( T ) , data ) ; @@ -288,7 +287,7 @@ public : { return GetParameter( inName, wxMacGetEventParamType() , data ) ; } - + template T GetParameter( EventParamName inName ) { T value ; @@ -301,7 +300,7 @@ public : verify_noerr( GetParameter( inName, inDesiredType , &value ) ) ; return value ; } - + OSStatus SetParameter( EventParamName inName, EventParamType inType, UInt32 inSize, const void * inData) ; template OSStatus SetParameter( EventParamName inName, EventParamType inDesiredType , const T *data ) { @@ -339,13 +338,13 @@ public : { return ::SetEventTime( m_eventRef , GetCurrentEventTime() ) ; } - OSStatus SetTime( EventTime when ) + OSStatus SetTime( EventTime when ) { return ::SetEventTime( m_eventRef , when ) ; } operator EventRef () { return m_eventRef; } - - bool IsValid() { return m_eventRef != 0 ; } + + bool IsValid() { return m_eventRef != 0 ; } protected : EventRef m_eventRef ; bool m_release ; @@ -375,6 +374,55 @@ private : typedef wxMacUPP wxMacNMUPP ; +template 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 ) ; @@ -401,7 +449,7 @@ void wxMacReleaseBitmapButton( ControlButtonContentInfo*info ) ; struct wxOpaqueWindowRef { wxOpaqueWindowRef( WindowRef ref ) { m_data = ref ; } - operator WindowRef() { return m_data ; } + operator WindowRef() { return m_data ; } private : WindowRef m_data ; } ; @@ -424,25 +472,25 @@ ControlActionUPP GetwxMacLiveScrollbarActionProc() ; class wxMacControl { public : - wxMacControl( wxWindow* peer , bool isRootControl = false ) ; + wxMacControl( wxWindow* peer , bool isRootControl = false ) ; wxMacControl( wxWindow* peer , ControlRef control ) ; wxMacControl( wxWindow* peer , WXWidget control ) ; virtual ~wxMacControl() ; - + void Init() ; - + virtual void Dispose() ; bool Ok() const { return GetControlRef() != NULL ; } - - virtual ControlRef * GetControlRefAddr() { return &m_controlRef; } - virtual ControlRef GetControlRef() const { return m_controlRef ; } - virtual void SetReference( SInt32 data ) ; + virtual ControlRef * GetControlRefAddr() { return &m_controlRef; } + virtual ControlRef GetControlRef() const { return m_controlRef ; } + + virtual void SetReference( SInt32 data ) ; /* void operator= (ControlRef c) { m_controlRef = c ; } - operator ControlRef () { return m_controlRef; } - operator ControlRef * () { return &m_controlRef; } + operator ControlRef () { return m_controlRef; } + operator ControlRef * () { return &m_controlRef; } */ // accessing data and values @@ -457,19 +505,19 @@ public : virtual SInt32 GetValue() const ; virtual SInt32 GetMaximum() const ; virtual SInt32 GetMinimum() const ; - + virtual void SetValue( SInt32 v ) ; virtual void SetMinimum( SInt32 v ) ; virtual void SetMaximum( SInt32 v ) ; virtual void SetValueAndRange( SInt32 value , SInt32 minimum , SInt32 maximum ) ; virtual void SetRange( SInt32 minimum , SInt32 maximum ) ; - + virtual OSStatus SetFocus( ControlFocusPart focusPart ) ; virtual bool HasFocus() const ; virtual bool NeedsFocusRect() const ; virtual void SetNeedsFocusRect( bool needs ) ; - + // templated helpers Size GetDataSize( ControlPartCode inPartCode , ResType inTag ) const @@ -497,7 +545,7 @@ public : verify_noerr( GetData( inPartCode , inTag , &value ) ) ; return value ; } - + // Flash the control for the specified amount of time virtual void Flash( ControlPartCode part , UInt32 ticks = 8 ) ; @@ -511,13 +559,13 @@ public : void SetActionProc( ControlActionUPP actionProc ) ; void SetViewSize( SInt32 viewSize ) ; SInt32 GetViewSize() const ; - + virtual bool IsVisible() const ; virtual void SetVisibility( bool visible , bool redraw ) ; virtual bool IsEnabled() const ; virtual bool IsActive() const ; virtual void Enable( bool enable ) ; - + // invalidates this control and all children virtual void InvalidateWithChildren() ; virtual void SetDrawingEnabled( bool enable ) ; @@ -529,7 +577,7 @@ public : // where is in native window relative coordinates virtual void SetNeedsDisplay( Rect* where = NULL ) ; - // if rect = NULL, entire view + // if rect = NULL, entire view virtual void ScrollRect( wxRect *rect , int dx , int dy ) ; // in native parent window relative coordinates @@ -540,15 +588,15 @@ public : virtual void GetRectInWindowCoords( Rect *r ) ; virtual void GetBestRect( Rect *r ) ; - virtual void SetTitle( const wxString &title ) ; + virtual void SetLabel( const wxString &title ) ; // converts from Toplevel-Content relative to local static void Convert( wxPoint *pt , wxMacControl *convert , wxMacControl *to ) ; - + virtual void GetFeatures( UInt32 *features ) ; virtual OSStatus GetRegion( ControlPartCode partCode , RgnHandle region ) ; virtual OSStatus SetZOrder( bool above , wxMacControl* other ) ; // to be moved into a databrowser subclass - + virtual OSStatus SetSelectionFlags( DataBrowserSelectionFlags ) ; virtual OSStatus AddListViewColumn( DataBrowserListViewColumnDesc *columnDesc, DataBrowserTableViewColumnIndex position ) ; @@ -558,14 +606,14 @@ public : virtual OSStatus SetListViewHeaderBtnHeight(UInt16 height) ; virtual OSStatus SetCallbacks(const DataBrowserCallbacks * callbacks) ; virtual OSStatus UpdateItems( DataBrowserItemID container, UInt32 numItems, - const DataBrowserItemID* items, + const DataBrowserItemID* items, DataBrowserPropertyID preSortProperty, DataBrowserPropertyID propertyID ) ; virtual OSStatus AddItems( DataBrowserItemID container, UInt32 numItems, - const DataBrowserItemID* items, + const DataBrowserItemID* items, DataBrowserPropertyID preSortProperty ) ; virtual OSStatus RemoveItems( DataBrowserItemID container, UInt32 numItems, - const DataBrowserItemID* items, + const DataBrowserItemID* items, DataBrowserPropertyID preSortProperty ) ; virtual OSStatus RevealItem( DataBrowserItemID item, DataBrowserPropertyID propertyID, @@ -575,16 +623,16 @@ public : virtual OSStatus SetSelectedItems(UInt32 numItems, const DataBrowserItemID * items, DataBrowserSetOption operation ) ; - + // 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 ; + long m_windowStyle ; wxWindow* m_peer ; bool m_needsFocusRect ; bool m_isCompositing ; @@ -593,23 +641,23 @@ protected : #if wxMAC_USE_CORE_GRAPHICS -class WXDLLEXPORT wxMacCGPath : public wxGraphicPath +class WXDLLEXPORT wxMacCGPath : public wxGraphicPath { DECLARE_NO_COPY_CLASS(wxMacCGPath) public : wxMacCGPath() ; ~wxMacCGPath() ; - + // 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 ) ; - + // closes the current subpath void CloseSubpath() ; - + CGPathRef GetPath() const ; private : CGMutablePathRef m_path ; @@ -618,7 +666,7 @@ private : class WXDLLEXPORT wxMacCGContext : public wxGraphicContext { DECLARE_NO_COPY_CLASS(wxMacCGContext) - + public: wxMacCGContext( CGrafPtr port ) ; wxMacCGContext( CGContextRef cgcontext ) ; @@ -629,9 +677,9 @@ public: virtual void StrokePath( const wxGraphicPath *p ) ; virtual void DrawPath( const wxGraphicPath *p , int fillStyle = wxWINDING_RULE ) ; virtual void FillPath( const wxGraphicPath *p , const wxColor &fillColor , int fillStyle = wxWINDING_RULE ) ; - + virtual wxGraphicPath* CreatePath() ; - virtual void SetPen( const wxPen &pen ) ; + virtual void SetPen( const wxPen &pen ) ; virtual void SetBrush( const wxBrush &brush ) ; CGContextRef GetNativeContext() ; void SetNativeContext( CGContextRef cg ) ; @@ -656,7 +704,7 @@ void wxMacMemoryBufferReleaseProc(void *info, const void *data, size_t size) ; class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData { DECLARE_NO_COPY_CLASS(wxBitmapRefData) - + friend class WXDLLEXPORT wxIcon; friend class WXDLLEXPORT wxCursor; public: @@ -667,7 +715,7 @@ public: void Free() ; bool Ok() const { return m_ok ; } void SetOk( bool isOk) { m_ok = isOk ; } - + void SetWidth( int width ) { m_width = width ; } void SetHeight( int height ) { m_height = height ; } void SetDepth( int depth ) { m_depth = depth ; } @@ -675,7 +723,7 @@ public: int GetWidth() const { return m_width ; } int GetHeight() const { return m_height ; } int GetDepth() const { return m_depth ; } - + void *GetRawAccess() const ; void *BeginRawAccess() ; void EndRawAccess() ; @@ -687,23 +735,23 @@ public: #if wxUSE_PALETTE wxPalette m_bitmapPalette; #endif // wxUSE_PALETTE - + wxMask * m_bitmapMask; // Optional mask #ifdef __WXMAC_OSX__ CGImageRef CGImageCreate() const ; #endif - + // returns true if the bitmap has a size that // can be natively transferred into a true icon // if no is returned GetIconRef will still produce // an icon but it will be generated via a PICT and - // rescaled to 16 x 16 + // rescaled to 16 x 16 bool HasNativeSize() ; - + // caller should increase ref count if needed longer // than the bitmap exists IconRef GetIconRef() ; - + // returns a Pict from the bitmap content PicHandle GetPictHandle() ; GWorldPtr GetHBITMAP(GWorldPtr * mask = NULL ) const ;