summaryrefslogtreecommitdiff
path: root/chromium/content/common/input/touch_action.h
blob: 2a00a038c1e577bfd6babc398f4b0f92f1d6afb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CONTENT_COMMON_INPUT_TOUCH_ACTION_H_
#define CONTENT_COMMON_INPUT_TOUCH_ACTION_H_

namespace content {

// The current touch action specifies what accelerated browser operations
// (panning and zooming) are currently permitted via touch input.
// See http://www.w3.org/TR/pointerevents/#the-touch-action-css-property.
enum TouchAction {
  // No scrolling or zooming allowed.
  TOUCH_ACTION_NONE = 0,

  TOUCH_ACTION_PAN_LEFT = 1 << 0,

  TOUCH_ACTION_PAN_RIGHT = 1 << 1,

  TOUCH_ACTION_PAN_X = TOUCH_ACTION_PAN_LEFT | TOUCH_ACTION_PAN_RIGHT,

  TOUCH_ACTION_PAN_UP = 1 << 2,

  TOUCH_ACTION_PAN_DOWN = 1 << 3,

  TOUCH_ACTION_PAN_Y = TOUCH_ACTION_PAN_UP | TOUCH_ACTION_PAN_DOWN,

  TOUCH_ACTION_PAN = TOUCH_ACTION_PAN_X | TOUCH_ACTION_PAN_Y,

  TOUCH_ACTION_PINCH_ZOOM = 1 << 4,

  TOUCH_ACTION_MANIPULATION = TOUCH_ACTION_PAN | TOUCH_ACTION_PINCH_ZOOM,

  TOUCH_ACTION_DOUBLE_TAP_ZOOM = 1 << 5,

  // All actions are permitted (the default).
  TOUCH_ACTION_AUTO = TOUCH_ACTION_MANIPULATION | TOUCH_ACTION_DOUBLE_TAP_ZOOM,

  TOUCH_ACTION_MAX = (1 << 6) - 1
};

inline TouchAction operator| (TouchAction a, TouchAction b)
{
  return static_cast<TouchAction>(int(a) | int(b));
}
inline TouchAction& operator|= (TouchAction& a, TouchAction b)
{
  return a = a | b;
}
inline TouchAction operator& (TouchAction a, TouchAction b)
{
  return static_cast<TouchAction>(int(a) & int(b));
}
inline TouchAction& operator&= (TouchAction& a, TouchAction b)
{
  return a = a & b;
}

}  // namespace content

#endif  // CONTENT_COMMON_INPUT_TOUCH_ACTION_H_