X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/aa0cc8a14caff3ae75475d94d3104c78cc9add8e..8ea92b4d7792987769774ac381685dae15c70454:/include/wx/mac/carbon/private.h diff --git a/include/wx/mac/carbon/private.h b/include/wx/mac/carbon/private.h index 8a02973a4d..191fbd8cb8 100644 --- a/include/wx/mac/carbon/private.h +++ b/include/wx/mac/carbon/private.h @@ -38,6 +38,10 @@ #define MAC_OS_X_VERSION_10_3 1030 #endif +#ifdef __WXMAC_CARBON__ +#include "wx/mac/corefoundation/cfstring.h" +#endif + #if wxUSE_GUI #include "wx/window.h" @@ -155,58 +159,13 @@ bool wxMacConvertEventToRecord( EventRef event , EventRecord *rec) ; // filefn.h WXDLLEXPORT wxString wxMacFSSpec2MacFilename( const FSSpec *spec ) ; -WXDLLEXPORT void wxMacFilename2FSSpec( const char *path , FSSpec *spec ) ; -WXDLLEXPORT void wxMacFilename2FSSpec( const wxChar *path , FSSpec *spec ) ; -# ifndef __DARWIN__ -// Mac file names are POSIX (Unix style) under Darwin, so these are not needed -WXDLLEXPORT wxString wxMacFSSpec2UnixFilename( const FSSpec *spec ) ; -WXDLLEXPORT void wxUnixFilename2FSSpec( const char *path , FSSpec *spec ) ; -WXDLLEXPORT wxString wxMac2UnixFilename( const char *s) ; -WXDLLEXPORT wxString wxUnix2MacFilename( const char *s); -# endif +WXDLLEXPORT void wxMacFilename2FSSpec( const wxString &path , FSSpec *spec ) ; // utils.h 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 ; } @@ -226,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 ) @@ -277,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 ) { @@ -311,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 : @@ -461,6 +511,7 @@ public : virtual OSStatus RevealItem( DataBrowserItemID item, DataBrowserPropertyID propertyID, DataBrowserRevealOptions options ) ; + virtual OSStatus GetSelectionAnchor( DataBrowserItemID * first, DataBrowserItemID * last ) ; virtual bool IsItemSelected( DataBrowserItemID item ) ; virtual OSStatus SetSelectedItems(UInt32 numItems, const DataBrowserItemID * items, @@ -487,88 +538,15 @@ void wxMacCleanupConverters() ; void wxMacStringToPascal( const wxString&from , StringPtr to ) ; wxString wxMacMakeStringFromPascal( ConstStringPtr from ) ; -void wxMacConvertNewlines13To10( char * data ) ; -void wxMacConvertNewlines10To13( char * data ) ; -void wxMacConvertNewlines13To10( wxString *data ) ; -void wxMacConvertNewlines10To13( wxString *data ) ; - -#if wxUSE_UNICODE -void wxMacConvertNewlines13To10( wxChar * data ) ; -void wxMacConvertNewlines10To13( wxChar * data ) ; -#endif - -#if TARGET_CARBON - -class wxMacCFStringHolder -{ -public: - wxMacCFStringHolder() - { - m_cfs = NULL ; - m_release = false ; - } - - wxMacCFStringHolder(const wxString &str , wxFontEncoding encoding ) - { - m_cfs = NULL ; - m_release = false ; - Assign( str , encoding ) ; - } - - wxMacCFStringHolder(CFStringRef ref , bool release = true ) - { - m_cfs = ref ; - m_release = release ; - } - - ~wxMacCFStringHolder() - { - Release() ; - } - - CFStringRef Detach() - { - CFStringRef retval = m_cfs ; - m_release = false ; - m_cfs = NULL ; - return retval ; - } - - void Release() - { - if ( m_release && m_cfs) - CFRelease( m_cfs ) ; - m_cfs = NULL ; - } - - void Assign( const wxString &str , wxFontEncoding encoding ) ; - - operator CFStringRef () { return m_cfs; } - wxString AsString( wxFontEncoding encoding = wxFONTENCODING_DEFAULT ) ; - -private: - - CFStringRef m_cfs; - bool m_release ; -} ; - -#endif - -// utils.cpp - -wxUint32 wxMacGetSystemEncFromFontEnc(wxFontEncoding encoding) ; -wxFontEncoding wxMacGetFontEncFromSystemEnc(wxUint32 encoding) ; -void wxMacWakeUp() ; - // toplevel.cpp ControlRef wxMacFindControlUnderMouse( Point location , WindowRef window , ControlPartCode *outPart ) ; -#ifdef TARGET_API_MAC_OSX -#define kDefaultPathStyle kCFURLPOSIXPathStyle -#else -#define kDefaultPathStyle kCFURLHFSPathStyle -#endif +// filefn.cpp + +wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathComponent = NULL ) ; +OSStatus wxMacPathToFSRef( const wxString&path , FSRef *fsRef ) ; +wxString wxMacHFSUniStrToString( ConstHFSUniStr255Param uniname ) ; #endif // _WX_PRIVATE_H_