Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(220)

Side by Side Diff: services/ui/public/interfaces/cursor/cursor_struct_traits.cc

Issue 2833163002: Change ui cursor identifiers to an enum class. (Closed)
Patch Set: OK, it can't be explicit for mac. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "services/ui/public/interfaces/cursor/cursor_struct_traits.h" 5 #include "services/ui/public/interfaces/cursor/cursor_struct_traits.h"
6 6
7 #include "base/time/time.h" 7 #include "base/time/time.h"
8 #include "mojo/common/common_custom_types_struct_traits.h" 8 #include "mojo/common/common_custom_types_struct_traits.h"
9 #include "services/ui/public/interfaces/cursor/cursor.mojom.h"
9 #include "skia/public/interfaces/bitmap_array_struct_traits.h" 10 #include "skia/public/interfaces/bitmap_array_struct_traits.h"
10 #include "skia/public/interfaces/bitmap_skbitmap_struct_traits.h" 11 #include "skia/public/interfaces/bitmap_skbitmap_struct_traits.h"
11 #include "third_party/skia/include/core/SkBitmap.h" 12 #include "third_party/skia/include/core/SkBitmap.h"
12 #include "ui/base/cursor/cursor.h" 13 #include "ui/base/cursor/cursor.h"
13 #include "ui/gfx/geometry/mojo/geometry_struct_traits.h" 14 #include "ui/gfx/geometry/mojo/geometry_struct_traits.h"
14 15
15 namespace mojo { 16 namespace mojo {
16 17
17 // static 18 // static
19 ui::mojom::CursorType
20 EnumTraits<ui::mojom::CursorType, ui::CursorType>::ToMojom(
21 ui::CursorType input) {
22 switch (input) {
23 case ui::CursorType::kNull:
24 return ui::mojom::CursorType::kNull;
25 case ui::CursorType::kPointer:
26 return ui::mojom::CursorType::kPointer;
27 case ui::CursorType::kCross:
28 return ui::mojom::CursorType::kCross;
29 case ui::CursorType::kHand:
30 return ui::mojom::CursorType::kHand;
31 case ui::CursorType::kIBeam:
32 return ui::mojom::CursorType::kIBeam;
33 case ui::CursorType::kWait:
34 return ui::mojom::CursorType::kWait;
35 case ui::CursorType::kHelp:
36 return ui::mojom::CursorType::kHelp;
37 case ui::CursorType::kEastResize:
38 return ui::mojom::CursorType::kEastResize;
39 case ui::CursorType::kNorthResize:
40 return ui::mojom::CursorType::kNorthResize;
41 case ui::CursorType::kNorthEastResize:
42 return ui::mojom::CursorType::kNorthEastResize;
43 case ui::CursorType::kNorthWestResize:
44 return ui::mojom::CursorType::kNorthWestResize;
45 case ui::CursorType::kSouthResize:
46 return ui::mojom::CursorType::kSouthResize;
47 case ui::CursorType::kSouthEastResize:
48 return ui::mojom::CursorType::kSouthEastResize;
49 case ui::CursorType::kSouthWestResize:
50 return ui::mojom::CursorType::kSouthWestResize;
51 case ui::CursorType::kWestResize:
52 return ui::mojom::CursorType::kWestResize;
53 case ui::CursorType::kNorthSouthResize:
54 return ui::mojom::CursorType::kNorthSouthResize;
55 case ui::CursorType::kEastWestResize:
56 return ui::mojom::CursorType::kEastWestResize;
57 case ui::CursorType::kNorthEastSouthWestResize:
58 return ui::mojom::CursorType::kNorthEastSouthWestResize;
59 case ui::CursorType::kNorthWestSouthEastResize:
60 return ui::mojom::CursorType::kNorthWestSouthEastResize;
61 case ui::CursorType::kColumnResize:
62 return ui::mojom::CursorType::kColumnResize;
63 case ui::CursorType::kRowResize:
64 return ui::mojom::CursorType::kRowResize;
65 case ui::CursorType::kMiddlePanning:
66 return ui::mojom::CursorType::kMiddlePanning;
67 case ui::CursorType::kEastPanning:
68 return ui::mojom::CursorType::kEastPanning;
69 case ui::CursorType::kNorthPanning:
70 return ui::mojom::CursorType::kNorthPanning;
71 case ui::CursorType::kNorthEastPanning:
72 return ui::mojom::CursorType::kNorthEastPanning;
73 case ui::CursorType::kNorthWestPanning:
74 return ui::mojom::CursorType::kNorthWestPanning;
75 case ui::CursorType::kSouthPanning:
76 return ui::mojom::CursorType::kSouthPanning;
77 case ui::CursorType::kSouthEastPanning:
78 return ui::mojom::CursorType::kSouthEastPanning;
79 case ui::CursorType::kSouthWestPanning:
80 return ui::mojom::CursorType::kSouthWestPanning;
81 case ui::CursorType::kWestPanning:
82 return ui::mojom::CursorType::kWestPanning;
83 case ui::CursorType::kMove:
84 return ui::mojom::CursorType::kMove;
85 case ui::CursorType::kVerticalText:
86 return ui::mojom::CursorType::kVerticalText;
87 case ui::CursorType::kCell:
88 return ui::mojom::CursorType::kCell;
89 case ui::CursorType::kContextMenu:
90 return ui::mojom::CursorType::kContextMenu;
91 case ui::CursorType::kAlias:
92 return ui::mojom::CursorType::kAlias;
93 case ui::CursorType::kProgress:
94 return ui::mojom::CursorType::kProgress;
95 case ui::CursorType::kNoDrop:
96 return ui::mojom::CursorType::kNoDrop;
97 case ui::CursorType::kCopy:
98 return ui::mojom::CursorType::kCopy;
99 case ui::CursorType::kNone:
100 return ui::mojom::CursorType::kNone;
101 case ui::CursorType::kNotAllowed:
102 return ui::mojom::CursorType::kNotAllowed;
103 case ui::CursorType::kZoomIn:
104 return ui::mojom::CursorType::kZoomIn;
105 case ui::CursorType::kZoomOut:
106 return ui::mojom::CursorType::kZoomOut;
107 case ui::CursorType::kGrab:
108 return ui::mojom::CursorType::kGrab;
109 case ui::CursorType::kGrabbing:
110 return ui::mojom::CursorType::kGrabbing;
111 case ui::CursorType::kCustom:
112 return ui::mojom::CursorType::kCustom;
113 case ui::CursorType::kDndNone:
114 case ui::CursorType::kDndMove:
115 case ui::CursorType::kDndCopy:
116 case ui::CursorType::kDndLink:
117 // The mojom version is the same as the restricted Webcursor constants;
118 // don't allow system cursors to be transmitted.
119 NOTREACHED();
120 return ui::mojom::CursorType::kNull;
121 }
122 NOTREACHED();
123 return ui::mojom::CursorType::kNull;
124 }
125
126 // static
127 bool EnumTraits<ui::mojom::CursorType, ui::CursorType>::FromMojom(
128 ui::mojom::CursorType input,
129 ui::CursorType* out) {
130 switch (input) {
131 case ui::mojom::CursorType::kNull:
132 *out = ui::CursorType::kNull;
133 return true;
134 case ui::mojom::CursorType::kPointer:
135 *out = ui::CursorType::kPointer;
136 return true;
137 case ui::mojom::CursorType::kCross:
138 *out = ui::CursorType::kCross;
139 return true;
140 case ui::mojom::CursorType::kHand:
141 *out = ui::CursorType::kHand;
142 return true;
143 case ui::mojom::CursorType::kIBeam:
144 *out = ui::CursorType::kIBeam;
145 return true;
146 case ui::mojom::CursorType::kWait:
147 *out = ui::CursorType::kWait;
148 return true;
149 case ui::mojom::CursorType::kHelp:
150 *out = ui::CursorType::kHelp;
151 return true;
152 case ui::mojom::CursorType::kEastResize:
153 *out = ui::CursorType::kEastResize;
154 return true;
155 case ui::mojom::CursorType::kNorthResize:
156 *out = ui::CursorType::kNorthResize;
157 return true;
158 case ui::mojom::CursorType::kNorthEastResize:
159 *out = ui::CursorType::kNorthEastResize;
160 return true;
161 case ui::mojom::CursorType::kNorthWestResize:
162 *out = ui::CursorType::kNorthWestResize;
163 return true;
164 case ui::mojom::CursorType::kSouthResize:
165 *out = ui::CursorType::kSouthResize;
166 return true;
167 case ui::mojom::CursorType::kSouthEastResize:
168 *out = ui::CursorType::kSouthEastResize;
169 return true;
170 case ui::mojom::CursorType::kSouthWestResize:
171 *out = ui::CursorType::kSouthWestResize;
172 return true;
173 case ui::mojom::CursorType::kWestResize:
174 *out = ui::CursorType::kWestResize;
175 return true;
176 case ui::mojom::CursorType::kNorthSouthResize:
177 *out = ui::CursorType::kNorthSouthResize;
178 return true;
179 case ui::mojom::CursorType::kEastWestResize:
180 *out = ui::CursorType::kEastWestResize;
181 return true;
182 case ui::mojom::CursorType::kNorthEastSouthWestResize:
183 *out = ui::CursorType::kNorthEastSouthWestResize;
184 return true;
185 case ui::mojom::CursorType::kNorthWestSouthEastResize:
186 *out = ui::CursorType::kNorthWestSouthEastResize;
187 return true;
188 case ui::mojom::CursorType::kColumnResize:
189 *out = ui::CursorType::kColumnResize;
190 return true;
191 case ui::mojom::CursorType::kRowResize:
192 *out = ui::CursorType::kRowResize;
193 return true;
194 case ui::mojom::CursorType::kMiddlePanning:
195 *out = ui::CursorType::kMiddlePanning;
196 return true;
197 case ui::mojom::CursorType::kEastPanning:
198 *out = ui::CursorType::kEastPanning;
199 return true;
200 case ui::mojom::CursorType::kNorthPanning:
201 *out = ui::CursorType::kNorthPanning;
202 return true;
203 case ui::mojom::CursorType::kNorthEastPanning:
204 *out = ui::CursorType::kNorthEastPanning;
205 return true;
206 case ui::mojom::CursorType::kNorthWestPanning:
207 *out = ui::CursorType::kNorthWestPanning;
208 return true;
209 case ui::mojom::CursorType::kSouthPanning:
210 *out = ui::CursorType::kSouthPanning;
211 return true;
212 case ui::mojom::CursorType::kSouthEastPanning:
213 *out = ui::CursorType::kSouthEastPanning;
214 return true;
215 case ui::mojom::CursorType::kSouthWestPanning:
216 *out = ui::CursorType::kSouthWestPanning;
217 return true;
218 case ui::mojom::CursorType::kWestPanning:
219 *out = ui::CursorType::kWestPanning;
220 return true;
221 case ui::mojom::CursorType::kMove:
222 *out = ui::CursorType::kMove;
223 return true;
224 case ui::mojom::CursorType::kVerticalText:
225 *out = ui::CursorType::kVerticalText;
226 return true;
227 case ui::mojom::CursorType::kCell:
228 *out = ui::CursorType::kCell;
229 return true;
230 case ui::mojom::CursorType::kContextMenu:
231 *out = ui::CursorType::kContextMenu;
232 return true;
233 case ui::mojom::CursorType::kAlias:
234 *out = ui::CursorType::kAlias;
235 return true;
236 case ui::mojom::CursorType::kProgress:
237 *out = ui::CursorType::kProgress;
238 return true;
239 case ui::mojom::CursorType::kNoDrop:
240 *out = ui::CursorType::kNoDrop;
241 return true;
242 case ui::mojom::CursorType::kCopy:
243 *out = ui::CursorType::kCopy;
244 return true;
245 case ui::mojom::CursorType::kNone:
246 *out = ui::CursorType::kNone;
247 return true;
248 case ui::mojom::CursorType::kNotAllowed:
249 *out = ui::CursorType::kNotAllowed;
250 return true;
251 case ui::mojom::CursorType::kZoomIn:
252 *out = ui::CursorType::kZoomIn;
253 return true;
254 case ui::mojom::CursorType::kZoomOut:
255 *out = ui::CursorType::kZoomOut;
256 return true;
257 case ui::mojom::CursorType::kGrab:
258 *out = ui::CursorType::kGrab;
259 return true;
260 case ui::mojom::CursorType::kGrabbing:
261 *out = ui::CursorType::kGrabbing;
262 return true;
263 case ui::mojom::CursorType::kCustom:
264 *out = ui::CursorType::kCustom;
265 return true;
266 }
267
268 NOTREACHED();
269 return false;
270 }
271
272 // static
18 const base::TimeDelta& 273 const base::TimeDelta&
19 StructTraits<ui::mojom::CursorDataDataView, ui::CursorData>::frame_delay( 274 StructTraits<ui::mojom::CursorDataDataView, ui::CursorData>::frame_delay(
20 const ui::CursorData& c) { 275 const ui::CursorData& c) {
21 return c.frame_delay(); 276 return c.frame_delay();
22 } 277 }
23 278
24 // static 279 // static
25 const gfx::Point& 280 const gfx::Point&
26 StructTraits<ui::mojom::CursorDataDataView, ui::CursorData>::hotspot_in_pixels( 281 StructTraits<ui::mojom::CursorDataDataView, ui::CursorData>::hotspot_in_pixels(
27 const ui::CursorData& c) { 282 const ui::CursorData& c) {
28 return c.hotspot_in_pixels(); 283 return c.hotspot_in_pixels();
29 } 284 }
30 285
31 // static 286 // static
32 const std::vector<SkBitmap>& 287 const std::vector<SkBitmap>&
33 StructTraits<ui::mojom::CursorDataDataView, ui::CursorData>::cursor_frames( 288 StructTraits<ui::mojom::CursorDataDataView, ui::CursorData>::cursor_frames(
34 const ui::CursorData& c) { 289 const ui::CursorData& c) {
35 return c.cursor_frames(); 290 return c.cursor_frames();
36 } 291 }
37 292
38 // static 293 // static
39 bool StructTraits<ui::mojom::CursorDataDataView, ui::CursorData>::Read( 294 bool StructTraits<ui::mojom::CursorDataDataView, ui::CursorData>::Read(
40 ui::mojom::CursorDataDataView data, 295 ui::mojom::CursorDataDataView data,
41 ui::CursorData* out) { 296 ui::CursorData* out) {
42 ui::mojom::CursorType type = data.cursor_type(); 297 ui::CursorType type;
43 if (type != ui::mojom::CursorType::CUSTOM) { 298 if (!data.ReadCursorType(&type))
44 *out = ui::CursorData(static_cast<int>(type)); 299 return false;
300
301 if (type != ui::CursorType::kCustom) {
302 *out = ui::CursorData(type);
45 return true; 303 return true;
46 } 304 }
47 305
48 gfx::Point hotspot_in_pixels; 306 gfx::Point hotspot_in_pixels;
49 std::vector<SkBitmap> cursor_frames; 307 std::vector<SkBitmap> cursor_frames;
50 float scale_factor = data.scale_factor(); 308 float scale_factor = data.scale_factor();
51 base::TimeDelta frame_delay; 309 base::TimeDelta frame_delay;
52 310
53 if (!data.ReadHotspotInPixels(&hotspot_in_pixels) || 311 if (!data.ReadHotspotInPixels(&hotspot_in_pixels) ||
54 !data.ReadCursorFrames(&cursor_frames) || 312 !data.ReadCursorFrames(&cursor_frames) ||
55 !data.ReadFrameDelay(&frame_delay)) { 313 !data.ReadFrameDelay(&frame_delay)) {
56 return false; 314 return false;
57 } 315 }
58 316
59 *out = ui::CursorData(hotspot_in_pixels, cursor_frames, scale_factor, 317 *out = ui::CursorData(hotspot_in_pixels, cursor_frames, scale_factor,
60 frame_delay); 318 frame_delay);
61 return true; 319 return true;
62 } 320 }
63 321
64 } // namespace mojo 322 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698