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