summaryrefslogtreecommitdiffstats
path: root/chromium/ui/events/gesture_detection/gesture_event_data_packet.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/events/gesture_detection/gesture_event_data_packet.cc')
-rw-r--r--chromium/ui/events/gesture_detection/gesture_event_data_packet.cc96
1 files changed, 96 insertions, 0 deletions
diff --git a/chromium/ui/events/gesture_detection/gesture_event_data_packet.cc b/chromium/ui/events/gesture_detection/gesture_event_data_packet.cc
new file mode 100644
index 00000000000..09adceca475
--- /dev/null
+++ b/chromium/ui/events/gesture_detection/gesture_event_data_packet.cc
@@ -0,0 +1,96 @@
+// 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.
+
+#include "ui/events/gesture_detection/gesture_event_data_packet.h"
+
+#include "base/logging.h"
+#include "ui/events/gesture_detection/motion_event.h"
+
+namespace ui {
+namespace {
+
+GestureEventDataPacket::GestureSource ToGestureSource(
+ const ui::MotionEvent& event) {
+ switch (event.GetAction()) {
+ case ui::MotionEvent::ACTION_DOWN:
+ return GestureEventDataPacket::TOUCH_SEQUENCE_START;
+ case ui::MotionEvent::ACTION_UP:
+ return GestureEventDataPacket::TOUCH_SEQUENCE_END;
+ case ui::MotionEvent::ACTION_MOVE:
+ return GestureEventDataPacket::TOUCH_MOVE;
+ case ui::MotionEvent::ACTION_CANCEL:
+ return GestureEventDataPacket::TOUCH_SEQUENCE_CANCEL;
+ case ui::MotionEvent::ACTION_POINTER_DOWN:
+ return GestureEventDataPacket::TOUCH_START;
+ case ui::MotionEvent::ACTION_POINTER_UP:
+ return GestureEventDataPacket::TOUCH_END;
+ };
+ NOTREACHED() << "Invalid ui::MotionEvent action: " << event.GetAction();
+ return GestureEventDataPacket::INVALID;
+}
+
+} // namespace
+
+GestureEventDataPacket::GestureEventDataPacket()
+ : gesture_source_(UNDEFINED) {
+}
+
+GestureEventDataPacket::GestureEventDataPacket(
+ base::TimeTicks timestamp,
+ GestureSource source,
+ const gfx::PointF& touch_location,
+ const gfx::PointF& raw_touch_location)
+ : timestamp_(timestamp),
+ touch_location_(touch_location),
+ raw_touch_location_(raw_touch_location),
+ gesture_source_(source) {
+ DCHECK_NE(gesture_source_, UNDEFINED);
+}
+
+GestureEventDataPacket::GestureEventDataPacket(
+ const GestureEventDataPacket& other)
+ : timestamp_(other.timestamp_),
+ gestures_(other.gestures_),
+ touch_location_(other.touch_location_),
+ raw_touch_location_(other.raw_touch_location_),
+ gesture_source_(other.gesture_source_) {
+}
+
+GestureEventDataPacket::~GestureEventDataPacket() {
+}
+
+GestureEventDataPacket& GestureEventDataPacket::operator=(
+ const GestureEventDataPacket& other) {
+ timestamp_ = other.timestamp_;
+ gesture_source_ = other.gesture_source_;
+ touch_location_ = other.touch_location_;
+ raw_touch_location_ = other.raw_touch_location_;
+ gestures_ = other.gestures_;
+ return *this;
+}
+
+void GestureEventDataPacket::Push(const GestureEventData& gesture) {
+ DCHECK_NE(ET_UNKNOWN, gesture.type());
+ gestures_.push_back(gesture);
+}
+
+GestureEventDataPacket GestureEventDataPacket::FromTouch(
+ const ui::MotionEvent& touch) {
+ return GestureEventDataPacket(touch.GetEventTime(),
+ ToGestureSource(touch),
+ gfx::PointF(touch.GetX(), touch.GetY()),
+ gfx::PointF(touch.GetRawX(), touch.GetRawY()));
+}
+
+GestureEventDataPacket GestureEventDataPacket::FromTouchTimeout(
+ const GestureEventData& gesture) {
+ GestureEventDataPacket packet(gesture.time,
+ TOUCH_TIMEOUT,
+ gfx::PointF(gesture.x, gesture.y),
+ gfx::PointF(gesture.raw_x, gesture.raw_y));
+ packet.Push(gesture);
+ return packet;
+}
+
+} // namespace ui