X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/725566cab44f2590306d7a145614b93dc44ae89e..dc484d491b15355285a89da275c58c2ef247d1f4:/include/wx/mac/carbon/private.h diff --git a/include/wx/mac/carbon/private.h b/include/wx/mac/carbon/private.h index 5af6bc0663..1990703794 100644 --- a/include/wx/mac/carbon/private.h +++ b/include/wx/mac/carbon/private.h @@ -15,7 +15,6 @@ #define _WX_PRIVATE_H_ #include "wx/defs.h" -#include "wx/app.h" #ifdef __DARWIN__ # include @@ -33,7 +32,7 @@ #endif #if UNIVERSAL_INTERFACES_VERSION < 0x0342 - #error "please update to Apple's lastest universal headers from http://developer.apple.com/sdk/" + #error "please update to Apple's latest universal headers from http://developer.apple.com/sdk/" #endif #ifndef MAC_OS_X_VERSION_10_3 @@ -44,6 +43,10 @@ #define MAC_OS_X_VERSION_10_4 1040 #endif +#ifndef MAC_OS_X_VERSION_10_5 + #define MAC_OS_X_VERSION_10_5 1050 +#endif + #ifdef __WXMAC_CARBON__ #include "wx/mac/corefoundation/cfstring.h" #endif @@ -61,11 +64,16 @@ inline int FixedToInt( Fixed inFixed ) } #endif +#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/dc.h" -#include "wx/window.h" -#include "wx/toplevel.h" +#include "wx/listbox.h" + +#ifndef __LP64__ class wxMacPortStateHelper { @@ -143,6 +151,7 @@ private: GrafPtr m_newPort; ThemeDrawingState m_themeDrawingState; }; +#endif #if wxMAC_USE_CORE_GRAPHICS class WXDLLEXPORT wxMacCGContextStateSaver @@ -172,7 +181,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 ); } @@ -428,8 +438,6 @@ private : #if wxUSE_GUI -#include "wx/listbox.h" - /* GWorldPtr wxMacCreateGWorld( int width , int height , int depth ); void wxMacDestroyGWorld( GWorldPtr gw ); @@ -491,7 +499,8 @@ public : 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); @@ -499,7 +508,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; } @@ -630,7 +639,6 @@ public : virtual OSStatus GetRegion( ControlPartCode partCode , RgnHandle region ); virtual OSStatus SetZOrder( bool above , wxMacControl* other ); - bool IsCompositing() { return m_isCompositing; } bool IsRootControl() { return m_isRootControl; } wxWindow* GetPeer() const @@ -647,7 +655,6 @@ protected : long m_windowStyle; wxWindow* m_peer; bool m_needsFocusRect; - bool m_isCompositing; bool m_isRootControl; }; @@ -668,7 +675,7 @@ public : OSStatus GetItemCount( DataBrowserItemID container, Boolean recurse, DataBrowserItemState state, - UInt32 *numItems) const; + ItemCount *numItems) const; OSStatus GetItems( DataBrowserItemID container, Boolean recurse, @@ -679,6 +686,8 @@ public : OSStatus AddColumn( DataBrowserListViewColumnDesc *columnDesc, DataBrowserTableViewColumnIndex position ); + OSStatus RemoveColumn( DataBrowserTableViewColumnIndex position ); + OSStatus AutoSizeColumns(); OSStatus SetHasScrollBars( bool horiz, bool vert ); @@ -728,8 +737,10 @@ public : OSStatus GetColumnCount( UInt32* numColumns) const; - OSStatus GetColumnPosition( DataBrowserPropertyID column, UInt32 *position) const; - OSStatus SetColumnPosition( DataBrowserPropertyID column, UInt32 position); + OSStatus GetColumnIDFromIndex( DataBrowserTableViewColumnIndex position, DataBrowserTableViewColumnID* id ); + + 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 ); @@ -774,14 +785,14 @@ 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; }; // ============================================================================ @@ -794,9 +805,48 @@ protected : // forward decl class wxMacDataItemBrowserControl; +class wxMacListBoxItem; + +const DataBrowserPropertyID kTextColumnId = 1024; +const DataBrowserPropertyID kNumericOrderColumnId = 1025; + +// 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 DataBrowserPropertyID kMinColumnId = 1050; + +// base API for high-level databrowser operations + +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; + // returns index of newly created line + virtual int MacAppend( const wxString& item ) = 0; + virtual void MacSetString( unsigned int n, const wxString& item ) = 0; + virtual void MacClear() = 0; + virtual void MacDeselectAll() = 0; + virtual void MacSetSelection( unsigned int n, bool select, bool multi ) = 0; + virtual int MacGetSelection() const = 0; + virtual int MacGetSelections( wxArrayInt& aSelections ) const = 0; + virtual bool MacIsSelected( unsigned int n ) const = 0; + virtual void MacScrollTo( unsigned int n ) = 0; + virtual wxString MacGetString( unsigned int n) const = 0; + virtual unsigned int MacGetCount() const = 0; + + virtual void MacSetClientData( unsigned int n, void * data) = 0; + virtual void * MacGetClientData( unsigned int) const = 0; + + virtual ~wxMacListControl() { } +}; // base class for databrowser items +enum DataItemType { + DataItem_Text +}; + class wxMacDataItem { public : @@ -816,6 +866,32 @@ public : virtual void Notification(wxMacDataItemBrowserControl *owner , DataBrowserItemNotification message, DataBrowserItemDataRef itemData ) const; + + void SetLabel( const wxString& str); + const wxString& GetLabel() const; + + void SetOrder( SInt32 order ); + SInt32 GetOrder() const; + + void SetData( void* data); + void* GetData() const; + + void SetColumn( short col ); + short GetColumn(); + +protected : + wxString m_label; + wxMacCFStringHolder m_cfLabel; + void * m_data; + SInt32 m_order; + DataBrowserPropertyID m_colId; + +}; + +enum ListSortOrder { + SortOrder_None, + SortOrder_Text_Ascending, + SortOrder_Text_Descending }; typedef wxMacDataItem* wxMacDataItemPtr; @@ -823,15 +899,21 @@ const wxMacDataItemPtr wxMacDataBrowserRootContainer = NULL; WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxMacDataItemPtr, wxArrayMacDataItemPtr, class WXDLLIMPEXP_CORE); -class wxMacDataItemBrowserControl : public wxMacDataBrowserControl +class wxMacDataItemBrowserControl : public wxMacDataBrowserControl, public wxMacListControl { public : wxMacDataItemBrowserControl( wxWindow* peer , const wxPoint& pos, const wxSize& size, long style); + // create a list item (can be a subclass of wxMacListBoxItem) + + virtual wxMacDataItem* CreateItem(); + 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; wxMacDataItem * GetItemFromLine(unsigned int n) const; @@ -840,6 +922,12 @@ public : void UpdateItems(const wxMacDataItem *container, wxArrayMacDataItemPtr &items, DataBrowserPropertyID property) const; + void InsertColumn(int colId, DataBrowserPropertyType colType, + const wxString& title, SInt16 just = teFlushDefault, int defaultWidth = -1); + + int GetColumnWidth(int colId); + void SetColumnWidth(int colId, int width); + void AddItem(wxMacDataItem *container, wxMacDataItem *item); void AddItems(wxMacDataItem *container, wxArrayMacDataItemPtr &items ); @@ -878,7 +966,50 @@ 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 int MacAppend( const wxString& item ); + virtual void MacClear(); + + // selecting + + virtual void MacDeselectAll(); + virtual void MacSetSelection( unsigned int n, bool select, bool multi = false ); + virtual int MacGetSelection() const; + virtual int MacGetSelections( wxArrayInt& aSelections ) const; + virtual bool MacIsSelected( unsigned int n ) const; + + // display + + virtual void MacScrollTo( unsigned int n ); + + // accessing content + + virtual void MacSetString( unsigned int n, const wxString& item ); + virtual void MacSetClientData( unsigned int n, void * data); + virtual wxString MacGetString( unsigned int n) const; + virtual void * MacGetClientData( unsigned int) const; + virtual unsigned int MacGetCount() const; + + // client data + + virtual wxClientDataType GetClientDataType() const; + virtual void SetClientDataType(wxClientDataType clientDataItemsType); + //virtual ListSortOrder GetSortOrder() const; + //virtual void SetSortOrder(const ListSortOrder sort); + + + protected: + + ListSortOrder m_sortOrder; + wxClientDataType m_clientDataItemsType; + // ID aware base methods, should be 'final' ie not changed in subclasses virtual Boolean CompareItems(DataBrowserItemID itemOneID, @@ -895,6 +1026,7 @@ protected: DataBrowserItemNotification message, DataBrowserItemDataRef itemData); + private : bool m_suppressSelection; @@ -915,7 +1047,7 @@ private : // ============================================================================ // platform listbox implementation // ============================================================================ -// + // exposed for reuse in wxCheckListBox class wxMacListBoxItem : public wxMacDataItem @@ -925,91 +1057,30 @@ public : virtual ~wxMacListBoxItem(); - void SetLabel( const wxString& str); - const wxString& GetLabel() const; - - virtual bool IsLessThan(wxMacDataItemBrowserControl *owner , - const wxMacDataItem* rhs, - DataBrowserPropertyID sortProperty) const; - - virtual OSStatus GetSetData( wxMacDataItemBrowserControl *owner , - DataBrowserPropertyID property, - DataBrowserItemDataRef itemData, - bool changeValue ); - virtual void Notification(wxMacDataItemBrowserControl *owner , DataBrowserItemNotification message, DataBrowserItemDataRef itemData ) const; - - void SetOrder( SInt32 order ); - SInt32 GetOrder() const; - - void SetData( void* data); - void* GetData() const; - -private : - wxString m_label; - wxMacCFStringHolder m_cfLabel; - void * m_data; - SInt32 m_order; }; -class wxMacDataBrowserListControl : public wxMacDataItemBrowserControl , public wxMacListControl +class wxMacDataBrowserListControl : public wxMacDataItemBrowserControl { public: - wxMacDataBrowserListControl( wxListBox *peer, const wxPoint& pos, const wxSize& size, long style ); - ~wxMacDataBrowserListControl(); - - // create a list item (can be a subclass of wxMacListBoxItem) - - virtual wxMacListBoxItem* CreateItem(); - - // add and remove - - void MacDelete( unsigned int n ); - void MacInsert( unsigned int n, const wxString& item ); - void MacInsert( unsigned int n, const wxArrayString& items ); - int MacAppend( const wxString& item ); - void MacClear(); + wxMacDataBrowserListControl( wxWindow *peer, const wxPoint& pos, const wxSize& size, long style ); + virtual ~wxMacDataBrowserListControl(); - // selecting - - void MacDeselectAll(); - void MacSetSelection( unsigned int n, bool select ); - int MacGetSelection() const; - int MacGetSelections( wxArrayInt& aSelections ) const; - bool MacIsSelected( unsigned int n ) const; - - // display - - void MacScrollTo( unsigned int n ); - - // accessing content - - void MacSetString( unsigned int n, const wxString& item ); - void MacSetClientData( unsigned int n, void * data); - wxString MacGetString( unsigned int n) const; - void * MacGetClientData( unsigned int) const; - unsigned int MacGetCount() const; - - // client data - - wxClientDataType GetClientDataType() const; - void SetClientDataType(wxClientDataType clientDataItemsType); + virtual wxMacDataItem* CreateItem(); // pointing back - wxListBox * GetPeer() const; -private : - bool m_stringSorted; - wxClientDataType m_clientDataItemsType; + wxWindow * GetPeer() const; + }; // ============================================================================ // graphics implementation // ============================================================================ -#if wxMAC_USE_CORE_GRAPHICS +#if wxMAC_USE_CORE_GRAPHICS && !wxUSE_GRAPHICS_CONTEXT class WXDLLEXPORT wxMacCGPath : public wxGraphicPath { @@ -1025,6 +1096,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(); @@ -1041,7 +1116,7 @@ public: wxMacCGContext( CGrafPtr port ); wxMacCGContext( CGContextRef cgcontext ); wxMacCGContext(); - ~wxMacCGContext(); + virtual ~wxMacCGContext(); virtual void Clip( const wxRegion ®ion ); virtual void StrokePath( const wxGraphicPath *p ); @@ -1054,12 +1129,32 @@ 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 @@ -1073,17 +1168,18 @@ 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: wxBitmapRefData(int width , int height , int depth); wxBitmapRefData(); - ~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; } @@ -1177,6 +1273,8 @@ private : ControlRef wxMacFindControlUnderMouse( wxTopLevelWindowMac* toplevelWindow, const Point& location , WindowRef window , ControlPartCode *outPart ); +#ifndef __LP64__ + #ifdef WORDS_BIGENDIAN inline Rect* wxMacGetPictureBounds( PicHandle pict , Rect* rect ) { @@ -1190,6 +1288,8 @@ ControlRef wxMacFindControlUnderMouse( wxTopLevelWindowMac* toplevelWindow, cons } #endif +#endif + #endif // wxUSE_GUI #define wxMAC_DEFINE_PROC_GETTER( UPP , x ) \ @@ -1217,5 +1317,14 @@ wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathCompon OSStatus wxMacPathToFSRef( const wxString&path , FSRef *fsRef ); wxString wxMacHFSUniStrToString( ConstHFSUniStr255Param uniname ); +#if wxUSE_GUI + +// deprecating QD + +void wxMacLocalToGlobal( WindowRef window , Point*pt ); +void wxMacGlobalToLocal( WindowRef window , Point*pt ); + +#endif + #endif // _WX_PRIVATE_H_