X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e2bc1d69812f8fc3f6ae24508a9d007ad5d00ede..0d6fba37931bde89e7161ff173e2f818e4b15ac0:/include/wx/mac/carbon/private.h diff --git a/include/wx/mac/carbon/private.h b/include/wx/mac/carbon/private.h index 372ae044f0..19d4470e57 100644 --- a/include/wx/mac/carbon/private.h +++ b/include/wx/mac/carbon/private.h @@ -16,54 +16,22 @@ #include "wx/defs.h" -#ifdef __DARWIN__ -# include -#else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -#endif - -#if UNIVERSAL_INTERFACES_VERSION < 0x0342 - #error "please update to Apple's latest universal headers from http://developer.apple.com/sdk/" -#endif - -#ifndef MAC_OS_X_VERSION_10_3 - #define MAC_OS_X_VERSION_10_3 1030 -#endif - -#ifndef MAC_OS_X_VERSION_10_4 - #define MAC_OS_X_VERSION_10_4 1040 -#endif +#include -#ifdef __WXMAC_CARBON__ #include "wx/mac/corefoundation/cfstring.h" -#endif - -#ifndef FixedToInt -// as macro in FixMath.h for 10.3 -inline Fixed IntToFixed( int inInt ) -{ - return (((SInt32) inInt) << 16); -} +#include "wx/mac/corefoundation/cfdataref.h" -inline int FixedToInt( Fixed inFixed ) -{ - return (((SInt32) inFixed) >> 16); -} +#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5 +typedef UInt32 URefCon; +typedef SInt32 SRefCon; #endif #if wxUSE_GUI #include "wx/listbox.h" +#ifndef __LP64__ + class wxMacPortStateHelper { DECLARE_NO_COPY_CLASS(wxMacPortStateHelper) @@ -140,6 +108,7 @@ private: GrafPtr m_newPort; ThemeDrawingState m_themeDrawingState; }; +#endif #if wxMAC_USE_CORE_GRAPHICS class WXDLLEXPORT wxMacCGContextStateSaver @@ -169,7 +138,8 @@ class wxMacDrawingHelper public: wxMacDrawingHelper( wxWindowMac * theWindow , bool clientArea = false ); ~wxMacDrawingHelper(); - bool Ok() { return m_ok; } + bool Ok() const { return IsOk(); } + bool IsOk() { return m_ok; } void LocalToWindow( Rect *rect) { OffsetRect( rect , m_origin.h , m_origin.v ); } void LocalToWindow( Point *pt ) { AddPt( m_origin , pt ); } void LocalToWindow( RgnHandle rgn ) { OffsetRgn( rgn , m_origin.h , m_origin.v ); } @@ -189,16 +159,16 @@ bool wxMacConvertEventToRecord( EventRef event , EventRecord *rec); #endif // wxUSE_GUI // filefn.h -WXDLLEXPORT wxString wxMacFSSpec2MacFilename( const FSSpec *spec ); -WXDLLEXPORT void wxMacFilename2FSSpec( const wxString &path , FSSpec *spec ); +WXDLLIMPEXP_BASE wxString wxMacFSSpec2MacFilename( const FSSpec *spec ); +WXDLLIMPEXP_BASE void wxMacFilename2FSSpec( const wxString &path , FSSpec *spec ); // utils.h -WXDLLEXPORT wxString wxMacFindFolderNoSeparator(short vRefNum, - OSType folderType, - Boolean createFolder); -WXDLLEXPORT wxString wxMacFindFolder(short vRefNum, - OSType folderType, - Boolean createFolder); +WXDLLIMPEXP_BASE wxString wxMacFindFolderNoSeparator(short vRefNum, + OSType folderType, + Boolean createFolder); +WXDLLIMPEXP_BASE wxString wxMacFindFolder(short vRefNum, + OSType folderType, + Boolean createFolder); template EventParamType wxMacGetEventParamType() { wxFAIL_MSG( wxT("Unknown Param Type") ); return 0; } template<> inline EventParamType wxMacGetEventParamType() { return typeQDRgnHandle; } @@ -213,16 +183,12 @@ template<> inline EventParamType wxMacGetEventParamType() { return typeS template<> inline EventParamType wxMacGetEventParamType() { return typeSInt32; } template<> inline EventParamType wxMacGetEventParamType() { return typeUInt32; } template<> inline EventParamType wxMacGetEventParamType() { return typeRGBColor; } -#if TARGET_API_MAC_OSX template<> inline EventParamType wxMacGetEventParamType() { return typeHICommand; } template<> inline EventParamType wxMacGetEventParamType() { return typeHIPoint; } template<> inline EventParamType wxMacGetEventParamType() { return typeHISize; } template<> inline EventParamType wxMacGetEventParamType() { return typeHIRect; } template<> inline EventParamType wxMacGetEventParamType() { return typeVoidPtr; } -#endif -#if TARGET_API_MAC_OSX && ( MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2 ) template<> inline EventParamType wxMacGetEventParamType() { return typeCFDictionaryRef; } -#endif template<> inline EventParamType wxMacGetEventParamType() { return typeCollection; } template<> inline EventParamType wxMacGetEventParamType() { return typeCGContextRef; } /* @@ -357,7 +323,7 @@ protected : template class wxMacUPP { public : - wxMacUPP( procType proc ) + wxMacUPP( procType WXUNUSED(proc) ) { m_upp = NULL; m_upp = (*newUPP)( NULL ); @@ -416,6 +382,11 @@ public : operator refType () const { return m_ref; } + wxMacCFRefHolder& operator=(refType r) + { + Set( r ); + return *this; + } private : refType m_ref; bool m_release; @@ -425,6 +396,38 @@ private : #if wxUSE_GUI +class wxMacToolTipTimer ; + +class wxMacToolTip +{ +public : + wxMacToolTip() ; + ~wxMacToolTip() ; + + void Setup( WindowRef window , const wxString& text , const wxPoint& localPosition ) ; + void Draw() ; + void Clear() ; + + long GetMark() + { return m_mark ; } + + bool IsShown() + { return m_shown ; } + +private : + wxString m_label ; + wxPoint m_position ; + Rect m_rect ; + WindowRef m_window ; + PicHandle m_backpict ; + bool m_shown ; + long m_mark ; +#if wxUSE_TIMER + wxMacToolTipTimer* m_timer ; +#endif + wxMacCFStringHolder m_helpTextRef ; +} ; + /* GWorldPtr wxMacCreateGWorld( int width , int height , int depth ); void wxMacDestroyGWorld( GWorldPtr gw ); @@ -435,6 +438,7 @@ CTabHandle wxMacCreateColorTable( int numColors ); */ void wxMacCreateBitmapButton( ControlButtonContentInfo*info , const wxBitmap& bitmap , int forceType = 0 ); void wxMacReleaseBitmapButton( ControlButtonContentInfo*info ); +CGImageRef wxMacCreateCGImageFromBitmap( const wxBitmap& bitmap ); #define MAC_WXCOLORREF(a) (*((RGBColor*)&(a))) #define MAC_WXHBITMAP(a) (GWorldPtr(a)) @@ -460,33 +464,35 @@ 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); +WXDLLIMPEXP_CORE wxWindow * wxFindControlFromMacControl(ControlRef inControl ); +WXDLLIMPEXP_CORE wxTopLevelWindowMac* wxFindWinFromMacWindow( WindowRef inWindow ); +WXDLLIMPEXP_CORE wxMenu* wxFindMenuFromMacMenu(MenuRef inMenuRef); -int wxMacCommandToId( UInt32 macCommandId ); -UInt32 wxIdToMacCommand( int wxId ); -wxMenu* wxFindMenuFromMacCommand( const HICommand &macCommandId , wxMenuItem* &item ); +WXDLLIMPEXP_CORE int wxMacCommandToId( UInt32 macCommandId ); +WXDLLIMPEXP_CORE UInt32 wxIdToMacCommand( int wxId ); +WXDLLIMPEXP_CORE wxMenu* wxFindMenuFromMacCommand( const HICommand &macCommandId , wxMenuItem* &item ); 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 ); +WXDLLIMPEXP_CORE pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , EventRef event , void *data ); +WXDLLIMPEXP_CORE Rect wxMacGetBoundsForControl( wxWindow* window , const wxPoint& pos , const wxSize &size , bool adjustForOrigin = true ); ControlActionUPP GetwxMacLiveScrollbarActionProc(); -class wxMacControl +class wxMacControl : public wxObject { public : wxMacControl( wxWindow* peer , bool isRootControl = false ); wxMacControl( wxWindow* peer , ControlRef control ); wxMacControl( wxWindow* peer , WXWidget control ); + wxMacControl() ; virtual ~wxMacControl(); void Init(); virtual void Dispose(); - bool Ok() const { return GetControlRef() != NULL; } + bool Ok() const { return IsOk(); } + bool IsOk() const { return GetControlRef() != NULL; } void SetReferenceInNativeControl(); static wxMacControl* GetReferenceFromNativeControl(ControlRef control); @@ -494,7 +500,7 @@ public : virtual ControlRef * GetControlRefAddr() { return &m_controlRef; } virtual ControlRef GetControlRef() const { return m_controlRef; } - virtual void SetReference( SInt32 data ); + virtual void SetReference( URefCon data ); /* void operator= (ControlRef c) { m_controlRef = c; } operator ControlRef () { return m_controlRef; } @@ -598,9 +604,8 @@ public : // invalidates this control and all children virtual void InvalidateWithChildren(); virtual void SetDrawingEnabled( bool enable ); -#ifdef __WXMAC_OSX__ virtual bool GetNeedsDisplay() const; -#endif + // where is in native window relative coordinates virtual void SetNeedsDisplay( RgnHandle where ); // where is in native window relative coordinates @@ -642,6 +647,7 @@ protected : wxWindow* m_peer; bool m_needsFocusRect; bool m_isRootControl; + DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacControl) }; // ============================================================================ @@ -655,13 +661,14 @@ class wxMacDataBrowserControl : public wxMacControl { public : wxMacDataBrowserControl( wxWindow* peer, const wxPoint& pos, const wxSize& size, long style); + wxMacDataBrowserControl() {} OSStatus SetCallbacks( const DataBrowserCallbacks *callbacks ); OSStatus GetItemCount( DataBrowserItemID container, Boolean recurse, DataBrowserItemState state, - UInt32 *numItems) const; + ItemCount *numItems) const; OSStatus GetItems( DataBrowserItemID container, Boolean recurse, @@ -671,7 +678,7 @@ public : OSStatus AddColumn( DataBrowserListViewColumnDesc *columnDesc, DataBrowserTableViewColumnIndex position ); - + OSStatus RemoveColumn( DataBrowserTableViewColumnIndex position ); OSStatus AutoSizeColumns(); @@ -725,8 +732,8 @@ public : OSStatus GetColumnIDFromIndex( DataBrowserTableViewColumnIndex position, DataBrowserTableViewColumnID* id ); - OSStatus GetColumnPosition( DataBrowserPropertyID column, UInt32 *position) const; - OSStatus SetColumnPosition( DataBrowserPropertyID column, UInt32 position); + OSStatus GetColumnPosition( DataBrowserPropertyID column, DataBrowserTableViewColumnIndex *position) const; + OSStatus SetColumnPosition( DataBrowserPropertyID column, DataBrowserTableViewColumnIndex position); OSStatus GetScrollPosition( UInt32 *top , UInt32 *left ) const; OSStatus SetScrollPosition( UInt32 top , UInt32 left ); @@ -771,14 +778,15 @@ protected : Boolean changeValue ) = 0; static pascal Boolean DataBrowserCompareProc( - ControlRef browser, - DataBrowserItemID itemOneID, - DataBrowserItemID itemTwoID, - DataBrowserPropertyID sortProperty); - - virtual Boolean CompareItems(DataBrowserItemID itemOneID, - DataBrowserItemID itemTwoID, - DataBrowserPropertyID sortProperty) = 0; + ControlRef browser, + DataBrowserItemID itemOneID, + DataBrowserItemID itemTwoID, + DataBrowserPropertyID sortProperty); + + virtual Boolean CompareItems(DataBrowserItemID itemOneID, + DataBrowserItemID itemTwoID, + DataBrowserPropertyID sortProperty) = 0; + DECLARE_ABSTRACT_CLASS(wxMacDataBrowserControl) }; // ============================================================================ @@ -793,12 +801,12 @@ protected : class wxMacDataItemBrowserControl; class wxMacListBoxItem; -const short kTextColumnId = 1024; -const short kNumericOrderColumnId = 1025; +const DataBrowserPropertyID kTextColumnId = 1024; +const DataBrowserPropertyID kNumericOrderColumnId = 1025; -// for multi-column controls, we will use this + the column ID to identify the +// for multi-column controls, we will use this + the column ID to identify the // column. We don't use kTextColumnId there, and ideally the two should merge. -const short kMinColumnId = 1050; +const DataBrowserPropertyID kMinColumnId = 1050; // base API for high-level databrowser operations @@ -806,8 +814,7 @@ class wxMacListControl { public: virtual void MacDelete( unsigned int n ) = 0; - virtual void MacInsert( unsigned int n, const wxString& item, int column = -1 ) = 0; - virtual void MacInsert( unsigned int n, const wxArrayString& items, int column = -1 ) = 0; + virtual void MacInsert( unsigned int n, const wxArrayStringsAdapter& items, int column = -1 ) = 0; // returns index of newly created line virtual int MacAppend( const wxString& item ) = 0; virtual void MacSetString( unsigned int n, const wxString& item ) = 0; @@ -825,7 +832,7 @@ public: virtual void * MacGetClientData( unsigned int) const = 0; virtual ~wxMacListControl() { } -}; +}; // base class for databrowser items @@ -852,26 +859,26 @@ public : virtual void Notification(wxMacDataItemBrowserControl *owner , DataBrowserItemNotification message, DataBrowserItemDataRef itemData ) const; - + void SetLabel( const wxString& str); - const wxString& GetLabel() const; + const wxString& GetLabel() const; void SetOrder( SInt32 order ); SInt32 GetOrder() const; void SetData( void* data); void* GetData() const; - + void SetColumn( short col ); - short GetColumn(); - + short GetColumn(); + protected : wxString m_label; wxMacCFStringHolder m_cfLabel; void * m_data; SInt32 m_order; - short m_colId; - + DataBrowserPropertyID m_colId; + }; enum ListSortOrder { @@ -889,7 +896,7 @@ class wxMacDataItemBrowserControl : public wxMacDataBrowserControl, public wxMac { public : wxMacDataItemBrowserControl( wxWindow* peer , const wxPoint& pos, const wxSize& size, long style); - + wxMacDataItemBrowserControl() {} // create a list item (can be a subclass of wxMacListBoxItem) virtual wxMacDataItem* CreateItem(); @@ -897,7 +904,7 @@ public : unsigned int GetItemCount(const wxMacDataItem* container, bool recurse , DataBrowserItemState state) const; void GetItems(const wxMacDataItem* container, bool recurse , DataBrowserItemState state, wxArrayMacDataItemPtr &items ) const; - + unsigned int GetSelectedItemCount( const wxMacDataItem* container, bool recurse ) const; unsigned int GetLineFromItem(const wxMacDataItem *item) const; @@ -909,8 +916,8 @@ public : DataBrowserPropertyID property) const; void InsertColumn(int colId, DataBrowserPropertyType colType, - const wxString& title, SInt16 just = teFlushDefault, int minWidth = -1, int maxWidth = -1); - + const wxString& title, SInt16 just = teFlushDefault, int defaultWidth = -1); + int GetColumnWidth(int colId); void SetColumnWidth(int colId, int width); @@ -951,14 +958,13 @@ public : bool IsSelectionSuppressed() const { return m_suppressSelection; } bool SuppressSelection( bool suppress ); - - + + // wxMacListControl Methods // add and remove virtual void MacDelete( unsigned int n ); - virtual void MacInsert( unsigned int n, const wxString& item, int column = -1 ); - virtual void MacInsert( unsigned int n, const wxArrayString& items, int column = -1 ); + virtual void MacInsert( unsigned int n, const wxArrayStringsAdapter& items, int column = -1 ); virtual int MacAppend( const wxString& item ); virtual void MacClear(); @@ -986,8 +992,10 @@ public : virtual wxClientDataType GetClientDataType() const; virtual void SetClientDataType(wxClientDataType clientDataItemsType); + //virtual ListSortOrder GetSortOrder() const; + //virtual void SetSortOrder(const ListSortOrder sort); + - protected: @@ -1014,6 +1022,7 @@ protected: private : bool m_suppressSelection; + DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacDataItemBrowserControl) }; class wxMacDataItemBrowserSelectionSuppressor @@ -1050,19 +1059,43 @@ class wxMacDataBrowserListControl : public wxMacDataItemBrowserControl { public: wxMacDataBrowserListControl( wxWindow *peer, const wxPoint& pos, const wxSize& size, long style ); + wxMacDataBrowserListControl() {} virtual ~wxMacDataBrowserListControl(); + virtual wxMacDataItem* CreateItem(); + // pointing back wxWindow * GetPeer() const; + DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacDataBrowserListControl) }; // ============================================================================ // graphics implementation // ============================================================================ -#if wxMAC_USE_CORE_GRAPHICS +// make sure we all use one class for all conversions from wx to native colour + +class wxMacCoreGraphicsColour +{ +public: + wxMacCoreGraphicsColour(); + wxMacCoreGraphicsColour(const wxBrush &brush); + ~wxMacCoreGraphicsColour(); + + void Apply( CGContextRef cgContext ); +protected: + void Init(); + wxMacCFRefHolder m_color; + wxMacCFRefHolder m_colorSpace; + + bool m_isPattern; + wxMacCFRefHolder m_pattern; + CGFloat* m_patternColorComponents; +} ; + +#if wxMAC_USE_CORE_GRAPHICS && !wxUSE_GRAPHICS_CONTEXT class WXDLLEXPORT wxMacCGPath : public wxGraphicPath { @@ -1078,6 +1111,10 @@ public : void AddRectangle( wxCoord x, wxCoord y, wxCoord w, wxCoord h ); void AddCircle( wxCoord x, wxCoord y , wxCoord r ); + // draws a an arc to two tangents connecting (current) to (x1,y1) and (x1,y1) to (x2,y2) + virtual void AddArcToPoint( wxCoord x1, wxCoord y1 , wxCoord x2, wxCoord y2, wxCoord r ) ; + virtual void AddArc( wxCoord x, wxCoord y, wxCoord r, double startAngle, double endAngle, bool clockwise ) ; + // closes the current subpath void CloseSubpath(); @@ -1107,36 +1144,53 @@ public: CGContextRef GetNativeContext(); void SetNativeContext( CGContextRef cg ); CGPathDrawingMode GetDrawingMode() const { return m_mode; } + + virtual void Translate( wxCoord dx , wxCoord dy ); + virtual void Scale( wxCoord xScale , wxCoord yScale ); + virtual void DrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, wxCoord w, wxCoord h ); + virtual void DrawIcon( const wxIcon &icon, wxCoord x, wxCoord y, wxCoord w, wxCoord h ); + virtual void PushState(); + virtual void PopState(); + + virtual void DrawText( const wxString &str, wxCoord x, wxCoord y, double angle ) ; + + virtual void GetTextExtent( const wxString &str, wxCoord *width, wxCoord *height, + wxCoord *descent, wxCoord *externalLeading ) const ; + + virtual void GetPartialTextExtents(const wxString& text, wxArrayInt& widths) const ; + + virtual void SetFont( const wxFont &font ) ; + + virtual void SetTextColor( const wxColour &col ) ; private: CGContextRef m_cgContext; CGrafPtr m_qdPort; CGPathDrawingMode m_mode; + ATSUStyle m_macATSUIStyle ; wxPen m_pen; wxBrush m_brush; + wxColor m_textForegroundColor ; }; #endif // wxMAC_USE_CORE_GRAPHICS -#ifdef __WXMAC_OSX__ - CGColorSpaceRef wxMacGetGenericRGBColorSpace(void); void wxMacMemoryBufferReleaseProc(void *info, const void *data, size_t size); -#endif - class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData { - DECLARE_NO_COPY_CLASS(wxBitmapRefData) - - friend class WXDLLEXPORT wxIcon; - friend class WXDLLEXPORT wxCursor; + friend class WXDLLIMPEXP_FWD_CORE wxIcon; + friend class WXDLLIMPEXP_FWD_CORE wxCursor; public: wxBitmapRefData(int width , int height , int depth); wxBitmapRefData(); + wxBitmapRefData(const wxBitmapRefData &tocopy); + virtual ~wxBitmapRefData(); void Free(); - bool Ok() const { return m_ok; } + bool Ok() const { return IsOk(); } + bool IsOk() const { return m_ok; } void SetOk( bool isOk) { m_ok = isOk; } void SetWidth( int width ) { m_width = width; } @@ -1160,9 +1214,7 @@ public: #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 @@ -1177,9 +1229,13 @@ public: // returns a Pict from the bitmap content PicHandle GetPictHandle(); +#if wxMAC_USE_CORE_GRAPHICS + CGContextRef GetBitmapContext() const; +#else GWorldPtr GetHBITMAP(GWorldPtr * mask = NULL ) const; void UpdateAlphaMask() const; - +#endif + int GetBytesPerRow() const { return m_bytesPerRow; } private : bool Create(int width , int height , int depth); void Init(); @@ -1192,15 +1248,18 @@ private : wxMemoryBuffer m_memBuf; int m_rawAccessCount; bool m_ok; -#ifdef __WXMAC_OSX__ mutable CGImageRef m_cgImageRef; -#endif + IconRef m_iconRef; PicHandle m_pictHandle; +#if wxMAC_USE_CORE_GRAPHICS + CGContextRef m_hBitmap; +#else GWorldPtr m_hBitmap; GWorldPtr m_hMaskBitmap; wxMemoryBuffer m_maskMemBuf; int m_maskBytesPerRow; +#endif }; class WXDLLEXPORT wxIconRefData : public wxGDIRefData @@ -1228,7 +1287,17 @@ private : // toplevel.cpp -ControlRef wxMacFindControlUnderMouse( wxTopLevelWindowMac* toplevelWindow, const Point& location , WindowRef window , ControlPartCode *outPart ); +class wxMacDeferredWindowDeleter : public wxObject +{ +public : + wxMacDeferredWindowDeleter( WindowRef windowRef ); + virtual ~wxMacDeferredWindowDeleter(); + +protected : + WindowRef m_macWindow ; +} ; + +#ifndef __LP64__ #ifdef WORDS_BIGENDIAN inline Rect* wxMacGetPictureBounds( PicHandle pict , Rect* rect ) @@ -1243,6 +1312,8 @@ ControlRef wxMacFindControlUnderMouse( wxTopLevelWindowMac* toplevelWindow, cons } #endif +#endif + #endif // wxUSE_GUI #define wxMAC_DEFINE_PROC_GETTER( UPP , x ) \ @@ -1261,14 +1332,96 @@ UPP Get##x() \ void wxMacSetupConverters(); void wxMacCleanupConverters(); -void wxMacStringToPascal( const wxString&from , StringPtr to ); -wxString wxMacMakeStringFromPascal( ConstStringPtr from ); +WXDLLIMPEXP_BASE void wxMacStringToPascal( const wxString&from , StringPtr to ); +WXDLLIMPEXP_BASE wxString wxMacMakeStringFromPascal( ConstStringPtr from ); // filefn.cpp -wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathComponent = NULL ); -OSStatus wxMacPathToFSRef( const wxString&path , FSRef *fsRef ); -wxString wxMacHFSUniStrToString( ConstHFSUniStr255Param uniname ); +WXDLLIMPEXP_BASE wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathComponent = NULL ); +WXDLLIMPEXP_BASE OSStatus wxMacPathToFSRef( const wxString&path , FSRef *fsRef ); +WXDLLIMPEXP_BASE wxString wxMacHFSUniStrToString( ConstHFSUniStr255Param uniname ); + +#if wxUSE_GUI + +// deprecating QD + +void wxMacLocalToGlobal( WindowRef window , Point*pt ); +void wxMacGlobalToLocal( WindowRef window , Point*pt ); + +#endif + +//--------------------------------------------------------------------------- +// cocoa bridging utilities +//--------------------------------------------------------------------------- + +bool wxMacInitCocoa(); + +class wxMacAutoreleasePool +{ +public : + wxMacAutoreleasePool(); + ~wxMacAutoreleasePool(); +private : + void* m_pool; +}; + +// NSObject + +void wxMacCocoaRelease( void* obj ); +void wxMacCocoaAutorelease( void* obj ); +void wxMacCocoaRetain( void* obj ); + +#if wxMAC_USE_COCOA + +// NSCursor + +WX_NSCursor wxMacCocoaCreateStockCursor( int cursor_type ); +WX_NSCursor wxMacCocoaCreateCursorFromCGImage( CGImageRef cgImageRef, float hotSpotX, float hotSpotY ); +void wxMacCocoaSetCursor( WX_NSCursor cursor ); +void wxMacCocoaHideCursor(); +void wxMacCocoaShowCursor(); + +typedef struct tagClassicCursor +{ + wxUint16 bits[16]; + wxUint16 mask[16]; + wxInt16 hotspot[2]; +}ClassicCursor; + +#else // !wxMAC_USE_COCOA + +// non Darwin + +typedef Cursor ClassicCursor; + +#endif // wxMAC_USE_COCOA + +// ------------- +// Common to all +// ------------- + +// Cursor support + +const short kwxCursorBullseye = 0; +const short kwxCursorBlank = 1; +const short kwxCursorPencil = 2; +const short kwxCursorMagnifier = 3; +const short kwxCursorNoEntry = 4; +const short kwxCursorPaintBrush = 5; +const short kwxCursorPointRight = 6; +const short kwxCursorPointLeft = 7; +const short kwxCursorQuestionArrow = 8; +const short kwxCursorRightArrow = 9; +const short kwxCursorSizeNS = 10; +const short kwxCursorSize = 11; +const short kwxCursorSizeNESW = 12; +const short kwxCursorSizeNWSE = 13; +const short kwxCursorRoller = 14; +const short kwxCursorLast = kwxCursorRoller; + +// exposing our fallback cursor map + +extern ClassicCursor gMacCursors[]; #endif // _WX_PRIVATE_H_