blob: 1414864149dd71461fd7cc2d4709de7b4f5490b5 [file] [log] [blame]
Geoff Lang49be2ad2014-02-28 13:05:51 -05001//
2// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
7#ifndef SAMPLE_UTIL_EVENT_H
8#define SAMPLE_UTIL_EVENT_H
9
10#include "keyboard.h"
11#include "mouse.h"
12
13class Event
14{
15 public:
16 struct MoveEvent
17 {
18 int X;
19 int Y;
20 };
21
22 struct SizeEvent
23 {
24 int Width;
25 int Height;
26 };
27
28 struct KeyEvent
29 {
30 Key Code;
31 bool Alt;
32 bool Control;
33 bool Shift;
34 bool System;
35 };
36
37 struct MouseMoveEvent
38 {
39 int X;
40 int Y;
41 };
42
43 struct MouseButtonEvent
44 {
45 MouseButton Button;
46 int X;
47 int Y;
48 };
49
50 struct MouseWheelEvent
51 {
52 int Delta;
53 };
54
55 enum EventType
56 {
57 EVENT_CLOSED, // The window requested to be closed
58 EVENT_MOVED, // The window has moved
59 EVENT_RESIZED, // The window was resized
60 EVENT_LOST_FOCUS, // The window lost the focus
61 EVENT_GAINED_FOCUS, // The window gained the focus
62 EVENT_TEXT_ENTERED, // A character was entered
63 EVENT_KEY_PRESSED, // A key was pressed
64 EVENT_KEY_RELEASED, // A key was released
65 EVENT_MOUSE_WHEEL_MOVED, // The mouse wheel was scrolled
66 EVENT_MOUSE_BUTTON_PRESSED, // A mouse button was pressed
67 EVENT_MOUSE_BUTTON_RELEASED, // A mouse button was released
68 EVENT_MOUSE_MOVED, // The mouse cursor moved
69 EVENT_MOUSE_ENTERED, // The mouse cursor entered the area of the window
70 EVENT_MOUSE_LEFT, // The mouse cursor left the area of the window
71 };
72
73 EventType Type;
74
75 union
76 {
77 MoveEvent Move; // Move event parameters
78 SizeEvent Size; // Size event parameters
79 KeyEvent Key; // Key event parameters
80 MouseMoveEvent MouseMove; // Mouse move event parameters
81 MouseButtonEvent MouseButton; // Mouse button event parameters
82 MouseWheelEvent MouseWheel; // Mouse wheel event parameters
83 };
84};
85
86#endif SAMPLE_UTIL_EVENT_H