nuclear@6: /* nuclear@6: GoatKit - a themable/animated widget toolkit for games nuclear@6: Copyright (C) 2014 John Tsiombikas nuclear@6: nuclear@6: This program is free software: you can redistribute it and/or modify nuclear@6: it under the terms of the GNU Lesser General Public License as published by nuclear@6: the Free Software Foundation, either version 3 of the License, or nuclear@6: (at your option) any later version. nuclear@6: nuclear@6: This program is distributed in the hope that it will be useful, nuclear@6: but WITHOUT ANY WARRANTY; without even the implied warranty of nuclear@6: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nuclear@6: GNU Lesser General Public License for more details. nuclear@6: nuclear@6: You should have received a copy of the GNU Lesser General Public License nuclear@6: along with this program. If not, see . nuclear@6: */ nuclear@6: #ifndef EVENT_H_ nuclear@6: #define EVENT_H_ nuclear@6: nuclear@6: #include "vec.h" nuclear@6: nuclear@6: namespace goatkit { nuclear@6: nuclear@6: enum EventType { nuclear@6: // primary events nuclear@6: EV_MOUSE_BUTTON, nuclear@6: EV_MOUSE_MOTION, nuclear@6: EV_MOUSE_FOCUS, nuclear@6: EV_KEY, nuclear@6: nuclear@6: // derived events nuclear@6: EV_CLICK, nuclear@6: EV_DOUBLE_CLICK, nuclear@6: EV_CHANGE, nuclear@6: nuclear@6: NUM_EVENTS nuclear@6: }; nuclear@6: nuclear@6: enum SpecialKeys { nuclear@6: KEY_ESCAPE = 27, nuclear@6: KEY_DELETE = 127, nuclear@6: nuclear@6: KEY_F1 = 256, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, nuclear@6: KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_F11, KEY_F12, nuclear@6: KEY_LEFT, KEY_RIGHT, KEY_UP, KEY_DOWN, nuclear@6: KEY_HOME, KEY_END, KEY_PGUP, KEY_PGDOWN, nuclear@6: KEY_INSERT nuclear@6: }; nuclear@6: nuclear@6: struct ButtonEvent { nuclear@6: Vec2 pos; nuclear@6: int button; nuclear@6: bool press; nuclear@6: }; nuclear@6: nuclear@6: struct MotionEvent { nuclear@6: Vec2 pos; nuclear@6: }; nuclear@6: nuclear@6: struct FocusEvent { nuclear@6: bool enter; nuclear@6: }; nuclear@6: nuclear@6: struct KeyEvent { nuclear@6: int key; nuclear@6: bool press; nuclear@6: }; nuclear@6: nuclear@6: struct Event { nuclear@6: EventType type; nuclear@6: nuclear@6: ButtonEvent button; nuclear@6: MotionEvent motion; nuclear@6: FocusEvent focus; nuclear@6: KeyEvent key; nuclear@6: }; nuclear@6: nuclear@6: const char *event_type_name(EventType type); nuclear@6: nuclear@6: } // namespace goatkit nuclear@6: nuclear@6: #endif // EVENT_H_