X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fe3dc50545b43c324617ed2a0cdfde0f9298d05a..5b674b9d894af6a4347376cc7eca5580c6244e1f:/include/wx/mac/carbon/private.h diff --git a/include/wx/mac/carbon/private.h b/include/wx/mac/carbon/private.h index d8775399ab..191fbd8cb8 100644 --- a/include/wx/mac/carbon/private.h +++ b/include/wx/mac/carbon/private.h @@ -166,43 +166,6 @@ WXDLLEXPORT wxString wxMacFindFolder(short vRefNum, OSType folderType, Boolean createFolder); -#if wxUSE_GUI - -GWorldPtr wxMacCreateGWorld( int width , int height , int depth ) ; -void wxMacDestroyGWorld( GWorldPtr gw ) ; -PicHandle wxMacCreatePict( GWorldPtr gw , GWorldPtr mask = NULL ) ; -CIconHandle wxMacCreateCIcon(GWorldPtr image , GWorldPtr mask , short dstDepth , short iconSize ) ; -void wxMacSetColorTableEntry( CTabHandle newColors , int index , int red , int green , int blue ) ; -CTabHandle wxMacCreateColorTable( int numColors ) ; -void wxMacCreateBitmapButton( ControlButtonContentInfo*info , const wxBitmap& bitmap , int forceType = 0 ) ; - -#define MAC_WXCOLORREF(a) (*((RGBColor*)&(a))) -#define MAC_WXHBITMAP(a) (GWorldPtr(a)) -#define MAC_WXHMETAFILE(a) (PicHandle(a)) -#define MAC_WXHICON(a) (CIconHandle(a)) -#define MAC_WXHCURSOR(a) (CursHandle(a)) -#define MAC_WXHRGN(a) (RgnHandle(a)) -#define MAC_WXHWND(a) (WindowPtr(a)) -#define MAC_WXRECPTR(a) ((Rect*)a) -#define MAC_WXPOINTPTR(a) ((Point*)a) -#define MAC_WXHMENU(a) ((MenuHandle)a) - -struct wxOpaqueWindowRef -{ - wxOpaqueWindowRef( WindowRef ref ) { m_data = ref ; } - operator WindowRef() { return m_data ; } -private : - WindowRef m_data ; -} ; - -wxWindow * wxFindControlFromMacControl(ControlRef inControl ) ; -wxTopLevelWindowMac* wxFindWinFromMacWindow( WindowRef inWindow ) ; -wxMenu* wxFindMenuFromMacMenu(MenuRef inMenuRef) ; - -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 ) ; - template EventParamType wxMacGetEventParamType() { wxFAIL_MSG( wxT("Unknown Param Type") ) ; return 0 ; } template<> inline EventParamType wxMacGetEventParamType() { return typeQDRgnHandle ; } template<> inline EventParamType wxMacGetEventParamType() { return typeControlRef ; } @@ -222,34 +185,58 @@ template<> inline EventParamType wxMacGetEventParamType() { return typeVo template<> inline EventParamType wxMacGetEventParamType() { return typeCollection ; } template<> inline EventParamType wxMacGetEventParamType() { return typeCGContextRef ; } /* -These are ambiguous -template<> EventParamType wxMacGetEventParamType() { return typeGrafPtr ; } -template<> EventParamType wxMacGetEventParamType() { return typeOSStatus ; } -template<> EventParamType wxMacGetEventParamType() { return typeCFIndex ; } -template<> EventParamType wxMacGetEventParamType() { return typeGWorldPtr ; } -*/ + These are ambiguous + template<> EventParamType wxMacGetEventParamType() { return typeGrafPtr ; } + template<> EventParamType wxMacGetEventParamType() { return typeOSStatus ; } + template<> EventParamType wxMacGetEventParamType() { return typeCFIndex ; } + template<> EventParamType wxMacGetEventParamType() { return typeGWorldPtr ; } + */ class wxMacCarbonEvent { public : + wxMacCarbonEvent() + { + m_eventRef = 0 ; + m_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) { 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) + { + verify( (m_eventRef == NULL) || m_release ) ; + if ( m_eventRef && m_release ) + { + 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 ) @@ -273,7 +260,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 ) { @@ -307,12 +294,79 @@ public : { return EventTimeToTicks( GetTime() ) ; } - operator EventRef () { return m_eventRef; } + OSStatus SetTime( EventTime inWhen = 0 /*now*/ ) + { + return ::SetEventTime( m_eventRef , inWhen ? inWhen : GetCurrentEventTime() ) ; + } + operator EventRef () { return m_eventRef; } + + bool IsValid() { return m_eventRef != 0 ; } protected : EventRef m_eventRef ; bool m_release ; } ; +// +// helper class for allocating and deallocating Universal Proc Ptrs +// + +template class wxMacUPP +{ +public : + wxMacUPP( procType proc ) + { + m_upp = NULL ; + m_upp = (*newUPP)( NULL ) ; + } + ~wxMacUPP() + { + if ( m_upp ) + disposeUPP( m_upp ) ; + } + operator uppType() { return m_upp ; } +private : + uppType m_upp ; +} ; + +typedef wxMacUPP wxMacNMUPP ; + +#if wxUSE_GUI + +GWorldPtr wxMacCreateGWorld( int width , int height , int depth ) ; +void wxMacDestroyGWorld( GWorldPtr gw ) ; +PicHandle wxMacCreatePict( GWorldPtr gw , GWorldPtr mask = NULL ) ; +CIconHandle wxMacCreateCIcon(GWorldPtr image , GWorldPtr mask , short dstDepth , short iconSize ) ; +void wxMacSetColorTableEntry( CTabHandle newColors , int index , int red , int green , int blue ) ; +CTabHandle wxMacCreateColorTable( int numColors ) ; +void wxMacCreateBitmapButton( ControlButtonContentInfo*info , const wxBitmap& bitmap , int forceType = 0 ) ; + +#define MAC_WXCOLORREF(a) (*((RGBColor*)&(a))) +#define MAC_WXHBITMAP(a) (GWorldPtr(a)) +#define MAC_WXHMETAFILE(a) (PicHandle(a)) +#define MAC_WXHICON(a) (CIconHandle(a)) +#define MAC_WXHCURSOR(a) (CursHandle(a)) +#define MAC_WXHRGN(a) (RgnHandle(a)) +#define MAC_WXHWND(a) (WindowPtr(a)) +#define MAC_WXRECPTR(a) ((Rect*)a) +#define MAC_WXPOINTPTR(a) ((Point*)a) +#define MAC_WXHMENU(a) ((MenuHandle)a) + +struct wxOpaqueWindowRef +{ + wxOpaqueWindowRef( WindowRef ref ) { m_data = ref ; } + operator WindowRef() { return m_data ; } +private : + WindowRef m_data ; +} ; + +wxWindow * wxFindControlFromMacControl(ControlRef inControl ) ; +wxTopLevelWindowMac* wxFindWinFromMacWindow( WindowRef inWindow ) ; +wxMenu* wxFindMenuFromMacMenu(MenuRef inMenuRef) ; + +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 ) ; + class wxMacControl { public :