FifeGUI 0.2.0
A C++ GUI library designed for games.
genericinput.cpp
1// SPDX-License-Identifier: LGPL-2.1-or-later OR BSD-3-Clause
2// SPDX-FileCopyrightText: 2004 - 2008 Olof Naessén and Per Larsson
3// SPDX-FileCopyrightText: 2013 - 2026 Fifengine contributors
4
5#include "fifechan/genericinput.hpp"
6
7#include "fifechan/exception.hpp"
8#include "fifechan/keyinput.hpp"
9#include "fifechan/mouseinput.hpp"
10
11namespace fcn
12{
13 GenericInput::GenericInput() = default;
14
16 {
17 // TODO(jakoch): Implement this method.
18 }
19
21 {
22 // TODO(jakoch): Implement this method.
23 }
24
25 void GenericInput::pushMouseButtonPressed(int x, int y, int button)
26 {
27 MouseInput mouseInput{};
28 mouseInput.setX(x);
29 mouseInput.setY(y);
30 mouseInput.setButton(static_cast<MouseInput::Button>(button));
31 mouseInput.setType(MouseInput::Type::Pressed);
32
33 mMouseInputQueue.push(mouseInput);
34 }
35
36 void GenericInput::pushMouseButtonReleased(int x, int y, int button)
37 {
38 MouseInput mouseInput{};
39 mouseInput.setX(x);
40 mouseInput.setY(y);
41 mouseInput.setButton(static_cast<MouseInput::Button>(button));
42 mouseInput.setType(MouseInput::Type::Released);
43
44 mMouseInputQueue.push(mouseInput);
45 }
46
48 {
49 MouseInput mouseInput{};
50 mouseInput.setX(x);
51 mouseInput.setY(y);
52 mouseInput.setType(MouseInput::Type::WheelMovedUp);
53
54 mMouseInputQueue.push(mouseInput);
55 }
56
58 {
59 MouseInput mouseInput{};
60 mouseInput.setX(x);
61 mouseInput.setY(y);
62 mouseInput.setType(MouseInput::Type::WheelMovedDown);
63
64 mMouseInputQueue.push(mouseInput);
65 }
66
68 {
69 MouseInput mouseInput{};
70 mouseInput.setX(x);
71 mouseInput.setY(y);
72 mouseInput.setType(MouseInput::Type::WheelMovedRight);
73
74 mMouseInputQueue.push(mouseInput);
75 }
76
78 {
79 MouseInput mouseInput{};
80 mouseInput.setX(x);
81 mouseInput.setY(y);
82 mouseInput.setType(MouseInput::Type::WheelMovedLeft);
83
84 mMouseInputQueue.push(mouseInput);
85 }
86
88 {
89 MouseInput mouseInput{};
90 mouseInput.setX(x);
91 mouseInput.setY(y);
92 mouseInput.setType(MouseInput::Type::Moved);
93
94 mMouseInputQueue.push(mouseInput);
95 }
96
98 {
99 return mKeyInputQueue.empty();
100 }
101
103 {
104 KeyInput keyInput;
105
106 if (mKeyInputQueue.empty()) {
107 throwException("The queue is empty.");
108 }
109
110 keyInput = mKeyInputQueue.front();
111 mKeyInputQueue.pop();
112
113 return keyInput;
114 }
115
117 {
118 return mMouseInputQueue.empty();
119 }
120
122 {
123 MouseInput mouseInput{};
124
125 if (mMouseInputQueue.empty()) {
126 throwException("The queue is empty.");
127 }
128
129 mouseInput = mMouseInputQueue.front();
130 mMouseInputQueue.pop();
131
132 return mouseInput;
133 }
134
136 {
137 // Does nothing.
138 }
139} // namespace fcn
void pushMouseWheelMovedLeft(int x, int y)
Pushes a mouse wheel moved left event.
void pushMouseWheelMovedRight(int x, int y)
Pushes a mouse wheel moved right event.
void pushMouseWheelMovedUp(int x, int y)
Pushes a mouse wheel moved up event.
void pushKeyPressed(int unicode)
Pushes a key pressed event.
void pushMouseButtonPressed(int x, int y, int button)
Pushes a mouse button pressed event.
void _pollInput() override
Polls all exsisting input.
void pushMouseWheelMovedDown(int x, int y)
Pushes a mouse wheel moved down event.
std::queue< KeyInput > mKeyInputQueue
Holds the key input queue.
bool isKeyQueueEmpty() override
Checks if the key queue is empty, or not.
MouseInput dequeueMouseInput() override
Dequeues the mouse input queue.
void pushMouseMoved(int x, int y)
Pushes a mouse moved event.
std::queue< MouseInput > mMouseInputQueue
Holds the mouse input queue.
void pushMouseButtonReleased(int x, int y, int button)
Pushes a mouse button released event.
bool isMouseQueueEmpty() override
Checks if the mouse queue is empyt, or not.
void pushKeyReleased(int unicode)
Pushes a key released event.
KeyInput dequeueKeyInput() override
Dequeues the key input queue.
Internal class representing raw keyboard input data.
Definition keyinput.hpp:28
Internal class representing raw mouse input data.
void setX(int x)
Sets the x coordinate of the mouse input.
void setY(int y)
Sets the y coordinate of the mouse input.
void setType(Type type)
Sets the type of the mouse input.
void setButton(Button button)
Sets the button pressed.