public void CaptureSubTree() { Run(() => { window = new TestWindow(); window.NewContact += HandleEvent; window.ContactMoved += HandleEvent; window.ContactRemoved += HandleEvent; window.Show(); HwndSource source = (HwndSource)PresentationSource.FromVisual(window); window.ExecuteOnNextContact(c => c.Capture(window.list, CaptureMode.Element)); RawMultitouchReport report = new RawMultitouchReport(CreateContact(GetContactData(0, ContactState.New, new Point(310, 100)), 0, source)); InputManager.Current.ProcessInput(report); report = new RawMultitouchReport(CreateContact(GetContactData(0, ContactState.Moved, new Point(310, 180)), 1, source)); InputManager.Current.ProcessInput(report); report = new RawMultitouchReport(CreateContact(GetContactData(0, ContactState.Moved, new Point(310, 200)), 2, source)); InputManager.Current.ProcessInput(report); report = new RawMultitouchReport(CreateContact(GetContactData(0, ContactState.Removed, new Point(310, 230)), 3, source)); InputManager.Current.ProcessInput(report); Dispatcher.ExitAllFrames(); resetEvent.Set(); }); resetEvent.WaitOne(); Assert.AreEqual(4, events.Count); RoutedEventArgsInfo dequeue = events.Dequeue(); CheckContactEventArgs(dequeue, MultitouchScreen.NewContactEvent, window.b1); // 100,100 dequeue = events.Dequeue(); CheckContactEventArgs(dequeue, MultitouchScreen.ContactMovedEvent, window.b1); //130,100 dequeue = events.Dequeue(); CheckContactEventArgs(dequeue, MultitouchScreen.ContactMovedEvent, window.b1); //200,100 dequeue = events.Dequeue(); CheckContactEventArgs(dequeue, MultitouchScreen.ContactRemovedEvent, window.b1); //250,10 }
public void CaptureElement() { Run(() => { window = new TestWindow(); window.NewContact += HandleEvent; window.ContactMoved += HandleEvent; window.ContactRemoved += HandleEvent; window.Show(); HwndSource source = (HwndSource)PresentationSource.FromVisual(window); window.ExecuteOnNextContact(c => c.Capture(window.testElement)); RawMultitouchReport report = new RawMultitouchReport(CreateContact(GetContactData(0, ContactState.New, new Point(100, 100)), 0, source)); InputManager.Current.ProcessInput(report); report = new RawMultitouchReport(CreateContact(GetContactData(0, ContactState.Moved, new Point(130, 100)), 1, source)); InputManager.Current.ProcessInput(report); report = new RawMultitouchReport(CreateContact(GetContactData(0, ContactState.Moved, new Point(200, 100)), 2, source)); InputManager.Current.ProcessInput(report); report = new RawMultitouchReport(CreateContact(GetContactData(0, ContactState.Removed, new Point(250, 100)), 3, source)); InputManager.Current.ProcessInput(report); Dispatcher.ExitAllFrames(); resetEvent.Set(); }); resetEvent.WaitOne(); Assert.AreEqual(4, events.Count); RoutedEventArgsInfo dequeue = events.Dequeue(); CheckContactEventArgs(dequeue, MultitouchScreen.NewContactEvent, window.testElement); // 100,100 dequeue = events.Dequeue(); CheckContactEventArgs(dequeue, MultitouchScreen.ContactMovedEvent, window.testElement); //130,100 dequeue = events.Dequeue(); CheckContactEventArgs(dequeue, MultitouchScreen.ContactMovedEvent, window.testElement); //200,100 dequeue = events.Dequeue(); CheckContactEventArgs(dequeue, MultitouchScreen.ContactRemovedEvent, window.testElement); //250,100 }
public void MultipleContactsCaptureSameObject() { Run(()=> { window = new TestWindow(); window.NewContact += HandleEvent; window.Show(); HwndSource source = (HwndSource)PresentationSource.FromVisual(window); Assert.AreEqual(0, MultitouchScreen.GetContactsCaptured(window.testElement2).Count()); Assert.AreEqual(0, MultitouchScreen.GetContactsCaptured(window.testElement).Count()); window.ExecuteOnNextContact(c=>c.Capture(window.testElement)); RawMultitouchReport report = new RawMultitouchReport(CreateContact(GetContactData(0, ContactState.New, new Point(100, 100)), 0, source)); InputManager.Current.ProcessInput(report); Assert.AreEqual(1, MultitouchScreen.GetContactsCaptured(window.testElement).Count()); window.ExecuteOnNextContact(c => c.Capture(window.testElement)); report = new RawMultitouchReport(CreateContact(GetContactData(1, ContactState.New, new Point(100, 100)), 1, source)); InputManager.Current.ProcessInput(report); Assert.AreEqual(2, MultitouchScreen.GetContactsCaptured(window.testElement).Count()); Assert.AreEqual(0, MultitouchScreen.GetContactsCaptured(window.testElement2).Count()); Dispatcher.ExitAllFrames(); resetEvent.Set(); }); resetEvent.WaitOne(); }