]> git.saurik.com Git - wxWidgets.git/blame - include/wx/mac/carbon/private.h
Patch from Hartwig and me for implementing reorderable dataview columns. Works on...
[wxWidgets.git] / include / wx / mac / carbon / private.h
CommitLineData
8cf73271 1/////////////////////////////////////////////////////////////////////////////
fb5246be 2// Name: wx/mac/carbon/private.h
8cf73271 3// Purpose: Private declarations: as this header is only included by
77ffb593 4// wxWidgets itself, it may contain identifiers which don't start
8cf73271
SC
5// with "wx".
6// Author: Stefan Csomor
7// Modified by:
8// Created: 1998-01-01
9// RCS-ID: $Id$
10// Copyright: (c) Stefan Csomor
65571936 11// Licence: wxWindows licence
8cf73271
SC
12/////////////////////////////////////////////////////////////////////////////
13
14#ifndef _WX_PRIVATE_H_
15#define _WX_PRIVATE_H_
16
17#include "wx/defs.h"
8cf73271 18
a9479081 19#include <Carbon/Carbon.h>
fe63cfad 20
5185263f 21#include "wx/mac/corefoundation/cfstring.h"
ebf2a1ec 22#include "wx/mac/corefoundation/cfdataref.h"
3d639707 23
fc964c0d 24#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
fe63cfad
SC
25typedef UInt32 URefCon;
26typedef SInt32 SRefCon;
27#endif
28
8cf73271
SC
29#if wxUSE_GUI
30
dd0d56f5 31#include "wx/listbox.h"
888dde65
RR
32#include "wx/mac/carbon/dc.h"
33#include "wx/mac/carbon/dcclient.h"
34#include "wx/mac/carbon/dcmemory.h"
8cf73271 35
fb5246be 36class WXDLLEXPORT wxMacCGContextStateSaver
ddb08e02
SC
37{
38 DECLARE_NO_COPY_CLASS(wxMacCGContextStateSaver)
fb5246be 39
ddb08e02 40public:
fb5246be 41 wxMacCGContextStateSaver( CGContextRef cg )
ddb08e02 42 {
6cce68ea
SC
43 m_cg = cg;
44 CGContextSaveGState( cg );
ddb08e02 45 }
fb5246be 46 ~wxMacCGContextStateSaver()
ddb08e02 47 {
6cce68ea 48 CGContextRestoreGState( m_cg );
ddb08e02
SC
49 }
50private:
6cce68ea
SC
51 CGContextRef m_cg;
52};
ddb08e02 53
8cf73271 54// app.h
0beae935
SC
55
56#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
6cce68ea 57bool wxMacConvertEventToRecord( EventRef event , EventRecord *rec);
0beae935 58#endif
8cf73271
SC
59
60#endif // wxUSE_GUI
61
62// filefn.h
e17206f7
VS
63WXDLLIMPEXP_BASE wxString wxMacFSSpec2MacFilename( const FSSpec *spec );
64WXDLLIMPEXP_BASE void wxMacFilename2FSSpec( const wxString &path , FSSpec *spec );
8cf73271
SC
65
66// utils.h
e17206f7
VS
67WXDLLIMPEXP_BASE wxString wxMacFindFolderNoSeparator(short vRefNum,
68 OSType folderType,
69 Boolean createFolder);
70WXDLLIMPEXP_BASE wxString wxMacFindFolder(short vRefNum,
71 OSType folderType,
72 Boolean createFolder);
8cf73271 73
6cce68ea
SC
74template<typename T> EventParamType wxMacGetEventParamType() { wxFAIL_MSG( wxT("Unknown Param Type") ); return 0; }
75template<> inline EventParamType wxMacGetEventParamType<RgnHandle>() { return typeQDRgnHandle; }
76template<> inline EventParamType wxMacGetEventParamType<ControlRef>() { return typeControlRef; }
77template<> inline EventParamType wxMacGetEventParamType<WindowRef>() { return typeWindowRef; }
78template<> inline EventParamType wxMacGetEventParamType<MenuRef>() { return typeMenuRef; }
79template<> inline EventParamType wxMacGetEventParamType<EventRef>() { return typeEventRef; }
80template<> inline EventParamType wxMacGetEventParamType<Point>() { return typeQDPoint; }
81template<> inline EventParamType wxMacGetEventParamType<Rect>() { return typeQDRectangle; }
82template<> inline EventParamType wxMacGetEventParamType<Boolean>() { return typeBoolean; }
83template<> inline EventParamType wxMacGetEventParamType<SInt16>() { return typeSInt16; }
84template<> inline EventParamType wxMacGetEventParamType<SInt32>() { return typeSInt32; }
85template<> inline EventParamType wxMacGetEventParamType<UInt32>() { return typeUInt32; }
86template<> inline EventParamType wxMacGetEventParamType<RGBColor>() { return typeRGBColor; }
6cce68ea
SC
87template<> inline EventParamType wxMacGetEventParamType<HICommand>() { return typeHICommand; }
88template<> inline EventParamType wxMacGetEventParamType<HIPoint>() { return typeHIPoint; }
89template<> inline EventParamType wxMacGetEventParamType<HISize>() { return typeHISize; }
90template<> inline EventParamType wxMacGetEventParamType<HIRect>() { return typeHIRect; }
91template<> inline EventParamType wxMacGetEventParamType<void*>() { return typeVoidPtr; }
6cce68ea 92template<> inline EventParamType wxMacGetEventParamType<CFDictionaryRef>() { return typeCFDictionaryRef; }
6cce68ea
SC
93template<> inline EventParamType wxMacGetEventParamType<Collection>() { return typeCollection; }
94template<> inline EventParamType wxMacGetEventParamType<CGContextRef>() { return typeCGContextRef; }
4f305456 95/*
885fb02f 96 These are ambiguous
6cce68ea
SC
97 template<> EventParamType wxMacGetEventParamType<GrafPtr>() { return typeGrafPtr; }
98 template<> EventParamType wxMacGetEventParamType<OSStatus>() { return typeOSStatus; }
99 template<> EventParamType wxMacGetEventParamType<CFIndex>() { return typeCFIndex; }
100 template<> EventParamType wxMacGetEventParamType<GWorldPtr>() { return typeGWorldPtr; }
885fb02f 101 */
4f305456
SC
102
103class wxMacCarbonEvent
104{
fb5246be 105
4f305456 106public :
a4848597
SC
107 wxMacCarbonEvent()
108 {
6cce68ea
SC
109 m_eventRef = 0;
110 m_release = false;
a4848597 111 }
fb5246be
WS
112
113 wxMacCarbonEvent( EventRef event , bool release = false )
4f305456 114 {
6cce68ea
SC
115 m_eventRef = event;
116 m_release = release;
6d4c54a7 117 }
fb5246be
WS
118
119 wxMacCarbonEvent(UInt32 inClassID,UInt32 inKind,EventTime inWhen = 0 /*now*/,EventAttributes inAttributes=kEventAttributeNone)
6d4c54a7 120 {
6cce68ea
SC
121 m_eventRef = NULL;
122 verify_noerr( MacCreateEvent( NULL , inClassID, inKind,inWhen,inAttributes,&m_eventRef) );
123 m_release = true;
6d4c54a7 124 }
fb5246be 125
6d4c54a7
SC
126 ~wxMacCarbonEvent()
127 {
128 if ( m_release )
6cce68ea 129 ReleaseEvent( m_eventRef );
4f305456 130 }
fb5246be
WS
131
132 OSStatus Create(UInt32 inClassID,UInt32 inKind,EventTime inWhen = 0 /*now*/,EventAttributes inAttributes=kEventAttributeNone)
a4848597 133 {
6cce68ea 134 verify( (m_eventRef == NULL) || m_release );
a4848597
SC
135 if ( m_eventRef && m_release )
136 {
6cce68ea
SC
137 ReleaseEvent( m_eventRef );
138 m_release = false;
139 m_eventRef = NULL;
a4848597 140 }
6cce68ea 141 OSStatus err = MacCreateEvent( NULL , inClassID, inKind,inWhen,inAttributes,&m_eventRef);
a4848597 142 if ( err == noErr )
6cce68ea
SC
143 m_release = true;
144 return err;
a4848597 145 }
fb5246be 146
6cce68ea 147 OSStatus GetParameter( EventParamName inName, EventParamType inDesiredType, UInt32 inBufferSize, void * outData);
fb5246be 148
4f305456
SC
149 template <typename T> OSStatus GetParameter( EventParamName inName, EventParamType type , T *data )
150 {
6cce68ea 151 return GetParameter( inName, type , sizeof( T ) , data );
4f305456
SC
152 }
153 template <typename T> OSStatus GetParameter( EventParamName inName, T *data )
154 {
6cce68ea 155 return GetParameter<T>( inName, wxMacGetEventParamType<T>() , data );
4f305456 156 }
fb5246be 157
4f305456
SC
158 template <typename T> T GetParameter( EventParamName inName )
159 {
6cce68ea
SC
160 T value;
161 verify_noerr( GetParameter<T>( inName, &value ) );
162 return value;
4f305456
SC
163 }
164 template <typename T> T GetParameter( EventParamName inName, EventParamType inDesiredType )
165 {
6cce68ea
SC
166 T value;
167 verify_noerr( GetParameter<T>( inName, inDesiredType , &value ) );
168 return value;
4f305456 169 }
fb5246be 170
6cce68ea 171 OSStatus SetParameter( EventParamName inName, EventParamType inType, UInt32 inSize, const void * inData);
6d4c54a7 172 template <typename T> OSStatus SetParameter( EventParamName inName, EventParamType inDesiredType , const T *data )
4f305456 173 {
6cce68ea 174 return SetParameter( inName, inDesiredType , sizeof( T ) , data );
2aefa0ef 175 }
6d4c54a7 176 template <typename T> OSStatus SetParameter( EventParamName inName, EventParamType inDesiredType , const T& data )
2aefa0ef 177 {
6cce68ea 178 return SetParameter<T>( inName, inDesiredType , &data );
4f305456 179 }
6d4c54a7 180 template <typename T> OSStatus SetParameter( EventParamName inName, const T *data )
4f305456 181 {
6cce68ea 182 return SetParameter<T>( inName, wxMacGetEventParamType<T>() , data );
4f305456 183 }
6d4c54a7 184 template <typename T> OSStatus SetParameter( EventParamName inName, const T& data )
2aefa0ef 185 {
6cce68ea 186 return SetParameter<T>( inName, wxMacGetEventParamType<T>() , &data );
2aefa0ef 187 }
86d8b744
SC
188 UInt32 GetClass()
189 {
6cce68ea 190 return ::GetEventClass( m_eventRef );
86d8b744 191 }
41b53169 192 UInt32 GetKind()
4f305456 193 {
6cce68ea 194 return ::GetEventKind( m_eventRef );
4f305456
SC
195 }
196 EventTime GetTime()
197 {
6cce68ea 198 return ::GetEventTime( m_eventRef );
4f305456
SC
199 }
200 UInt32 GetTicks()
201 {
6cce68ea 202 return EventTimeToTicks( GetTime() );
4f305456 203 }
2c01d335 204 OSStatus SetCurrentTime( )
a4848597 205 {
6cce68ea 206 return ::SetEventTime( m_eventRef , GetCurrentEventTime() );
2c01d335 207 }
fb5246be 208 OSStatus SetTime( EventTime when )
2c01d335 209 {
6cce68ea 210 return ::SetEventTime( m_eventRef , when );
a4848597
SC
211 }
212 operator EventRef () { return m_eventRef; }
fb5246be 213
6cce68ea 214 bool IsValid() { return m_eventRef != 0; }
4f305456 215protected :
6cce68ea
SC
216 EventRef m_eventRef;
217 bool m_release;
218};
4f305456 219
3feeb1e1
SC
220//
221// helper class for allocating and deallocating Universal Proc Ptrs
222//
223
224template <typename procType, typename uppType , uppType (*newUPP)(procType) , void (*disposeUPP)(uppType) > class wxMacUPP
225{
226public :
89954433 227 wxMacUPP( procType WXUNUSED(proc) )
3feeb1e1 228 {
6cce68ea
SC
229 m_upp = NULL;
230 m_upp = (*newUPP)( NULL );
3feeb1e1
SC
231 }
232 ~wxMacUPP()
233 {
234 if ( m_upp )
6cce68ea 235 disposeUPP( m_upp );
3feeb1e1 236 }
6cce68ea 237 operator uppType() { return m_upp; }
3feeb1e1 238private :
6cce68ea
SC
239 uppType m_upp;
240};
3feeb1e1 241
6cce68ea 242typedef wxMacUPP<NMProcPtr,NMUPP,NewNMUPP,DisposeNMUPP> wxMacNMUPP;
3feeb1e1 243
885fb02f 244#if wxUSE_GUI
6cce68ea 245
ebf2a1ec
SC
246class wxMacToolTipTimer ;
247
248class wxMacToolTip
249{
250public :
251 wxMacToolTip() ;
252 ~wxMacToolTip() ;
253
254 void Setup( WindowRef window , const wxString& text , const wxPoint& localPosition ) ;
255 void Draw() ;
256 void Clear() ;
257
258 long GetMark()
259 { return m_mark ; }
260
261 bool IsShown()
262 { return m_shown ; }
263
264private :
265 wxString m_label ;
266 wxPoint m_position ;
267 Rect m_rect ;
268 WindowRef m_window ;
269 PicHandle m_backpict ;
270 bool m_shown ;
271 long m_mark ;
272#if wxUSE_TIMER
273 wxMacToolTipTimer* m_timer ;
274#endif
a97fbf04 275 wxCFStringRef m_helpTextRef ;
ebf2a1ec
SC
276} ;
277
3e109f6d
SC
278// Quartz
279
280WXDLLIMPEXP_CORE void wxMacCreateBitmapButton( ControlButtonContentInfo*info , const wxBitmap& bitmap , int forceType = 0 );
281WXDLLIMPEXP_CORE void wxMacReleaseBitmapButton( ControlButtonContentInfo*info );
282WXDLLIMPEXP_CORE CGImageRef wxMacCreateCGImageFromBitmap( const wxBitmap& bitmap );
283
284WXDLLIMPEXP_CORE CGDataProviderRef wxMacCGDataProviderCreateWithCFData( CFDataRef data );
285WXDLLIMPEXP_CORE CGDataConsumerRef wxMacCGDataConsumerCreateWithCFData( CFMutableDataRef data );
286WXDLLIMPEXP_CORE CGDataProviderRef wxMacCGDataProviderCreateWithMemoryBuffer( const wxMemoryBuffer& buf );
287
885fb02f 288
885fb02f
SC
289#define MAC_WXHBITMAP(a) (GWorldPtr(a))
290#define MAC_WXHMETAFILE(a) (PicHandle(a))
20b69855 291#define MAC_WXHICON(a) (IconRef(a))
885fb02f
SC
292#define MAC_WXHCURSOR(a) (CursHandle(a))
293#define MAC_WXHRGN(a) (RgnHandle(a))
294#define MAC_WXHWND(a) (WindowPtr(a))
295#define MAC_WXRECPTR(a) ((Rect*)a)
296#define MAC_WXPOINTPTR(a) ((Point*)a)
297#define MAC_WXHMENU(a) ((MenuHandle)a)
298
299struct wxOpaqueWindowRef
300{
6cce68ea
SC
301 wxOpaqueWindowRef( WindowRef ref ) { m_data = ref; }
302 operator WindowRef() { return m_data; }
885fb02f 303private :
6cce68ea
SC
304 WindowRef m_data;
305};
885fb02f 306
6cce68ea
SC
307void wxMacRectToNative( const wxRect *wx , Rect *n );
308void wxMacNativeToRect( const Rect *n , wxRect* wx );
309void wxMacPointToNative( const wxPoint* wx , Point *n );
310void wxMacNativeToPoint( const Point *n , wxPoint* wx );
285b5ce0 311
2301cda0
SC
312WXDLLIMPEXP_CORE wxWindow * wxFindControlFromMacControl(ControlRef inControl );
313WXDLLIMPEXP_CORE wxTopLevelWindowMac* wxFindWinFromMacWindow( WindowRef inWindow );
314WXDLLIMPEXP_CORE wxMenu* wxFindMenuFromMacMenu(MenuRef inMenuRef);
885fb02f 315
2301cda0
SC
316WXDLLIMPEXP_CORE int wxMacCommandToId( UInt32 macCommandId );
317WXDLLIMPEXP_CORE UInt32 wxIdToMacCommand( int wxId );
318WXDLLIMPEXP_CORE wxMenu* wxFindMenuFromMacCommand( const HICommand &macCommandId , wxMenuItem* &item );
1628261e 319
6cce68ea 320extern wxWindow* g_MacLastWindow;
2301cda0
SC
321WXDLLIMPEXP_CORE pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , EventRef event , void *data );
322WXDLLIMPEXP_CORE Rect wxMacGetBoundsForControl( wxWindow* window , const wxPoint& pos , const wxSize &size , bool adjustForOrigin = true );
885fb02f 323
6cce68ea 324ControlActionUPP GetwxMacLiveScrollbarActionProc();
285b5ce0 325
577246ef
SC
326// additional optional event defines
327
328#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
329enum {
330 kEventControlFocusPartChanged = 164
331};
332#endif
333
bf9a1615 334class wxMacControl : public wxObject
86d8b744
SC
335{
336public :
6cce68ea
SC
337 wxMacControl( wxWindow* peer , bool isRootControl = false );
338 wxMacControl( wxWindow* peer , ControlRef control );
339 wxMacControl( wxWindow* peer , WXWidget control );
bf9a1615 340 wxMacControl() ;
6cce68ea
SC
341 virtual ~wxMacControl();
342
343 void Init();
fb5246be 344
6cce68ea 345 virtual void Dispose();
fb5246be 346
b7cacb43
VZ
347 bool Ok() const { return IsOk(); }
348 bool IsOk() const { return GetControlRef() != NULL; }
5ca0d812 349
6cce68ea
SC
350 void SetReferenceInNativeControl();
351 static wxMacControl* GetReferenceFromNativeControl(ControlRef control);
5ca0d812 352
fb5246be 353 virtual ControlRef * GetControlRefAddr() { return &m_controlRef; }
6cce68ea 354 virtual ControlRef GetControlRef() const { return m_controlRef; }
fb5246be 355
eb89f88a 356 virtual void SetReference( URefCon data );
5ca0d812 357 /*
6cce68ea 358 void operator= (ControlRef c) { m_controlRef = c; }
fb5246be
WS
359 operator ControlRef () { return m_controlRef; }
360 operator ControlRef * () { return &m_controlRef; }
5ca0d812 361 */
2837271a
SC
362 // accessing data and values
363
6cce68ea
SC
364 virtual OSStatus SetData( ControlPartCode inPartCode , ResType inTag , Size inSize , const void * inData );
365 virtual OSStatus GetData( ControlPartCode inPartCode , ResType inTag , Size inBufferSize , void * inOutBuffer , Size * outActualSize ) const;
366 virtual OSStatus GetDataSize( ControlPartCode inPartCode , ResType inTag , Size * outActualSize ) const;
367 virtual OSStatus SendEvent( EventRef ref , OptionBits inOptions = 0 );
368 virtual OSStatus SendHICommand( HICommand &command , OptionBits inOptions = 0 );
2837271a 369
6cce68ea 370 virtual OSStatus SendHICommand( UInt32 commandID , OptionBits inOptions = 0 );
2837271a 371
6cce68ea
SC
372 virtual SInt32 GetValue() const;
373 virtual SInt32 GetMaximum() const;
374 virtual SInt32 GetMinimum() const;
fb5246be 375
6cce68ea
SC
376 virtual void SetValue( SInt32 v );
377 virtual void SetMinimum( SInt32 v );
378 virtual void SetMaximum( SInt32 v );
2837271a 379
6cce68ea
SC
380 virtual void SetValueAndRange( SInt32 value , SInt32 minimum , SInt32 maximum );
381 virtual void SetRange( SInt32 minimum , SInt32 maximum );
fb5246be 382
6cce68ea
SC
383 virtual OSStatus SetFocus( ControlFocusPart focusPart );
384 virtual bool HasFocus() const;
385 virtual bool NeedsFocusRect() const;
386 virtual void SetNeedsFocusRect( bool needs );
fb5246be 387
2837271a
SC
388 // templated helpers
389
0fc3bc3b 390 Size GetDataSize( ControlPartCode inPartCode , ResType inTag ) const
86d8b744 391 {
6cce68ea
SC
392 Size sz;
393 verify_noerr( GetDataSize( inPartCode , inTag , &sz ) );
394 return sz;
86d8b744 395 }
6d4c54a7 396 template <typename T> OSStatus SetData( ControlPartCode inPartCode , ResType inTag , const T *data )
86d8b744 397 {
6cce68ea 398 return SetData( inPartCode , inTag , sizeof( T ) , data );
86d8b744 399 }
6d4c54a7 400 template <typename T> OSStatus SetData( ControlPartCode inPartCode , ResType inTag , const T& data )
86d8b744 401 {
6cce68ea 402 return SetData( inPartCode , inTag , sizeof( T ) , &data );
86d8b744 403 }
fbb7ee81
SC
404 template <typename T> OSStatus SetData( ResType inTag , const T *data )
405 {
6cce68ea 406 return SetData( kControlEntireControl , inTag , sizeof( T ) , data );
fbb7ee81
SC
407 }
408 template <typename T> OSStatus SetData( ResType inTag , const T& data )
409 {
6cce68ea 410 return SetData( kControlEntireControl , inTag , sizeof( T ) , &data );
fbb7ee81 411 }
0fc3bc3b 412 template <typename T> OSStatus GetData( ControlPartCode inPartCode , ResType inTag , T *data ) const
86d8b744 413 {
6cce68ea
SC
414 Size dummy;
415 return GetData( inPartCode , inTag , sizeof( T ) , data , &dummy );
86d8b744 416 }
0fc3bc3b 417 template <typename T> T GetData( ControlPartCode inPartCode , ResType inTag ) const
86d8b744 418 {
6cce68ea
SC
419 T value;
420 OSStatus err = GetData<T>( inPartCode , inTag , &value );
725566ca
VZ
421
422 wxASSERT_MSG( err == noErr,
423 wxString::Format(wxT("GetData Failed for Part [%i] and Tag [%i]"),
424 inPartCode, (int)inTag) );
6cce68ea 425 return value;
86d8b744 426 }
fbb7ee81
SC
427 template <typename T> OSStatus GetData( ResType inTag , T *data ) const
428 {
6cce68ea
SC
429 Size dummy;
430 return GetData( kControlEntireControl , inTag , sizeof( T ) , data , &dummy );
fbb7ee81
SC
431 }
432 template <typename T> T GetData( ResType inTag ) const
433 {
6cce68ea 434 return GetData<T>( kControlEntireControl , inTag );
fbb7ee81 435 }
725566ca 436
6d4c54a7 437 // Flash the control for the specified amount of time
6cce68ea 438 virtual void Flash( ControlPartCode part , UInt32 ticks = 8 );
89a66f11 439
6cce68ea
SC
440 virtual void VisibilityChanged( bool shown );
441 virtual void SuperChangedPosition();
89a66f11
SC
442
443
6cce68ea 444 virtual void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle );
850df2d7 445 virtual void SetBackgroundColour( const wxColour& col );
6cce68ea
SC
446 virtual ControlPartCode HandleKey( SInt16 keyCode, SInt16 charCode, EventModifiers modifiers );
447 void SetActionProc( ControlActionUPP actionProc );
448 void SetViewSize( SInt32 viewSize );
449 SInt32 GetViewSize() const;
fb5246be 450
6cce68ea
SC
451 virtual bool IsVisible() const;
452 virtual void SetVisibility( bool visible , bool redraw );
453 virtual bool IsEnabled() const;
454 virtual bool IsActive() const;
455 virtual void Enable( bool enable );
fb5246be 456
5ca0d812 457 // invalidates this control and all children
6cce68ea
SC
458 virtual void InvalidateWithChildren();
459 virtual void SetDrawingEnabled( bool enable );
6cce68ea 460 virtual bool GetNeedsDisplay() const;
a9479081 461
285b5ce0 462 // where is in native window relative coordinates
6cce68ea 463 virtual void SetNeedsDisplay( RgnHandle where );
285b5ce0 464 // where is in native window relative coordinates
6cce68ea 465 virtual void SetNeedsDisplay( Rect* where = NULL );
285b5ce0 466
fb5246be 467 // if rect = NULL, entire view
6cce68ea 468 virtual void ScrollRect( wxRect *rect , int dx , int dy );
5ca0d812 469
285b5ce0 470 // in native parent window relative coordinates
6cce68ea 471 virtual void GetRect( Rect *r );
285b5ce0
SC
472
473 // in native parent window relative coordinates
6cce68ea 474 virtual void SetRect( Rect *r );
285b5ce0 475
6cce68ea
SC
476 virtual void GetRectInWindowCoords( Rect *r );
477 virtual void GetBestRect( Rect *r );
478 virtual void SetLabel( const wxString &title );
5ca0d812 479 // converts from Toplevel-Content relative to local
6cce68ea 480 static void Convert( wxPoint *pt , wxMacControl *convert , wxMacControl *to );
fb5246be 481
6cce68ea
SC
482 virtual void GetFeatures( UInt32 *features );
483 virtual OSStatus GetRegion( ControlPartCode partCode , RgnHandle region );
484 virtual OSStatus SetZOrder( bool above , wxMacControl* other );
725566ca 485
6cce68ea 486 bool IsRootControl() { return m_isRootControl; }
725566ca 487
6cce68ea
SC
488 wxWindow* GetPeer() const
489 {
490 return m_peer;
491 }
ba5b8a68
SC
492
493 // to be moved into a tab control class
494
6cce68ea
SC
495 virtual OSStatus SetTabEnabled( SInt16 tabNo , bool enable );
496protected :
497 ControlRef m_controlRef;
498 wxFont m_font;
499 long m_windowStyle;
500 wxWindow* m_peer;
501 bool m_needsFocusRect;
6cce68ea 502 bool m_isRootControl;
bf9a1615 503 DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacControl)
6cce68ea
SC
504};
505
506// ============================================================================
507// DataBrowser Wrapper
508// ============================================================================
509//
510// basing on DataBrowserItemIDs
511//
512
513class wxMacDataBrowserControl : public wxMacControl
514{
515public :
516 wxMacDataBrowserControl( wxWindow* peer, const wxPoint& pos, const wxSize& size, long style);
bf9a1615 517 wxMacDataBrowserControl() {}
6cce68ea
SC
518
519 OSStatus SetCallbacks( const DataBrowserCallbacks *callbacks );
725566ca 520
6cce68ea
SC
521 OSStatus GetItemCount( DataBrowserItemID container,
522 Boolean recurse,
523 DataBrowserItemState state,
eb89f88a 524 ItemCount *numItems) const;
725566ca 525
6cce68ea
SC
526 OSStatus GetItems( DataBrowserItemID container,
527 Boolean recurse,
528 DataBrowserItemState state,
529 Handle items) const;
725566ca 530
6cce68ea
SC
531
532 OSStatus AddColumn( DataBrowserListViewColumnDesc *columnDesc,
533 DataBrowserTableViewColumnIndex position );
7b514b3b 534
e2bc1d69 535 OSStatus RemoveColumn( DataBrowserTableViewColumnIndex position );
725566ca 536
6cce68ea 537 OSStatus AutoSizeColumns();
725566ca 538
6cce68ea
SC
539 OSStatus SetHasScrollBars( bool horiz, bool vert );
540 OSStatus SetHiliteStyle( DataBrowserTableViewHiliteStyle hiliteStyle );
725566ca 541
6cce68ea
SC
542 OSStatus SetHeaderButtonHeight( UInt16 height );
543 OSStatus GetHeaderButtonHeight( UInt16 *height );
544
545 OSStatus UpdateItems( DataBrowserItemID container, UInt32 numItems,
546 const DataBrowserItemID *items,
547 DataBrowserPropertyID preSortProperty,
548 DataBrowserPropertyID propertyID ) const;
725566ca 549
6cce68ea
SC
550 OSStatus AddItems( DataBrowserItemID container, UInt32 numItems,
551 const DataBrowserItemID *items,
552 DataBrowserPropertyID preSortProperty );
553 OSStatus RemoveItems( DataBrowserItemID container, UInt32 numItems,
554 const DataBrowserItemID *items,
555 DataBrowserPropertyID preSortProperty );
556 OSStatus RevealItem( DataBrowserItemID item,
557 DataBrowserPropertyID propertyID,
558 DataBrowserRevealOptions options ) const;
559
560 OSStatus SetSelectionFlags( DataBrowserSelectionFlags );
561 OSStatus GetSelectionAnchor( DataBrowserItemID *first, DataBrowserItemID *last ) const;
562 bool IsItemSelected( DataBrowserItemID item ) const;
563 OSStatus SetSelectedItems( UInt32 numItems,
564 const DataBrowserItemID *items,
565 DataBrowserSetOption operation );
566
725566ca 567 OSStatus GetItemID( DataBrowserTableViewRowIndex row,
6cce68ea 568 DataBrowserItemID * item ) const;
725566ca 569 OSStatus GetItemRow( DataBrowserItemID item,
6cce68ea 570 DataBrowserTableViewRowIndex * row ) const;
725566ca 571
6cce68ea
SC
572 OSStatus SetDefaultRowHeight( UInt16 height );
573 OSStatus GetDefaultRowHeight( UInt16 * height ) const;
725566ca 574
6cce68ea
SC
575 OSStatus SetRowHeight( DataBrowserItemID item , UInt16 height);
576 OSStatus GetRowHeight( DataBrowserItemID item , UInt16 *height) const;
725566ca 577
6cce68ea
SC
578 OSStatus GetColumnWidth( DataBrowserPropertyID column , UInt16 *width ) const;
579 OSStatus SetColumnWidth( DataBrowserPropertyID column , UInt16 width );
725566ca 580
6cce68ea
SC
581 OSStatus GetDefaultColumnWidth( UInt16 *width ) const;
582 OSStatus SetDefaultColumnWidth( UInt16 width );
725566ca 583
6cce68ea
SC
584 OSStatus GetColumnCount( UInt32* numColumns) const;
585
e2bc1d69
KO
586 OSStatus GetColumnIDFromIndex( DataBrowserTableViewColumnIndex position, DataBrowserTableViewColumnID* id );
587
eb89f88a
SC
588 OSStatus GetColumnPosition( DataBrowserPropertyID column, DataBrowserTableViewColumnIndex *position) const;
589 OSStatus SetColumnPosition( DataBrowserPropertyID column, DataBrowserTableViewColumnIndex position);
725566ca 590
6cce68ea
SC
591 OSStatus GetScrollPosition( UInt32 *top , UInt32 *left ) const;
592 OSStatus SetScrollPosition( UInt32 top , UInt32 left );
725566ca 593
6cce68ea
SC
594 OSStatus GetSortProperty( DataBrowserPropertyID *column ) const;
595 OSStatus SetSortProperty( DataBrowserPropertyID column );
725566ca 596
6cce68ea
SC
597 OSStatus GetSortOrder( DataBrowserSortOrder *order ) const;
598 OSStatus SetSortOrder( DataBrowserSortOrder order );
725566ca 599
6cce68ea
SC
600 OSStatus GetPropertyFlags( DataBrowserPropertyID property, DataBrowserPropertyFlags *flags ) const;
601 OSStatus SetPropertyFlags( DataBrowserPropertyID property, DataBrowserPropertyFlags flags );
725566ca 602
6cce68ea
SC
603 OSStatus GetHeaderDesc( DataBrowserPropertyID property, DataBrowserListViewHeaderDesc *desc ) const;
604 OSStatus SetHeaderDesc( DataBrowserPropertyID property, DataBrowserListViewHeaderDesc *desc );
725566ca 605
6cce68ea 606 OSStatus SetDisclosureColumn( DataBrowserPropertyID property , Boolean expandableRows );
86d8b744 607protected :
725566ca 608
6cce68ea
SC
609 static pascal void DataBrowserItemNotificationProc(
610 ControlRef browser,
611 DataBrowserItemID itemID,
612 DataBrowserItemNotification message,
613 DataBrowserItemDataRef itemData );
614
615 virtual void ItemNotification(
616 DataBrowserItemID itemID,
617 DataBrowserItemNotification message,
618 DataBrowserItemDataRef itemData) = 0;
619
620 static pascal OSStatus DataBrowserGetSetItemDataProc(
621 ControlRef browser,
622 DataBrowserItemID itemID,
623 DataBrowserPropertyID property,
624 DataBrowserItemDataRef itemData,
625 Boolean changeValue );
626
627 virtual OSStatus GetSetItemData(
628 DataBrowserItemID itemID,
629 DataBrowserPropertyID property,
630 DataBrowserItemDataRef itemData,
631 Boolean changeValue ) = 0;
632
633 static pascal Boolean DataBrowserCompareProc(
1b88201f
WS
634 ControlRef browser,
635 DataBrowserItemID itemOneID,
636 DataBrowserItemID itemTwoID,
637 DataBrowserPropertyID sortProperty);
638
639 virtual Boolean CompareItems(DataBrowserItemID itemOneID,
640 DataBrowserItemID itemTwoID,
641 DataBrowserPropertyID sortProperty) = 0;
bf9a1615 642 DECLARE_ABSTRACT_CLASS(wxMacDataBrowserControl)
6cce68ea
SC
643};
644
645// ============================================================================
725566ca 646// Higher-level Databrowser
6cce68ea
SC
647// ============================================================================
648//
649// basing on data item objects
650//
651
652// forward decl
653
654class wxMacDataItemBrowserControl;
e2bc1d69
KO
655class wxMacListBoxItem;
656
e362c2b9
SC
657const DataBrowserPropertyID kTextColumnId = 1024;
658const DataBrowserPropertyID kNumericOrderColumnId = 1025;
e2bc1d69 659
7b514b3b 660// for multi-column controls, we will use this + the column ID to identify the
e2bc1d69 661// column. We don't use kTextColumnId there, and ideally the two should merge.
e362c2b9 662const DataBrowserPropertyID kMinColumnId = 1050;
e2bc1d69
KO
663
664// base API for high-level databrowser operations
665
666class wxMacListControl
667{
668public:
669 virtual void MacDelete( unsigned int n ) = 0;
a236aa20 670 virtual void MacInsert( unsigned int n, const wxArrayStringsAdapter& items, int column = -1 ) = 0;
e2bc1d69
KO
671 // returns index of newly created line
672 virtual int MacAppend( const wxString& item ) = 0;
673 virtual void MacSetString( unsigned int n, const wxString& item ) = 0;
674 virtual void MacClear() = 0;
675 virtual void MacDeselectAll() = 0;
676 virtual void MacSetSelection( unsigned int n, bool select, bool multi ) = 0;
677 virtual int MacGetSelection() const = 0;
678 virtual int MacGetSelections( wxArrayInt& aSelections ) const = 0;
679 virtual bool MacIsSelected( unsigned int n ) const = 0;
680 virtual void MacScrollTo( unsigned int n ) = 0;
681 virtual wxString MacGetString( unsigned int n) const = 0;
682 virtual unsigned int MacGetCount() const = 0;
683
684 virtual void MacSetClientData( unsigned int n, void * data) = 0;
685 virtual void * MacGetClientData( unsigned int) const = 0;
686
687 virtual ~wxMacListControl() { }
7b514b3b 688};
6cce68ea
SC
689
690// base class for databrowser items
691
e2bc1d69
KO
692enum DataItemType {
693 DataItem_Text
694};
695
6cce68ea
SC
696class wxMacDataItem
697{
698public :
699 wxMacDataItem();
700 virtual ~wxMacDataItem();
725566ca
VZ
701
702 virtual bool IsLessThan(wxMacDataItemBrowserControl *owner ,
703 const wxMacDataItem*,
6cce68ea 704 DataBrowserPropertyID property) const;
725566ca 705
6cce68ea 706 // returns true if access was successful, otherwise false
725566ca 707 virtual OSStatus GetSetData(wxMacDataItemBrowserControl *owner ,
6cce68ea
SC
708 DataBrowserPropertyID property,
709 DataBrowserItemDataRef itemData,
710 bool changeValue );
711
725566ca 712 virtual void Notification(wxMacDataItemBrowserControl *owner ,
6cce68ea
SC
713 DataBrowserItemNotification message,
714 DataBrowserItemDataRef itemData ) const;
7b514b3b 715
e2bc1d69 716 void SetLabel( const wxString& str);
7b514b3b 717 const wxString& GetLabel() const;
e2bc1d69
KO
718
719 void SetOrder( SInt32 order );
720 SInt32 GetOrder() const;
721
722 void SetData( void* data);
723 void* GetData() const;
7b514b3b 724
e2bc1d69 725 void SetColumn( short col );
7b514b3b
VZ
726 short GetColumn();
727
e2bc1d69
KO
728protected :
729 wxString m_label;
a97fbf04 730 wxCFStringRef m_cfLabel;
e2bc1d69
KO
731 void * m_data;
732 SInt32 m_order;
7b514b3b
VZ
733 DataBrowserPropertyID m_colId;
734
e2bc1d69
KO
735};
736
737enum ListSortOrder {
738 SortOrder_None,
739 SortOrder_Text_Ascending,
740 SortOrder_Text_Descending
6cce68ea
SC
741};
742
743typedef wxMacDataItem* wxMacDataItemPtr;
744const wxMacDataItemPtr wxMacDataBrowserRootContainer = NULL;
745
746WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxMacDataItemPtr, wxArrayMacDataItemPtr, class WXDLLIMPEXP_CORE);
747
e2bc1d69 748class wxMacDataItemBrowserControl : public wxMacDataBrowserControl, public wxMacListControl
6cce68ea
SC
749{
750public :
751 wxMacDataItemBrowserControl( wxWindow* peer , const wxPoint& pos, const wxSize& size, long style);
bf9a1615 752 wxMacDataItemBrowserControl() {}
e2bc1d69
KO
753 // create a list item (can be a subclass of wxMacListBoxItem)
754
755 virtual wxMacDataItem* CreateItem();
756
6cce68ea 757 unsigned int GetItemCount(const wxMacDataItem* container, bool recurse , DataBrowserItemState state) const;
725566ca 758 void GetItems(const wxMacDataItem* container, bool recurse ,
6cce68ea 759 DataBrowserItemState state, wxArrayMacDataItemPtr &items ) const;
7b514b3b 760
e2bc1d69 761 unsigned int GetSelectedItemCount( const wxMacDataItem* container, bool recurse ) const;
725566ca 762
6cce68ea
SC
763 unsigned int GetLineFromItem(const wxMacDataItem *item) const;
764 wxMacDataItem * GetItemFromLine(unsigned int n) const;
725566ca
VZ
765
766 void UpdateItem(const wxMacDataItem *container, const wxMacDataItem *item,
6cce68ea 767 DataBrowserPropertyID property) const;
725566ca 768 void UpdateItems(const wxMacDataItem *container, wxArrayMacDataItemPtr &items,
6cce68ea 769 DataBrowserPropertyID property) const;
725566ca 770
3ef4e126
SC
771 void InsertColumn(int colId, DataBrowserPropertyType colType,
772 const wxString& title, SInt16 just = teFlushDefault, int defaultWidth = -1);
7b514b3b 773
e2bc1d69
KO
774 int GetColumnWidth(int colId);
775 void SetColumnWidth(int colId, int width);
776
6cce68ea
SC
777 void AddItem(wxMacDataItem *container, wxMacDataItem *item);
778 void AddItems(wxMacDataItem *container, wxArrayMacDataItemPtr &items );
779
780 void RemoveAllItems(wxMacDataItem *container);
781 void RemoveItem(wxMacDataItem *container, wxMacDataItem* item);
782 void RemoveItems(wxMacDataItem *container, wxArrayMacDataItemPtr &items);
725566ca 783
6cce68ea
SC
784 void SetSelectedItem( wxMacDataItem* item , DataBrowserSetOption option);
785 void SetSelectedItems( wxArrayMacDataItemPtr &items , DataBrowserSetOption option);
786 void SetSelectedAllItems( DataBrowserSetOption option);
787 Boolean IsItemSelected( const wxMacDataItem* item) const;
725566ca 788
6cce68ea 789 void RevealItem( wxMacDataItem* item, DataBrowserRevealOptions options);
725566ca 790
6cce68ea 791 void GetSelectionAnchor( wxMacDataItemPtr* first , wxMacDataItemPtr* last) const;
725566ca 792
6cce68ea 793 // item aware methods, to be used in subclasses
725566ca
VZ
794
795 virtual Boolean CompareItems(const wxMacDataItem* itemOneID,
796 const wxMacDataItem* itemTwoID,
6cce68ea
SC
797 DataBrowserPropertyID sortProperty);
798
799 virtual OSStatus GetSetItemData(wxMacDataItem* itemID,
800 DataBrowserPropertyID property,
801 DataBrowserItemDataRef itemData,
802 Boolean changeValue );
803
804 virtual void ItemNotification(
805 const wxMacDataItem* itemID,
806 DataBrowserItemNotification message,
807 DataBrowserItemDataRef itemData);
8b64a7e2
PC
808
809 // as we are getting the same events for human and API selection we have to suppress
810 // events in the latter case, since this will be used from many subclasses we keep it here
811
812 bool IsSelectionSuppressed() const { return m_suppressSelection; }
813 bool SuppressSelection( bool suppress );
7b514b3b
VZ
814
815
e2bc1d69
KO
816 // wxMacListControl Methods
817 // add and remove
818
819 virtual void MacDelete( unsigned int n );
a236aa20 820 virtual void MacInsert( unsigned int n, const wxArrayStringsAdapter& items, int column = -1 );
e2bc1d69
KO
821 virtual int MacAppend( const wxString& item );
822 virtual void MacClear();
823
824 // selecting
825
826 virtual void MacDeselectAll();
827 virtual void MacSetSelection( unsigned int n, bool select, bool multi = false );
828 virtual int MacGetSelection() const;
829 virtual int MacGetSelections( wxArrayInt& aSelections ) const;
830 virtual bool MacIsSelected( unsigned int n ) const;
831
832 // display
833
834 virtual void MacScrollTo( unsigned int n );
835
836 // accessing content
837
838 virtual void MacSetString( unsigned int n, const wxString& item );
839 virtual void MacSetClientData( unsigned int n, void * data);
840 virtual wxString MacGetString( unsigned int n) const;
841 virtual void * MacGetClientData( unsigned int) const;
842 virtual unsigned int MacGetCount() const;
843
844 // client data
845
846 virtual wxClientDataType GetClientDataType() const;
847 virtual void SetClientDataType(wxClientDataType clientDataItemsType);
67650ea0
KO
848 //virtual ListSortOrder GetSortOrder() const;
849 //virtual void SetSortOrder(const ListSortOrder sort);
e2bc1d69 850
7b514b3b 851
8b64a7e2
PC
852
853protected:
e2bc1d69
KO
854
855 ListSortOrder m_sortOrder;
856 wxClientDataType m_clientDataItemsType;
857
6cce68ea 858 // ID aware base methods, should be 'final' ie not changed in subclasses
725566ca
VZ
859
860 virtual Boolean CompareItems(DataBrowserItemID itemOneID,
861 DataBrowserItemID itemTwoID,
6cce68ea
SC
862 DataBrowserPropertyID sortProperty);
863
864 virtual OSStatus GetSetItemData(DataBrowserItemID itemID,
865 DataBrowserPropertyID property,
866 DataBrowserItemDataRef itemData,
867 Boolean changeValue );
868
869 virtual void ItemNotification(
870 DataBrowserItemID itemID,
871 DataBrowserItemNotification message,
872 DataBrowserItemDataRef itemData);
873
e2bc1d69 874
6cce68ea
SC
875private :
876
877 bool m_suppressSelection;
bf9a1615 878 DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacDataItemBrowserControl)
6cce68ea
SC
879};
880
881class wxMacDataItemBrowserSelectionSuppressor
882{
883public :
884 wxMacDataItemBrowserSelectionSuppressor(wxMacDataItemBrowserControl *browser);
885 ~wxMacDataItemBrowserSelectionSuppressor();
725566ca 886
6cce68ea
SC
887private :
888
889 bool m_former;
890 wxMacDataItemBrowserControl* m_browser;
891};
892
893// ============================================================================
894// platform listbox implementation
895// ============================================================================
e2bc1d69 896
6cce68ea
SC
897// exposed for reuse in wxCheckListBox
898
899class wxMacListBoxItem : public wxMacDataItem
900{
901public :
902 wxMacListBoxItem();
725566ca 903
6cce68ea 904 virtual ~wxMacListBoxItem();
725566ca 905
725566ca 906 virtual void Notification(wxMacDataItemBrowserControl *owner ,
6cce68ea
SC
907 DataBrowserItemNotification message,
908 DataBrowserItemDataRef itemData ) const;
6cce68ea
SC
909};
910
e2bc1d69 911class wxMacDataBrowserListControl : public wxMacDataItemBrowserControl
6cce68ea
SC
912{
913public:
e2bc1d69 914 wxMacDataBrowserListControl( wxWindow *peer, const wxPoint& pos, const wxSize& size, long style );
bf9a1615 915 wxMacDataBrowserListControl() {}
d3c7fc99 916 virtual ~wxMacDataBrowserListControl();
6cce68ea 917
e6fd62dd
RD
918 virtual wxMacDataItem* CreateItem();
919
6cce68ea
SC
920 // pointing back
921
e2bc1d69
KO
922 wxWindow * GetPeer() const;
923
bf9a1615 924 DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacDataBrowserListControl)
6cce68ea
SC
925};
926
927// ============================================================================
928// graphics implementation
929// ============================================================================
86d8b744 930
11556386
SC
931// draw the image 'upside down' corrected as HIViewDrawCGImage does
932
3e109f6d 933OSStatus WXDLLIMPEXP_CORE wxMacDrawCGImage(
11556386
SC
934 CGContextRef inContext,
935 const HIRect * inBounds,
936 CGImageRef inImage) ;
937
3e109f6d 938CGColorRef WXDLLIMPEXP_CORE wxMacCreateCGColorFromHITheme( ThemeBrush brush ) ;
850df2d7 939
3e109f6d 940CGColorSpaceRef WXDLLIMPEXP_CORE wxMacGetGenericRGBColorSpace(void);
20b69855 941
285b5ce0
SC
942// toplevel.cpp
943
ebf2a1ec
SC
944class wxMacDeferredWindowDeleter : public wxObject
945{
946public :
947 wxMacDeferredWindowDeleter( WindowRef windowRef );
948 virtual ~wxMacDeferredWindowDeleter();
949
950protected :
951 WindowRef m_macWindow ;
952} ;
953
8cf73271
SC
954#endif // wxUSE_GUI
955
285b5ce0
SC
956#define wxMAC_DEFINE_PROC_GETTER( UPP , x ) \
957UPP Get##x() \
958{ \
959 static UPP sHandler = NULL; \
960 if ( sHandler == NULL ) \
961 sHandler = New##UPP( x ); \
962 return sHandler; \
963}
964
8cf73271
SC
965//---------------------------------------------------------------------------
966// wxMac string conversions
967//---------------------------------------------------------------------------
968
6cce68ea
SC
969void wxMacSetupConverters();
970void wxMacCleanupConverters();
8cf73271 971
e17206f7
VS
972WXDLLIMPEXP_BASE void wxMacStringToPascal( const wxString&from , StringPtr to );
973WXDLLIMPEXP_BASE wxString wxMacMakeStringFromPascal( ConstStringPtr from );
8cf73271 974
a2b77260
SC
975// filefn.cpp
976
e17206f7
VS
977WXDLLIMPEXP_BASE wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathComponent = NULL );
978WXDLLIMPEXP_BASE OSStatus wxMacPathToFSRef( const wxString&path , FSRef *fsRef );
979WXDLLIMPEXP_BASE wxString wxMacHFSUniStrToString( ConstHFSUniStr255Param uniname );
aa0cc8a1 980
eb89f88a
SC
981#if wxUSE_GUI
982
983// deprecating QD
984
985void wxMacLocalToGlobal( WindowRef window , Point*pt );
986void wxMacGlobalToLocal( WindowRef window , Point*pt );
987
988#endif
989
ebf2a1ec
SC
990//---------------------------------------------------------------------------
991// cocoa bridging utilities
992//---------------------------------------------------------------------------
993
994bool wxMacInitCocoa();
995
996class wxMacAutoreleasePool
997{
998public :
999 wxMacAutoreleasePool();
1000 ~wxMacAutoreleasePool();
1001private :
1002 void* m_pool;
1003};
1004
1005// NSObject
1006
1007void wxMacCocoaRelease( void* obj );
1008void wxMacCocoaAutorelease( void* obj );
1009void wxMacCocoaRetain( void* obj );
1010
1011#if wxMAC_USE_COCOA
1012
1013// NSCursor
1014
1015WX_NSCursor wxMacCocoaCreateStockCursor( int cursor_type );
1016WX_NSCursor wxMacCocoaCreateCursorFromCGImage( CGImageRef cgImageRef, float hotSpotX, float hotSpotY );
1017void wxMacCocoaSetCursor( WX_NSCursor cursor );
1018void wxMacCocoaHideCursor();
1019void wxMacCocoaShowCursor();
1020
1021typedef struct tagClassicCursor
1022{
1023 wxUint16 bits[16];
1024 wxUint16 mask[16];
1025 wxInt16 hotspot[2];
1026}ClassicCursor;
1027
1028#else // !wxMAC_USE_COCOA
1029
1030// non Darwin
1031
1032typedef Cursor ClassicCursor;
1033
1034#endif // wxMAC_USE_COCOA
1035
1036// -------------
1037// Common to all
1038// -------------
1039
1040// Cursor support
1041
1042const short kwxCursorBullseye = 0;
1043const short kwxCursorBlank = 1;
1044const short kwxCursorPencil = 2;
1045const short kwxCursorMagnifier = 3;
1046const short kwxCursorNoEntry = 4;
1047const short kwxCursorPaintBrush = 5;
1048const short kwxCursorPointRight = 6;
1049const short kwxCursorPointLeft = 7;
1050const short kwxCursorQuestionArrow = 8;
1051const short kwxCursorRightArrow = 9;
1052const short kwxCursorSizeNS = 10;
1053const short kwxCursorSize = 11;
1054const short kwxCursorSizeNESW = 12;
1055const short kwxCursorSizeNWSE = 13;
1056const short kwxCursorRoller = 14;
1057const short kwxCursorLast = kwxCursorRoller;
1058
1059// exposing our fallback cursor map
1060
1061extern ClassicCursor gMacCursors[];
1062
8cf73271
SC
1063#endif
1064 // _WX_PRIVATE_H_