velocity_tracker_state.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
16eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com// Copyright 2014 The Chromium Authors. All rights reserved. 26eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com// Use of this source code is governed by a BSD-style license that can be 36eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com// found in the LICENSE file. 46eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com 56eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com#ifndef UI_EVENTS_GESTURE_DETECTION_VELOCITY_TRACKER_STATE_H_ 66eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com#define UI_EVENTS_GESTURE_DETECTION_VELOCITY_TRACKER_STATE_H_ 76eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com 86eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com#include "base/basictypes.h" 96eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com#include "ui/events/gesture_detection/bitset_32.h" 106eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com#include "ui/events/gesture_detection/gesture_detection_export.h" 116eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com#include "ui/events/gesture_detection/velocity_tracker.h" 126eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com 136eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.comnamespace ui { 146eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com 156eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.comclass MotionEvent; 166eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com 176eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com// Port of VelocityTrackerState from Android 186eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com// * platform/frameworks/base/core/jni/android_view_VelocityTracker.cpp 196eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com// * Change-Id: I3517881b87b47dcc209d80dbd0ac6b5cf29a766f 206eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com// * Please update the Change-Id as upstream Android changes are pulled. 216eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.comclass GESTURE_DETECTION_EXPORT VelocityTrackerState { 226eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com public: 236eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com VelocityTrackerState(); 246eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com explicit VelocityTrackerState(VelocityTracker::Strategy strategy); 256eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com ~VelocityTrackerState(); 266eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com 276eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com void Clear(); 286eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com void AddMovement(const MotionEvent& event); 296eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com void ComputeCurrentVelocity(int32_t units, float max_velocity); 306eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com float GetXVelocity(int32_t id) const; 31a8e05220c14778d93c97911044ff5124aadbd77cBen Gruver float GetYVelocity(int32_t id) const; 32a8e05220c14778d93c97911044ff5124aadbd77cBen Gruver 33a8e05220c14778d93c97911044ff5124aadbd77cBen Gruver private: 344b72225e9d81201838f387171a68a832486903f9JesusFreke@JesusFreke.com struct Velocity { 359f1d05eb44d85183651753d9b83ae3115a8ea256Ben Gruver float vx, vy; 366eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com }; 376eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com 386eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com void GetVelocity(int32_t id, float* out_vx, float* out_vy) const; 396eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com 407ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver VelocityTracker velocity_tracker_; 416eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com int32_t active_pointer_id_; 427ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver BitSet32 calculated_id_bits_; 436eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com Velocity calculated_velocity_[VelocityTracker::MAX_POINTERS]; 446eae34831fee1f116f3a453bdc5e143d68e05e03JesusFreke@JesusFreke.com 45a8e05220c14778d93c97911044ff5124aadbd77cBen Gruver DISALLOW_COPY_AND_ASSIGN(VelocityTrackerState); 46a8e05220c14778d93c97911044ff5124aadbd77cBen Gruver}; 47a8e05220c14778d93c97911044ff5124aadbd77cBen Gruver 48a8e05220c14778d93c97911044ff5124aadbd77cBen Gruver} // namespace ui 49a8e05220c14778d93c97911044ff5124aadbd77cBen Gruver 50a8e05220c14778d93c97911044ff5124aadbd77cBen Gruver#endif // UI_EVENTS_GESTURE_DETECTION_VELOCITY_TRACKER_STATE_H_ 51a8e05220c14778d93c97911044ff5124aadbd77cBen Gruver