top level:
[WebKit-https.git] / WebCore / platform / qt / CursorQt.cpp
1 /*
2  * Copyright (C) 2006 Dirk Mueller <mueller@kde.org>
3  * Copyright (C) 2006 George Staikos <staikos@kde.org>
4  * Copyright (C) 2006 Charles Samuels <charles@kde.org>
5  *
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  *
17  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
21  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
25  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
28  */
29
30 #include "config.h"
31 #include "Cursor.h"
32
33 #include "DeprecatedString.h"
34
35 #include <stdio.h>
36 #include <stdlib.h>
37
38 #define notImplemented() do { fprintf(stderr, "FIXME: UNIMPLEMENTED: %s:%d\n", __FILE__, __LINE__); } while(0)
39
40 namespace WebCore {
41
42 Cursor::Cursor(PlatformCursor p)
43     : m_impl(p)
44 {
45 }
46
47 Cursor::Cursor(const Cursor& other)
48     : m_impl(other.m_impl)
49 {
50 }
51
52 Cursor::~Cursor()
53 {
54 }
55
56 Cursor::Cursor(Image*, const IntPoint&)
57 {
58     notImplemented();
59 }
60
61 Cursor& Cursor::operator=(const Cursor& other)
62 {
63     m_impl = other.m_impl;
64     return *this;
65 }
66
67 namespace {
68
69 // FIXME: static deleter
70 class Cursors {
71 protected:
72     Cursors()
73         : CrossCursor(QCursor(Qt::CrossCursor))
74         , MoveCursor(QCursor(Qt::SizeAllCursor))
75         , PointerCursor(QCursor(Qt::ArrowCursor))
76         , PointingHandCursor(QCursor(Qt::PointingHandCursor))
77         , IBeamCursor(QCursor(Qt::IBeamCursor))
78         , WaitCursor(QCursor(Qt::WaitCursor))
79         , WhatsThisCursor(QCursor(Qt::WhatsThisCursor))
80         , SizeHorCursor(QCursor(Qt::SizeHorCursor))
81         , SizeVerCursor(QCursor(Qt::SizeVerCursor))
82         , SizeFDiagCursor(QCursor(Qt::SizeFDiagCursor))
83         , SizeBDiagCursor(QCursor(Qt::SizeBDiagCursor))
84         , SplitHCursor(QCursor(Qt::SplitHCursor))
85         , SplitVCursor(QCursor(Qt::SplitVCursor))
86     {
87     }
88
89     ~Cursors()
90     {
91     }
92
93 public:
94     static Cursors* self();
95     static Cursors* s_self;
96
97     Cursor CrossCursor;
98     Cursor MoveCursor;
99     Cursor PointerCursor;
100     Cursor PointingHandCursor;
101     Cursor IBeamCursor;
102     Cursor WaitCursor;
103     Cursor WhatsThisCursor;
104     Cursor SizeHorCursor;
105     Cursor SizeVerCursor;
106     Cursor SizeFDiagCursor;
107     Cursor SizeBDiagCursor;
108     Cursor SplitHCursor;
109     Cursor SplitVCursor;
110 };
111
112 Cursors* Cursors::s_self = 0;
113
114 Cursors* Cursors::self()
115 {
116     if (!s_self)
117         s_self = new Cursors();
118
119     return s_self;
120 }
121
122 }
123
124 const Cursor& pointerCursor()
125 {
126     return Cursors::self()->PointerCursor;
127 }
128
129 const Cursor& moveCursor()
130 {
131     return Cursors::self()->MoveCursor;
132 }
133
134 const Cursor& crossCursor()
135 {
136     return Cursors::self()->CrossCursor;
137 }
138
139 const Cursor& handCursor()
140 {
141     return Cursors::self()->PointingHandCursor;
142 }
143
144 const Cursor& iBeamCursor()
145 {
146     return Cursors::self()->IBeamCursor;
147 }
148
149 const Cursor& waitCursor()
150 {
151     return Cursors::self()->WaitCursor;
152 }
153
154 const Cursor& helpCursor()
155 {
156     return Cursors::self()->WhatsThisCursor;
157 }
158
159 const Cursor& eastResizeCursor()
160 {
161     return Cursors::self()->SizeHorCursor;
162 }
163
164 const Cursor& northResizeCursor()
165 {
166     return Cursors::self()->SizeVerCursor;
167 }
168
169 const Cursor& northEastResizeCursor()
170 {
171     return Cursors::self()->SizeBDiagCursor;
172 }
173
174 const Cursor& northWestResizeCursor()
175 {
176     return Cursors::self()->SizeFDiagCursor;
177 }
178
179 const Cursor& southResizeCursor()
180 {
181     return Cursors::self()->SizeVerCursor;
182 }
183
184 const Cursor& southEastResizeCursor()
185 {
186     return Cursors::self()->SizeFDiagCursor;
187 }
188
189 const Cursor& southWestResizeCursor()
190 {
191     return Cursors::self()->SizeBDiagCursor;
192 }
193
194 const Cursor& westResizeCursor()
195 {
196     return Cursors::self()->SizeHorCursor;
197 }
198
199 const Cursor& northSouthResizeCursor()
200 {
201     return Cursors::self()->SizeVerCursor;
202 }
203
204 const Cursor& eastWestResizeCursor()
205 {
206     return Cursors::self()->SizeHorCursor;
207 }
208
209 const Cursor& northEastSouthWestResizeCursor()
210 {
211     return Cursors::self()->SizeBDiagCursor;
212 }
213
214 const Cursor& northWestSouthEastResizeCursor()
215 {
216     return Cursors::self()->SizeFDiagCursor;
217 }
218
219 const Cursor& columnResizeCursor()
220 {
221     return Cursors::self()->SplitHCursor;
222 }
223
224 const Cursor& rowResizeCursor()
225 {
226     return Cursors::self()->SplitVCursor;
227 }
228
229 const Cursor& verticalTextCursor()
230 {
231     return Cursors::self()->PointerCursor;
232 }
233
234 const Cursor& cellCursor()
235 {
236     return Cursors::self()->PointerCursor;
237 }
238
239 const Cursor& contextMenuCursor()
240 {
241     return Cursors::self()->PointerCursor;
242 }
243
244 const Cursor& noDropCursor()
245 {
246     return Cursors::self()->PointerCursor;
247 }
248
249 const Cursor& progressCursor()
250 {
251     return Cursors::self()->PointerCursor;
252 }
253
254 const Cursor& aliasCursor()
255 {
256     return Cursors::self()->PointerCursor;
257 }
258
259 }
260
261 // vim: ts=4 sw=4 et