]> git.saurik.com Git - wxWidgets.git/blob - src/cocoa/cursor.mm
Fix the off-by-one a little differently, and correct a refresh problem
[wxWidgets.git] / src / cocoa / cursor.mm
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: cursor.cpp
3 // Purpose: wxCursor class
4 // Author: AUTHOR
5 // Modified by:
6 // Created: ??/??/98
7 // RCS-ID: $Id$
8 // Copyright: (c) AUTHOR
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifdef __GNUG__
13 #pragma implementation "cursor.h"
14 #endif
15
16 #include "wx/wxprec.h"
17 #ifndef WX_PRECOMP
18 #include "wx/icon.h"
19 #include "wx/cursor.h"
20 #endif //WX_PRECOMP
21
22 #if !USE_SHARED_LIBRARIES
23 IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap)
24 #endif
25
26 wxCursorRefData::wxCursorRefData()
27 {
28 m_width = 32; m_height = 32;
29
30 /* TODO
31 m_hCursor = 0 ;
32 */
33 }
34
35 wxCursorRefData::~wxCursorRefData()
36 {
37 // TODO: destroy cursor
38 }
39
40 // Cursors
41 wxCursor::wxCursor()
42 {
43 }
44
45 wxCursor::wxCursor(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height),
46 int WXUNUSED(hotSpotX), int WXUNUSED(hotSpotY), const char WXUNUSED(maskBits)[])
47 {
48 }
49
50 wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int hotSpotY)
51 {
52 m_refData = new wxCursorRefData;
53
54 // TODO: create cursor from a file
55 }
56
57 // Cursors by stock number
58 wxCursor::wxCursor(int cursor_type)
59 {
60 m_refData = new wxCursorRefData;
61
62 /* TODO
63 switch (cursor_type)
64 {
65 case wxCURSOR_WAIT:
66 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_WAIT);
67 break;
68 case wxCURSOR_IBEAM:
69 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_IBEAM);
70 break;
71 case wxCURSOR_CROSS:
72 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_CROSS);
73 break;
74 case wxCURSOR_SIZENWSE:
75 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENWSE);
76 break;
77 case wxCURSOR_SIZENESW:
78 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENESW);
79 break;
80 case wxCURSOR_SIZEWE:
81 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZEWE);
82 break;
83 case wxCURSOR_SIZENS:
84 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENS);
85 break;
86 case wxCURSOR_CHAR:
87 {
88 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW);
89 break;
90 }
91 case wxCURSOR_HAND:
92 {
93 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_HAND");
94 break;
95 }
96 case wxCURSOR_BULLSEYE:
97 {
98 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BULLSEYE");
99 break;
100 }
101 case wxCURSOR_PENCIL:
102 {
103 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PENCIL");
104 break;
105 }
106 case wxCURSOR_MAGNIFIER:
107 {
108 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_MAGNIFIER");
109 break;
110 }
111 case wxCURSOR_NO_ENTRY:
112 {
113 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_NO_ENTRY");
114 break;
115 }
116 case wxCURSOR_LEFT_BUTTON:
117 {
118 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW);
119 break;
120 }
121 case wxCURSOR_RIGHT_BUTTON:
122 {
123 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW);
124 break;
125 }
126 case wxCURSOR_MIDDLE_BUTTON:
127 {
128 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW);
129 break;
130 }
131 case wxCURSOR_SIZING:
132 {
133 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_SIZING");
134 break;
135 }
136 case wxCURSOR_WATCH:
137 {
138 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_WATCH");
139 break;
140 }
141 case wxCURSOR_SPRAYCAN:
142 {
143 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_ROLLER");
144 break;
145 }
146 case wxCURSOR_PAINT_BRUSH:
147 {
148 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PBRUSH");
149 break;
150 }
151 case wxCURSOR_POINT_LEFT:
152 {
153 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PLEFT");
154 break;
155 }
156 case wxCURSOR_POINT_RIGHT:
157 {
158 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PRIGHT");
159 break;
160 }
161 case wxCURSOR_QUESTION_ARROW:
162 {
163 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_QARROW");
164 break;
165 }
166 case wxCURSOR_BLANK:
167 {
168 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BLANK");
169 break;
170 }
171 default:
172 case wxCURSOR_ARROW:
173 M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW);
174 break;
175 }
176 */
177
178 }
179
180 wxCursor::~wxCursor()
181 {
182 }
183
184 // Global cursor setting
185 void wxSetCursor(const wxCursor& cursor)
186 {
187 // TODO (optional on platforms with no global cursor)
188 }
189
190 static int wxBusyCursorCount = 0;
191
192 // Set the cursor to the busy cursor for all windows
193 void wxBeginBusyCursor(wxCursor *cursor)
194 {
195 wxBusyCursorCount ++;
196 if (wxBusyCursorCount == 1)
197 {
198 // TODO
199 }
200 else
201 {
202 // TODO
203 }
204 }
205
206 // Restore cursor to normal
207 void wxEndBusyCursor()
208 {
209 if (wxBusyCursorCount == 0)
210 return;
211
212 wxBusyCursorCount --;
213 if (wxBusyCursorCount == 0)
214 {
215 // TODO
216 }
217 }
218
219 // TRUE if we're between the above two calls
220 bool wxIsBusy()
221 {
222 return (wxBusyCursorCount > 0);
223 }
224