gesture_config_helper_aura.cc revision 5f1c94371a64b3196d4be9466099bb892df9b88e
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// MSVC++ requires this to be set before any other includes to get M_PI. 6#define _USE_MATH_DEFINES 7 8#include "ui/events/gesture_detection/gesture_config_helper.h" 9 10#include <cmath> 11 12#include "base/command_line.h" 13#include "ui/events/event_switches.h" 14#include "ui/events/gestures/gesture_configuration.h" 15#include "ui/gfx/screen.h" 16 17namespace ui { 18namespace { 19 20GestureDetector::Config DefaultGestureDetectorConfig() { 21 GestureDetector::Config config; 22 23 config.longpress_timeout = base::TimeDelta::FromMilliseconds( 24 GestureConfiguration::long_press_time_in_seconds() * 1000.); 25 config.showpress_timeout = base::TimeDelta::FromMilliseconds( 26 GestureConfiguration::show_press_delay_in_ms()); 27 config.double_tap_timeout = base::TimeDelta::FromMilliseconds( 28 GestureConfiguration::semi_long_press_time_in_seconds() * 1000.); 29 config.touch_slop = 30 GestureConfiguration::max_touch_move_in_pixels_for_click(); 31 config.double_tap_slop = 32 GestureConfiguration::max_distance_between_taps_for_double_tap(); 33 config.minimum_fling_velocity = 34 GestureConfiguration::min_scroll_velocity(); 35 config.maximum_fling_velocity = GestureConfiguration::fling_velocity_cap(); 36 config.swipe_enabled = true; 37 config.minimum_swipe_velocity = GestureConfiguration::min_swipe_speed(); 38 config.maximum_swipe_deviation_angle = 39 atan2(1.f, GestureConfiguration::max_swipe_deviation_ratio()) * 180.0f / 40 static_cast<float>(M_PI); 41 config.two_finger_tap_enabled = true; 42 config.two_finger_tap_max_separation = 43 GestureConfiguration::max_distance_for_two_finger_tap_in_pixels(); 44 config.two_finger_tap_timeout = base::TimeDelta::FromMilliseconds( 45 GestureConfiguration::max_touch_down_duration_in_seconds_for_click() * 46 1000.); 47 48 return config; 49} 50 51ScaleGestureDetector::Config DefaultScaleGestureDetectorConfig() { 52 ScaleGestureDetector::Config config; 53 double min_pinch_update_distance = 54 CommandLine::ForCurrentProcess()->HasSwitch( 55 switches::kCompensateForUnstablePinchZoom) 56 ? GestureConfiguration::min_pinch_update_distance_in_pixels() 57 : 0; 58 59 config.gesture_detector_config = DefaultGestureDetectorConfig(); 60 config.min_scaling_touch_major = GestureConfiguration::default_radius() * 2; 61 config.min_scaling_span = GestureConfiguration::min_scaling_span_in_pixels(); 62 config.min_pinch_update_span_delta = min_pinch_update_distance; 63 return config; 64} 65 66} // namespace 67 68GestureProvider::Config DefaultGestureProviderConfig() { 69 GestureProvider::Config config; 70 config.display = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay(); 71 config.gesture_detector_config = DefaultGestureDetectorConfig(); 72 config.scale_gesture_detector_config = DefaultScaleGestureDetectorConfig(); 73 config.gesture_begin_end_types_enabled = true; 74 // Half the size of the default touch length is a reasonable minimum. 75 config.min_gesture_bounds_length = GestureConfiguration::default_radius(); 76 return config; 77} 78 79} // namespace ui 80