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
34namespace WebCore {
35
36Cursor::Cursor(const Cursor& other)
37    : m_impl(other.m_impl)
38{
39}
40
41Cursor::Cursor(Image* image, const IntPoint& hotSpot)
42    : m_impl(image, hotSpot)
43{
44}
45
46Cursor::~Cursor()
47{
48}
49
50Cursor& Cursor::operator=(const Cursor& other)
51{
52    m_impl = other.m_impl;
53    return *this;
54}
55
56Cursor::Cursor(PlatformCursor c)
57    : m_impl(c)
58{
59}
60
61const Cursor& pointerCursor()
62{
63    static const Cursor c(PlatformCursor::TypePointer);
64    return c;
65}
66
67const Cursor& crossCursor()
68{
69    static const Cursor c(PlatformCursor::TypeCross);
70    return c;
71}
72
73const Cursor& handCursor()
74{
75    static const Cursor c(PlatformCursor::TypeHand);
76    return c;
77}
78
79const Cursor& iBeamCursor()
80{
81    static const Cursor c(PlatformCursor::TypeIBeam);
82    return c;
83}
84
85const Cursor& waitCursor()
86{
87    static const Cursor c(PlatformCursor::TypeWait);
88    return c;
89}
90
91const Cursor& helpCursor()
92{
93    static const Cursor c(PlatformCursor::TypeHelp);
94    return c;
95}
96
97const Cursor& eastResizeCursor()
98{
99    static const Cursor c(PlatformCursor::TypeEastResize);
100    return c;
101}
102
103const Cursor& northResizeCursor()
104{
105    static const Cursor c(PlatformCursor::TypeNorthResize);
106    return c;
107}
108
109const Cursor& northEastResizeCursor()
110{
111    static const Cursor c(PlatformCursor::TypeNorthEastResize);
112    return c;
113}
114
115const Cursor& northWestResizeCursor()
116{
117    static const Cursor c(PlatformCursor::TypeNorthWestResize);
118    return c;
119}
120
121const Cursor& southResizeCursor()
122{
123    static const Cursor c(PlatformCursor::TypeSouthResize);
124    return c;
125}
126
127const Cursor& southEastResizeCursor()
128{
129    static const Cursor c(PlatformCursor::TypeSouthEastResize);
130    return c;
131}
132
133const Cursor& southWestResizeCursor()
134{
135    static const Cursor c(PlatformCursor::TypeSouthWestResize);
136    return c;
137}
138
139const Cursor& westResizeCursor()
140{
141    static const Cursor c(PlatformCursor::TypeWestResize);
142    return c;
143}
144
145const Cursor& northSouthResizeCursor()
146{
147    static const Cursor c(PlatformCursor::TypeNorthSouthResize);
148    return c;
149}
150
151const Cursor& eastWestResizeCursor()
152{
153    static const Cursor c(PlatformCursor::TypeEastWestResize);
154    return c;
155}
156
157const Cursor& northEastSouthWestResizeCursor()
158{
159    static const Cursor c(PlatformCursor::TypeNorthEastSouthWestResize);
160    return c;
161}
162
163const Cursor& northWestSouthEastResizeCursor()
164{
165    static const Cursor c(PlatformCursor::TypeNorthWestSouthEastResize);
166    return c;
167}
168
169const Cursor& columnResizeCursor()
170{
171    static const Cursor c(PlatformCursor::TypeColumnResize);
172    return c;
173}
174
175const Cursor& rowResizeCursor()
176{
177    static const Cursor c(PlatformCursor::TypeRowResize);
178    return c;
179}
180
181const Cursor& middlePanningCursor()
182{
183    static const Cursor c(PlatformCursor::TypeMiddlePanning);
184    return c;
185}
186
187const Cursor& eastPanningCursor()
188{
189    static const Cursor c(PlatformCursor::TypeEastPanning);
190    return c;
191}
192
193const Cursor& northPanningCursor()
194{
195    static const Cursor c(PlatformCursor::TypeNorthPanning);
196    return c;
197}
198
199const Cursor& northEastPanningCursor()
200{
201    static const Cursor c(PlatformCursor::TypeNorthEastPanning);
202    return c;
203}
204
205const Cursor& northWestPanningCursor()
206{
207    static const Cursor c(PlatformCursor::TypeNorthWestPanning);
208    return c;
209}
210
211const Cursor& southPanningCursor()
212{
213    static const Cursor c(PlatformCursor::TypeSouthPanning);
214    return c;
215}
216
217const Cursor& southEastPanningCursor()
218{
219    static const Cursor c(PlatformCursor::TypeSouthEastPanning);
220    return c;
221}
222
223const Cursor& southWestPanningCursor()
224{
225    static const Cursor c(PlatformCursor::TypeSouthWestPanning);
226    return c;
227}
228
229const Cursor& westPanningCursor()
230{
231    static const Cursor c(PlatformCursor::TypeWestPanning);
232    return c;
233}
234
235const Cursor& moveCursor()
236{
237    static const Cursor c(PlatformCursor::TypeMove);
238    return c;
239}
240
241const Cursor& verticalTextCursor()
242{
243    static const Cursor c(PlatformCursor::TypeVerticalText);
244    return c;
245}
246
247const Cursor& cellCursor()
248{
249    static const Cursor c(PlatformCursor::TypeCell);
250    return c;
251}
252
253const Cursor& contextMenuCursor()
254{
255    static const Cursor c(PlatformCursor::TypeContextMenu);
256    return c;
257}
258
259const Cursor& aliasCursor()
260{
261    static const Cursor c(PlatformCursor::TypeAlias);
262    return c;
263}
264
265const Cursor& progressCursor()
266{
267    static const Cursor c(PlatformCursor::TypeProgress);
268    return c;
269}
270
271const Cursor& noDropCursor()
272{
273    static const Cursor c(PlatformCursor::TypeNoDrop);
274    return c;
275}
276
277const Cursor& copyCursor()
278{
279    static const Cursor c(PlatformCursor::TypeCopy);
280    return c;
281}
282
283const Cursor& noneCursor()
284{
285    static const Cursor c(PlatformCursor::TypeNone);
286    return c;
287}
288
289const Cursor& notAllowedCursor()
290{
291    static const Cursor c(PlatformCursor::TypeNotAllowed);
292    return c;
293}
294
295const Cursor& zoomInCursor()
296{
297    static const Cursor c(PlatformCursor::TypeZoomIn);
298    return c;
299}
300
301const Cursor& zoomOutCursor()
302{
303    static const Cursor c(PlatformCursor::TypeZoomOut);
304    return c;
305}
306
307const Cursor& grabCursor()
308{
309    return pointerCursor();
310}
311
312const Cursor& grabbingCursor()
313{
314    return pointerCursor();
315}
316
317} // namespace WebCore
318