310 lines
6.3 KiB
C++
Executable File
310 lines
6.3 KiB
C++
Executable File
////////////////////////////////////////////////////////////
|
|
//
|
|
// 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 <SFML/Config.hpp>
|
|
|
|
|
|
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
|