• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  * Copyright (C) 2008 Holger Hans Peter Freyther
6  * Copyright (C) 2008 Kenneth Rohde Christiansen
7  * Copyright (C) 2009-2010 ProFUSION embedded systems
8  * Copyright (C) 2009-2010 Samsung Electronics
9  *
10  * All rights reserved.
11  *
12  * Redistribution and use in source and binary forms, with or without
13  * modification, are permitted provided that the following conditions
14  * are met:
15  * 1. Redistributions of source code must retain the above copyright
16  *    notice, this list of conditions and the following disclaimer.
17  * 2. Redistributions in binary form must reproduce the above copyright
18  *    notice, this list of conditions and the following disclaimer in the
19  *    documentation and/or other materials provided with the distribution.
20  *
21  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
22  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
25  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
29  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  */
33 
34 #include "config.h"
35 #include "Cursor.h"
36 
37 #include "NotImplemented.h"
38 
39 #include <Edje.h>
40 #include <Evas.h>
41 #include <stdio.h>
42 #include <wtf/Assertions.h>
43 
44 namespace WebCore {
45 
Cursor(PlatformCursor p)46 Cursor::Cursor(PlatformCursor p)
47 {
48     m_platformCursor = eina_stringshare_add(p);
49 }
50 
Cursor(const Cursor & other)51 Cursor::Cursor(const Cursor& other)
52 {
53     m_platformCursor = eina_stringshare_ref(other.m_platformCursor);
54 }
55 
~Cursor()56 Cursor::~Cursor()
57 {
58     if (m_platformCursor) {
59         eina_stringshare_del(m_platformCursor);
60         m_platformCursor = 0;
61     }
62 }
63 
Cursor(Image * image,const IntPoint & hotspot)64 Cursor::Cursor(Image* image, const IntPoint& hotspot)
65     : m_platformCursor(0)
66 {
67     notImplemented();
68 }
69 
operator =(const Cursor & other)70 Cursor& Cursor::operator=(const Cursor& other)
71 {
72     eina_stringshare_ref(other.m_platformCursor);
73     eina_stringshare_del(m_platformCursor);
74     m_platformCursor = other.m_platformCursor;
75     return *this;
76 }
77 
78 namespace {
79 
80 class Cursors {
81 protected:
Cursors()82     Cursors()
83         : PointerCursor("cursor/pointer")
84         , MoveCursor("cursor/move")
85         , CrossCursor("cursor/cross")
86         , HandCursor("cursor/hand")
87         , IBeamCursor("cursor/i_beam")
88         , WaitCursor("cursor/wait")
89         , HelpCursor("cursor/help")
90         , EastResizeCursor("cursor/east_resize")
91         , NorthResizeCursor("cursor/north_resize")
92         , NorthEastResizeCursor("cursor/north_east_resize")
93         , NorthWestResizeCursor("cursor/north_west_resize")
94         , SouthResizeCursor("cursor/south_resize")
95         , SouthEastResizeCursor("cursor/south_east_resize")
96         , SouthWestResizeCursor("cursor/south_west_resize")
97         , WestResizeCursor("cursor/west_resize")
98         , NorthSouthResizeCursor("cursor/north_south_resize")
99         , EastWestResizeCursor("cursor/east_west_resize")
100         , NorthEastSouthWestResizeCursor("cursor/north_east_south_west_resize")
101         , NorthWestSouthEastResizeCursor("cursor/north_west_south_east_resize")
102         , ColumnResizeCursor("cursor/column_resize")
103         , RowResizeCursor("cursor/row_resize")
104         , MiddlePanningCursor("cursor/middle_panning")
105         , EastPanningCursor("cursor/east_panning")
106         , NorthPanningCursor("cursor/north_panning")
107         , NorthEastPanningCursor("cursor/north_east_panning")
108         , NorthWestPanningCursor("cursor/north_west_panning")
109         , SouthPanningCursor("cursor/south_panning")
110         , SouthEastPanningCursor("cursor/south_east_panning")
111         , SouthWestPanningCursor("cursor/south_west_panning")
112         , WestPanningCursor("cursor/west_panning")
113         , VerticalTextCursor("cursor/vertical_text")
114         , CellCursor("cursor/cell")
115         , ContextMenuCursor("cursor/context_menu")
116         , NoDropCursor("cursor/no_drop")
117         , CopyCursor("cursor/copy")
118         , ProgressCursor("cursor/progress")
119         , AliasCursor("cursor/alias")
120         , NoneCursor("cursor/none")
121         , NotAllowedCursor("cursor/not_allowed")
122         , ZoomInCursor("cursor/zoom_in")
123         , ZoomOutCursor("cursor/zoom_out")
124         , GrabCursor("cursor/grab")
125         , GrabbingCursor("cursor/grabbing")
126     {
127     }
128 
~Cursors()129     ~Cursors()
130     {
131     }
132 
133 public:
134     static Cursors* self();
135     static Cursors* s_self;
136 
137     Cursor PointerCursor;
138     Cursor MoveCursor;
139     Cursor CrossCursor;
140     Cursor HandCursor;
141     Cursor IBeamCursor;
142     Cursor WaitCursor;
143     Cursor HelpCursor;
144     Cursor EastResizeCursor;
145     Cursor NorthResizeCursor;
146     Cursor NorthEastResizeCursor;
147     Cursor NorthWestResizeCursor;
148     Cursor SouthResizeCursor;
149     Cursor SouthEastResizeCursor;
150     Cursor SouthWestResizeCursor;
151     Cursor WestResizeCursor;
152     Cursor NorthSouthResizeCursor;
153     Cursor EastWestResizeCursor;
154     Cursor NorthEastSouthWestResizeCursor;
155     Cursor NorthWestSouthEastResizeCursor;
156     Cursor ColumnResizeCursor;
157     Cursor RowResizeCursor;
158     Cursor MiddlePanningCursor;
159     Cursor EastPanningCursor;
160     Cursor NorthPanningCursor;
161     Cursor NorthEastPanningCursor;
162     Cursor NorthWestPanningCursor;
163     Cursor SouthPanningCursor;
164     Cursor SouthEastPanningCursor;
165     Cursor SouthWestPanningCursor;
166     Cursor WestPanningCursor;
167     Cursor VerticalTextCursor;
168     Cursor CellCursor;
169     Cursor ContextMenuCursor;
170     Cursor NoDropCursor;
171     Cursor CopyCursor;
172     Cursor ProgressCursor;
173     Cursor AliasCursor;
174     Cursor NoneCursor;
175     Cursor NotAllowedCursor;
176     Cursor ZoomInCursor;
177     Cursor ZoomOutCursor;
178     Cursor GrabCursor;
179     Cursor GrabbingCursor;
180 };
181 
182 Cursors* Cursors::s_self = 0;
183 
self()184 Cursors* Cursors::self()
185 {
186     if (!s_self)
187         s_self = new Cursors();
188 
189     return s_self;
190 }
191 
192 }
193 
pointerCursor()194 const Cursor& pointerCursor()
195 {
196     return Cursors::self()->PointerCursor;
197 }
198 
moveCursor()199 const Cursor& moveCursor()
200 {
201     return Cursors::self()->MoveCursor;
202 }
203 
crossCursor()204 const Cursor& crossCursor()
205 {
206     return Cursors::self()->CrossCursor;
207 }
208 
handCursor()209 const Cursor& handCursor()
210 {
211     return Cursors::self()->HandCursor;
212 }
213 
iBeamCursor()214 const Cursor& iBeamCursor()
215 {
216     return Cursors::self()->IBeamCursor;
217 }
218 
waitCursor()219 const Cursor& waitCursor()
220 {
221     return Cursors::self()->WaitCursor;
222 }
223 
helpCursor()224 const Cursor& helpCursor()
225 {
226     return Cursors::self()->HelpCursor;
227 }
228 
eastResizeCursor()229 const Cursor& eastResizeCursor()
230 {
231     return Cursors::self()->EastResizeCursor;
232 }
233 
northResizeCursor()234 const Cursor& northResizeCursor()
235 {
236     return Cursors::self()->NorthResizeCursor;
237 }
238 
northEastResizeCursor()239 const Cursor& northEastResizeCursor()
240 {
241     return Cursors::self()->NorthEastResizeCursor;
242 }
243 
northWestResizeCursor()244 const Cursor& northWestResizeCursor()
245 {
246     return Cursors::self()->NorthWestResizeCursor;
247 }
248 
southResizeCursor()249 const Cursor& southResizeCursor()
250 {
251     return Cursors::self()->SouthResizeCursor;
252 }
253 
southEastResizeCursor()254 const Cursor& southEastResizeCursor()
255 {
256     return Cursors::self()->SouthEastResizeCursor;
257 }
258 
southWestResizeCursor()259 const Cursor& southWestResizeCursor()
260 {
261     return Cursors::self()->SouthWestResizeCursor;
262 }
263 
westResizeCursor()264 const Cursor& westResizeCursor()
265 {
266     return Cursors::self()->WestResizeCursor;
267 }
268 
northSouthResizeCursor()269 const Cursor& northSouthResizeCursor()
270 {
271     return Cursors::self()->NorthSouthResizeCursor;
272 }
273 
eastWestResizeCursor()274 const Cursor& eastWestResizeCursor()
275 {
276     return Cursors::self()->EastWestResizeCursor;
277 }
278 
northEastSouthWestResizeCursor()279 const Cursor& northEastSouthWestResizeCursor()
280 {
281     return Cursors::self()->NorthEastSouthWestResizeCursor;
282 }
283 
northWestSouthEastResizeCursor()284 const Cursor& northWestSouthEastResizeCursor()
285 {
286     return Cursors::self()->NorthWestSouthEastResizeCursor;
287 }
288 
columnResizeCursor()289 const Cursor& columnResizeCursor()
290 {
291     return Cursors::self()->ColumnResizeCursor;
292 }
293 
rowResizeCursor()294 const Cursor& rowResizeCursor()
295 {
296     return Cursors::self()->RowResizeCursor;
297 }
298 
middlePanningCursor()299 const Cursor& middlePanningCursor()
300 {
301     return Cursors::self()->MiddlePanningCursor;
302 }
303 
eastPanningCursor()304 const Cursor& eastPanningCursor()
305 {
306     return Cursors::self()->EastPanningCursor;
307 }
308 
northPanningCursor()309 const Cursor& northPanningCursor()
310 {
311     return Cursors::self()->NorthPanningCursor;
312 }
313 
northEastPanningCursor()314 const Cursor& northEastPanningCursor()
315 {
316     return Cursors::self()->NorthEastPanningCursor;
317 }
318 
northWestPanningCursor()319 const Cursor& northWestPanningCursor()
320 {
321     return Cursors::self()->NorthWestPanningCursor;
322 }
323 
southPanningCursor()324 const Cursor& southPanningCursor()
325 {
326     return Cursors::self()->SouthPanningCursor;
327 }
328 
southEastPanningCursor()329 const Cursor& southEastPanningCursor()
330 {
331     return Cursors::self()->SouthEastPanningCursor;
332 }
333 
southWestPanningCursor()334 const Cursor& southWestPanningCursor()
335 {
336     return Cursors::self()->SouthWestPanningCursor;
337 }
338 
westPanningCursor()339 const Cursor& westPanningCursor()
340 {
341     return Cursors::self()->WestPanningCursor;
342 }
343 
verticalTextCursor()344 const Cursor& verticalTextCursor()
345 {
346     return Cursors::self()->VerticalTextCursor;
347 }
348 
cellCursor()349 const Cursor& cellCursor()
350 {
351     return Cursors::self()->CellCursor;
352 }
353 
contextMenuCursor()354 const Cursor& contextMenuCursor()
355 {
356     return Cursors::self()->ContextMenuCursor;
357 }
358 
noDropCursor()359 const Cursor& noDropCursor()
360 {
361     return Cursors::self()->NoDropCursor;
362 }
363 
copyCursor()364 const Cursor& copyCursor()
365 {
366     return Cursors::self()->CopyCursor;
367 }
368 
progressCursor()369 const Cursor& progressCursor()
370 {
371     return Cursors::self()->ProgressCursor;
372 }
373 
aliasCursor()374 const Cursor& aliasCursor()
375 {
376     return Cursors::self()->AliasCursor;
377 }
378 
noneCursor()379 const Cursor& noneCursor()
380 {
381     return Cursors::self()->NoneCursor;
382 }
383 
notAllowedCursor()384 const Cursor& notAllowedCursor()
385 {
386     return Cursors::self()->NotAllowedCursor;
387 }
388 
zoomInCursor()389 const Cursor& zoomInCursor()
390 {
391     return Cursors::self()->ZoomInCursor;
392 }
393 
zoomOutCursor()394 const Cursor& zoomOutCursor()
395 {
396     return Cursors::self()->ZoomOutCursor;
397 }
398 
grabCursor()399 const Cursor& grabCursor()
400 {
401     return Cursors::self()->GrabCursor;
402 }
403 
grabbingCursor()404 const Cursor& grabbingCursor()
405 {
406     return Cursors::self()->GrabbingCursor;
407 }
408 
409 }
410