- add sources.
[platform/framework/web/crosswalk.git] / src / ui / events / gestures / gesture_configuration.h
1 // Copyright (c) 2013 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_GESTURES_GESTURE_CONFIGURATION_H_
6 #define UI_EVENTS_GESTURES_GESTURE_CONFIGURATION_H_
7
8 #include "base/basictypes.h"
9 #include "ui/events/events_export.h"
10
11 namespace ui {
12
13 // TODO: Expand this design to support multiple OS configuration
14 // approaches (windows, chrome, others).  This would turn into an
15 // abstract base class.
16
17 class EVENTS_EXPORT GestureConfiguration {
18  public:
19   // Number of parameters in the array of parameters for the fling acceleration
20   // curve.
21   static const int NumAccelParams = 4;
22
23   // Ordered alphabetically ignoring underscores, to align with the
24   // associated list of prefs in gesture_prefs_aura.cc.
25   static int default_radius() {
26     return default_radius_;
27   }
28   static void set_default_radius(int radius) { default_radius_ = radius; }
29   static int fling_max_cancel_to_down_time_in_ms() {
30     return fling_max_cancel_to_down_time_in_ms_;
31   }
32   static void set_fling_max_cancel_to_down_time_in_ms(int val) {
33     fling_max_cancel_to_down_time_in_ms_ = val;
34   }
35   static int fling_max_tap_gap_time_in_ms() {
36     return fling_max_tap_gap_time_in_ms_;
37   }
38   static void set_fling_max_tap_gap_time_in_ms(int val) {
39     fling_max_tap_gap_time_in_ms_ = val;
40   }
41   static double long_press_time_in_seconds() {
42     return long_press_time_in_seconds_;
43   }
44   static double semi_long_press_time_in_seconds() {
45     return semi_long_press_time_in_seconds_;
46   }
47   static double max_distance_for_two_finger_tap_in_pixels() {
48     return max_distance_for_two_finger_tap_in_pixels_;
49   }
50   static void set_max_distance_for_two_finger_tap_in_pixels(double val) {
51     max_distance_for_two_finger_tap_in_pixels_ = val;
52   }
53   static int max_radius() {
54     return max_radius_;
55   }
56   static void set_long_press_time_in_seconds(double val) {
57     long_press_time_in_seconds_ = val;
58   }
59   static void set_semi_long_press_time_in_seconds(double val) {
60     semi_long_press_time_in_seconds_ = val;
61   }
62   static double max_seconds_between_double_click() {
63     return max_seconds_between_double_click_;
64   }
65   static void set_max_seconds_between_double_click(double val) {
66     max_seconds_between_double_click_ = val;
67   }
68   static int max_separation_for_gesture_touches_in_pixels() {
69     return max_separation_for_gesture_touches_in_pixels_;
70   }
71   static void set_max_separation_for_gesture_touches_in_pixels(int val) {
72     max_separation_for_gesture_touches_in_pixels_ = val;
73   }
74   static double max_swipe_deviation_ratio() {
75     return max_swipe_deviation_ratio_;
76   }
77   static void set_max_swipe_deviation_ratio(double val) {
78     max_swipe_deviation_ratio_ = val;
79   }
80   static double max_touch_down_duration_in_seconds_for_click() {
81     return max_touch_down_duration_in_seconds_for_click_;
82   }
83   static void set_max_touch_down_duration_in_seconds_for_click(double val) {
84     max_touch_down_duration_in_seconds_for_click_ = val;
85   }
86   static double max_touch_move_in_pixels_for_click() {
87     return max_touch_move_in_pixels_for_click_;
88   }
89   static void set_max_touch_move_in_pixels_for_click(double val) {
90     max_touch_move_in_pixels_for_click_ = val;
91   }
92   static double max_distance_between_taps_for_double_tap() {
93     return max_distance_between_taps_for_double_tap_;
94   }
95   static void set_max_distance_between_taps_for_double_tap(double val) {
96     max_distance_between_taps_for_double_tap_ = val;
97   }
98   static double min_distance_for_pinch_scroll_in_pixels() {
99     return min_distance_for_pinch_scroll_in_pixels_;
100   }
101   static void set_min_distance_for_pinch_scroll_in_pixels(double val) {
102     min_distance_for_pinch_scroll_in_pixels_ = val;
103   }
104   static double min_flick_speed_squared() {
105     return min_flick_speed_squared_;
106   }
107   static void set_min_flick_speed_squared(double val) {
108     min_flick_speed_squared_ = val;
109   }
110   static double min_pinch_update_distance_in_pixels() {
111     return min_pinch_update_distance_in_pixels_;
112   }
113   static void set_min_pinch_update_distance_in_pixels(double val) {
114     min_pinch_update_distance_in_pixels_ = val;
115   }
116   static double min_rail_break_velocity() {
117     return min_rail_break_velocity_;
118   }
119   static void set_min_rail_break_velocity(double val) {
120     min_rail_break_velocity_ = val;
121   }
122   static double min_scroll_delta_squared() {
123     return min_scroll_delta_squared_;
124   }
125   static void set_min_scroll_delta_squared(double val) {
126     min_scroll_delta_squared_ = val;
127   }
128   static int min_scroll_successive_velocity_events() {
129     return min_scroll_successive_velocity_events_;
130   }
131   static void set_min_scroll_successive_velocity_events(int val) {
132     min_scroll_successive_velocity_events_ = val;
133   }
134   static float min_scroll_velocity() {
135     return min_scroll_velocity_;
136   }
137   static void set_min_scroll_velocity(float val) {
138     min_scroll_velocity_ = val;
139   }
140   static double min_swipe_speed() {
141     return min_swipe_speed_;
142   }
143   static void set_min_swipe_speed(double val) {
144     min_swipe_speed_ = val;
145   }
146   static double min_touch_down_duration_in_seconds_for_click() {
147     return min_touch_down_duration_in_seconds_for_click_;
148   }
149   static void set_min_touch_down_duration_in_seconds_for_click(double val) {
150     min_touch_down_duration_in_seconds_for_click_ = val;
151   }
152   static int points_buffered_for_velocity() {
153     return points_buffered_for_velocity_;
154   }
155   static void set_points_buffered_for_velocity(int val) {
156     points_buffered_for_velocity_ = val;
157   }
158   static double rail_break_proportion() {
159     return rail_break_proportion_;
160   }
161   static void set_rail_break_proportion(double val) {
162     rail_break_proportion_ = val;
163   }
164   static double rail_start_proportion() {
165     return rail_start_proportion_;
166   }
167   static void set_rail_start_proportion(double val) {
168     rail_start_proportion_ = val;
169   }
170   static double scroll_prediction_seconds() {
171     return scroll_prediction_seconds_;
172   }
173   static void set_scroll_prediction_seconds(double val) {
174     scroll_prediction_seconds_ = val;
175   }
176   static int show_press_delay_in_ms() {
177     return show_press_delay_in_ms_;
178   }
179   static int set_show_press_delay_in_ms(int val) {
180     return show_press_delay_in_ms_ = val;
181   }
182   static void set_fling_acceleration_curve_coefficients(int i, float val) {
183     fling_acceleration_curve_coefficients_[i] = val;
184   }
185   static float fling_acceleration_curve_coefficients(int i) {
186     return fling_acceleration_curve_coefficients_[i];
187   }
188   static float fling_velocity_cap() {
189     return fling_velocity_cap_;
190   }
191   static void set_fling_velocity_cap(float val) {
192     fling_velocity_cap_ = val;
193   }
194   // TODO(davemoore): Move into chrome/browser/ui.
195   static int tab_scrub_activation_delay_in_ms() {
196     return tab_scrub_activation_delay_in_ms_;
197   }
198   static void set_tab_scrub_activation_delay_in_ms(int val) {
199     tab_scrub_activation_delay_in_ms_ = val;
200   }
201
202  private:
203   // These are listed in alphabetical order ignoring underscores, to
204   // align with the associated list of preferences in
205   // gesture_prefs_aura.cc. These two lists should be kept in sync.
206
207   // The default touch radius length used when the only information given
208   // by the device is the touch center.
209   static int default_radius_;
210
211   // The maximum allowed distance between two fingers for a two finger tap. If
212   // the distance between two fingers is greater than this value, we will not
213   // recognize a two finger tap.
214   static double max_distance_for_two_finger_tap_in_pixels_;
215
216   // The maximum allowed size for the radius of a touch region used in
217   // forming an ET_GESTURE_TAP event.
218   static int max_radius_;
219
220   // Maximum time between a GestureFlingCancel and a mousedown such that the
221   // mousedown is considered associated with the cancel event.
222   static int fling_max_cancel_to_down_time_in_ms_;
223
224   // Maxium time between a mousedown/mouseup pair that is considered to be a
225   // suppressable tap.
226   static int fling_max_tap_gap_time_in_ms_;
227
228   static double long_press_time_in_seconds_;
229   static double semi_long_press_time_in_seconds_;
230   static double max_seconds_between_double_click_;
231   static double max_separation_for_gesture_touches_in_pixels_;
232   static double max_swipe_deviation_ratio_;
233   static double max_touch_down_duration_in_seconds_for_click_;
234   static double max_touch_move_in_pixels_for_click_;
235   static double max_distance_between_taps_for_double_tap_;
236   static double min_distance_for_pinch_scroll_in_pixels_;
237   static double min_flick_speed_squared_;
238   static double min_pinch_update_distance_in_pixels_;
239   static double min_rail_break_velocity_;
240   static double min_scroll_delta_squared_;
241   static int min_scroll_successive_velocity_events_;
242   static float min_scroll_velocity_;
243   static double min_swipe_speed_;
244   static double min_touch_down_duration_in_seconds_for_click_;
245   static int points_buffered_for_velocity_;
246   static double rail_break_proportion_;
247   static double rail_start_proportion_;
248   static double scroll_prediction_seconds_;
249   static int show_press_delay_in_ms_;
250   static float fling_acceleration_curve_coefficients_[NumAccelParams];
251   static float fling_velocity_cap_;
252   // TODO(davemoore): Move into chrome/browser/ui.
253   static int tab_scrub_activation_delay_in_ms_;
254
255   DISALLOW_COPY_AND_ASSIGN(GestureConfiguration);
256 };
257
258 }  // namespace ui
259
260 #endif  // UI_EVENTS_GESTURES_GESTURE_CONFIGURATION_H_