Index: ui/events/gestures/motion_event_aura.h |
diff --git a/ui/events/gestures/motion_event_aura.h b/ui/events/gestures/motion_event_aura.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..09df62ab1107e38af4f913ad710fcd738e033e77 |
--- /dev/null |
+++ b/ui/events/gestures/motion_event_aura.h |
@@ -0,0 +1,100 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef UI_EVENTS_GESTURE_DETECTION_UI_MOTION_EVENT_H_ |
+#define UI_EVENTS_GESTURE_DETECTION_UI_MOTION_EVENT_H_ |
+ |
+#include "ui/events/gesture_detection/motion_event.h" |
+ |
+#include <map> |
+ |
+#include "base/memory/scoped_ptr.h" |
+#include "base/time/time.h" |
+#include "ui/events/event.h" |
+#include "ui/events/events_export.h" |
+#include "ui/events/gestures/gesture_sequence.h" |
+ |
+namespace ui { |
+ |
+// Implementation of MotionEvent which takes a stream of ui::TouchEvents. |
+class EVENTS_EXPORT MotionEventAura : public MotionEvent { |
+ public: |
+ MotionEventAura(); |
+ virtual ~MotionEventAura(); |
+ |
+ void OnTouch(const TouchEvent& touch); |
+ |
+ // MotionEvent implementation. |
+ virtual int GetId() const OVERRIDE; |
+ virtual Action GetAction() const OVERRIDE; |
+ virtual int GetActionIndex() const OVERRIDE; |
+ virtual size_t GetPointerCount() const OVERRIDE; |
+ virtual int GetPointerId(size_t pointer_index) const OVERRIDE; |
+ virtual float GetX(size_t pointer_index) const OVERRIDE; |
+ virtual float GetY(size_t pointer_index) const OVERRIDE; |
+ virtual float GetTouchMajor(size_t pointer_index) const OVERRIDE; |
+ virtual float GetPressure(size_t pointer_index) const OVERRIDE; |
+ virtual base::TimeTicks GetEventTime() const OVERRIDE; |
+ |
+ virtual size_t GetHistorySize() const OVERRIDE; |
+ virtual base::TimeTicks GetHistoricalEventTime(size_t historical_index) const |
+ OVERRIDE; |
+ virtual float GetHistoricalTouchMajor(size_t pointer_index, |
+ size_t historical_index) const OVERRIDE; |
+ virtual float GetHistoricalX(size_t pointer_index, |
+ size_t historical_index) const OVERRIDE; |
+ virtual float GetHistoricalY(size_t pointer_index, |
+ size_t historical_index) const OVERRIDE; |
+ |
+ virtual scoped_ptr<MotionEvent> Clone() const OVERRIDE; |
+ virtual scoped_ptr<MotionEvent> Cancel() const OVERRIDE; |
+ |
+ int GetSourceDeviceId(size_t pointer_index) const; |
+ |
+ // We can't cleanup removed touch points immediately upon receipt of a |
+ // TouchCancel or TouchRelease, as the MotionEvent needs to be able to report |
+ // information about those touch events. Once the MotionEvent has been |
+ // processed, we call CleanupRemovedTouchPoints to do the required |
+ // book-keeping. |
+ void CleanupRemovedTouchPoints(const TouchEvent& event); |
+ |
+ private: |
+ struct PointData { |
+ PointData(); |
+ float x; |
+ float y; |
+ int touch_id; |
+ float pressure; |
+ int source_device_id; |
+ float major_radius; |
+ }; |
+ |
+ MotionEventAura( |
+ size_t pointer_count, |
+ const base::TimeTicks& last_touch_time, |
+ Action cached_action, |
+ int cached_action_index, |
+ const PointData (&active_touches)[GestureSequence::kMaxGesturePoints]); |
+ |
+ static PointData GetPointDataFromTouchEvent(const TouchEvent& touch); |
+ void AddTouch(const TouchEvent& touch); |
+ void UpdateTouch(const TouchEvent& touch); |
+ void UpdateCachedAction(const TouchEvent& touch); |
+ size_t GetIndexFromId(int id) const; |
+ |
+ size_t pointer_count_; |
+ base::TimeTicks last_touch_time_; |
+ Action cached_action_; |
+ // The index of the touch responsible for last ACTION_POINTER_DOWN or |
+ // ACTION_POINTER_UP. -1 if no such action has occurred. |
+ int cached_action_index_; |
+ |
+ // We want constant time indexing by pointer_index, and fast indexing by id. |
+ // TODO(tdresser): figure out which constant to use here. |
+ PointData active_touches_[GestureSequence::kMaxGesturePoints]; |
sadrul
2014/05/07 13:42:17
DISALLOW_COPY_...?
tdresser
2014/05/07 14:04:17
Done.
|
+}; |
+ |
+} // namespace ui |
+ |
+#endif // UI_EVENTS_GESTURE_DETECTION_UI_MOTION_EVENT_H_ |