Example #1
0
 public GestureNotification(GestureNotificationKind kind, Vector2 position, Vector2 clientArea, int id, int sequenceId, long gestureDeviceID, int flags, Int64 ullArguments, int cbExtraArgs)
 {
     Kind            = kind;
     Position        = position;
     ClientArea      = clientArea;
     Id              = id;
     SequenceId      = sequenceId;
     GestureDeviceID = gestureDeviceID;
     Flags           = flags;
     Arguments       = ullArguments;
     ExtraArguments  = cbExtraArgs;
 }
Example #2
0
 public GestureNotification(GestureNotificationKind kind, Point position, Size clientArea, int id, int sequenceId, long gestureDeviceID, int flags, Int64 ullArguments, int cbExtraArgs, object sender)
     : base(sender)
 {
     Kind            = kind;
     Position        = position;
     ClientArea      = clientArea;
     Id              = id;
     SequenceId      = sequenceId;
     GestureDeviceID = gestureDeviceID;
     Flags           = flags;
     Arguments       = ullArguments;
     ExtraArguments  = cbExtraArgs;
 }
Example #3
0
        public virtual void OnImportsSatisfied()
        {
            FGestureFilterKind = SetGestureKindFilter();

            PositionOut.SliceCount = 0;
            IdOut.SliceCount       = 0;
            DeviceIDOut.SliceCount = 0;

            FSubscription = new Subscription <GestureDevice, GestureNotification>(
                gestureDevice =>
            {
                return(gestureDevice.Notifications.Where(g => (g.Kind == FGestureFilterKind) || (g.Kind == GestureNotificationKind.GestureEnd)));
            },
                (gestureDevice, g) =>
            {
                var index         = IdOut.IndexOf(g.Id);
                var isFilterMatch = g.Kind == FGestureFilterKind;
                UseGesture(g, isFilterMatch, index);
                if (isFilterMatch)
                {
                    var position           = new Vector2D(g.Position.X, g.Position.Y);
                    var clientArea         = new Vector2D(g.ClientArea.Width, g.ClientArea.Height);
                    var normalizedPosition = VMath.Map(position, Vector2D.Zero, clientArea, new Vector2D(-1, 1), new Vector2D(1, -1), TMapMode.Float);

                    if (index < 0)
                    {
                        PositionOut.Add(normalizedPosition);
                        IdOut.Add(g.Id);
                        DeviceIDOut.Add(g.GestureDeviceID);
                    }
                    else
                    {
                        PositionOut[index] = normalizedPosition;
                        IdOut[index]       = g.Id;
                        DeviceIDOut[index] = g.GestureDeviceID;
                    }
                }
                else if (index >= 0)
                {
                    PositionOut.RemoveAt(index);
                    IdOut.RemoveAt(index);
                    DeviceIDOut.RemoveAt(index);
                }
            },
                FScheduler
                );
        }
Example #4
0
 public virtual void OnImportsSatisfied()
 {
     FGestureFilterKind = SetGestureKindFilter();
 }
Example #5
0
        public virtual void OnImportsSatisfied()
        {
            FGestureFilterKind = SetGestureKindFilter();

            PositionPixelOut.SliceCount                  = 0;
            PositionInProjectionSpaceOut.SliceCount      = 0;
            PositionInNormalizedProjectionOut.SliceCount = 0;
            PositionOut.SliceCount = 0;
            IdOut.SliceCount       = 0;
            DeviceIDOut.SliceCount = 0;

            FSubscription = new Subscription <GestureDevice, GestureNotification>(
                gestureDevice =>
            {
                return(gestureDevice.Notifications.Where(g => (g.Kind == FGestureFilterKind) || (g.Kind == GestureNotificationKind.GestureEnd)));
            },
                (gestureDevice, g) =>
            {
                var index         = IdOut.IndexOf(g.Id);
                var isFilterMatch = g.Kind == FGestureFilterKind;
                UseGesture(g, isFilterMatch, index);
                if (isFilterMatch)
                {
                    Vector2D inNormalizedProjection, inProjection;
                    SpaceHelpers.MapFromPixels(g.Position, g.Sender, g.ClientArea,
                                               out inNormalizedProjection, out inProjection);
                    var normalizedPosition = MouseExtensions.GetLegacyMousePositon(g.Position, g.ClientArea);
                    var inPixels           = new Vector2D(g.Position.X, g.Position.Y);

                    if (index < 0)
                    {
                        PositionPixelOut.Add(inPixels);
                        PositionInProjectionSpaceOut.Add(inProjection);
                        PositionInNormalizedProjectionOut.Add(inNormalizedProjection);
                        PositionOut.Add(normalizedPosition);

                        IdOut.Add(g.Id);
                        DeviceIDOut.Add(g.GestureDeviceID);
                    }
                    else
                    {
                        PositionPixelOut[index]                  = inPixels;
                        PositionInProjectionSpaceOut[index]      = inProjection;
                        PositionInNormalizedProjectionOut[index] = inNormalizedProjection;
                        PositionOut[index] = normalizedPosition;
                        IdOut[index]       = g.Id;
                        DeviceIDOut[index] = g.GestureDeviceID;
                    }
                }
                else if (index >= 0)
                {
                    PositionPixelOut.RemoveAt(index);
                    PositionInProjectionSpaceOut.RemoveAt(index);
                    PositionInNormalizedProjectionOut.RemoveAt(index);
                    PositionOut.RemoveAt(index);
                    IdOut.RemoveAt(index);
                    DeviceIDOut.RemoveAt(index);
                }
            },
                FScheduler
                );
        }