1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ui/events/event.h"
6 #include "ui/events/event_constants.h"
7 #include "ui/events/event_utils.h"
8 #include "ui/events/types/event_type.h"
9 #include "ui/gfx/geometry/vector2d_f.h"
10
11 namespace ui {
12
EventTimeFromNative(const PlatformEvent & native_event)13 base::TimeTicks EventTimeFromNative(const PlatformEvent& native_event) {
14 const ui::Event* event = static_cast<const ui::Event*>(native_event);
15 return event->time_stamp();
16 }
17
EventFlagsFromNative(const PlatformEvent & native_event)18 int EventFlagsFromNative(const PlatformEvent& native_event) {
19 const ui::Event* event = static_cast<const ui::Event*>(native_event);
20 return event->flags();
21 }
22
EventTypeFromNative(const PlatformEvent & native_event)23 EventType EventTypeFromNative(const PlatformEvent& native_event) {
24 const ui::Event* event = static_cast<const ui::Event*>(native_event);
25 return event->type();
26 }
27
EventSystemLocationFromNative(const PlatformEvent & native_event)28 gfx::Point EventSystemLocationFromNative(const PlatformEvent& native_event) {
29 const ui::LocatedEvent* e =
30 static_cast<const ui::LocatedEvent*>(native_event);
31 DCHECK(e->IsMouseEvent() || e->IsTouchEvent() || e->IsGestureEvent() ||
32 e->IsScrollEvent());
33 return e->location();
34 }
35
EventLocationFromNative(const PlatformEvent & native_event)36 gfx::PointF EventLocationFromNative(const PlatformEvent& native_event) {
37 const ui::LocatedEvent* e =
38 static_cast<const ui::LocatedEvent*>(native_event);
39 DCHECK(e->IsMouseEvent() || e->IsTouchEvent() || e->IsGestureEvent() ||
40 e->IsScrollEvent());
41 return e->location_f();
42 }
43
GetChangedMouseButtonFlagsFromNative(const PlatformEvent & native_event)44 int GetChangedMouseButtonFlagsFromNative(const PlatformEvent& native_event) {
45 const ui::MouseEvent* event =
46 static_cast<const ui::MouseEvent*>(native_event);
47 DCHECK(event->IsMouseEvent() || event->IsScrollEvent());
48 return event->changed_button_flags();
49 }
50
GetMousePointerDetailsFromNative(const PlatformEvent & native_event)51 PointerDetails GetMousePointerDetailsFromNative(
52 const PlatformEvent& native_event) {
53 const ui::MouseEvent* event =
54 static_cast<const ui::MouseEvent*>(native_event);
55 DCHECK(event->IsMouseEvent() || event->IsScrollEvent());
56 PointerDetails pointer_detail = event->pointer_details();
57 pointer_detail.id = kPointerIdMouse;
58 return pointer_detail;
59 }
60
GetMouseMovementFromNative(const PlatformEvent & native_event)61 const gfx::Vector2dF& GetMouseMovementFromNative(
62 const PlatformEvent& native_event) {
63 DCHECK(native_event->IsMouseEvent() || native_event->IsScrollEvent());
64 const ui::MouseEvent* event =
65 static_cast<const ui::MouseEvent*>(native_event);
66 return event->movement();
67 }
68
KeyboardCodeFromNative(const PlatformEvent & native_event)69 KeyboardCode KeyboardCodeFromNative(const PlatformEvent& native_event) {
70 const ui::KeyEvent* event = static_cast<const ui::KeyEvent*>(native_event);
71 DCHECK(event->IsKeyEvent());
72 return event->key_code();
73 }
74
CodeFromNative(const PlatformEvent & native_event)75 DomCode CodeFromNative(const PlatformEvent& native_event) {
76 const ui::KeyEvent* event = static_cast<const ui::KeyEvent*>(native_event);
77 DCHECK(event->IsKeyEvent());
78 return event->code();
79 }
80
IsCharFromNative(const PlatformEvent & native_event)81 bool IsCharFromNative(const PlatformEvent& native_event) {
82 const ui::KeyEvent* event = static_cast<const ui::KeyEvent*>(native_event);
83 DCHECK(event->IsKeyEvent());
84 return event->is_char();
85 }
86
GetMouseWheelOffset(const PlatformEvent & native_event)87 gfx::Vector2d GetMouseWheelOffset(const PlatformEvent& native_event) {
88 const ui::MouseWheelEvent* event =
89 static_cast<const ui::MouseWheelEvent*>(native_event);
90 DCHECK(event->type() == ET_MOUSEWHEEL);
91 return event->offset();
92 }
93
GetMouseWheelTick120ths(const PlatformEvent & native_event)94 gfx::Vector2d GetMouseWheelTick120ths(const PlatformEvent& native_event) {
95 const ui::MouseWheelEvent* event =
96 static_cast<const ui::MouseWheelEvent*>(native_event);
97 DCHECK_EQ(event->type(), ET_MOUSEWHEEL);
98 return event->tick_120ths();
99 }
100
CopyNativeEvent(const PlatformEvent & event)101 PlatformEvent CopyNativeEvent(const PlatformEvent& event) {
102 return NULL;
103 }
104
ReleaseCopiedNativeEvent(const PlatformEvent & event)105 void ReleaseCopiedNativeEvent(const PlatformEvent& event) {}
106
GetTouchPointerDetailsFromNative(const PlatformEvent & native_event)107 PointerDetails GetTouchPointerDetailsFromNative(
108 const PlatformEvent& native_event) {
109 const ui::TouchEvent* event =
110 static_cast<const ui::TouchEvent*>(native_event);
111 DCHECK(event->IsTouchEvent());
112 return event->pointer_details();
113 }
114
GetScrollOffsets(const PlatformEvent & native_event,float * x_offset,float * y_offset,float * x_offset_ordinal,float * y_offset_ordinal,int * finger_count,EventMomentumPhase * momentum_phase)115 bool GetScrollOffsets(const PlatformEvent& native_event,
116 float* x_offset,
117 float* y_offset,
118 float* x_offset_ordinal,
119 float* y_offset_ordinal,
120 int* finger_count,
121 EventMomentumPhase* momentum_phase) {
122 const ui::ScrollEvent* event =
123 static_cast<const ui::ScrollEvent*>(native_event);
124 DCHECK(event->IsScrollEvent());
125 if (x_offset)
126 *x_offset = event->x_offset();
127 if (y_offset)
128 *y_offset = event->y_offset();
129 if (x_offset_ordinal)
130 *x_offset_ordinal = event->x_offset_ordinal();
131 if (y_offset_ordinal)
132 *y_offset_ordinal = event->y_offset_ordinal();
133 if (finger_count)
134 *finger_count = event->finger_count();
135 if (momentum_phase)
136 *momentum_phase = event->momentum_phase();
137
138 return true;
139 }
140
GetFlingData(const PlatformEvent & native_event,float * vx,float * vy,float * vx_ordinal,float * vy_ordinal,bool * is_cancel)141 bool GetFlingData(const PlatformEvent& native_event,
142 float* vx,
143 float* vy,
144 float* vx_ordinal,
145 float* vy_ordinal,
146 bool* is_cancel) {
147 const ui::ScrollEvent* event =
148 static_cast<const ui::ScrollEvent*>(native_event);
149 DCHECK(event->IsScrollEvent());
150 if (vx)
151 *vx = event->x_offset();
152 if (vy)
153 *vy = event->y_offset();
154 if (vx_ordinal)
155 *vx_ordinal = event->x_offset_ordinal();
156 if (vy_ordinal)
157 *vy_ordinal = event->y_offset_ordinal();
158 if (is_cancel)
159 *is_cancel = event->type() == ET_SCROLL_FLING_CANCEL;
160
161 return true;
162 }
163
164 } // namespace ui
165