using System; using UIWidgets.ui; namespace UIWidgets.gestures { public abstract class PointerEvent { public PointerEvent( DateTime timeStamp, int pointer = 0, PointerDeviceKind kind = PointerDeviceKind.mouse, int device = 0, Offset position = null, Offset delta = null, bool down = false, bool synthesized = false ) { this.timeStamp = timeStamp; this.pointer = pointer; this.kind = kind; this.device = device; this.position = position ?? Offset.zero; this.delta = delta ?? Offset.zero; this.down = down; this.synthesized = synthesized; } public readonly DateTime timeStamp; public readonly int pointer; public PointerDeviceKind kind; public int device; public readonly Offset position; public readonly Offset delta; public readonly bool down; public readonly bool synthesized; } public class PointerAddedEvent : PointerEvent { public PointerAddedEvent( DateTime timeStamp, PointerDeviceKind kind = PointerDeviceKind.touch, int device = 0, Offset position = null ) : base( timeStamp: timeStamp, kind: kind, device: device, position: position ) { } } public class PointerRemovedEvent : PointerEvent { public PointerRemovedEvent( DateTime timeStamp, PointerDeviceKind kind = PointerDeviceKind.touch, int device = 0 ) : base( timeStamp: timeStamp, kind: kind, device: device ) { } } public class PointerDownEvent : PointerEvent { public PointerDownEvent( DateTime timeStamp, int pointer = 0, PointerDeviceKind kind = PointerDeviceKind.mouse, int device = 0, Offset position = null) : base( timeStamp, pointer: pointer, kind: kind, device: device, position: position, down: true) { } } public class PointerMoveEvent : PointerEvent { public PointerMoveEvent( DateTime timeStamp, int pointer = 0, PointerDeviceKind kind = PointerDeviceKind.mouse, int device = 0, Offset position = null, Offset delta = null, bool synthesized = false) : base( timeStamp, pointer: pointer, kind: kind, device: device, position: position, delta: delta, down: true, synthesized: synthesized) { } } public class PointerUpEvent : PointerEvent { public PointerUpEvent( DateTime timeStamp, int pointer = 0, PointerDeviceKind kind = PointerDeviceKind.mouse, int device = 0, Offset position = null) : base( timeStamp, pointer: pointer, kind: kind, device: device, position: position, down: false) { } } public class PointerCancelEvent : PointerEvent { public PointerCancelEvent( DateTime timeStamp, int pointer = 0, PointerDeviceKind kind = PointerDeviceKind.mouse, int device = 0, Offset position = null) : base( timeStamp, pointer: pointer, kind: kind, device: device, position: position, down: false) { } } }