Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Side by Side Diff: third_party/WebKit/Source/platform/PlatformGestureEvent.h

Issue 2539283002: Remove PlatformGestureEvent in favour of using WebGestureEvent (Closed)
Patch Set: Add missing copyright on new file Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2011 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26 #ifndef PlatformGestureEvent_h
27 #define PlatformGestureEvent_h
28
29 #include "platform/PlatformEvent.h"
30 #include "platform/geometry/FloatPoint.h"
31 #include "platform/geometry/IntPoint.h"
32 #include "platform/geometry/IntSize.h"
33 #include "platform/scroll/ScrollTypes.h"
34 #include "wtf/Assertions.h"
35 #include <string.h>
36
37 namespace blink {
38
39 enum PlatformGestureSource {
40 PlatformGestureSourceUninitialized,
41 PlatformGestureSourceTouchpad,
42 PlatformGestureSourceTouchscreen
43 };
44
45 class PlatformGestureEvent : public PlatformEvent {
46 public:
47 PlatformGestureEvent()
48 : PlatformEvent(PlatformEvent::GestureScrollBegin),
49 m_source(PlatformGestureSourceUninitialized) {
50 memset(&m_data, 0, sizeof(m_data));
51 }
52
53 PlatformGestureEvent(EventType type,
54 const IntPoint& position,
55 const IntPoint& globalPosition,
56 const IntSize& area,
57 TimeTicks timestamp,
58 PlatformEvent::Modifiers modifiers,
59 PlatformGestureSource source)
60 : PlatformEvent(type, modifiers, timestamp),
61 m_position(position),
62 m_globalPosition(globalPosition),
63 m_area(area),
64 m_source(source) {
65 memset(&m_data, 0, sizeof(m_data));
66 }
67
68 void setScrollGestureData(float deltaX,
69 float deltaY,
70 ScrollGranularity deltaUnits,
71 float velocityX,
72 float velocityY,
73 ScrollInertialPhase inertialPhase,
74 bool preventPropagation,
75 int resendingPluginId) {
76 ASSERT(type() == PlatformEvent::GestureScrollBegin ||
77 type() == PlatformEvent::GestureScrollUpdate ||
78 type() == PlatformEvent::GestureScrollEnd);
79 if (type() != GestureScrollUpdate) {
80 ASSERT(deltaX == 0);
81 ASSERT(deltaY == 0);
82 ASSERT(velocityX == 0);
83 ASSERT(velocityY == 0);
84 ASSERT(!preventPropagation);
85 }
86
87 if (type() == PlatformEvent::GestureScrollBegin)
88 DCHECK_NE(ScrollInertialPhaseMomentum, inertialPhase);
89
90 m_data.m_scroll.m_deltaX = deltaX;
91 m_data.m_scroll.m_deltaY = deltaY;
92 m_data.m_scroll.m_deltaUnits = deltaUnits;
93 m_data.m_scroll.m_velocityX = velocityX;
94 m_data.m_scroll.m_velocityY = velocityY;
95 m_data.m_scroll.m_inertialPhase = inertialPhase;
96 m_data.m_scroll.m_resendingPluginId = resendingPluginId;
97 m_data.m_scroll.m_preventPropagation = preventPropagation;
98 }
99
100 const IntPoint& position() const {
101 return m_position;
102 } // PlatformWindow coordinates.
103 const IntPoint& globalPosition() const {
104 return m_globalPosition;
105 } // Screen coordinates.
106
107 const IntSize& area() const { return m_area; }
108
109 PlatformGestureSource source() const { return m_source; }
110
111 float deltaX() const {
112 ASSERT(m_type == PlatformEvent::GestureScrollBegin ||
113 m_type == PlatformEvent::GestureScrollUpdate);
114 return m_data.m_scroll.m_deltaX;
115 }
116
117 float deltaY() const {
118 ASSERT(m_type == PlatformEvent::GestureScrollBegin ||
119 m_type == PlatformEvent::GestureScrollUpdate);
120 return m_data.m_scroll.m_deltaY;
121 }
122
123 ScrollGranularity deltaUnits() const {
124 ASSERT(m_type == PlatformEvent::GestureScrollBegin ||
125 m_type == PlatformEvent::GestureScrollUpdate ||
126 m_type == PlatformEvent::GestureScrollEnd);
127 return m_data.m_scroll.m_deltaUnits;
128 }
129
130 int tapCount() const {
131 ASSERT(m_type == PlatformEvent::GestureTap);
132 return m_data.m_tap.m_tapCount;
133 }
134
135 float velocityX() const {
136 ASSERT(m_type == PlatformEvent::GestureScrollUpdate ||
137 m_type == PlatformEvent::GestureFlingStart);
138 return m_data.m_scroll.m_velocityX;
139 }
140
141 float velocityY() const {
142 ASSERT(m_type == PlatformEvent::GestureScrollUpdate ||
143 m_type == PlatformEvent::GestureFlingStart);
144 return m_data.m_scroll.m_velocityY;
145 }
146
147 ScrollInertialPhase inertialPhase() const {
148 ASSERT(m_type == PlatformEvent::GestureScrollBegin ||
149 m_type == PlatformEvent::GestureScrollUpdate ||
150 m_type == PlatformEvent::GestureScrollEnd);
151 return m_data.m_scroll.m_inertialPhase;
152 }
153
154 bool synthetic() const {
155 ASSERT(m_type == PlatformEvent::GestureScrollBegin ||
156 m_type == PlatformEvent::GestureScrollEnd);
157 return m_data.m_scroll.m_synthetic;
158 }
159
160 int resendingPluginId() const {
161 if (m_type == PlatformEvent::GestureScrollUpdate ||
162 m_type == PlatformEvent::GestureScrollBegin ||
163 m_type == PlatformEvent::GestureScrollEnd)
164 return m_data.m_scroll.m_resendingPluginId;
165
166 // This function is called by *all* gesture event types in
167 // GestureEvent::Create(), so we return -1 for all other types.
168 return -1;
169 }
170
171 bool preventPropagation() const {
172 // TODO(tdresser) Once we've decided if we're getting rid of scroll
173 // chaining, we should remove all scroll chaining related logic. See
174 // crbug.com/526462 for details.
175 ASSERT(m_type == PlatformEvent::GestureScrollUpdate);
176 return true;
177 }
178
179 float scale() const {
180 ASSERT(m_type == PlatformEvent::GesturePinchUpdate);
181 return m_data.m_pinchUpdate.m_scale;
182 }
183
184 void applyTouchAdjustment(const IntPoint& adjustedPosition) {
185 // Update the window-relative position of the event so that the node that
186 // was ultimately hit is under this point (i.e. elementFromPoint for the
187 // client co-ordinates in a 'click' event should yield the target). The
188 // global position is intentionally left unmodified because it's intended to
189 // reflect raw co-ordinates unrelated to any content.
190 m_position = adjustedPosition;
191 }
192
193 bool isScrollEvent() const {
194 switch (m_type) {
195 case GestureScrollBegin:
196 case GestureScrollEnd:
197 case GestureScrollUpdate:
198 case GestureFlingStart:
199 case GesturePinchBegin:
200 case GesturePinchEnd:
201 case GesturePinchUpdate:
202 return true;
203 case GestureTap:
204 case GestureTapUnconfirmed:
205 case GestureTapDown:
206 case GestureShowPress:
207 case GestureTapDownCancel:
208 case GestureTwoFingerTap:
209 case GestureLongPress:
210 case GestureLongTap:
211 return false;
212 default:
213 ASSERT_NOT_REACHED();
214 return false;
215 }
216 }
217
218 uint32_t uniqueTouchEventId() const { return m_uniqueTouchEventId; }
219
220 protected:
221 IntPoint m_position;
222 IntPoint m_globalPosition;
223 IntSize m_area;
224 PlatformGestureSource m_source;
225
226 union {
227 struct {
228 int m_tapCount;
229 } m_tap;
230
231 struct {
232 // |m_deltaX| and |m_deltaY| represent deltas in GSU but
233 // are only hints in GSB.
234 float m_deltaX;
235 float m_deltaY;
236 float m_velocityX;
237 float m_velocityY;
238 int m_preventPropagation;
239 ScrollInertialPhase m_inertialPhase;
240 ScrollGranularity m_deltaUnits;
241 int m_resendingPluginId;
242 bool m_synthetic;
243 } m_scroll;
244
245 struct {
246 float m_scale;
247 } m_pinchUpdate;
248 } m_data;
249
250 uint32_t m_uniqueTouchEventId;
251 };
252
253 } // namespace blink
254
255 #endif // PlatformGestureEvent_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/PlatformEvent.h ('k') | third_party/WebKit/Source/platform/PlatformMouseEvent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698