Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: ui/events/gesture_detection/motion_event_buffer.cc

Issue 494833003: Completed webkit radiusX, radiusY and rotationAngle handling. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/events/gesture_detection/motion_event_buffer.h" 5 #include "ui/events/gesture_detection/motion_event_buffer.h"
6 6
7 #include "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "ui/events/gesture_detection/motion_event.h" 8 #include "ui/events/gesture_detection/motion_event.h"
9 #include "ui/events/gesture_detection/motion_event_generic.h" 9 #include "ui/events/gesture_detection/motion_event_generic.h"
10 10
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 size_t pointer_index) { 90 size_t pointer_index) {
91 PointerProperties result; 91 PointerProperties result;
92 result.id = event.GetPointerId(pointer_index); 92 result.id = event.GetPointerId(pointer_index);
93 result.tool_type = event.GetToolType(pointer_index); 93 result.tool_type = event.GetToolType(pointer_index);
94 result.x = event.GetX(pointer_index); 94 result.x = event.GetX(pointer_index);
95 result.y = event.GetY(pointer_index); 95 result.y = event.GetY(pointer_index);
96 result.raw_x = event.GetRawX(pointer_index); 96 result.raw_x = event.GetRawX(pointer_index);
97 result.raw_y = event.GetRawY(pointer_index); 97 result.raw_y = event.GetRawY(pointer_index);
98 result.pressure = event.GetPressure(pointer_index); 98 result.pressure = event.GetPressure(pointer_index);
99 result.touch_major = event.GetTouchMajor(pointer_index); 99 result.touch_major = event.GetTouchMajor(pointer_index);
100 result.touch_minor = event.GetTouchMinor(pointer_index);
101 result.orientation = event.GetOrientation(pointer_index);
100 return result; 102 return result;
101 } 103 }
102 104
103 PointerProperties ResamplePointer(const MotionEvent& event0, 105 PointerProperties ResamplePointer(const MotionEvent& event0,
104 const MotionEvent& event1, 106 const MotionEvent& event1,
105 size_t event0_pointer_index, 107 size_t event0_pointer_index,
106 size_t event1_pointer_index, 108 size_t event1_pointer_index,
107 float alpha) { 109 float alpha) {
108 DCHECK_EQ(event0.GetPointerId(event0_pointer_index), 110 DCHECK_EQ(event0.GetPointerId(event0_pointer_index),
109 event1.GetPointerId(event1_pointer_index)); 111 event1.GetPointerId(event1_pointer_index));
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 // recent event used as the base event, and prior events used as the history. 169 // recent event used as the base event, and prior events used as the history.
168 class CompoundMotionEvent : public ui::MotionEvent { 170 class CompoundMotionEvent : public ui::MotionEvent {
169 public: 171 public:
170 explicit CompoundMotionEvent(MotionEventVector events) 172 explicit CompoundMotionEvent(MotionEventVector events)
171 : events_(events.Pass()) { 173 : events_(events.Pass()) {
172 DCHECK_GE(events_.size(), 1U); 174 DCHECK_GE(events_.size(), 1U);
173 } 175 }
174 virtual ~CompoundMotionEvent() {} 176 virtual ~CompoundMotionEvent() {}
175 177
176 virtual int GetId() const OVERRIDE { return latest().GetId(); } 178 virtual int GetId() const OVERRIDE { return latest().GetId(); }
179
177 virtual Action GetAction() const OVERRIDE { return latest().GetAction(); } 180 virtual Action GetAction() const OVERRIDE { return latest().GetAction(); }
181
178 virtual int GetActionIndex() const OVERRIDE { 182 virtual int GetActionIndex() const OVERRIDE {
179 return latest().GetActionIndex(); 183 return latest().GetActionIndex();
180 } 184 }
185
181 virtual size_t GetPointerCount() const OVERRIDE { 186 virtual size_t GetPointerCount() const OVERRIDE {
182 return latest().GetPointerCount(); 187 return latest().GetPointerCount();
183 } 188 }
189
184 virtual int GetPointerId(size_t pointer_index) const OVERRIDE { 190 virtual int GetPointerId(size_t pointer_index) const OVERRIDE {
185 return latest().GetPointerId(pointer_index); 191 return latest().GetPointerId(pointer_index);
186 } 192 }
193
187 virtual float GetX(size_t pointer_index) const OVERRIDE { 194 virtual float GetX(size_t pointer_index) const OVERRIDE {
188 return latest().GetX(pointer_index); 195 return latest().GetX(pointer_index);
189 } 196 }
197
190 virtual float GetY(size_t pointer_index) const OVERRIDE { 198 virtual float GetY(size_t pointer_index) const OVERRIDE {
191 return latest().GetY(pointer_index); 199 return latest().GetY(pointer_index);
192 } 200 }
201
193 virtual float GetRawX(size_t pointer_index) const OVERRIDE { 202 virtual float GetRawX(size_t pointer_index) const OVERRIDE {
194 return latest().GetRawX(pointer_index); 203 return latest().GetRawX(pointer_index);
195 } 204 }
205
196 virtual float GetRawY(size_t pointer_index) const OVERRIDE { 206 virtual float GetRawY(size_t pointer_index) const OVERRIDE {
197 return latest().GetRawY(pointer_index); 207 return latest().GetRawY(pointer_index);
198 } 208 }
209
199 virtual float GetTouchMajor(size_t pointer_index) const OVERRIDE { 210 virtual float GetTouchMajor(size_t pointer_index) const OVERRIDE {
200 return latest().GetTouchMajor(pointer_index); 211 return latest().GetTouchMajor(pointer_index);
201 } 212 }
213
214 virtual float GetTouchMinor(size_t pointer_index) const OVERRIDE {
215 return latest().GetTouchMinor(pointer_index);
216 }
217
218 virtual float GetOrientation(size_t pointer_index) const OVERRIDE {
219 return latest().GetOrientation(pointer_index);
220 }
221
202 virtual float GetPressure(size_t pointer_index) const OVERRIDE { 222 virtual float GetPressure(size_t pointer_index) const OVERRIDE {
203 return latest().GetPressure(pointer_index); 223 return latest().GetPressure(pointer_index);
204 } 224 }
225
205 virtual ToolType GetToolType(size_t pointer_index) const OVERRIDE { 226 virtual ToolType GetToolType(size_t pointer_index) const OVERRIDE {
206 return latest().GetToolType(pointer_index); 227 return latest().GetToolType(pointer_index);
207 } 228 }
229
208 virtual int GetButtonState() const OVERRIDE { 230 virtual int GetButtonState() const OVERRIDE {
209 return latest().GetButtonState(); 231 return latest().GetButtonState();
210 } 232 }
233
211 virtual base::TimeTicks GetEventTime() const OVERRIDE { 234 virtual base::TimeTicks GetEventTime() const OVERRIDE {
212 return latest().GetEventTime(); 235 return latest().GetEventTime();
213 } 236 }
237
214 virtual size_t GetHistorySize() const OVERRIDE { return events_.size() - 1; } 238 virtual size_t GetHistorySize() const OVERRIDE { return events_.size() - 1; }
239
215 virtual base::TimeTicks GetHistoricalEventTime( 240 virtual base::TimeTicks GetHistoricalEventTime(
216 size_t historical_index) const OVERRIDE { 241 size_t historical_index) const OVERRIDE {
217 DCHECK_LT(historical_index, GetHistorySize()); 242 DCHECK_LT(historical_index, GetHistorySize());
218 return events_[historical_index]->GetEventTime(); 243 return events_[historical_index]->GetEventTime();
219 } 244 }
245
220 virtual float GetHistoricalTouchMajor( 246 virtual float GetHistoricalTouchMajor(
221 size_t pointer_index, 247 size_t pointer_index,
222 size_t historical_index) const OVERRIDE { 248 size_t historical_index) const OVERRIDE {
223 DCHECK_LT(historical_index, GetHistorySize()); 249 DCHECK_LT(historical_index, GetHistorySize());
224 return events_[historical_index]->GetTouchMajor(); 250 return events_[historical_index]->GetTouchMajor();
225 } 251 }
252
226 virtual float GetHistoricalX(size_t pointer_index, 253 virtual float GetHistoricalX(size_t pointer_index,
227 size_t historical_index) const OVERRIDE { 254 size_t historical_index) const OVERRIDE {
228 DCHECK_LT(historical_index, GetHistorySize()); 255 DCHECK_LT(historical_index, GetHistorySize());
229 return events_[historical_index]->GetX(pointer_index); 256 return events_[historical_index]->GetX(pointer_index);
230 } 257 }
258
231 virtual float GetHistoricalY(size_t pointer_index, 259 virtual float GetHistoricalY(size_t pointer_index,
232 size_t historical_index) const OVERRIDE { 260 size_t historical_index) const OVERRIDE {
233 DCHECK_LT(historical_index, GetHistorySize()); 261 DCHECK_LT(historical_index, GetHistorySize());
234 return events_[historical_index]->GetY(pointer_index); 262 return events_[historical_index]->GetY(pointer_index);
235 } 263 }
264
236 virtual scoped_ptr<MotionEvent> Clone() const OVERRIDE { 265 virtual scoped_ptr<MotionEvent> Clone() const OVERRIDE {
237 MotionEventVector cloned_events; 266 MotionEventVector cloned_events;
238 cloned_events.reserve(events_.size()); 267 cloned_events.reserve(events_.size());
239 for (size_t i = 0; i < events_.size(); ++i) 268 for (size_t i = 0; i < events_.size(); ++i)
240 cloned_events.push_back(events_[i]->Clone().release()); 269 cloned_events.push_back(events_[i]->Clone().release());
241 return scoped_ptr<MotionEvent>( 270 return scoped_ptr<MotionEvent>(
242 new CompoundMotionEvent(cloned_events.Pass())); 271 new CompoundMotionEvent(cloned_events.Pass()));
243 } 272 }
273
244 virtual scoped_ptr<MotionEvent> Cancel() const OVERRIDE { 274 virtual scoped_ptr<MotionEvent> Cancel() const OVERRIDE {
245 return latest().Cancel(); 275 return latest().Cancel();
246 } 276 }
247 277
248 // Returns the new, resampled event, or NULL if none was created. 278 // Returns the new, resampled event, or NULL if none was created.
249 // TODO(jdduke): Revisit resampling to handle cases where alternating frames 279 // TODO(jdduke): Revisit resampling to handle cases where alternating frames
250 // are resampled or resampling is otherwise inconsistent, e.g., a 90hz input 280 // are resampled or resampling is otherwise inconsistent, e.g., a 90hz input
251 // and 60hz frame signal could phase-align such that even frames yield an 281 // and 60hz frame signal could phase-align such that even frames yield an
252 // extrapolated event and odd frames are not resampled, crbug.com/399381. 282 // extrapolated event and odd frames are not resampled, crbug.com/399381.
253 const MotionEvent* TryResample(base::TimeTicks resample_time, 283 const MotionEvent* TryResample(base::TimeTicks resample_time,
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 events.weak_clear(); 453 events.weak_clear();
424 client_->ForwardMotionEvent(*event); 454 client_->ForwardMotionEvent(*event);
425 return; 455 return;
426 } 456 }
427 457
428 CompoundMotionEvent compound_event(events.Pass()); 458 CompoundMotionEvent compound_event(events.Pass());
429 client_->ForwardMotionEvent(compound_event); 459 client_->ForwardMotionEvent(compound_event);
430 } 460 }
431 461
432 } // namespace ui 462 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/gesture_detection/motion_event.cc ('k') | ui/events/gesture_detection/motion_event_buffer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698