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 #ifndef UI_EVENTS_GESTURE_DETECTION_UI_MOTION_EVENT_GENERIC_H_ 6 #define UI_EVENTS_GESTURE_DETECTION_UI_MOTION_EVENT_GENERIC_H_ 7 8 #include "base/basictypes.h" 9 #include "base/containers/stack_container.h" 10 #include "ui/events/gesture_detection/gesture_detection_export.h" 11 #include "ui/events/gesture_detection/motion_event.h" 12 13 namespace ui { 14 15 struct GESTURE_DETECTION_EXPORT PointerProperties { 16 PointerProperties(); 17 PointerProperties(float x, float y); 18 19 int id; 20 MotionEvent::ToolType tool_type; 21 float x; 22 float y; 23 float raw_x; 24 float raw_y; 25 float pressure; 26 float touch_major; 27 float touch_minor; 28 float orientation; 29 }; 30 31 // A generic MotionEvent implementation. 32 class GESTURE_DETECTION_EXPORT MotionEventGeneric : public MotionEvent { 33 public: 34 MotionEventGeneric(Action action, 35 base::TimeTicks event_time, 36 const PointerProperties& pointer); 37 MotionEventGeneric(const MotionEventGeneric& other); 38 39 virtual ~MotionEventGeneric(); 40 41 // MotionEvent implementation. 42 virtual int GetId() const OVERRIDE; 43 virtual Action GetAction() const OVERRIDE; 44 virtual int GetActionIndex() const OVERRIDE; 45 virtual size_t GetPointerCount() const OVERRIDE; 46 virtual int GetPointerId(size_t pointer_index) const OVERRIDE; 47 virtual float GetX(size_t pointer_index) const OVERRIDE; 48 virtual float GetY(size_t pointer_index) const OVERRIDE; 49 virtual float GetRawX(size_t pointer_index) const OVERRIDE; 50 virtual float GetRawY(size_t pointer_index) const OVERRIDE; 51 virtual float GetTouchMajor(size_t pointer_index) const OVERRIDE; 52 virtual float GetTouchMinor(size_t pointer_index) const OVERRIDE; 53 virtual float GetOrientation(size_t pointer_index) const OVERRIDE; 54 virtual float GetPressure(size_t pointer_index) const OVERRIDE; 55 virtual ToolType GetToolType(size_t pointer_index) const OVERRIDE; 56 virtual int GetButtonState() const OVERRIDE; 57 virtual int GetFlags() const OVERRIDE; 58 virtual base::TimeTicks GetEventTime() const OVERRIDE; 59 virtual scoped_ptr<MotionEvent> Clone() const OVERRIDE; 60 virtual scoped_ptr<MotionEvent> Cancel() const OVERRIDE; 61 62 void PushPointer(const PointerProperties& pointer); 63 set_action(Action action)64 void set_action(Action action) { action_ = action; } set_event_time(base::TimeTicks event_time)65 void set_event_time(base::TimeTicks event_time) { event_time_ = event_time; } set_id(int id)66 void set_id(int id) { id_ = id; } set_action_index(int action_index)67 void set_action_index(int action_index) { action_index_ = action_index; } set_button_state(int button_state)68 void set_button_state(int button_state) { button_state_ = button_state; } set_flags(int flags)69 void set_flags(int flags) { flags_ = flags; } 70 71 protected: 72 MotionEventGeneric(); 73 74 void PopPointer(); 75 pointer(size_t index)76 PointerProperties& pointer(size_t index) { return pointers_[index]; } pointer(size_t index)77 const PointerProperties& pointer(size_t index) const { 78 return pointers_[index]; 79 } 80 81 private: 82 enum { kTypicalMaxPointerCount = 5 }; 83 84 Action action_; 85 base::TimeTicks event_time_; 86 int id_; 87 int action_index_; 88 int button_state_; 89 int flags_; 90 base::StackVector<PointerProperties, kTypicalMaxPointerCount> pointers_; 91 }; 92 93 } // namespace ui 94 95 #endif // UI_EVENTS_GESTURE_DETECTION_UI_MOTION_EVENT_GENERIC_H_ 96