// 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 namespace sf { 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, RControl, RShift, RAlt, RSystem, 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, Right, Up, Down, 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 }; } namespace Mouse { enum Button { Left, Right, Middle, XButton1, XButton2, Count // For internal use }; } namespace Joy { enum Axis { AxisX, AxisY, AxisZ, AxisR, AxisU, AxisV, AxisPOV, Count // For internal use }; } class Event { public : struct KeyEvent { Key::Code Code; bool Alt; bool Control; bool Shift; }; struct TextEvent { // I'm not sure we need this... unsigned short Unicode; }; struct MouseMoveEvent { int X; int Y; }; struct MouseButtonEvent { Mouse::Button Button; int X; int Y; }; struct MouseWheelEvent { int Delta; }; struct JoyMoveEvent { unsigned int JoystickId; Joy::Axis Axis; float Position; }; struct JoyButtonEvent { unsigned int JoystickId; unsigned int Button; }; struct SizeEvent { unsigned int Width; unsigned int Height; }; enum EventType { Closed, Resized, LostFocus, GainedFocus, TextEntered, KeyPressed, KeyReleased, MouseWheelMoved, MouseButtonPressed, MouseButtonReleased, MouseMoved, MouseEntered, MouseLeft, JoyButtonPressed, JoyButtonReleased, JoyMoved }; // Member data EventType Type; union { KeyEvent Key; TextEvent Text; MouseMoveEvent MouseMove; MouseButtonEvent MouseButton; MouseWheelEvent MouseWheel; JoyMoveEvent JoyMove; JoyButtonEvent JoyButton; SizeEvent Size; }; }; } // namespace sf #endif // SFML_EVENT_HPP