public void Evaluate(int spreadMax) { var gestureDevice = FInput[0] ?? GestureDevice.Empty; if (gestureDevice != FGestureDevice) { Unsubscribe(); FGestureDevice = gestureDevice; Subscribe(); } var notifications = FEnumerator.MoveNext() ? FEnumerator.Current : FEmptyList; var gestures = notifications.Where(g => (g.Kind == FGestureFilterKind) || ((g.Kind == GestureNotificationKind.GestureEnd) && (IdOut.Contains(g.Id)))) .ToList(); UseGestures(gestures); PositionOut.SliceCount = gestures.Count; IdOut.SliceCount = gestures.Count; DeviceIDOut.SliceCount = gestures.Count; for (int i = 0; i < gestures.Count; i++) { var position = new Vector2D(gestures[i].Position.X, gestures[i].Position.Y); var clientArea = new Vector2D(gestures[i].ClientArea.Width, gestures[i].ClientArea.Height); var normalizedPosition = VMath.Map(position, Vector2D.Zero, clientArea, new Vector2D(-1, 1), new Vector2D(1, -1), TMapMode.Float); PositionOut[i] = normalizedPosition; IdOut[i] = gestures[i].Id; DeviceIDOut[i] = gestures[i].GestureDeviceID; } }
protected override void Initialize(IObservable <WMEventArgs> windowMessages, IObservable <bool> disabled) { var notifications = windowMessages .Where(e => (e.Message == WM.GESTURENOTIFY) || (e.Message == WM.GESTURE)) .SelectMany <WMEventArgs, GestureNotification>(e => GenerateGestureNotifications(e)); GestureDeviceOut[0] = new GestureDevice(notifications); FEnumerator = GestureDeviceOut[0].Notifications .Chunkify() .GetEnumerator(); }
public void Evaluate(int spreadMax) { var gestureDevice = FInput[0] ?? GestureDevice.Empty; if (gestureDevice != FGestureDevice) { Unsubscribe(); FGestureDevice = gestureDevice; Subscribe(); } var notifications = FEnumerator.MoveNext() ? FEnumerator.Current : FEmptyList; var gestures = notifications.Where(g => (g.Kind == FGestureFilterKind) || ((g.Kind == GestureNotificationKind.GestureEnd) && (IdOut.Contains(g.Id)))) .ToList(); UseGestures(gestures); PositionOut.SliceCount = gestures.Count; PositionInProjectionSpaceOut.SliceCount = gestures.Count; PositionInNormalizedProjectionOut.SliceCount = gestures.Count; PositionPixelOut.SliceCount = gestures.Count; IdOut.SliceCount = gestures.Count; DeviceIDOut.SliceCount = gestures.Count; for (int i = 0; i < gestures.Count; i++) { var g = gestures[i]; Vector2D inNormalizedProjection, inProjection; SpaceHelpers.MapFromPixels(g.Position, g.Sender, g.ClientArea, out inNormalizedProjection, out inProjection); PositionOut[i] = MouseExtensions.GetLegacyMousePositon(g.Position, g.ClientArea); PositionInProjectionSpaceOut[i] = inProjection; PositionInNormalizedProjectionOut[i] = inNormalizedProjection; PositionPixelOut[i] = new Vector2D(g.Position.X, g.Position.Y); IdOut[i] = g.Id; DeviceIDOut[i] = g.GestureDeviceID; } }