using System.Numerics; namespace Dashboard.Events { public enum UiEventType { None, AnimationTick, // Generic timer event. // Text input related events. KeyDown, // Keyboard key down. KeyUp, // Keyboard key up. TextInput, // Non-IME text event. TextEdit, // IME text event. TextCandidates, // IME text candidate list. TextLanguage, // Keyboard language changed event. // Mouse & touch related events MouseButtonDown, // Mouse button down. MouseButtonUp, // Mouse button up. MouseMove, // Mouse moved. MouseScroll, // Mouse scrolled. // Reserved event names StylusEnter, // The stylus has entered the hover region. StylusLeave, // The stylus has left the hover region. StylusMove, // The stylus has moved. StylusDown, // The stylus is touching. StylusUp, // The stylus is no longer touching. StylusButtonUp, // Stylus button up. StylusButtonDown, // Stylus button down. StylusAxes, // Extra stylus axes data. // Window & Control Events ControlInvalidateVisual, // Force rendering the control again. ControlStateChanged, // Control state changed. ControlMoved, // Control moved. ControlResized, // Control resized. ControlEnter, // The pointing device entered the control. ControlLeave, // The pointing device left the control. ControlFocusGet, // The control acquired focus. ControlFocusLost, // The control lost focus. WindowClose, // The window closed. UserRangeStart = 1 << 12, } public class UiEventArgs : EventArgs { public UiEventType Type { get; } public UiEventArgs(UiEventType type) { Type = type; } public static readonly UiEventArgs None = new UiEventArgs(UiEventType.None); } public class ControlMovedEventArgs : UiEventArgs { public Vector2 OldPosition { get; } public Vector2 NewPosition { get; } public ControlMovedEventArgs(Vector2 oldPosition, Vector2 newPosition) : base(UiEventType.ControlMoved) { OldPosition = oldPosition; NewPosition = newPosition; } } public class ControlResizedEventArgs { } }