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/gesture_event_data_packet.h" 6 7#include "base/logging.h" 8#include "ui/events/gesture_detection/motion_event.h" 9 10namespace ui { 11namespace { 12 13GestureEventDataPacket::GestureSource ToGestureSource( 14 const ui::MotionEvent& event) { 15 switch (event.GetAction()) { 16 case ui::MotionEvent::ACTION_DOWN: 17 return GestureEventDataPacket::TOUCH_SEQUENCE_START; 18 case ui::MotionEvent::ACTION_UP: 19 return GestureEventDataPacket::TOUCH_SEQUENCE_END; 20 case ui::MotionEvent::ACTION_MOVE: 21 return GestureEventDataPacket::TOUCH_MOVE; 22 case ui::MotionEvent::ACTION_CANCEL: 23 return GestureEventDataPacket::TOUCH_SEQUENCE_CANCEL; 24 case ui::MotionEvent::ACTION_POINTER_DOWN: 25 return GestureEventDataPacket::TOUCH_START; 26 case ui::MotionEvent::ACTION_POINTER_UP: 27 return GestureEventDataPacket::TOUCH_END; 28 }; 29 NOTREACHED() << "Invalid ui::MotionEvent action: " << event.GetAction(); 30 return GestureEventDataPacket::INVALID; 31} 32 33} // namespace 34 35GestureEventDataPacket::GestureEventDataPacket() 36 : gesture_source_(UNDEFINED) { 37} 38 39GestureEventDataPacket::GestureEventDataPacket( 40 base::TimeTicks timestamp, 41 GestureSource source, 42 const gfx::PointF& touch_location, 43 const gfx::PointF& raw_touch_location) 44 : timestamp_(timestamp), 45 touch_location_(touch_location), 46 raw_touch_location_(raw_touch_location), 47 gesture_source_(source) { 48 DCHECK_NE(gesture_source_, UNDEFINED); 49} 50 51GestureEventDataPacket::GestureEventDataPacket( 52 const GestureEventDataPacket& other) 53 : timestamp_(other.timestamp_), 54 gestures_(other.gestures_), 55 touch_location_(other.touch_location_), 56 raw_touch_location_(other.raw_touch_location_), 57 gesture_source_(other.gesture_source_) { 58} 59 60GestureEventDataPacket::~GestureEventDataPacket() { 61} 62 63GestureEventDataPacket& GestureEventDataPacket::operator=( 64 const GestureEventDataPacket& other) { 65 timestamp_ = other.timestamp_; 66 gesture_source_ = other.gesture_source_; 67 touch_location_ = other.touch_location_; 68 raw_touch_location_ = other.raw_touch_location_; 69 gestures_ = other.gestures_; 70 return *this; 71} 72 73void GestureEventDataPacket::Push(const GestureEventData& gesture) { 74 DCHECK_NE(ET_UNKNOWN, gesture.type()); 75 gestures_->push_back(gesture); 76} 77 78GestureEventDataPacket GestureEventDataPacket::FromTouch( 79 const ui::MotionEvent& touch) { 80 return GestureEventDataPacket(touch.GetEventTime(), 81 ToGestureSource(touch), 82 gfx::PointF(touch.GetX(), touch.GetY()), 83 gfx::PointF(touch.GetRawX(), touch.GetRawY())); 84} 85 86GestureEventDataPacket GestureEventDataPacket::FromTouchTimeout( 87 const GestureEventData& gesture) { 88 GestureEventDataPacket packet(gesture.time, 89 TOUCH_TIMEOUT, 90 gfx::PointF(gesture.x, gesture.y), 91 gfx::PointF(gesture.raw_x, gesture.raw_y)); 92 packet.Push(gesture); 93 return packet; 94} 95 96} // namespace ui 97