Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / ui / events / gesture_detection / motion_event.h
index 741d1d5..bb17ef1 100644 (file)
@@ -24,8 +24,25 @@ class GESTURE_DETECTION_EXPORT MotionEvent {
     ACTION_POINTER_UP,
   };
 
-  // The implementer promises that |GetPointerId()| will never exceed this.
-  enum { MAX_POINTER_ID = 31 };
+  enum ToolType {
+    TOOL_TYPE_UNKNOWN,
+    TOOL_TYPE_FINGER,
+    TOOL_TYPE_STYLUS,
+    TOOL_TYPE_MOUSE,
+    TOOL_TYPE_ERASER
+  };
+
+  enum ButtonType {
+    BUTTON_PRIMARY = 1 << 0,
+    BUTTON_SECONDARY = 1 << 1,
+    BUTTON_TERTIARY = 1 << 2,
+    BUTTON_BACK = 1 << 3,
+    BUTTON_FORWARD = 1 << 4,
+  };
+
+  // The implementer promises that |GetPointerId()| will never exceed
+  // MAX_POINTER_ID.
+  enum { MAX_POINTER_ID = 31, MAX_TOUCH_POINT_COUNT = 12 };
 
   virtual ~MotionEvent() {}
 
@@ -38,32 +55,56 @@ class GESTURE_DETECTION_EXPORT MotionEvent {
   virtual int GetPointerId(size_t pointer_index) const = 0;
   virtual float GetX(size_t pointer_index) const = 0;
   virtual float GetY(size_t pointer_index) const = 0;
+  virtual float GetRawX(size_t pointer_index) const = 0;
+  virtual float GetRawY(size_t pointer_index) const = 0;
   virtual float GetTouchMajor(size_t pointer_index) const = 0;
+  virtual float GetTouchMinor(size_t pointer_index) const = 0;
+  virtual float GetOrientation(size_t pointer_index) const = 0;
   virtual float GetPressure(size_t pointer_index) const = 0;
+  virtual ToolType GetToolType(size_t pointer_index) const = 0;
+  virtual int GetButtonState() const = 0;
+  virtual int GetFlags() const = 0;
   virtual base::TimeTicks GetEventTime() const = 0;
 
-  virtual size_t GetHistorySize() const = 0;
-  virtual base::TimeTicks GetHistoricalEventTime(
-      size_t historical_index) const = 0;
+  // Optional historical data, default implementation provides an empty history.
+  virtual size_t GetHistorySize() const;
+  virtual base::TimeTicks GetHistoricalEventTime(size_t historical_index) const;
   virtual float GetHistoricalTouchMajor(size_t pointer_index,
-                                        size_t historical_index) const = 0;
+                                        size_t historical_index) const;
   virtual float GetHistoricalX(size_t pointer_index,
-                               size_t historical_index) const = 0;
+                               size_t historical_index) const;
   virtual float GetHistoricalY(size_t pointer_index,
-                               size_t historical_index) const = 0;
+                               size_t historical_index) const;
 
   virtual scoped_ptr<MotionEvent> Clone() const = 0;
   virtual scoped_ptr<MotionEvent> Cancel() const = 0;
 
-  // Utility accessor methods for convenience.
   float GetX() const { return GetX(0); }
   float GetY() const { return GetY(0); }
-  float GetRawX() const { return GetX(); }
-  float GetRawY() const { return GetY(); }
+  float GetRawX() const { return GetRawX(0); }
+  float GetRawY() const { return GetRawY(0); }
+  float GetRawOffsetX() const { return GetRawX() - GetX(); }
+  float GetRawOffsetY() const { return GetRawY() - GetY(); }
+
   float GetTouchMajor() const { return GetTouchMajor(0); }
+  float GetTouchMinor() const { return GetTouchMinor(0); }
+
+  // Returns the orientation of the major axis clockwise from vertical, in
+  // radians. The return value lies in [-PI/2, PI/2].
+  float GetOrientation() const { return GetOrientation(0); }
+
   float GetPressure() const { return GetPressure(0); }
+  ToolType GetToolType() const { return GetToolType(0); }
+
+  // O(N) search of pointers (use sparingly!). Returns -1 if |id| nonexistent.
+  int FindPointerIndexOfId(int id) const;
 };
 
+GESTURE_DETECTION_EXPORT bool operator==(const MotionEvent& lhs,
+                                         const MotionEvent& rhs);
+GESTURE_DETECTION_EXPORT bool operator!=(const MotionEvent& lhs,
+                                         const MotionEvent& rhs);
+
 }  // namespace ui
 
 #endif  // UI_EVENTS_GESTURE_DETECTION_MOTION_EVENT_H_