X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/09b632b21aaeb422391ce10e63576e5ad61cdc36..09b895cb4a954494063eb17d3dc302a654fd99e5:/include/wx/mac/carbon/private.h diff --git a/include/wx/mac/carbon/private.h b/include/wx/mac/carbon/private.h index 48bd4c4dc2..d893acc5f2 100644 --- a/include/wx/mac/carbon/private.h +++ b/include/wx/mac/carbon/private.h @@ -29,88 +29,11 @@ typedef SInt32 SRefCon; #if wxUSE_GUI #include "wx/listbox.h" +#include "wx/mac/carbon/dc.h" +#include "wx/mac/carbon/dcclient.h" +#include "wx/mac/carbon/dcmemory.h" -#ifndef __LP64__ - -class wxMacPortStateHelper -{ - DECLARE_NO_COPY_CLASS(wxMacPortStateHelper) - -public: - wxMacPortStateHelper( GrafPtr newport); - wxMacPortStateHelper(); - ~wxMacPortStateHelper(); - - void Setup( GrafPtr newport ); - void Clear(); - bool IsCleared() { return m_clip == NULL; } - GrafPtr GetCurrentPort() { return m_currentPort; } - -private: - GrafPtr m_currentPort; - GrafPtr m_oldPort; - RgnHandle m_clip; - ThemeDrawingState m_drawingState; - short m_textFont; - short m_textSize; - short m_textStyle; - short m_textMode; -}; - -class WXDLLEXPORT wxMacPortSaver -{ - DECLARE_NO_COPY_CLASS(wxMacPortSaver) - -public: - wxMacPortSaver( GrafPtr port ); - ~wxMacPortSaver(); -private : - GrafPtr m_port; -}; - -class WXDLLEXPORT wxMacPortSetter -{ - DECLARE_NO_COPY_CLASS(wxMacPortSetter) - -public: - wxMacPortSetter( const wxDC* dc ); - ~wxMacPortSetter(); -private: - wxMacPortStateHelper m_ph; - const wxDC* m_dc; -}; - -/* - 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(); -private: - GrafPtr m_newPort; - RgnHandle m_formerClip; - RgnHandle m_newClip; -}; - -class WXDLLEXPORT wxMacWindowStateSaver : public wxMacWindowClipper -{ - DECLARE_NO_COPY_CLASS(wxMacWindowStateSaver) - -public: - wxMacWindowStateSaver( const wxWindow* win ); - ~wxMacWindowStateSaver(); -private: - GrafPtr m_newPort; - ThemeDrawingState m_themeDrawingState; -}; -#endif - -class WXDLLEXPORT wxMacCGContextStateSaver +class WXDLLIMPEXP_CORE wxMacCGContextStateSaver { DECLARE_NO_COPY_CLASS(wxMacCGContextStateSaver) @@ -128,31 +51,11 @@ private: CGContextRef m_cg; }; -/* -class wxMacDrawingHelper -{ - DECLARE_NO_COPY_CLASS(wxMacDrawingHelper) - -public: - wxMacDrawingHelper( wxWindowMac * theWindow , bool clientArea = false ); - ~wxMacDrawingHelper(); - 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 ); } - const Point& GetOrigin() { return m_origin; } -private: - Point m_origin; - GrafPtr m_formerPort; - GrafPtr m_currentPort; - PenState m_savedPenState; - bool m_ok; -}; -*/ - // app.h + +#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 bool wxMacConvertEventToRecord( EventRef event , EventRecord *rec); +#endif #endif // wxUSE_GUI @@ -197,7 +100,7 @@ template<> inline EventParamType wxMacGetEventParamType() { return template<> EventParamType wxMacGetEventParamType() { return typeGWorldPtr; } */ -class wxMacCarbonEvent +class WXDLLIMPEXP_CORE wxMacCarbonEvent { public : @@ -338,65 +241,11 @@ 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() - { - Release(); - } - - 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; } - - wxMacCFRefHolder& operator=(refType r) - { - Set( r ); - return *this; - } -private : - refType m_ref; - bool m_release; - - DECLARE_NO_COPY_CLASS( wxMacCFRefHolder ) -}; - #if wxUSE_GUI -class wxMacToolTipTimer ; +class WXDLLIMPEXP_FWD_CORE wxMacToolTipTimer ; -class wxMacToolTip +class WXDLLIMPEXP_CORE wxMacToolTip { public : wxMacToolTip() ; @@ -420,25 +269,23 @@ private : PicHandle m_backpict ; bool m_shown ; long m_mark ; -#if wxUSE_TIMER +#if wxUSE_TIMER wxMacToolTipTimer* m_timer ; #endif - wxMacCFStringHolder m_helpTextRef ; + wxCFStringRef m_helpTextRef ; } ; -/* -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 ); -void wxMacReleaseBitmapButton( ControlButtonContentInfo*info ); -CGImageRef wxMacCreateCGImageFromBitmap( const wxBitmap& bitmap ); - -#define MAC_WXCOLORREF(a) (*((RGBColor*)&(a))) +// Quartz + +WXDLLIMPEXP_CORE void wxMacCreateBitmapButton( ControlButtonContentInfo*info , const wxBitmap& bitmap , int forceType = 0 ); +WXDLLIMPEXP_CORE void wxMacReleaseBitmapButton( ControlButtonContentInfo*info ); +WXDLLIMPEXP_CORE CGImageRef wxMacCreateCGImageFromBitmap( const wxBitmap& bitmap ); + +WXDLLIMPEXP_CORE CGDataProviderRef wxMacCGDataProviderCreateWithCFData( CFDataRef data ); +WXDLLIMPEXP_CORE CGDataConsumerRef wxMacCGDataConsumerCreateWithCFData( CFMutableDataRef data ); +WXDLLIMPEXP_CORE CGDataProviderRef wxMacCGDataProviderCreateWithMemoryBuffer( const wxMemoryBuffer& buf ); + + #define MAC_WXHBITMAP(a) (GWorldPtr(a)) #define MAC_WXHMETAFILE(a) (PicHandle(a)) #define MAC_WXHICON(a) (IconRef(a)) @@ -457,13 +304,13 @@ 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 ); +WXDLLIMPEXP_CORE void wxMacRectToNative( const wxRect *wx , Rect *n ); +WXDLLIMPEXP_CORE void wxMacNativeToRect( const Rect *n , wxRect* wx ); +WXDLLIMPEXP_CORE void wxMacPointToNative( const wxPoint* wx , Point *n ); +WXDLLIMPEXP_CORE void wxMacNativeToPoint( const Point *n , wxPoint* wx ); WXDLLIMPEXP_CORE wxWindow * wxFindControlFromMacControl(ControlRef inControl ); -WXDLLIMPEXP_CORE wxTopLevelWindowMac* wxFindWinFromMacWindow( WindowRef inWindow ); +WXDLLIMPEXP_CORE wxNonOwnedWindow* wxFindWinFromMacWindow( WindowRef inWindow ); WXDLLIMPEXP_CORE wxMenu* wxFindMenuFromMacMenu(MenuRef inMenuRef); WXDLLIMPEXP_CORE int wxMacCommandToId( UInt32 macCommandId ); @@ -476,7 +323,15 @@ WXDLLIMPEXP_CORE Rect wxMacGetBoundsForControl( wxWindow* window , const wxPoint ControlActionUPP GetwxMacLiveScrollbarActionProc(); -class wxMacControl : public wxObject +// additional optional event defines + +#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5 +enum { + kEventControlFocusPartChanged = 164 +}; +#endif + +class WXDLLIMPEXP_CORE wxMacControl : public wxObject { public : wxMacControl( wxWindow* peer , bool isRootControl = false ); @@ -564,9 +419,12 @@ public : T value; OSStatus err = GetData( inPartCode , inTag , &value ); - wxASSERT_MSG( err == noErr, - wxString::Format(wxT("GetData Failed for Part [%i] and Tag [%i]"), - inPartCode, (int)inTag) ); + if ( err != noErr ) + { + wxFAIL_MSG( wxString::Format(wxT("GetData Failed for Part [%i] and Tag [%i]"), + inPartCode, (int)inTag) ); + } + return value; } template OSStatus GetData( ResType inTag , T *data ) const @@ -587,7 +445,7 @@ public : virtual void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle ); - virtual void SetBackground( const wxBrush &brush ); + virtual void SetBackgroundColour( const wxColour& col ); virtual ControlPartCode HandleKey( SInt16 keyCode, SInt16 charCode, EventModifiers modifiers ); void SetActionProc( ControlActionUPP actionProc ); void SetViewSize( SInt32 viewSize ); @@ -655,7 +513,7 @@ protected : // basing on DataBrowserItemIDs // -class wxMacDataBrowserControl : public wxMacControl +class WXDLLIMPEXP_CORE wxMacDataBrowserControl : public wxMacControl { public : wxMacDataBrowserControl( wxWindow* peer, const wxPoint& pos, const wxSize& size, long style); @@ -808,7 +666,7 @@ const DataBrowserPropertyID kMinColumnId = 1050; // base API for high-level databrowser operations -class wxMacListControl +class WXDLLIMPEXP_CORE wxMacListControl { public: virtual void MacDelete( unsigned int n ) = 0; @@ -838,7 +696,7 @@ enum DataItemType { DataItem_Text }; -class wxMacDataItem +class WXDLLIMPEXP_CORE wxMacDataItem { public : wxMacDataItem(); @@ -872,7 +730,7 @@ public : protected : wxString m_label; - wxMacCFStringHolder m_cfLabel; + wxCFStringRef m_cfLabel; void * m_data; SInt32 m_order; DataBrowserPropertyID m_colId; @@ -890,7 +748,7 @@ const wxMacDataItemPtr wxMacDataBrowserRootContainer = NULL; WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxMacDataItemPtr, wxArrayMacDataItemPtr, class WXDLLIMPEXP_CORE); -class wxMacDataItemBrowserControl : public wxMacDataBrowserControl, public wxMacListControl +class WXDLLIMPEXP_CORE wxMacDataItemBrowserControl : public wxMacDataBrowserControl, public wxMacListControl { public : wxMacDataItemBrowserControl( wxWindow* peer , const wxPoint& pos, const wxSize& size, long style); @@ -1023,7 +881,7 @@ private : DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacDataItemBrowserControl) }; -class wxMacDataItemBrowserSelectionSuppressor +class WXDLLIMPEXP_CORE wxMacDataItemBrowserSelectionSuppressor { public : wxMacDataItemBrowserSelectionSuppressor(wxMacDataItemBrowserControl *browser); @@ -1041,7 +899,7 @@ private : // exposed for reuse in wxCheckListBox -class wxMacListBoxItem : public wxMacDataItem +class WXDLLIMPEXP_CORE wxMacListBoxItem : public wxMacDataItem { public : wxMacListBoxItem(); @@ -1053,7 +911,7 @@ public : DataBrowserItemDataRef itemData ) const; }; -class wxMacDataBrowserListControl : public wxMacDataItemBrowserControl +class WXDLLIMPEXP_CORE wxMacDataBrowserListControl : public wxMacDataItemBrowserControl { public: wxMacDataBrowserListControl( wxWindow *peer, const wxPoint& pos, const wxSize& size, long style ); @@ -1073,131 +931,20 @@ public: // graphics implementation // ============================================================================ -// 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; -} ; - -CGColorSpaceRef wxMacGetGenericRGBColorSpace(void); -void wxMacMemoryBufferReleaseProc(void *info, const void *data, size_t size); - -class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData -{ - 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 IsOk(); } - bool IsOk() 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; } - - 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(); - - bool HasAlpha() const { return m_hasAlpha; } - void UseAlpha( bool useAlpha ); - -public: -#if wxUSE_PALETTE - wxPalette m_bitmapPalette; -#endif // wxUSE_PALETTE - - wxMask * m_bitmapMask; // Optional mask - CGImageRef CGImageCreate() const; - - // 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 - 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(); - - CGContextRef GetBitmapContext() const; - - int GetBytesPerRow() const { return m_bytesPerRow; } -private : - bool Create(int width , int height , int depth); - void Init(); - - int m_width; - int m_height; - int m_bytesPerRow; - int m_depth; - bool m_hasAlpha; - wxMemoryBuffer m_memBuf; - int m_rawAccessCount; - bool m_ok; - mutable CGImageRef m_cgImageRef; - - IconRef m_iconRef; - PicHandle m_pictHandle; - - CGContextRef m_hBitmap; -}; +// draw the image 'upside down' corrected as HIViewDrawCGImage does -class WXDLLEXPORT wxIconRefData : public wxGDIRefData -{ -public: - wxIconRefData(); - wxIconRefData( WXHICON ); - virtual ~wxIconRefData() { Free(); } - - void Init(); - virtual void Free(); +OSStatus WXDLLIMPEXP_CORE wxMacDrawCGImage( + CGContextRef inContext, + const HIRect * inBounds, + CGImageRef inImage) ; - void SetWidth( int width ) { m_width = width; } - void SetHeight( int height ) { m_height = height; } +CGColorRef WXDLLIMPEXP_CORE wxMacCreateCGColorFromHITheme( ThemeBrush brush ) ; - int GetWidth() const { return m_width; } - int GetHeight() const { return m_height; } - - WXHICON GetHICON() const { return (WXHICON) m_iconRef; } -private : - IconRef m_iconRef; - int m_width; - int m_height; -}; +CGColorSpaceRef WXDLLIMPEXP_CORE wxMacGetGenericRGBColorSpace(void); // toplevel.cpp -class wxMacDeferredWindowDeleter : public wxObject +class WXDLLIMPEXP_CORE wxMacDeferredWindowDeleter : public wxObject { public : wxMacDeferredWindowDeleter( WindowRef windowRef ); @@ -1207,23 +954,6 @@ protected : WindowRef m_macWindow ; } ; -#ifndef __LP64__ - -#ifdef WORDS_BIGENDIAN - inline Rect* wxMacGetPictureBounds( PicHandle pict , Rect* rect ) - { - *rect = (**pict).picFrame; - return rect; - } -#else - inline Rect* wxMacGetPictureBounds( PicHandle pict , Rect* rect ) - { - return QDGetPictureBounds( pict , rect ); - } -#endif - -#endif - #endif // wxUSE_GUI #define wxMAC_DEFINE_PROC_GETTER( UPP , x ) \ @@ -1266,7 +996,7 @@ void wxMacGlobalToLocal( WindowRef window , Point*pt ); bool wxMacInitCocoa(); -class wxMacAutoreleasePool +class WXDLLIMPEXP_CORE wxMacAutoreleasePool { public : wxMacAutoreleasePool();