OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_MOTION_EVENT_ANDROID_H_ | 5 #ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_MOTION_EVENT_ANDROID_H_ |
6 #define CONTENT_BROWSER_RENDERER_HOST_INPUT_MOTION_EVENT_ANDROID_H_ | 6 #define CONTENT_BROWSER_RENDERER_HOST_INPUT_MOTION_EVENT_ANDROID_H_ |
7 | 7 |
8 #include <jni.h> | 8 #include <jni.h> |
9 | 9 |
10 #include "base/android/scoped_java_ref.h" | 10 #include "base/android/scoped_java_ref.h" |
(...skipping 21 matching lines...) Expand all Loading... |
32 jint history_size, | 32 jint history_size, |
33 jint action_index, | 33 jint action_index, |
34 jfloat pos_x_0_pixels, | 34 jfloat pos_x_0_pixels, |
35 jfloat pos_y_0_pixels, | 35 jfloat pos_y_0_pixels, |
36 jfloat pos_x_1_pixels, | 36 jfloat pos_x_1_pixels, |
37 jfloat pos_y_1_pixels, | 37 jfloat pos_y_1_pixels, |
38 jint pointer_id_0, | 38 jint pointer_id_0, |
39 jint pointer_id_1, | 39 jint pointer_id_1, |
40 jfloat touch_major_0_pixels, | 40 jfloat touch_major_0_pixels, |
41 jfloat touch_major_1_pixels, | 41 jfloat touch_major_1_pixels, |
| 42 jfloat touch_minor_0_pixels, |
| 43 jfloat touch_minor_1_pixels, |
| 44 jfloat orientation_0_rad, |
| 45 jfloat orientation_1_rad, |
42 jfloat raw_pos_x_pixels, | 46 jfloat raw_pos_x_pixels, |
43 jfloat raw_pos_y_pixels, | 47 jfloat raw_pos_y_pixels, |
44 jint android_tool_type_0, | 48 jint android_tool_type_0, |
45 jint android_tool_type_1, | 49 jint android_tool_type_1, |
46 jint android_button_state); | 50 jint android_button_state); |
47 virtual ~MotionEventAndroid(); | 51 virtual ~MotionEventAndroid(); |
48 | 52 |
49 // ui::MotionEvent methods. | 53 // ui::MotionEvent methods. |
50 virtual int GetId() const OVERRIDE; | 54 virtual int GetId() const OVERRIDE; |
51 virtual Action GetAction() const OVERRIDE; | 55 virtual Action GetAction() const OVERRIDE; |
52 virtual int GetActionIndex() const OVERRIDE; | 56 virtual int GetActionIndex() const OVERRIDE; |
53 virtual size_t GetPointerCount() const OVERRIDE; | 57 virtual size_t GetPointerCount() const OVERRIDE; |
54 virtual int GetPointerId(size_t pointer_index) const OVERRIDE; | 58 virtual int GetPointerId(size_t pointer_index) const OVERRIDE; |
55 virtual float GetX(size_t pointer_index) const OVERRIDE; | 59 virtual float GetX(size_t pointer_index) const OVERRIDE; |
56 virtual float GetY(size_t pointer_index) const OVERRIDE; | 60 virtual float GetY(size_t pointer_index) const OVERRIDE; |
57 virtual float GetRawX(size_t pointer_index) const OVERRIDE; | 61 virtual float GetRawX(size_t pointer_index) const OVERRIDE; |
58 virtual float GetRawY(size_t pointer_index) const OVERRIDE; | 62 virtual float GetRawY(size_t pointer_index) const OVERRIDE; |
59 virtual float GetTouchMajor(size_t pointer_index) const OVERRIDE; | 63 virtual float GetTouchMajor(size_t pointer_index) const OVERRIDE; |
| 64 virtual float GetTouchMinor(size_t pointer_index) const OVERRIDE; |
| 65 virtual float GetOrientation(size_t pointer_index) const OVERRIDE; |
60 virtual float GetPressure(size_t pointer_index) const OVERRIDE; | 66 virtual float GetPressure(size_t pointer_index) const OVERRIDE; |
61 virtual base::TimeTicks GetEventTime() const OVERRIDE; | 67 virtual base::TimeTicks GetEventTime() const OVERRIDE; |
62 virtual size_t GetHistorySize() const OVERRIDE; | 68 virtual size_t GetHistorySize() const OVERRIDE; |
63 virtual base::TimeTicks GetHistoricalEventTime( | 69 virtual base::TimeTicks GetHistoricalEventTime( |
64 size_t historical_index) const OVERRIDE; | 70 size_t historical_index) const OVERRIDE; |
65 virtual float GetHistoricalTouchMajor(size_t pointer_index, | 71 virtual float GetHistoricalTouchMajor(size_t pointer_index, |
66 size_t historical_index) const OVERRIDE; | 72 size_t historical_index) const OVERRIDE; |
67 virtual float GetHistoricalX(size_t pointer_index, | 73 virtual float GetHistoricalX(size_t pointer_index, |
68 size_t historical_index) const OVERRIDE; | 74 size_t historical_index) const OVERRIDE; |
69 virtual float GetHistoricalY(size_t pointer_index, | 75 virtual float GetHistoricalY(size_t pointer_index, |
70 size_t historical_index) const OVERRIDE; | 76 size_t historical_index) const OVERRIDE; |
71 virtual ToolType GetToolType(size_t pointer_index) const OVERRIDE; | 77 virtual ToolType GetToolType(size_t pointer_index) const OVERRIDE; |
72 virtual int GetButtonState() const OVERRIDE; | 78 virtual int GetButtonState() const OVERRIDE; |
73 virtual scoped_ptr<MotionEvent> Clone() const OVERRIDE; | 79 virtual scoped_ptr<MotionEvent> Clone() const OVERRIDE; |
74 virtual scoped_ptr<MotionEvent> Cancel() const OVERRIDE; | 80 virtual scoped_ptr<MotionEvent> Cancel() const OVERRIDE; |
75 | 81 |
76 // Additional Android MotionEvent methods. | 82 // Additional Android MotionEvent methods. |
77 float GetTouchMinor() const { return GetTouchMinor(0); } | |
78 float GetTouchMinor(size_t pointer_index) const; | |
79 float GetOrientation() const; | |
80 base::TimeTicks GetDownTime() const; | 83 base::TimeTicks GetDownTime() const; |
81 | 84 |
82 static bool RegisterMotionEventAndroid(JNIEnv* env); | 85 static bool RegisterMotionEventAndroid(JNIEnv* env); |
83 | 86 |
84 static base::android::ScopedJavaLocalRef<jobject> Obtain( | 87 static base::android::ScopedJavaLocalRef<jobject> Obtain( |
85 const MotionEventAndroid& event); | 88 const MotionEventAndroid& event); |
86 static base::android::ScopedJavaLocalRef<jobject> Obtain( | 89 static base::android::ScopedJavaLocalRef<jobject> Obtain( |
87 base::TimeTicks down_time, | 90 base::TimeTicks down_time, |
88 base::TimeTicks event_time, | 91 base::TimeTicks event_time, |
89 Action action, | 92 Action action, |
90 float x_pixels, | 93 float x_pixels, |
91 float y_pixels); | 94 float y_pixels); |
92 | 95 |
93 private: | 96 private: |
94 MotionEventAndroid(); | 97 MotionEventAndroid(); |
95 MotionEventAndroid(float pix_to_dip, JNIEnv* env, jobject event); | 98 MotionEventAndroid(float pix_to_dip, JNIEnv* env, jobject event); |
96 MotionEventAndroid(const MotionEventAndroid&); | 99 MotionEventAndroid(const MotionEventAndroid&); |
97 MotionEventAndroid& operator=(const MotionEventAndroid&); | 100 MotionEventAndroid& operator=(const MotionEventAndroid&); |
98 | 101 |
| 102 float ToValidFloat(float x) const; |
99 float ToDips(float pixels) const; | 103 float ToDips(float pixels) const; |
100 gfx::PointF ToDips(const gfx::PointF& pixels) const; | 104 gfx::PointF ToDips(const gfx::PointF& pixels) const; |
101 | 105 |
102 // Cache pointer coords, id's and major lengths for the most common | 106 // Cache pointer coords, id's and major lengths for the most common |
103 // touch-related scenarios, i.e., scrolling and pinching. This prevents | 107 // touch-related scenarios, i.e., scrolling and pinching. This prevents |
104 // redundant JNI fetches for the same bits. | 108 // redundant JNI fetches for the same bits. |
105 enum { MAX_POINTERS_TO_CACHE = 2 }; | 109 enum { MAX_POINTERS_TO_CACHE = 2 }; |
106 | 110 |
107 // The Java reference to the underlying MotionEvent. | 111 // The Java reference to the underlying MotionEvent. |
108 base::android::ScopedJavaGlobalRef<jobject> event_; | 112 base::android::ScopedJavaGlobalRef<jobject> event_; |
109 | 113 |
110 base::TimeTicks cached_time_; | 114 base::TimeTicks cached_time_; |
111 Action cached_action_; | 115 Action cached_action_; |
112 size_t cached_pointer_count_; | 116 size_t cached_pointer_count_; |
113 size_t cached_history_size_; | 117 size_t cached_history_size_; |
114 int cached_action_index_; | 118 int cached_action_index_; |
115 gfx::PointF cached_positions_[MAX_POINTERS_TO_CACHE]; | 119 gfx::PointF cached_positions_[MAX_POINTERS_TO_CACHE]; |
116 int cached_pointer_ids_[MAX_POINTERS_TO_CACHE]; | 120 int cached_pointer_ids_[MAX_POINTERS_TO_CACHE]; |
117 float cached_touch_majors_[MAX_POINTERS_TO_CACHE]; | 121 float cached_touch_majors_[MAX_POINTERS_TO_CACHE]; |
| 122 float cached_touch_minors_[MAX_POINTERS_TO_CACHE]; |
| 123 float cached_orientations_[MAX_POINTERS_TO_CACHE]; |
118 gfx::Vector2dF cached_raw_position_offset_; | 124 gfx::Vector2dF cached_raw_position_offset_; |
119 ToolType cached_tool_types_[MAX_POINTERS_TO_CACHE]; | 125 ToolType cached_tool_types_[MAX_POINTERS_TO_CACHE]; |
120 int cached_button_state_; | 126 int cached_button_state_; |
121 | 127 |
122 // Used to convert pixel coordinates from the Java-backed MotionEvent to | 128 // Used to convert pixel coordinates from the Java-backed MotionEvent to |
123 // DIP coordinates cached/returned by the MotionEventAndroid. | 129 // DIP coordinates cached/returned by the MotionEventAndroid. |
124 const float pix_to_dip_; | 130 const float pix_to_dip_; |
125 | 131 |
126 // Whether |event_| should be recycled on destruction. This will only be true | 132 // Whether |event_| should be recycled on destruction. This will only be true |
127 // for those events generated via |Obtain(...)|. | 133 // for those events generated via |Obtain(...)|. |
128 bool should_recycle_; | 134 bool should_recycle_; |
129 }; | 135 }; |
130 | 136 |
131 } // namespace content | 137 } // namespace content |
132 | 138 |
133 #endif // CONTENT_BROWSER_RENDERER_HOST_INPUT_MOTION_EVENT_ANDROID_H_ | 139 #endif // CONTENT_BROWSER_RENDERER_HOST_INPUT_MOTION_EVENT_ANDROID_H_ |
OLD | NEW |