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
10 namespace ui {
11
EventTimeFromNative(const PlatformEvent & native_event)12 base::TimeTicks EventTimeFromNative(const PlatformEvent& native_event) {
13 const ui::Event* event = static_cast<const ui::Event*>(native_event);
14 return event->time_stamp();
15 }
16
EventFlagsFromNative(const PlatformEvent & native_event)17 int EventFlagsFromNative(const PlatformEvent& native_event) {
18 const ui::Event* event = static_cast<const ui::Event*>(native_event);
19 return event->flags();
20 }
21
EventTypeFromNative(const PlatformEvent & native_event)22 EventType EventTypeFromNative(const PlatformEvent& native_event) {
23 const ui::Event* event = static_cast<const ui::Event*>(native_event);
24 return event->type();
25 }
26
EventSystemLocationFromNative(const PlatformEvent & native_event)27 gfx::Point EventSystemLocationFromNative(const PlatformEvent& native_event) {
28 const ui::LocatedEvent* e =
29 static_cast<const ui::LocatedEvent*>(native_event);
30 DCHECK(e->IsMouseEvent() || e->IsTouchEvent() || e->IsGestureEvent() ||
31 e->IsScrollEvent());
32 return e->location();
33 }
34
EventLocationFromNative(const PlatformEvent & native_event)35 gfx::PointF EventLocationFromNative(const PlatformEvent& native_event) {
36 const ui::LocatedEvent* e =
37 static_cast<const ui::LocatedEvent*>(native_event);
38 DCHECK(e->IsMouseEvent() || e->IsTouchEvent() || e->IsGestureEvent() ||
39 e->IsScrollEvent());
40 return e->location_f();
41 }
42
GetChangedMouseButtonFlagsFromNative(const PlatformEvent & native_event)43 int GetChangedMouseButtonFlagsFromNative(const PlatformEvent& native_event) {
44 const ui::MouseEvent* event =
45 static_cast<const ui::MouseEvent*>(native_event);
46 DCHECK(event->IsMouseEvent() || event->IsScrollEvent());
47 return event->changed_button_flags();
48 }
49
GetMousePointerDetailsFromNative(const PlatformEvent & native_event)50 PointerDetails GetMousePointerDetailsFromNative(
51 const PlatformEvent& native_event) {
52 const ui::MouseEvent* event =
53 static_cast<const ui::MouseEvent*>(native_event);
54 DCHECK(event->IsMouseEvent() || event->IsScrollEvent());
55 PointerDetails pointer_detail = event->pointer_details();
56 pointer_detail.id = kPointerIdMouse;
57 return pointer_detail;
58 }
59
KeyboardCodeFromNative(const PlatformEvent & native_event)60 KeyboardCode KeyboardCodeFromNative(const PlatformEvent& native_event) {
61 const ui::KeyEvent* event = static_cast<const ui::KeyEvent*>(native_event);
62 DCHECK(event->IsKeyEvent());
63 return event->key_code();
64 }
65
CodeFromNative(const PlatformEvent & native_event)66 DomCode CodeFromNative(const PlatformEvent& native_event) {
67 const ui::KeyEvent* event = static_cast<const ui::KeyEvent*>(native_event);
68 DCHECK(event->IsKeyEvent());
69 return event->code();
70 }
71
IsCharFromNative(const PlatformEvent & native_event)72 bool IsCharFromNative(const PlatformEvent& native_event) {
73 const ui::KeyEvent* event = static_cast<const ui::KeyEvent*>(native_event);
74 DCHECK(event->IsKeyEvent());
75 return event->is_char();
76 }
77
GetMouseWheelOffset(const PlatformEvent & native_event)78 gfx::Vector2d GetMouseWheelOffset(const PlatformEvent& native_event) {
79 const ui::MouseWheelEvent* event =
80 static_cast<const ui::MouseWheelEvent*>(native_event);
81 DCHECK(event->type() == ET_MOUSEWHEEL);
82 return event->offset();
83 }
84
CopyNativeEvent(const PlatformEvent & event)85 PlatformEvent CopyNativeEvent(const PlatformEvent& event) {
86 return NULL;
87 }
88
ReleaseCopiedNativeEvent(const PlatformEvent & event)89 void ReleaseCopiedNativeEvent(const PlatformEvent& event) {}
90
GetTouchPointerDetailsFromNative(const PlatformEvent & native_event)91 PointerDetails GetTouchPointerDetailsFromNative(
92 const PlatformEvent& native_event) {
93 const ui::TouchEvent* event =
94 static_cast<const ui::TouchEvent*>(native_event);
95 DCHECK(event->IsTouchEvent());
96 return event->pointer_details();
97 }
98
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)99 bool GetScrollOffsets(const PlatformEvent& native_event,
100 float* x_offset,
101 float* y_offset,
102 float* x_offset_ordinal,
103 float* y_offset_ordinal,
104 int* finger_count,
105 EventMomentumPhase* momentum_phase) {
106 const ui::ScrollEvent* event =
107 static_cast<const ui::ScrollEvent*>(native_event);
108 DCHECK(event->IsScrollEvent());
109 if (x_offset)
110 *x_offset = event->x_offset();
111 if (y_offset)
112 *y_offset = event->y_offset();
113 if (x_offset_ordinal)
114 *x_offset_ordinal = event->x_offset_ordinal();
115 if (y_offset_ordinal)
116 *y_offset_ordinal = event->y_offset_ordinal();
117 if (finger_count)
118 *finger_count = event->finger_count();
119 if (momentum_phase)
120 *momentum_phase = event->momentum_phase();
121
122 return true;
123 }
124
GetFlingData(const PlatformEvent & native_event,float * vx,float * vy,float * vx_ordinal,float * vy_ordinal,bool * is_cancel)125 bool GetFlingData(const PlatformEvent& native_event,
126 float* vx,
127 float* vy,
128 float* vx_ordinal,
129 float* vy_ordinal,
130 bool* is_cancel) {
131 const ui::ScrollEvent* event =
132 static_cast<const ui::ScrollEvent*>(native_event);
133 DCHECK(event->IsScrollEvent());
134 if (vx)
135 *vx = event->x_offset();
136 if (vy)
137 *vy = event->y_offset();
138 if (vx_ordinal)
139 *vx_ordinal = event->x_offset_ordinal();
140 if (vy_ordinal)
141 *vy_ordinal = event->y_offset_ordinal();
142 if (is_cancel)
143 *is_cancel = event->type() == ET_SCROLL_FLING_CANCEL;
144
145 return true;
146 }
147
148 } // namespace ui
149