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