mirror of
https://github.com/SFML/SFML.git
synced 2024-11-28 22:31:09 +08:00
330 lines
9.0 KiB
D
330 lines
9.0 KiB
D
|
/*
|
||
|
* DSFML - SFML Library binding in D language.
|
||
|
* Copyright (C) 2008 Julien Dagorn (sirjulio13@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.
|
||
|
*/
|
||
|
|
||
|
module dsfml.window.event;
|
||
|
|
||
|
/**
|
||
|
* Definition of key codes for keyboard events
|
||
|
*
|
||
|
* $(B Possibles values:)$(BR)
|
||
|
* Except letters and numbers, you can use :$(BR)
|
||
|
* * LCONTROL, LSHIFT, LALT, LSYSTEM, RCONTROL, RSHIFT, RALT, RSYSTEM.$(BR)
|
||
|
* * LBRACKET, RBRACKET, SEMICOLON, COMMA, PERIOD, QUOTE, SLASH, BACKSLASH, TILDE, EQUAL, DASH.$(BR)
|
||
|
* * SPACE, RETURN, BACK, TAB, PAGEUP, PAGEDOWN, END, HOME, INSERT, DELETE.$(BR)
|
||
|
* * ADD, SUBTRACT, MULTIPLY, DIVIDE, LEFT, RIGHT, UP, DOWN.$(BR)
|
||
|
* * NUMPAD0, NUMPAD1, NUMPAD2, NUMPAD3, NUMPAD4, NUMPAD5, NUMPAD6, NUMPAD7, NUMPAD8, NUMPAD9.$(BR)
|
||
|
* * F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15.$(BR)
|
||
|
*/
|
||
|
enum KeyCode
|
||
|
{
|
||
|
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,
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Definition of button codes for mouse events
|
||
|
*/
|
||
|
enum MouseButtons
|
||
|
{
|
||
|
LEFT, ///
|
||
|
RIGHT, ///
|
||
|
MIDDLE, ///
|
||
|
XBUTTON1, ///
|
||
|
XBUTTON2 ///
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Definition of joystick axis for joystick events
|
||
|
*/
|
||
|
enum JoyAxis
|
||
|
{
|
||
|
AXISX, ///
|
||
|
AXISY, ///
|
||
|
AXISZ, ///
|
||
|
AXISR, ///
|
||
|
AXISU, ///
|
||
|
AXISV, ///
|
||
|
AXISPOV ///
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Event defines a system event and its parameters
|
||
|
*/
|
||
|
align(1) struct Event
|
||
|
{
|
||
|
enum EventType
|
||
|
{
|
||
|
CLOSED,
|
||
|
RESIZED,
|
||
|
LOSTFOCUS,
|
||
|
GAINEDFOCUS,
|
||
|
TEXTENTERED,
|
||
|
KEYPRESSED,
|
||
|
KEYRELEASED,
|
||
|
MOUSEWHEELMOVED,
|
||
|
MOUSEBUTTONPRESSED,
|
||
|
MOUSEBUTTONRELEASED,
|
||
|
MOUSEMOVED,
|
||
|
MOUSEENTERED,
|
||
|
MOUSELEFT,
|
||
|
JOYBUTTONPRESSED,
|
||
|
JOYBUTTONRELEASED,
|
||
|
JOYMOVED
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Enumeration of the different types of events. Accessing a value of another event that the one received (e.g. Event.Size.Width when receiving an KEYPRESSED event) will result in undefined behavior.
|
||
|
* $(UL
|
||
|
* $(LI CLOSED)
|
||
|
* $(LI LOSTFOCUS)
|
||
|
* $(LI GAINEDFOCUS)
|
||
|
* $(LI RESIZED
|
||
|
* $(UL
|
||
|
* $(LI Event.Size.Width : new Width, in pixels.)
|
||
|
* $(LI Event.Size.Height : new height, in pixels.)
|
||
|
* )
|
||
|
* )
|
||
|
* $(LI TEXTENTERED
|
||
|
* $(UL
|
||
|
* $(LI Event.Text.Unicode : dchar entered.)
|
||
|
* )
|
||
|
* )
|
||
|
* $(LI KEYPRESSED, KEYRELEASED
|
||
|
* $(UL
|
||
|
* $(LI Event.Key.Code : Key code of the key.)
|
||
|
* $(LI Event.Key.Alt : Alt pressed ?)
|
||
|
* $(LI Event.Key.Control : Control pressed ?)
|
||
|
* $(LI Event.Key.Shift : Shift pressed ?)
|
||
|
* )
|
||
|
* )
|
||
|
* $(LI MOUSEWHEELMOVED
|
||
|
* $(UL
|
||
|
* $(LI Event.MouseWheel.Delta : Wheel move (positive if forward, negative else.) )
|
||
|
* )
|
||
|
* )
|
||
|
* $(LI MOUSEBUTTONPRESSED, MOUSEBUTTONRELEASED
|
||
|
* $(UL
|
||
|
* $(LI Event.MouseButton.Button : Mouse button pressed.)
|
||
|
* $(LI Event.MouseButton.X : Cursor X position.)
|
||
|
* $(LI Event.MouseButton.Y : Cursor X position.)
|
||
|
* )
|
||
|
* )
|
||
|
* $(LI MOUSEMOVED
|
||
|
* $(UL
|
||
|
* $(LI Event.MouseMove.X : Cursor X position. Local coordinates.)
|
||
|
* $(LI Event.MouseMove.Y : Cursor Y position. Local coordinates.)
|
||
|
* )
|
||
|
* )
|
||
|
* $(LI MOUSEENTERED)
|
||
|
* $(LI MOUSELEFT)
|
||
|
* $(LI JOYBUTTONPRESSED, JOYBUTTONRELEASED
|
||
|
* $(UL
|
||
|
* $(LI Event.JoyButton.JoystickId : Id of the joystick.)
|
||
|
* $(LI Event.JoyButton.Button : Joystick button pressed.)
|
||
|
* )
|
||
|
* )
|
||
|
* $(LI JOYMOVED
|
||
|
* $(UL
|
||
|
* $(LI Event.JoyMove.JoystickId : Id of the joystick.)
|
||
|
* $(LI Event.JoyMove.Axis : Moved axis.)
|
||
|
* $(LI Event.JoyMove.Position : Actual position of the axis [-100, 100], except for POV [0, 360].)
|
||
|
* )
|
||
|
* )
|
||
|
* )
|
||
|
*/
|
||
|
EventType Type;
|
||
|
|
||
|
union
|
||
|
{
|
||
|
struct SText
|
||
|
{
|
||
|
dchar Unicode;
|
||
|
}
|
||
|
SText Text;
|
||
|
|
||
|
struct SKey
|
||
|
{
|
||
|
KeyCode Code;
|
||
|
bool Alt;
|
||
|
byte[3] Filler1;
|
||
|
bool Control;
|
||
|
byte[3] Filler2;
|
||
|
bool Shift;
|
||
|
byte[3] Filler3;
|
||
|
}
|
||
|
SKey Key;
|
||
|
|
||
|
struct SMouseMove
|
||
|
{
|
||
|
int X;
|
||
|
int Y;
|
||
|
}
|
||
|
SMouseMove MouseMove;
|
||
|
|
||
|
struct SMouseButton
|
||
|
{
|
||
|
MouseButtons Button;
|
||
|
int X;
|
||
|
int Y;
|
||
|
}
|
||
|
SMouseButton MouseButton;
|
||
|
|
||
|
struct SMouseWheel
|
||
|
{
|
||
|
int Delta;
|
||
|
}
|
||
|
SMouseWheel MouseWheel;
|
||
|
|
||
|
struct SJoyMove
|
||
|
{
|
||
|
uint JoystickId;
|
||
|
JoyAxis Axis;
|
||
|
float Position;
|
||
|
}
|
||
|
SJoyMove JoyMove;
|
||
|
|
||
|
struct SJoyButton
|
||
|
{
|
||
|
uint JoystickId;
|
||
|
uint Button;
|
||
|
}
|
||
|
SJoyButton JoyButton;
|
||
|
|
||
|
struct SSize
|
||
|
{
|
||
|
uint Width;
|
||
|
uint Height;
|
||
|
}
|
||
|
SSize Size;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|