initial import
[vuplus_webkit] / Source / WebCore / platform / chromium / CursorChromium.cpp
1 /*
2  * Copyright (c) 2008, 2009, Google Inc. All rights reserved.
3  * 
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  * 
8  *     * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *     * Redistributions in binary form must reproduce the above
11  * copyright notice, this list of conditions and the following disclaimer
12  * in the documentation and/or other materials provided with the
13  * distribution.
14  *     * Neither the name of Google Inc. nor the names of its
15  * contributors may be used to endorse or promote products derived from
16  * this software without specific prior written permission.
17  * 
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #include "config.h"
32 #include "Cursor.h"
33
34 #include <wtf/Assertions.h>
35
36 namespace WebCore {
37
38 Cursor::Cursor(const Cursor& other)
39     : m_platformCursor(other.m_platformCursor)
40 {
41 }
42
43 Cursor::Cursor(Image* image, const IntPoint& hotSpot)
44     : m_platformCursor(image, hotSpot)
45 {
46 }
47
48 Cursor::~Cursor()
49 {
50 }
51
52 Cursor& Cursor::operator=(const Cursor& other)
53 {
54     m_platformCursor = other.m_platformCursor;
55     return *this;
56 }
57
58 Cursor::Cursor(PlatformCursor c)
59     : m_platformCursor(c)
60 {
61 }
62
63 const Cursor& pointerCursor()
64 {
65     static const Cursor c(PlatformCursor::TypePointer);
66     return c;
67 }
68
69 const Cursor& crossCursor()
70 {
71     static const Cursor c(PlatformCursor::TypeCross);
72     return c;
73 }
74
75 const Cursor& handCursor()
76 {
77     static const Cursor c(PlatformCursor::TypeHand);
78     return c;
79 }
80
81 const Cursor& iBeamCursor()
82 {
83     static const Cursor c(PlatformCursor::TypeIBeam);
84     return c;
85 }
86
87 const Cursor& waitCursor()
88 {
89     static const Cursor c(PlatformCursor::TypeWait);
90     return c;
91 }
92
93 const Cursor& helpCursor()
94 {
95     static const Cursor c(PlatformCursor::TypeHelp);
96     return c;
97 }
98
99 const Cursor& eastResizeCursor()
100 {
101     static const Cursor c(PlatformCursor::TypeEastResize);
102     return c;
103 }
104
105 const Cursor& northResizeCursor()
106 {
107     static const Cursor c(PlatformCursor::TypeNorthResize);
108     return c;
109 }
110
111 const Cursor& northEastResizeCursor()
112 {
113     static const Cursor c(PlatformCursor::TypeNorthEastResize);
114     return c;
115 }
116
117 const Cursor& northWestResizeCursor()
118 {
119     static const Cursor c(PlatformCursor::TypeNorthWestResize);
120     return c;
121 }
122
123 const Cursor& southResizeCursor()
124 {
125     static const Cursor c(PlatformCursor::TypeSouthResize);
126     return c;
127 }
128
129 const Cursor& southEastResizeCursor()
130 {
131     static const Cursor c(PlatformCursor::TypeSouthEastResize);
132     return c;
133 }
134
135 const Cursor& southWestResizeCursor()
136 {
137     static const Cursor c(PlatformCursor::TypeSouthWestResize);
138     return c;
139 }
140
141 const Cursor& westResizeCursor()
142 {
143     static const Cursor c(PlatformCursor::TypeWestResize);
144     return c;
145 }
146
147 const Cursor& northSouthResizeCursor()
148 {
149     static const Cursor c(PlatformCursor::TypeNorthSouthResize);
150     return c;
151 }
152
153 const Cursor& eastWestResizeCursor()
154 {
155     static const Cursor c(PlatformCursor::TypeEastWestResize);
156     return c;
157 }
158
159 const Cursor& northEastSouthWestResizeCursor()
160 {
161     static const Cursor c(PlatformCursor::TypeNorthEastSouthWestResize);
162     return c;
163 }
164
165 const Cursor& northWestSouthEastResizeCursor()
166 {
167     static const Cursor c(PlatformCursor::TypeNorthWestSouthEastResize);
168     return c;
169 }
170
171 const Cursor& columnResizeCursor()
172 {
173     static const Cursor c(PlatformCursor::TypeColumnResize);
174     return c;
175 }
176
177 const Cursor& rowResizeCursor()
178 {
179     static const Cursor c(PlatformCursor::TypeRowResize);
180     return c;
181 }
182
183 const Cursor& middlePanningCursor()
184 {
185     static const Cursor c(PlatformCursor::TypeMiddlePanning);
186     return c;
187 }
188
189 const Cursor& eastPanningCursor()
190 {
191     static const Cursor c(PlatformCursor::TypeEastPanning);
192     return c;
193 }
194
195 const Cursor& northPanningCursor()
196 {
197     static const Cursor c(PlatformCursor::TypeNorthPanning);
198     return c;
199 }
200
201 const Cursor& northEastPanningCursor()
202 {
203     static const Cursor c(PlatformCursor::TypeNorthEastPanning);
204     return c;
205 }
206
207 const Cursor& northWestPanningCursor()
208 {
209     static const Cursor c(PlatformCursor::TypeNorthWestPanning);
210     return c;
211 }
212
213 const Cursor& southPanningCursor()
214 {
215     static const Cursor c(PlatformCursor::TypeSouthPanning);
216     return c;
217 }
218
219 const Cursor& southEastPanningCursor()
220 {
221     static const Cursor c(PlatformCursor::TypeSouthEastPanning);
222     return c;
223 }
224
225 const Cursor& southWestPanningCursor()
226 {
227     static const Cursor c(PlatformCursor::TypeSouthWestPanning);
228     return c;
229 }
230
231 const Cursor& westPanningCursor()
232 {
233     static const Cursor c(PlatformCursor::TypeWestPanning);
234     return c;
235 }
236
237 const Cursor& moveCursor() 
238 {
239     static const Cursor c(PlatformCursor::TypeMove);
240     return c;
241 }
242
243 const Cursor& verticalTextCursor()
244 {
245     static const Cursor c(PlatformCursor::TypeVerticalText);
246     return c;
247 }
248
249 const Cursor& cellCursor()
250 {
251     static const Cursor c(PlatformCursor::TypeCell);
252     return c;
253 }
254
255 const Cursor& contextMenuCursor()
256 {
257     static const Cursor c(PlatformCursor::TypeContextMenu);
258     return c;
259 }
260
261 const Cursor& aliasCursor()
262 {
263     static const Cursor c(PlatformCursor::TypeAlias);
264     return c;
265 }
266
267 const Cursor& progressCursor()
268 {
269     static const Cursor c(PlatformCursor::TypeProgress);
270     return c;
271 }
272
273 const Cursor& noDropCursor()
274 {
275     static const Cursor c(PlatformCursor::TypeNoDrop);
276     return c;
277 }
278
279 const Cursor& copyCursor()
280 {
281     static const Cursor c(PlatformCursor::TypeCopy);
282     return c;
283 }
284
285 const Cursor& noneCursor()
286 {
287     static const Cursor c(PlatformCursor::TypeNone);
288     return c;
289 }
290
291 const Cursor& notAllowedCursor()
292 {
293     static const Cursor c(PlatformCursor::TypeNotAllowed);
294     return c;
295 }
296
297 const Cursor& zoomInCursor()
298 {
299     static const Cursor c(PlatformCursor::TypeZoomIn);
300     return c;
301 }
302
303 const Cursor& zoomOutCursor()
304 {
305     static const Cursor c(PlatformCursor::TypeZoomOut);
306     return c;
307 }
308
309 const Cursor& grabCursor()
310 {
311     static const Cursor c(PlatformCursor::TypeGrab);
312     return c;
313 }
314
315 const Cursor& grabbingCursor()
316 {
317     static const Cursor c(PlatformCursor::TypeGrabbing);
318     return c;
319 }
320
321 } // namespace WebCore
322
323 #define COMPILE_ASSERT_MATCHING_ENUM(cursor_name, platform_cursor_name) \
324     COMPILE_ASSERT(int(WebCore::Cursor::cursor_name) == int(WebCore::PlatformCursor::platform_cursor_name), mismatching_enums)
325
326 COMPILE_ASSERT_MATCHING_ENUM(Pointer, TypePointer);
327 COMPILE_ASSERT_MATCHING_ENUM(Cross, TypeCross);
328 COMPILE_ASSERT_MATCHING_ENUM(Hand, TypeHand);
329 COMPILE_ASSERT_MATCHING_ENUM(IBeam, TypeIBeam);
330 COMPILE_ASSERT_MATCHING_ENUM(Wait, TypeWait);
331 COMPILE_ASSERT_MATCHING_ENUM(Help, TypeHelp);
332 COMPILE_ASSERT_MATCHING_ENUM(EastResize, TypeEastResize);
333 COMPILE_ASSERT_MATCHING_ENUM(NorthResize, TypeNorthResize);
334 COMPILE_ASSERT_MATCHING_ENUM(NorthEastResize, TypeNorthEastResize);
335 COMPILE_ASSERT_MATCHING_ENUM(NorthWestResize, TypeNorthWestResize);
336 COMPILE_ASSERT_MATCHING_ENUM(SouthResize, TypeSouthResize);
337 COMPILE_ASSERT_MATCHING_ENUM(SouthEastResize, TypeSouthEastResize);
338 COMPILE_ASSERT_MATCHING_ENUM(SouthWestResize, TypeSouthWestResize);
339 COMPILE_ASSERT_MATCHING_ENUM(WestResize, TypeWestResize);
340 COMPILE_ASSERT_MATCHING_ENUM(NorthSouthResize, TypeNorthSouthResize);
341 COMPILE_ASSERT_MATCHING_ENUM(EastWestResize, TypeEastWestResize);
342 COMPILE_ASSERT_MATCHING_ENUM(NorthEastSouthWestResize, TypeNorthEastSouthWestResize);
343 COMPILE_ASSERT_MATCHING_ENUM(NorthWestSouthEastResize, TypeNorthWestSouthEastResize);
344 COMPILE_ASSERT_MATCHING_ENUM(ColumnResize, TypeColumnResize);
345 COMPILE_ASSERT_MATCHING_ENUM(RowResize, TypeRowResize);
346 COMPILE_ASSERT_MATCHING_ENUM(MiddlePanning, TypeMiddlePanning);
347 COMPILE_ASSERT_MATCHING_ENUM(EastPanning, TypeEastPanning);
348 COMPILE_ASSERT_MATCHING_ENUM(NorthPanning, TypeNorthPanning);
349 COMPILE_ASSERT_MATCHING_ENUM(NorthEastPanning, TypeNorthEastPanning);
350 COMPILE_ASSERT_MATCHING_ENUM(NorthWestPanning, TypeNorthWestPanning);
351 COMPILE_ASSERT_MATCHING_ENUM(SouthPanning, TypeSouthPanning);
352 COMPILE_ASSERT_MATCHING_ENUM(SouthEastPanning, TypeSouthEastPanning);
353 COMPILE_ASSERT_MATCHING_ENUM(SouthWestPanning, TypeSouthWestPanning);
354 COMPILE_ASSERT_MATCHING_ENUM(WestPanning, TypeWestPanning);
355 COMPILE_ASSERT_MATCHING_ENUM(Move, TypeMove);
356 COMPILE_ASSERT_MATCHING_ENUM(VerticalText, TypeVerticalText);
357 COMPILE_ASSERT_MATCHING_ENUM(Cell, TypeCell);
358 COMPILE_ASSERT_MATCHING_ENUM(ContextMenu, TypeContextMenu);
359 COMPILE_ASSERT_MATCHING_ENUM(Alias, TypeAlias);
360 COMPILE_ASSERT_MATCHING_ENUM(Progress, TypeProgress);
361 COMPILE_ASSERT_MATCHING_ENUM(NoDrop, TypeNoDrop);
362 COMPILE_ASSERT_MATCHING_ENUM(Copy, TypeCopy);
363 COMPILE_ASSERT_MATCHING_ENUM(None, TypeNone);
364 COMPILE_ASSERT_MATCHING_ENUM(NotAllowed, TypeNotAllowed);
365 COMPILE_ASSERT_MATCHING_ENUM(ZoomIn, TypeZoomIn);
366 COMPILE_ASSERT_MATCHING_ENUM(ZoomOut, TypeZoomOut);
367 COMPILE_ASSERT_MATCHING_ENUM(Grab, TypeGrab);
368 COMPILE_ASSERT_MATCHING_ENUM(Grabbing, TypeGrabbing);
369 COMPILE_ASSERT_MATCHING_ENUM(Custom, TypeCustom);