1 /*
2  * Copyright (C) 2010 Apple 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
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 
26 #include "third_party/blink/renderer/platform/cursors.h"
27 
28 #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
29 #include "ui/base/cursor/cursor.h"
30 #include "ui/base/mojom/cursor_type.mojom-blink.h"
31 
32 // To avoid conflicts with the CreateWindow macro from the Windows SDK...
33 #undef CopyCursor
34 
35 namespace blink {
36 
PointerCursor()37 const ui::Cursor& PointerCursor() {
38   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kPointer));
39   return c;
40 }
41 
CrossCursor()42 const ui::Cursor& CrossCursor() {
43   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kCross));
44   return c;
45 }
46 
HandCursor()47 const ui::Cursor& HandCursor() {
48   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kHand));
49   return c;
50 }
51 
MoveCursor()52 const ui::Cursor& MoveCursor() {
53   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kMove));
54   return c;
55 }
56 
VerticalTextCursor()57 const ui::Cursor& VerticalTextCursor() {
58   DEFINE_STATIC_LOCAL(ui::Cursor, c,
59                       (ui::mojom::blink::CursorType::kVerticalText));
60   return c;
61 }
62 
CellCursor()63 const ui::Cursor& CellCursor() {
64   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kCell));
65   return c;
66 }
67 
ContextMenuCursor()68 const ui::Cursor& ContextMenuCursor() {
69   DEFINE_STATIC_LOCAL(ui::Cursor, c,
70                       (ui::mojom::blink::CursorType::kContextMenu));
71   return c;
72 }
73 
AliasCursor()74 const ui::Cursor& AliasCursor() {
75   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kAlias));
76   return c;
77 }
78 
ZoomInCursor()79 const ui::Cursor& ZoomInCursor() {
80   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kZoomIn));
81   return c;
82 }
83 
ZoomOutCursor()84 const ui::Cursor& ZoomOutCursor() {
85   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kZoomOut));
86   return c;
87 }
88 
CopyCursor()89 const ui::Cursor& CopyCursor() {
90   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kCopy));
91   return c;
92 }
93 
NoneCursor()94 const ui::Cursor& NoneCursor() {
95   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kNone));
96   return c;
97 }
98 
ProgressCursor()99 const ui::Cursor& ProgressCursor() {
100   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kProgress));
101   return c;
102 }
103 
NoDropCursor()104 const ui::Cursor& NoDropCursor() {
105   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kNoDrop));
106   return c;
107 }
108 
NotAllowedCursor()109 const ui::Cursor& NotAllowedCursor() {
110   DEFINE_STATIC_LOCAL(ui::Cursor, c,
111                       (ui::mojom::blink::CursorType::kNotAllowed));
112   return c;
113 }
114 
IBeamCursor()115 const ui::Cursor& IBeamCursor() {
116   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kIBeam));
117   return c;
118 }
119 
WaitCursor()120 const ui::Cursor& WaitCursor() {
121   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kWait));
122   return c;
123 }
124 
HelpCursor()125 const ui::Cursor& HelpCursor() {
126   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kHelp));
127   return c;
128 }
129 
EastResizeCursor()130 const ui::Cursor& EastResizeCursor() {
131   DEFINE_STATIC_LOCAL(ui::Cursor, c,
132                       (ui::mojom::blink::CursorType::kEastResize));
133   return c;
134 }
135 
NorthResizeCursor()136 const ui::Cursor& NorthResizeCursor() {
137   DEFINE_STATIC_LOCAL(ui::Cursor, c,
138                       (ui::mojom::blink::CursorType::kNorthResize));
139   return c;
140 }
141 
NorthEastResizeCursor()142 const ui::Cursor& NorthEastResizeCursor() {
143   DEFINE_STATIC_LOCAL(ui::Cursor, c,
144                       (ui::mojom::blink::CursorType::kNorthEastResize));
145   return c;
146 }
147 
NorthWestResizeCursor()148 const ui::Cursor& NorthWestResizeCursor() {
149   DEFINE_STATIC_LOCAL(ui::Cursor, c,
150                       (ui::mojom::blink::CursorType::kNorthWestResize));
151   return c;
152 }
153 
SouthResizeCursor()154 const ui::Cursor& SouthResizeCursor() {
155   DEFINE_STATIC_LOCAL(ui::Cursor, c,
156                       (ui::mojom::blink::CursorType::kSouthResize));
157   return c;
158 }
159 
SouthEastResizeCursor()160 const ui::Cursor& SouthEastResizeCursor() {
161   DEFINE_STATIC_LOCAL(ui::Cursor, c,
162                       (ui::mojom::blink::CursorType::kSouthEastResize));
163   return c;
164 }
165 
SouthWestResizeCursor()166 const ui::Cursor& SouthWestResizeCursor() {
167   DEFINE_STATIC_LOCAL(ui::Cursor, c,
168                       (ui::mojom::blink::CursorType::kSouthWestResize));
169   return c;
170 }
171 
WestResizeCursor()172 const ui::Cursor& WestResizeCursor() {
173   DEFINE_STATIC_LOCAL(ui::Cursor, c,
174                       (ui::mojom::blink::CursorType::kWestResize));
175   return c;
176 }
177 
NorthSouthResizeCursor()178 const ui::Cursor& NorthSouthResizeCursor() {
179   DEFINE_STATIC_LOCAL(ui::Cursor, c,
180                       (ui::mojom::blink::CursorType::kNorthSouthResize));
181   return c;
182 }
183 
EastWestResizeCursor()184 const ui::Cursor& EastWestResizeCursor() {
185   DEFINE_STATIC_LOCAL(ui::Cursor, c,
186                       (ui::mojom::blink::CursorType::kEastWestResize));
187   return c;
188 }
189 
NorthEastSouthWestResizeCursor()190 const ui::Cursor& NorthEastSouthWestResizeCursor() {
191   DEFINE_STATIC_LOCAL(
192       ui::Cursor, c, (ui::mojom::blink::CursorType::kNorthEastSouthWestResize));
193   return c;
194 }
195 
NorthWestSouthEastResizeCursor()196 const ui::Cursor& NorthWestSouthEastResizeCursor() {
197   DEFINE_STATIC_LOCAL(
198       ui::Cursor, c, (ui::mojom::blink::CursorType::kNorthWestSouthEastResize));
199   return c;
200 }
201 
ColumnResizeCursor()202 const ui::Cursor& ColumnResizeCursor() {
203   DEFINE_STATIC_LOCAL(ui::Cursor, c,
204                       (ui::mojom::blink::CursorType::kColumnResize));
205   return c;
206 }
207 
RowResizeCursor()208 const ui::Cursor& RowResizeCursor() {
209   DEFINE_STATIC_LOCAL(ui::Cursor, c,
210                       (ui::mojom::blink::CursorType::kRowResize));
211   return c;
212 }
213 
MiddlePanningCursor()214 const ui::Cursor& MiddlePanningCursor() {
215   DEFINE_STATIC_LOCAL(ui::Cursor, c,
216                       (ui::mojom::blink::CursorType::kMiddlePanning));
217   return c;
218 }
219 
MiddlePanningVerticalCursor()220 const ui::Cursor& MiddlePanningVerticalCursor() {
221   DEFINE_STATIC_LOCAL(ui::Cursor, c,
222                       (ui::mojom::blink::CursorType::kMiddlePanningVertical));
223   return c;
224 }
225 
MiddlePanningHorizontalCursor()226 const ui::Cursor& MiddlePanningHorizontalCursor() {
227   DEFINE_STATIC_LOCAL(ui::Cursor, c,
228                       (ui::mojom::blink::CursorType::kMiddlePanningHorizontal));
229   return c;
230 }
231 
EastPanningCursor()232 const ui::Cursor& EastPanningCursor() {
233   DEFINE_STATIC_LOCAL(ui::Cursor, c,
234                       (ui::mojom::blink::CursorType::kEastPanning));
235   return c;
236 }
237 
NorthPanningCursor()238 const ui::Cursor& NorthPanningCursor() {
239   DEFINE_STATIC_LOCAL(ui::Cursor, c,
240                       (ui::mojom::blink::CursorType::kNorthPanning));
241   return c;
242 }
243 
NorthEastPanningCursor()244 const ui::Cursor& NorthEastPanningCursor() {
245   DEFINE_STATIC_LOCAL(ui::Cursor, c,
246                       (ui::mojom::blink::CursorType::kNorthEastPanning));
247   return c;
248 }
249 
NorthWestPanningCursor()250 const ui::Cursor& NorthWestPanningCursor() {
251   DEFINE_STATIC_LOCAL(ui::Cursor, c,
252                       (ui::mojom::blink::CursorType::kNorthWestPanning));
253   return c;
254 }
255 
SouthPanningCursor()256 const ui::Cursor& SouthPanningCursor() {
257   DEFINE_STATIC_LOCAL(ui::Cursor, c,
258                       (ui::mojom::blink::CursorType::kSouthPanning));
259   return c;
260 }
261 
SouthEastPanningCursor()262 const ui::Cursor& SouthEastPanningCursor() {
263   DEFINE_STATIC_LOCAL(ui::Cursor, c,
264                       (ui::mojom::blink::CursorType::kSouthEastPanning));
265   return c;
266 }
267 
SouthWestPanningCursor()268 const ui::Cursor& SouthWestPanningCursor() {
269   DEFINE_STATIC_LOCAL(ui::Cursor, c,
270                       (ui::mojom::blink::CursorType::kSouthWestPanning));
271   return c;
272 }
273 
WestPanningCursor()274 const ui::Cursor& WestPanningCursor() {
275   DEFINE_STATIC_LOCAL(ui::Cursor, c,
276                       (ui::mojom::blink::CursorType::kWestPanning));
277   return c;
278 }
279 
GrabCursor()280 const ui::Cursor& GrabCursor() {
281   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kGrab));
282   return c;
283 }
284 
GrabbingCursor()285 const ui::Cursor& GrabbingCursor() {
286   DEFINE_STATIC_LOCAL(ui::Cursor, c, (ui::mojom::blink::CursorType::kGrabbing));
287   return c;
288 }
289 
290 }  // namespace blink
291