//////////////////////////////////////////////////////////// // // SFML - Simple and Fast Multimedia Library // Copyright (C) 2007-2008 Laurent Gomila (laurent.gom@gmail.com) // // This software is provided 'as-is', without any express or implied warranty. // In no event will the authors be held liable for any damages arising from the use of this software. // // Permission is granted to anyone to use this software for any purpose, // including commercial applications, and to alter it and redistribute it freely, // subject to the following restrictions: // // 1. The origin of this software must not be misrepresented; // you must not claim that you wrote the original software. // If you use this software in a product, an acknowledgment // in the product documentation would be appreciated but is not required. // // 2. Altered source versions must be plainly marked as such, // and must not be misrepresented as being the original software. // // 3. This notice may not be removed or altered from any source distribution. // //////////////////////////////////////////////////////////// #ifndef SFML_EVENT_HPP #define SFML_EVENT_HPP //////////////////////////////////////////////////////////// // Headers //////////////////////////////////////////////////////////// //#include namespace sf { //////////////////////////////////////////////////////////// /// Definition of key codes for keyboard events //////////////////////////////////////////////////////////// namespace Key { enum Code { A = 'a', B = 'b', C = 'c', D = 'd', E = 'e', F = 'f', G = 'g', H = 'h', I = 'i', J = 'j', K = 'k', L = 'l', M = 'm', N = 'n', O = 'o', P = 'p', Q = 'q', R = 'r', S = 's', T = 't', U = 'u', V = 'v', W = 'w', X = 'x', Y = 'y', Z = 'z', Num0 = '0', Num1 = '1', Num2 = '2', Num3 = '3', Num4 = '4', Num5 = '5', Num6 = '6', Num7 = '7', Num8 = '8', Num9 = '9', Escape = 256, LControl, LShift, LAlt, LSystem, ///< OS specific key (left side) : windows (Win and Linux), apple (MacOS), ... RControl, RShift, RAlt, RSystem, ///< OS specific key (right side) : windows (Win and Linux), apple (MacOS), ... Menu, LBracket, ///< [ RBracket, ///< ] SemiColon, ///< ; Comma, ///< , Period, ///< . Quote, ///< ' Slash, ///< / BackSlash, Tilde, ///< ~ Equal, ///< = Dash, ///< - Space, Return, Back, Tab, PageUp, PageDown, End, Home, Insert, Delete, Add, ///< + Subtract, ///< - Multiply, ///< * Divide, ///< / Left, ///< Left arrow Right, ///< Right arrow Up, ///< Up arrow Down, ///< Down arrow Numpad0, Numpad1, Numpad2, Numpad3, Numpad4, Numpad5, Numpad6, Numpad7, Numpad8, Numpad9, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, Pause, Count // For internal use }; } //////////////////////////////////////////////////////////// /// Definition of button codes for mouse events //////////////////////////////////////////////////////////// namespace Mouse { enum Button { Left, Right, Middle, XButton1, XButton2, Count // For internal use }; } //////////////////////////////////////////////////////////// /// Definition of joystick axis for joystick events //////////////////////////////////////////////////////////// namespace Joy { enum Axis { AxisX, AxisY, AxisZ, AxisR, AxisU, AxisV, AxisPOV, Count // For internal use }; } //////////////////////////////////////////////////////////// /// Event defines a system event and its parameters //////////////////////////////////////////////////////////// class Event { public : //////////////////////////////////////////////////////////// /// Keyboard event parameters //////////////////////////////////////////////////////////// struct KeyEvent { Key::Code Code; bool Alt; bool Control; bool Shift; }; //////////////////////////////////////////////////////////// /// Text event parameters //////////////////////////////////////////////////////////// struct TextEvent { unsigned short Unicode; }; //////////////////////////////////////////////////////////// /// Mouse move event parameters //////////////////////////////////////////////////////////// struct MouseMoveEvent { unsigned int X; unsigned int Y; }; //////////////////////////////////////////////////////////// /// Mouse buttons events parameters //////////////////////////////////////////////////////////// struct MouseButtonEvent { Mouse::Button Button; }; //////////////////////////////////////////////////////////// /// Mouse wheel events parameters //////////////////////////////////////////////////////////// struct MouseWheelEvent { int Delta; }; //////////////////////////////////////////////////////////// /// Joystick axis move event parameters //////////////////////////////////////////////////////////// struct JoyMoveEvent { unsigned int JoystickId; Joy::Axis Axis; float Position; }; //////////////////////////////////////////////////////////// /// Joystick buttons events parameters //////////////////////////////////////////////////////////// struct JoyButtonEvent { unsigned int JoystickId; unsigned int Button; }; //////////////////////////////////////////////////////////// /// Size events parameters //////////////////////////////////////////////////////////// struct SizeEvent { unsigned int Width; unsigned int Height; }; //////////////////////////////////////////////////////////// /// Enumeration of the different types of events //////////////////////////////////////////////////////////// enum EventType { Closed, Resized, LostFocus, GainedFocus, TextEntered, KeyPressed, KeyReleased, MouseWheelMoved, MouseButtonPressed, MouseButtonReleased, MouseMoved, JoyButtonPressed, JoyButtonReleased, JoyMoved }; //////////////////////////////////////////////////////////// // Member data //////////////////////////////////////////////////////////// EventType Type; ///< Type of the event union { KeyEvent Key; TextEvent Text; MouseMoveEvent MouseMove; MouseButtonEvent MouseButton; MouseWheelEvent MouseWheel; JoyMoveEvent JoyMove; JoyButtonEvent JoyButton; SizeEvent Size; }; }; } // namespace sf #endif // SFML_EVENT_HPP