void AddRotateGesture(EGestureType type) { _gestureLayer.SetRotateCallback(GestureLayer.GestureState.Start, (data) => { OnGestureStarted(type, data); }); _gestureLayer.SetRotateCallback(GestureLayer.GestureState.Move, (data) => { OnGestureMoved(type, data); }); _gestureLayer.SetRotateCallback(GestureLayer.GestureState.End, (data) => { OnGestureCompleted(type, data); }); _gestureLayer.SetRotateCallback(GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); }); }
void OnFlickStarted(EGestureType type, object data) { var lineData = (GestureLayer.LineData)data; _horizontalSwipeTime = Convert.ToInt32(lineData.HorizontalSwipeTimestamp); _verticalSwipeTime = Convert.ToInt32(lineData.VerticalSwipeTimestamp); OnGestureStarted(type, data); }
void AddLongTapGesture(EGestureType type, double timeout) { if (timeout > 0) { _gestureLayer.LongTapTimeout = timeout; } _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Start, (data) => { OnLongTapStarted(type, data); }); _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.End, (data) => { OnLongTapCompleted(type, data); }); _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); }); }
void AddFlickGesture(EGestureType type, double timeout) { if (timeout > 0) { _gestureLayer.FlickTimeLimit = (int)(timeout * 1000); } _gestureLayer.SetFlickCallback(GestureLayer.GestureState.Start, (data) => { OnGestureStarted(type, data); }); _gestureLayer.SetFlickCallback(GestureLayer.GestureState.Move, (data) => { OnGestureMoved(type, data); }); _gestureLayer.SetFlickCallback(GestureLayer.GestureState.End, (data) => { OnGestureCompleted(type, data); }); _gestureLayer.SetFlickCallback(GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); }); }
void OnGestureCanceled(EGestureType type, object data) { var cache = _handlerCache; if (cache.ContainsKey(type)) { foreach (var handler in cache[type]) { (handler as IGestureController)?.SendCanceled(View, data); } } }
void AddDoubleTapGesture(EGestureType type, double timeout) { if (_gestureLayer == null) { return; } if (timeout > 0) { _gestureLayer.DoubleTapTimeout = timeout; } _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Start, (data) => { OnDoubleTapStarted(type, data); }); _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.End, (data) => { OnDoubleTapCompleted(type, data); }); _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); }); }
void AddFlickGesture(EGestureType type, double timeout) { if (_gestureLayer == null) { return; } if (timeout > 0) { _gestureLayer.FlickTimeLimit = (int)(timeout * 1000); } // Task to correct wrong coordinates information when applying EvasMap(Xamarin ex: Translation, Scale, Rotate property) // Always change to the absolute coordinates of the pointer. int startX = 0; int startY = 0; _gestureLayer.SetFlickCallback(GestureLayer.GestureState.Start, (data) => { startX = _gestureLayer.EvasCanvas.Pointer.X; startY = _gestureLayer.EvasCanvas.Pointer.Y; data.X1 = startX; data.Y1 = startY; OnGestureStarted(type, data); }); _gestureLayer.SetFlickCallback(GestureLayer.GestureState.Move, (data) => { data.X1 = startX; data.Y1 = startY; data.X2 = _gestureLayer.EvasCanvas.Pointer.X; data.Y2 = _gestureLayer.EvasCanvas.Pointer.Y; OnGestureMoved(type, data); }); _gestureLayer.SetFlickCallback(GestureLayer.GestureState.End, (data) => { data.X1 = startX; data.Y1 = startY; data.X2 = _gestureLayer.EvasCanvas.Pointer.X; data.Y2 = _gestureLayer.EvasCanvas.Pointer.Y; OnGestureCompleted(type, data); }); _gestureLayer.SetFlickCallback(GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); }); }
void OnLongTapCompleted(EGestureType type, object data) { _longTapTime = ((GestureLayer.TapData)data).Timestamp - _longTapTime; var cache = _handlerCache; if (cache.ContainsKey(type)) { foreach (var handler in cache[type]) { if ((handler.Timeout * 1000) <= _longTapTime) { (handler as IGestureController)?.SendCompleted(View, data); } else { (handler as IGestureController)?.SendCanceled(View, data); } } } }
void AddMomentumGesture(EGestureType type) { // Task to correct wrong coordinates information when applying EvasMap(Xamarin ex: Translation, Scale, Rotate property) // Always change to the absolute coordinates of the pointer. int startX = 0; int startY = 0; _gestureLayer.SetMomentumCallback(GestureLayer.GestureState.Start, (data) => { startX = _gestureLayer.EvasCanvas.Pointer.X; startY = _gestureLayer.EvasCanvas.Pointer.Y; OnGestureStarted(type, data); }); _gestureLayer.SetMomentumCallback(GestureLayer.GestureState.Move, (data) => { data.X1 = startX; data.Y1 = startY; data.X2 = _gestureLayer.EvasCanvas.Pointer.X; data.Y2 = _gestureLayer.EvasCanvas.Pointer.Y; OnGestureMoved(type, data); }); _gestureLayer.SetMomentumCallback(GestureLayer.GestureState.End, (data) => { OnGestureCompleted(type, data); }); _gestureLayer.SetMomentumCallback(GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); }); }
void OnFlickCompleted(EGestureType type, object data) { var lineData = (GestureLayer.LineData)data; _horizontalSwipeTime = Convert.ToInt32(lineData.HorizontalSwipeTimestamp - _horizontalSwipeTime); _verticalSwipeTime = Convert.ToInt32(lineData.VerticalSwipeTimestamp - _verticalSwipeTime); var cache = _handlerCache; if (cache.ContainsKey(type)) { foreach (var handler in cache[type]) { if ((handler.Timeout * 1000) >= _horizontalSwipeTime || (handler.Timeout * 1000) >= _verticalSwipeTime) { (handler as IGestureController)?.SendCompleted(View, data); } else { (handler as IGestureController)?.SendCanceled(View, data); } } } }
void OnLongTapStarted(EGestureType type, object data) { _longTapTime = ((GestureLayer.TapData)data).Timestamp; OnGestureStarted(type, data); }
void RemoveTapGesture(EGestureType type) { _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Start, null); _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.End, null); _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Abort, null); }
void AddTapGesture(EGestureType type) { _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Start, (data) => { OnGestureStarted(type, data); }); _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.End, (data) => { OnGestureCompleted(type, data); }); _gestureLayer.SetTapCallback(type, GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); }); }
void OnLongTapMoved(EGestureType type, object data) { OnGestureMoved(type, data); }
internal static extern void elm_gesture_layer_cb_set(IntPtr obj, ElmSharp.GestureLayer.GestureType idx, ElmSharp.GestureLayer.GestureState cb_type, GestureEventCallback cb, IntPtr data);