gesture_event_data_packet.cc revision 5c02ac1a9c1b504631c0a3d2b6e737b5d738bae1
1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// Copyright 2014 The Chromium Authors. All rights reserved. 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// Use of this source code is governed by a BSD-style license that can be 3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant// found in the LICENSE file. 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant#include "ui/events/gesture_detection/gesture_event_data_packet.h" 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include "base/logging.h" 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include "ui/events/gesture_detection/motion_event.h" 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantnamespace ui { 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantnamespace { 12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard HinnantGestureEventDataPacket::GestureSource ToGestureSource( 14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant const ui::MotionEvent& event) { 15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant switch (event.GetAction()) { 16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant case ui::MotionEvent::ACTION_DOWN: 17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant return GestureEventDataPacket::TOUCH_SEQUENCE_START; 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant case ui::MotionEvent::ACTION_UP: 19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant return GestureEventDataPacket::TOUCH_SEQUENCE_END; 20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant case ui::MotionEvent::ACTION_MOVE: 21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant return GestureEventDataPacket::TOUCH_MOVE; 22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant case ui::MotionEvent::ACTION_CANCEL: 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant return GestureEventDataPacket::TOUCH_SEQUENCE_CANCEL; 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant case ui::MotionEvent::ACTION_POINTER_DOWN: 25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant return GestureEventDataPacket::TOUCH_START; 26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant case ui::MotionEvent::ACTION_POINTER_UP: 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant return GestureEventDataPacket::TOUCH_END; 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant }; 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant NOTREACHED() << "Invalid ui::MotionEvent action: " << event.GetAction(); 30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant return GestureEventDataPacket::INVALID; 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} // namespace 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard HinnantGestureEventDataPacket::GestureEventDataPacket() 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant : gesture_count_(0), gesture_source_(UNDEFINED) {} 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard HinnantGestureEventDataPacket::GestureEventDataPacket(GestureSource source) 39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant : gesture_count_(0), gesture_source_(source) { 40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant DCHECK_NE(gesture_source_, UNDEFINED); 41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard HinnantGestureEventDataPacket::GestureEventDataPacket( 44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant const GestureEventDataPacket& other) 45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant : gesture_count_(other.gesture_count_), 46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant gesture_source_(other.gesture_source_) { 47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::copy(other.gestures_, other.gestures_ + other.gesture_count_, gestures_); 48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard HinnantGestureEventDataPacket::~GestureEventDataPacket() {} 51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard HinnantGestureEventDataPacket& GestureEventDataPacket::operator=( 53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant const GestureEventDataPacket& other) { 54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant gesture_count_ = other.gesture_count_; 55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant gesture_source_ = other.gesture_source_; 56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::copy(other.gestures_, other.gestures_ + other.gesture_count_, gestures_); 57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant return *this; 58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid GestureEventDataPacket::Push(const GestureEventData& gesture) { 61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant DCHECK_NE(ET_UNKNOWN, gesture.type); 62 CHECK_LT(gesture_count_, static_cast<size_t>(kMaxGesturesPerTouch)); 63 gestures_[gesture_count_++] = gesture; 64} 65 66GestureEventDataPacket GestureEventDataPacket::FromTouch( 67 const ui::MotionEvent& touch) { 68 return GestureEventDataPacket(ToGestureSource(touch)); 69} 70 71GestureEventDataPacket GestureEventDataPacket::FromTouchTimeout( 72 const GestureEventData& gesture) { 73 GestureEventDataPacket packet(TOUCH_TIMEOUT); 74 packet.Push(gesture); 75 return packet; 76} 77 78} // namespace ui 79