void FireEvent(TouchEffect touchEffect, int id, TouchActionType actionType, Point pointerLocation, bool isInContact) { // Get the method to call for firing events Action <Element, TouchActionEventArgs> onTouchAction = touchEffect._libTouchEffect.OnTouchAction; // Get the location of the pointer within the view touchEffect._view.GetLocationOnScreen(_twoIntArray); double x = pointerLocation.X - _twoIntArray[0]; double y = pointerLocation.Y - _twoIntArray[1]; Point point = new Point(_fromPixels(x), _fromPixels(y)); // Call the method onTouchAction(touchEffect._formsElement, new TouchActionEventArgs(id, actionType, point, isInContact)); }
void CheckForBoundaryHop(int id, Point pointerLocation) { TouchEffect touchEffectHit = null; foreach (AView view in viewDictionary.Keys) { // Get the view rectangle try { view.GetLocationOnScreen(_twoIntArray); } catch // System.ObjectDisposedException: Cannot access a disposed object. { continue; } Rectangle viewRect = new Rectangle(_twoIntArray[0], _twoIntArray[1], view.Width, view.Height); if (viewRect.Contains(pointerLocation)) { touchEffectHit = viewDictionary[view]; } } if (touchEffectHit != idToEffectDictionary[id]) { if (idToEffectDictionary[id] != null) { FireEvent(idToEffectDictionary[id], id, TouchActionType.Exited, pointerLocation, true); } if (touchEffectHit != null) { FireEvent(touchEffectHit, id, TouchActionType.Entered, pointerLocation, true); } idToEffectDictionary[id] = touchEffectHit; } }