diff options
Diffstat (limited to 'src/libjin/input/je_event.h')
-rw-r--r-- | src/libjin/input/je_event.h | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/src/libjin/input/je_event.h b/src/libjin/input/je_event.h new file mode 100644 index 0000000..9fe34ff --- /dev/null +++ b/src/libjin/input/je_event.h @@ -0,0 +1,121 @@ +#ifndef __JE_EVENT_H__ +#define __JE_EVENT_H__ +#include "../core/je_configuration.h" +#if defined(jin_input) + +namespace JinEngine +{ + namespace Input + { + #if jin_input == jin_input_sdl + #include "SDL.h" + + typedef SDL_Event Event; + typedef SDL_Keycode Key; + typedef SDL_MouseWheelEvent Wheel; + + /// + /// + /// + enum EventType { + QUIT = SDL_QUIT, + /* keyboard events */ + KEY_DOWN = SDL_KEYDOWN, + KEY_UP = SDL_KEYUP, + /* mouse events */ + MOUSE_MOTION = SDL_MOUSEMOTION, + MOUSE_BUTTON_DOWN = SDL_MOUSEBUTTONDOWN, + MOUSE_BUTTON_UP = SDL_MOUSEBUTTONUP, + MOUSE_WHEEL = SDL_MOUSEWHEEL, + /* joypad events */ + JOYBUTTONDOWN = SDL_JOYBUTTONDOWN, + JOYBUTTONUP = SDL_JOYBUTTONUP, + JOYAXISMOTION = SDL_JOYAXISMOTION, + JOYBALLMOTION = SDL_JOYBALLMOTION, + JOYHATMOTION = SDL_JOYHATMOTION, + JOYDEVICEADDED = SDL_JOYDEVICEADDED, + JOYDEVICEREMOVED = SDL_JOYDEVICEREMOVED, + CONTROLLERBUTTONDOWN = SDL_CONTROLLERBUTTONDOWN, + CONTROLLERBUTTONUP = SDL_CONTROLLERBUTTONUP, + CONTROLLERAXISMOTION = SDL_CONTROLLERAXISMOTION, + /* window evnets */ + WINDOW_EVENT = SDL_WINDOWEVENT, + }; + + /// + /// + /// + enum WindowEvent { + WINDOW_SHOWN = SDL_WINDOWEVENT_SHOWN , + WINDOW_HIDDEN = SDL_WINDOWEVENT_HIDDEN , + WINDOW_EXPOSED = SDL_WINDOWEVENT_EXPOSED , + WINDOW_MOVED = SDL_WINDOWEVENT_MOVED , + WINDOW_RESIZED = SDL_WINDOWEVENT_RESIZED , + WINDOW_SIZE_CAHNGE = SDL_WINDOWEVENT_SIZE_CHANGED , + WINDOW_MINIMIZED = SDL_WINDOWEVENT_MINIMIZED , + WINDOW_MAXIMIZED = SDL_WINDOWEVENT_MAXIMIZED , + WINDOW_RESTORED = SDL_WINDOWEVENT_RESTORED , + WINDOW_ENTER = SDL_WINDOWEVENT_ENTER , + WINDOW_LEAVE = SDL_WINDOWEVENT_LEAVE , + WINDOW_FOCUS_GAINED = SDL_WINDOWEVENT_FOCUS_GAINED, + WINDOW_FOCUS_LOST = SDL_WINDOWEVENT_FOCUS_LOST , + WINDOW_CLOSE = SDL_WINDOWEVENT_CLOSE , + WINDOW_TAKE_FOCUS = SDL_WINDOWEVENT_TAKE_FOCUS , + WINDOW_HIT_TEST = SDL_WINDOWEVENT_HIT_TEST , + }; + + /// + /// + /// + inline int pollEvent(Event* e) + { + return SDL_PollEvent(e); + } + + /// + /// + /// + inline const char* getKeyName(Key key) + { + return SDL_GetKeyName(key); + } + + /// + /// + /// + inline const char* getButtonName(int button) + { + switch (button) + { + case 1: return "Left"; + case 2: return "Middle"; + case 3: return "Right"; + case 4: return "WheelUp"; + case 5: return "WheelDown"; + default: return "?"; + } + } + + /* + inline const char* getWheelName(Wheel wheel) + { + if (wheel.x == -1) + return "left"; + else if (wheel.x == 1) + return "right"; + else if (wheel.y == -1) + return "near"; + else if (wheel.y == 1) + return "far"; + else + return "none"; + } + */ + + #endif // jin_input == jin_input_sdl + } // namespace Input +} // namespace JinEngine + +#endif // defined(jin_input) + +#endif // __JE_EVENT_H__ |