gesture_event_data_packet.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
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_GESTURE_EVENT_DATA_PACKET_H_ 6#define UI_EVENTS_GESTURE_DETECTION_GESTURE_EVENT_DATA_PACKET_H_ 7 8#include "ui/events/gesture_detection/gesture_detection_export.h" 9#include "ui/events/gesture_detection/gesture_event_data.h" 10 11namespace ui { 12 13class MotionEvent; 14 15// Acts as a transport container for gestures created (directly or indirectly) 16// by a touch event. 17class GESTURE_DETECTION_EXPORT GestureEventDataPacket { 18 public: 19 enum GestureSource { 20 UNDEFINED = -1, // Used only for a default-constructed packet. 21 INVALID, // The source of the gesture was invalid. 22 TOUCH_SEQUENCE_START, // The start of a new gesture sequence. 23 TOUCH_SEQUENCE_END, // The end of gesture sequence. 24 TOUCH_START, // A touch down occured during a gesture sequence. 25 TOUCH_MOVE, // A touch move occured during a gesture sequence. 26 TOUCH_END, // A touch up occured during a gesture sequence. 27 TOUCH_TIMEOUT, // Timeout from an existing gesture sequence. 28 }; 29 30 GestureEventDataPacket(); 31 GestureEventDataPacket(const GestureEventDataPacket& other); 32 ~GestureEventDataPacket(); 33 GestureEventDataPacket& operator=(const GestureEventDataPacket& other); 34 35 // Factory methods for creating a packet from a particular event. 36 static GestureEventDataPacket FromTouch(const ui::MotionEvent& touch); 37 static GestureEventDataPacket FromTouchTimeout( 38 const GestureEventData& gesture); 39 40 void Push(const GestureEventData& gesture); 41 42 const GestureEventData& gesture(size_t i) const { return gestures_[i]; } 43 size_t gesture_count() const { return gesture_count_; } 44 GestureSource gesture_source() const { return gesture_source_; } 45 46 private: 47 explicit GestureEventDataPacket(GestureSource source); 48 49 enum { kMaxGesturesPerTouch = 5 }; 50 GestureEventData gestures_[kMaxGesturesPerTouch]; 51 size_t gesture_count_; 52 GestureSource gesture_source_; 53}; 54 55} // namespace ui 56 57#endif // UI_EVENTS_GESTURE_DETECTION_GESTURE_EVENT_DATA_PACKET_H_ 58