motion_event_generic.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1// Copyright 2014 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/gesture_detection/motion_event_generic.h"
6
7#include "base/logging.h"
8
9namespace ui {
10
11PointerProperties::PointerProperties()
12    : id(0),
13      tool_type(MotionEvent::TOOL_TYPE_UNKNOWN),
14      x(0),
15      y(0),
16      raw_x(0),
17      raw_y(0),
18      pressure(0),
19      touch_major(0),
20      touch_minor(0),
21      orientation(0) {
22}
23
24PointerProperties::PointerProperties(float x, float y)
25    : id(0),
26      tool_type(MotionEvent::TOOL_TYPE_UNKNOWN),
27      x(x),
28      y(y),
29      raw_x(x),
30      raw_y(y),
31      pressure(0),
32      touch_major(0),
33      touch_minor(0),
34      orientation(0) {
35}
36
37MotionEventGeneric::MotionEventGeneric()
38    : action_(ACTION_CANCEL),
39      id_(0),
40      action_index_(0),
41      button_state_(0),
42      flags_(0) {
43}
44
45MotionEventGeneric::MotionEventGeneric(Action action,
46                                       base::TimeTicks event_time,
47                                       const PointerProperties& pointer)
48    : action_(action),
49      event_time_(event_time),
50      id_(0),
51      action_index_(0),
52      button_state_(0),
53      flags_(0) {
54  PushPointer(pointer);
55}
56
57MotionEventGeneric::MotionEventGeneric(const MotionEventGeneric& other)
58    : action_(other.action_),
59      event_time_(other.event_time_),
60      id_(other.id_),
61      action_index_(other.action_index_),
62      button_state_(other.button_state_),
63      flags_(other.flags_),
64      pointers_(other.pointers_) {
65}
66
67MotionEventGeneric::~MotionEventGeneric() {
68}
69
70int MotionEventGeneric::GetId() const {
71  return id_;
72}
73
74MotionEvent::Action MotionEventGeneric::GetAction() const {
75  return action_;
76}
77
78int MotionEventGeneric::GetActionIndex() const {
79  return action_index_;
80}
81
82size_t MotionEventGeneric::GetPointerCount() const {
83  return pointers_->size();
84}
85
86int MotionEventGeneric::GetPointerId(size_t pointer_index) const {
87  DCHECK_LT(pointer_index, pointers_->size());
88  return pointers_[pointer_index].id;
89}
90
91float MotionEventGeneric::GetX(size_t pointer_index) const {
92  DCHECK_LT(pointer_index, pointers_->size());
93  return pointers_[pointer_index].x;
94}
95
96float MotionEventGeneric::GetY(size_t pointer_index) const {
97  DCHECK_LT(pointer_index, pointers_->size());
98  return pointers_[pointer_index].y;
99}
100
101float MotionEventGeneric::GetRawX(size_t pointer_index) const {
102  DCHECK_LT(pointer_index, pointers_->size());
103  return pointers_[pointer_index].raw_x;
104}
105
106float MotionEventGeneric::GetRawY(size_t pointer_index) const {
107  DCHECK_LT(pointer_index, pointers_->size());
108  return pointers_[pointer_index].raw_y;
109}
110
111float MotionEventGeneric::GetTouchMajor(size_t pointer_index) const {
112  DCHECK_LT(pointer_index, pointers_->size());
113  return pointers_[pointer_index].touch_major;
114}
115
116float MotionEventGeneric::GetTouchMinor(size_t pointer_index) const {
117  DCHECK_LT(pointer_index, pointers_->size());
118  return pointers_[pointer_index].touch_minor;
119}
120
121float MotionEventGeneric::GetOrientation(size_t pointer_index) const {
122  DCHECK_LT(pointer_index, pointers_->size());
123  return pointers_[pointer_index].orientation;
124}
125
126float MotionEventGeneric::GetPressure(size_t pointer_index) const {
127  DCHECK_LT(pointer_index, pointers_->size());
128  return pointers_[pointer_index].pressure;
129}
130
131MotionEvent::ToolType MotionEventGeneric::GetToolType(
132    size_t pointer_index) const {
133  DCHECK_LT(pointer_index, pointers_->size());
134  return pointers_[pointer_index].tool_type;
135}
136
137int MotionEventGeneric::GetButtonState() const {
138  return button_state_;
139}
140
141int MotionEventGeneric::GetFlags() const {
142  return flags_;
143}
144
145base::TimeTicks MotionEventGeneric::GetEventTime() const {
146  return event_time_;
147}
148
149scoped_ptr<MotionEvent> MotionEventGeneric::Clone() const {
150  return scoped_ptr<MotionEvent>(new MotionEventGeneric(*this));
151}
152
153scoped_ptr<MotionEvent> MotionEventGeneric::Cancel() const {
154  scoped_ptr<MotionEventGeneric> event(new MotionEventGeneric(*this));
155  event->set_action(ACTION_CANCEL);
156  return event.PassAs<MotionEvent>();
157}
158
159void MotionEventGeneric::PushPointer(const PointerProperties& pointer) {
160  pointers_->push_back(pointer);
161}
162
163void MotionEventGeneric::PopPointer() {
164  DCHECK_GT(pointers_->size(), 0U);
165  pointers_->pop_back();
166}
167
168}  // namespace ui
169