2 * Copyright(c) 2017 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
22 /// A PanGesture is emitted when the user moves one or more fingers in a particular direction.<br />
23 /// A pan gesture will end in the following ways:<br />
24 /// - User releases the primary finger (the first touch).<br />
25 /// - User has more fingers on the screen than the maximum specified.<br />
26 /// - User has less fingers on the screen than the minimum specified.<br />
27 /// - Cancelled by the system.<br />
28 /// A pan gesture will continue to be sent to the actor under than initial pan until it ends.<br />
30 /// <since_tizen> 3 </since_tizen>
31 public class PanGesture : Gesture
33 private global::System.Runtime.InteropServices.HandleRef swigCPtr;
36 /// The default constructor.
38 /// <since_tizen> 3 </since_tizen>
39 public PanGesture() : this(Interop.PanGestureDetector.new_PanGesture__SWIG_0(), true)
41 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
47 /// <param name="state">The state of the gesture</param>
48 internal PanGesture(Gesture.StateType state) : this(Interop.PanGestureDetector.new_PanGesture__SWIG_1((int)state), true)
50 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
53 internal PanGesture(global::System.IntPtr cPtr, bool cMemoryOwn) : base(Interop.PanGestureDetector.PanGesture_SWIGUpcast(cPtr), cMemoryOwn)
55 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
59 /// The velocity at which the user is moving their fingers.<br />
60 /// This is represented as a Vector2 and is the pixel movement per millisecond.<br />
61 /// A positive x value shows that the user is panning to the right, a negative x value means the opposite.<br />
62 /// A positive y value shows that the user is panning downwards, a negative y values means upwards.<br />
64 /// <since_tizen> 3 </since_tizen>
65 public Vector2 Velocity
74 /// This is a Vector2 showing how much the user has panned (dragged) since the last pan gesture or,
75 /// if the gesture has just started, then the amount panned since the user touched the screen.<br />
76 /// A positive x value shows that the user is panning to the right, a negative x value means the opposite.<br />
77 /// A positive y value shows that the user is panning downwards, a negative y value means upwards.<br />
79 /// <since_tizen> 3 </since_tizen>
80 public Vector2 Displacement
89 /// The current touch position of the primary touch point in local actor coordinates.
91 /// <since_tizen> 3 </since_tizen>
92 public Vector2 Position
101 /// The velocity at which the user is moving their fingers.<br />
102 /// This is represented as a Vector2 and is the pixel movement per millisecond.<br />
103 /// A positive x value shows that the user is panning to the right, a negative x value means the opposite.<br />
104 /// A positive y value shows that the user is panning downwards, a negative y values means upwards.<br />
105 /// This value represents the screen coordinates.<br />
107 /// <since_tizen> 3 </since_tizen>
108 public Vector2 ScreenVelocity
112 return screenVelocity;
117 /// This is a Vector2 showing how much the user has panned (dragged) since the last pan gesture or,
118 /// if the gesture has just started, then the amount panned since the user touched the screen.<br />
119 /// A positive x value shows that the user is panning to the right, a negative x value means the opposite.<br />
120 /// A positive y value shows that the user is panning downwards, a negative y value means upwards.<br />
121 /// This value is in screen coordinates.<br />
123 /// <since_tizen> 3 </since_tizen>
124 public Vector2 ScreenDisplacement
128 return screenDisplacement;
133 /// The current touch position of the primary touch point in screen coordinates.
135 /// <since_tizen> 3 </since_tizen>
136 public Vector2 ScreenPosition
140 return screenPosition;
145 /// The total number of fingers touching the screen in a pan gesture.
147 /// <since_tizen> 3 </since_tizen>
148 public uint NumberOfTouches
152 return numberOfTouches;
157 private Vector2 velocity
161 Interop.PanGestureDetector.PanGesture_velocity_set(swigCPtr, Vector2.getCPtr(value));
162 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
166 global::System.IntPtr cPtr = Interop.PanGestureDetector.PanGesture_velocity_get(swigCPtr);
167 Vector2 ret = (cPtr == global::System.IntPtr.Zero) ? null : new Vector2(cPtr, false);
168 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
173 private Vector2 displacement
177 Interop.PanGestureDetector.PanGesture_displacement_set(swigCPtr, Vector2.getCPtr(value));
178 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
182 global::System.IntPtr cPtr = Interop.PanGestureDetector.PanGesture_displacement_get(swigCPtr);
183 Vector2 ret = (cPtr == global::System.IntPtr.Zero) ? null : new Vector2(cPtr, false);
184 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
189 private Vector2 position
193 Interop.PanGestureDetector.PanGesture_position_set(swigCPtr, Vector2.getCPtr(value));
194 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
198 global::System.IntPtr cPtr = Interop.PanGestureDetector.PanGesture_position_get(swigCPtr);
199 Vector2 ret = (cPtr == global::System.IntPtr.Zero) ? null : new Vector2(cPtr, false);
200 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
205 private Vector2 screenVelocity
209 Interop.PanGestureDetector.PanGesture_screenVelocity_set(swigCPtr, Vector2.getCPtr(value));
210 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
214 global::System.IntPtr cPtr = Interop.PanGestureDetector.PanGesture_screenVelocity_get(swigCPtr);
215 Vector2 ret = (cPtr == global::System.IntPtr.Zero) ? null : new Vector2(cPtr, false);
216 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
221 private Vector2 screenDisplacement
225 Interop.PanGestureDetector.PanGesture_screenDisplacement_set(swigCPtr, Vector2.getCPtr(value));
226 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
230 global::System.IntPtr cPtr = Interop.PanGestureDetector.PanGesture_screenDisplacement_get(swigCPtr);
231 Vector2 ret = (cPtr == global::System.IntPtr.Zero) ? null : new Vector2(cPtr, false);
232 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
237 private Vector2 screenPosition
241 Interop.PanGestureDetector.PanGesture_screenPosition_set(swigCPtr, Vector2.getCPtr(value));
242 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
246 global::System.IntPtr cPtr = Interop.PanGestureDetector.PanGesture_screenPosition_get(swigCPtr);
247 Vector2 ret = (cPtr == global::System.IntPtr.Zero) ? null : new Vector2(cPtr, false);
248 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
253 private uint numberOfTouches
257 Interop.PanGestureDetector.PanGesture_numberOfTouches_set(swigCPtr, value);
258 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
262 uint ret = Interop.PanGestureDetector.PanGesture_numberOfTouches_get(swigCPtr);
263 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
270 /// Returns the speed at which the user is moving their fingers.<br />
271 /// This is the pixel movement per millisecond.<br />
273 /// <returns>The speed of the pan (in pixels per millisecond).</returns>
274 /// <since_tizen> 3 </since_tizen>
275 public float GetSpeed()
277 float ret = Interop.PanGestureDetector.PanGesture_GetSpeed(swigCPtr);
278 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
283 /// Returns the distance the user has panned (dragged) since the last pan gesture or,
284 /// if the gesture has just started, then the distance moved since the user touched the screen.<br />
285 /// This is always a positive value.<br />
287 /// <returns>The distance, as a float, a user's finger has panned.</returns>
288 /// <since_tizen> 3 </since_tizen>
289 public float GetDistance()
291 float ret = Interop.PanGestureDetector.PanGesture_GetDistance(swigCPtr);
292 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
297 /// Returns the speed at which the user is moving their fingers relative to screen coordinates.<br />
298 /// This is the pixel movement per millisecond.<br />
300 /// <returns>The speed of the pan (in pixels per millisecond).</returns>
301 /// <since_tizen> 3 </since_tizen>
302 public float GetScreenSpeed()
304 float ret = Interop.PanGestureDetector.PanGesture_GetScreenSpeed(swigCPtr);
305 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
310 /// Returns the distance the user has panned (dragged) since the last pan gesture in screen
311 /// coordinates or, if the gesture has just started, then the distance in screen coordinates moved
312 /// since the user touched the screen.<br />
313 /// This is always a positive value.<br />
315 /// <returns>The distance, as a float, a user's finger has panned.</returns>
316 /// <since_tizen> 3 </since_tizen>
317 public float GetScreenDistance()
319 float ret = Interop.PanGestureDetector.PanGesture_GetScreenDistance(swigCPtr);
320 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
324 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(PanGesture obj)
326 return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
329 internal static PanGesture GetPanGestureFromPtr(global::System.IntPtr cPtr)
331 PanGesture ret = new PanGesture(cPtr, false);
332 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
339 /// <since_tizen> 3 </since_tizen>
340 protected override void Dispose(DisposeTypes type)
347 if (type == DisposeTypes.Explicit)
350 //Release your own managed resources here.
351 //You should release all of your own disposable objects here.
354 //Release your own unmanaged resources here.
355 //You should not access any managed member here except static instance.
356 //because the execution order of Finalizes is non-deterministic.
358 if (swigCPtr.Handle != global::System.IntPtr.Zero)
363 Interop.PanGestureDetector.delete_PanGesture(swigCPtr);
365 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);