// // // xCSCarbon // // Created by Erik Ylvisaker on 3/17/08. // Copyright 2008 __MyCompanyName__. All rights reserved. // // using System; using System.Collections.Generic; using System.IO; using System.Text; namespace OpenTK.Platform.MacOS.Carbon { internal struct EventInfo { internal EventInfo(IntPtr eventRef) { this._eventClass = API.GetEventClass(eventRef); this._eventKind = API.GetEventKind(eventRef); } uint _eventKind; EventClass _eventClass; public EventClass EventClass { get { return _eventClass; } } public WindowEventKind WindowEventKind { get { if (EventClass == EventClass.Window) return (WindowEventKind)_eventKind; else throw new InvalidCastException("Event is not a Window event."); } } public KeyboardEventKind KeyboardEventKind { get { if (EventClass == EventClass.Keyboard) return (KeyboardEventKind)_eventKind; else throw new InvalidCastException("Event is not a Keyboard event."); } } public MouseEventKind MouseEventKind { get { if (EventClass == EventClass.Mouse) return (MouseEventKind)_eventKind; else throw new InvalidCastException("Event is not an Mouse event."); } } public AppEventKind AppEventKind { get { if (EventClass == EventClass.Application) return (AppEventKind)_eventKind; else throw new InvalidCastException("Event is not an Application event."); } } public override string ToString() { switch (EventClass) { case EventClass.Application: return "Event: App " + AppEventKind.ToString(); case EventClass.Keyboard: return "Event: Keyboard " + KeyboardEventKind.ToString(); case EventClass.Mouse: return "Event: Mouse " + MouseEventKind.ToString(); case EventClass.Window: return "Event: Window " + WindowEventKind.ToString(); } return "Event: Unknown Class " + EventClass.ToString() + " kind: " + _eventKind.ToString(); } } }