using System.Drawing; using System.Numerics; namespace Dashboard.Events { [Flags] public enum MouseButtons { M1 = 1 << 0, M2 = 1 << 1, M3 = 1 << 2, M4 = 1 << 3, M5 = 1 << 4, M6 = 1 << 5, M7 = 1 << 6, M8 = 1 << 7, Left = M1, Right = M2, Middle = M3, } public sealed class MouseMoveEventArgs : UiEventArgs { public Vector2 ClientPosition { get; } public Vector2 Delta { get; } public MouseMoveEventArgs(Vector2 clientPosition, Vector2 delta) : base(UiEventType.MouseMove) { ClientPosition = clientPosition; Delta = delta; } } public sealed class MouseButtonEventArgs : UiEventArgs { public Vector2 ClientPosition { get; } public MouseButtons Buttons { get; } public MouseButtonEventArgs(Vector2 clientPosition, MouseButtons buttons, bool up) : base(up ? UiEventType.MouseButtonUp : UiEventType.MouseButtonDown) { ClientPosition = clientPosition; Buttons = buttons; } } public sealed class MouseScrollEventArgs : UiEventArgs { public Vector2 ClientPosition { get; } public Vector2 ScrollDelta { get; } public MouseScrollEventArgs(Vector2 clientPosition, Vector2 scrollDelta) : base(UiEventType.MouseScroll) { ClientPosition = clientPosition; ScrollDelta = scrollDelta; } } public interface IMouseEvents { event EventHandler MouseMoved; event EventHandler MouseButtonDown; event EventHandler MouseButtonUp; event EventHandler MouseScroll; } }