Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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;
            }
        }