ACloudViewer
3.9.4
A Modern Library for 3D Data Processing
Events.h
Go to the documentation of this file.
1
// ----------------------------------------------------------------------------
2
// - CloudViewer: www.cloudViewer.org -
3
// ----------------------------------------------------------------------------
4
// Copyright (c) 2018-2024 www.cloudViewer.org
5
// SPDX-License-Identifier: MIT
6
// ----------------------------------------------------------------------------
7
8
#pragma once
9
10
#include <
IJsonConvertible.h
>
11
12
#include <cstdint>
13
#include <sstream>
14
#include <string>
15
17
namespace
Json {
18
class
Value;
19
}
// namespace Json
21
22
namespace
cloudViewer
{
23
namespace
visualization {
24
namespace
gui {
25
26
enum class
MouseButton
{
27
NONE
= 0,
28
LEFT
= (1 << 0),
29
MIDDLE
= (1 << 1),
30
RIGHT
= (1 << 2),
31
BUTTON4
= (1 << 3),
32
BUTTON5
= (1 << 4)
33
};
34
35
// The key modifiers are labeled by functionality; for instance,
36
// Ctrl on Windows and Command on macOS have roughly the same functionality.
37
enum class
KeyModifier
{
38
NONE
= 0,
39
SHIFT
= (1 << 0),
40
CTRL
= (1 << 1),
// win/linux: ctrl, macOS: command
41
ALT
= (1 << 2),
// win/linux: alt, macOS: ctrl
42
META
= (1 << 3),
// win/linux: windows key, macOS: option
43
};
44
45
struct
MouseEvent
{
46
enum
Type
{
MOVE
,
BUTTON_DOWN
,
DRAG
,
BUTTON_UP
,
WHEEL
};
47
48
static
MouseEvent
MakeMoveEvent
(
const
Type
type
,
49
const
int
x
,
50
const
int
y
,
51
const
int
modifiers
,
52
const
int
buttons
);
53
54
static
MouseEvent
MakeButtonEvent
(
const
Type
type
,
55
const
int
x
,
56
const
int
y
,
57
const
int
modifiers
,
58
const
MouseButton
button
,
59
const
int
count
);
60
61
static
MouseEvent
MakeWheelEvent
(
const
Type
type
,
62
const
int
x
,
63
const
int
y
,
64
const
int
modifiers
,
65
const
float
dx
,
66
const
float
dy
,
67
const
bool
isTrackpad
);
68
69
Type
type
;
70
int
x
;
71
int
y
;
72
int
modifiers
;
// KeyModifiers ORed together
73
union
{
74
struct
{
75
int
buttons
;
// MouseButtons ORed together
76
}
move
;
// includes drag
77
struct
{
78
MouseButton
button
;
79
int
count
;
80
}
button
;
81
struct
{
82
float
dx
;
// macOS gives fractional values, and is required
83
float
dy
;
// for the buttery-smooth trackpad scrolling on macOS
84
bool
isTrackpad
;
85
}
wheel
;
86
};
87
88
bool
FromJson
(
const
Json::Value &value);
89
std::string
ToString
()
const
;
90
};
91
92
struct
TickEvent
{
93
double
dt
;
94
};
95
96
enum
KeyName
{
97
KEY_NONE
= 0,
98
KEY_BACKSPACE
= 8,
99
KEY_TAB
= 9,
100
KEY_ENTER
= 10,
101
KEY_ESCAPE
= 27,
102
KEY_SPACE
= 32,
103
KEY_EXCLAMATION
= 33,
104
KEY_DOUBLE_QUOTE
= 34,
105
KEY_HASH
= 35,
106
KEY_DOLLAR_SIGN
= 36,
107
KEY_PERCENT
= 37,
108
KEY_AMPERSAND
= 38,
109
KEY_SINGLE_QUOTE
= 39,
110
KEY_LEFT_PAREN
= 40,
111
KEY_RIGHT_PAREN
= 41,
112
KEY_ASTERISK
= 42,
113
KEY_PLUS
= 43,
114
KEY_COMMA
= 44,
115
KEY_MINUS
= 45,
116
KEY_PERIOD
= 46,
117
KEY_SLASH
= 47,
118
KEY_0
= 48,
119
KEY_1
,
120
KEY_2
,
121
KEY_3
,
122
KEY_4
,
123
KEY_5
,
124
KEY_6
,
125
KEY_7
,
126
KEY_8
,
127
KEY_9
,
128
KEY_COLON
= 58,
129
KEY_SEMICOLON
= 59,
130
KEY_LESS_THAN
= 60,
131
KEY_EQUALS
= 61,
132
KEY_GREATER_THAN
= 62,
133
KEY_QUESTION_MARK
= 63,
134
KEY_AT
= 64,
135
KEY_LEFT_BRACKET
= 91,
136
KEY_BACKSLASH
= 92,
137
KEY_RIGHT_BRACKET
= 93,
138
KEY_CARET
= 94,
139
KEY_UNDERSCORE
= 95,
140
KEY_BACKTICK
= 96,
141
KEY_A
= 97,
142
KEY_B
,
143
KEY_C
,
144
KEY_D
,
145
KEY_E
,
146
KEY_F
,
147
KEY_G
,
148
KEY_H
,
149
KEY_I
,
150
KEY_J
,
151
KEY_K
,
152
KEY_L
,
153
KEY_M
,
154
KEY_N
,
155
KEY_O
,
156
KEY_P
,
157
KEY_Q
,
158
KEY_R
,
159
KEY_S
,
160
KEY_T
,
161
KEY_U
,
162
KEY_V
,
163
KEY_W
,
164
KEY_X
,
165
KEY_Y
,
166
KEY_Z
,
167
KEY_LEFT_BRACE
= 123,
168
KEY_PIPE
= 124,
169
KEY_RIGHT_BRACE
= 125,
170
KEY_TILDE
= 126,
171
KEY_DELETE
= 127,
172
KEY_LSHIFT
= 256,
173
KEY_RSHIFT
,
174
KEY_LCTRL
,
175
KEY_RCTRL
,
176
KEY_ALT
,
177
KEY_META
,
178
KEY_CAPSLOCK
,
179
KEY_LEFT
,
180
KEY_RIGHT
,
181
KEY_UP
,
182
KEY_DOWN
,
183
KEY_INSERT
,
184
KEY_HOME
,
185
KEY_END
,
186
KEY_PAGEUP
,
187
KEY_PAGEDOWN
,
188
KEY_F1
= 290,
189
KEY_F2
,
190
KEY_F3
,
191
KEY_F4
,
192
KEY_F5
,
193
KEY_F6
,
194
KEY_F7
,
195
KEY_F8
,
196
KEY_F9
,
197
KEY_F10
,
198
KEY_F11
,
199
KEY_F12
,
200
KEY_UNKNOWN
= 1000
201
};
202
203
struct
KeyEvent
{
204
enum
Type
{
DOWN
,
UP
};
205
Type
type
;
206
// This is the actual key that was pressed, not the character that
207
// was generated (use TextInputEvent for that). Values correspond
208
// to ASCII values where applicable.
209
uint32_t
key
;
210
bool
isRepeat
;
211
};
212
213
struct
TextInputEvent
{
214
const
char
*
utf8
;
215
};
216
217
}
// namespace gui
218
}
// namespace visualization
219
}
// namespace cloudViewer
IJsonConvertible.h
cloudViewer::visualization::gui::MouseButton
MouseButton
Definition:
Events.h:26
cloudViewer::visualization::gui::MouseButton::RIGHT
@ RIGHT
cloudViewer::visualization::gui::MouseButton::BUTTON4
@ BUTTON4
cloudViewer::visualization::gui::MouseButton::BUTTON5
@ BUTTON5
cloudViewer::visualization::gui::MouseButton::MIDDLE
@ MIDDLE
cloudViewer::visualization::gui::MouseButton::LEFT
@ LEFT
cloudViewer::visualization::gui::MouseButton::NONE
@ NONE
cloudViewer::visualization::gui::KeyModifier
KeyModifier
Definition:
Events.h:37
cloudViewer::visualization::gui::KeyModifier::CTRL
@ CTRL
cloudViewer::visualization::gui::KeyModifier::SHIFT
@ SHIFT
cloudViewer::visualization::gui::KeyModifier::NONE
@ NONE
cloudViewer::visualization::gui::KeyModifier::ALT
@ ALT
cloudViewer::visualization::gui::KeyModifier::META
@ META
cloudViewer::visualization::gui::KeyName
KeyName
Definition:
Events.h:96
cloudViewer::visualization::gui::KEY_2
@ KEY_2
Definition:
Events.h:120
cloudViewer::visualization::gui::KEY_J
@ KEY_J
Definition:
Events.h:150
cloudViewer::visualization::gui::KEY_CARET
@ KEY_CARET
Definition:
Events.h:138
cloudViewer::visualization::gui::KEY_E
@ KEY_E
Definition:
Events.h:145
cloudViewer::visualization::gui::KEY_S
@ KEY_S
Definition:
Events.h:159
cloudViewer::visualization::gui::KEY_PERIOD
@ KEY_PERIOD
Definition:
Events.h:116
cloudViewer::visualization::gui::KEY_AT
@ KEY_AT
Definition:
Events.h:134
cloudViewer::visualization::gui::KEY_0
@ KEY_0
Definition:
Events.h:118
cloudViewer::visualization::gui::KEY_RIGHT_PAREN
@ KEY_RIGHT_PAREN
Definition:
Events.h:111
cloudViewer::visualization::gui::KEY_SLASH
@ KEY_SLASH
Definition:
Events.h:117
cloudViewer::visualization::gui::KEY_UP
@ KEY_UP
Definition:
Events.h:181
cloudViewer::visualization::gui::KEY_F11
@ KEY_F11
Definition:
Events.h:198
cloudViewer::visualization::gui::KEY_DOWN
@ KEY_DOWN
Definition:
Events.h:182
cloudViewer::visualization::gui::KEY_RIGHT_BRACKET
@ KEY_RIGHT_BRACKET
Definition:
Events.h:137
cloudViewer::visualization::gui::KEY_SEMICOLON
@ KEY_SEMICOLON
Definition:
Events.h:129
cloudViewer::visualization::gui::KEY_NONE
@ KEY_NONE
Definition:
Events.h:97
cloudViewer::visualization::gui::KEY_LCTRL
@ KEY_LCTRL
Definition:
Events.h:174
cloudViewer::visualization::gui::KEY_X
@ KEY_X
Definition:
Events.h:164
cloudViewer::visualization::gui::KEY_T
@ KEY_T
Definition:
Events.h:160
cloudViewer::visualization::gui::KEY_DOUBLE_QUOTE
@ KEY_DOUBLE_QUOTE
Definition:
Events.h:104
cloudViewer::visualization::gui::KEY_EXCLAMATION
@ KEY_EXCLAMATION
Definition:
Events.h:103
cloudViewer::visualization::gui::KEY_END
@ KEY_END
Definition:
Events.h:185
cloudViewer::visualization::gui::KEY_Y
@ KEY_Y
Definition:
Events.h:165
cloudViewer::visualization::gui::KEY_COMMA
@ KEY_COMMA
Definition:
Events.h:114
cloudViewer::visualization::gui::KEY_RCTRL
@ KEY_RCTRL
Definition:
Events.h:175
cloudViewer::visualization::gui::KEY_PAGEDOWN
@ KEY_PAGEDOWN
Definition:
Events.h:187
cloudViewer::visualization::gui::KEY_N
@ KEY_N
Definition:
Events.h:154
cloudViewer::visualization::gui::KEY_LESS_THAN
@ KEY_LESS_THAN
Definition:
Events.h:130
cloudViewer::visualization::gui::KEY_8
@ KEY_8
Definition:
Events.h:126
cloudViewer::visualization::gui::KEY_BACKSLASH
@ KEY_BACKSLASH
Definition:
Events.h:136
cloudViewer::visualization::gui::KEY_BACKTICK
@ KEY_BACKTICK
Definition:
Events.h:140
cloudViewer::visualization::gui::KEY_TAB
@ KEY_TAB
Definition:
Events.h:99
cloudViewer::visualization::gui::KEY_6
@ KEY_6
Definition:
Events.h:124
cloudViewer::visualization::gui::KEY_ENTER
@ KEY_ENTER
Definition:
Events.h:100
cloudViewer::visualization::gui::KEY_3
@ KEY_3
Definition:
Events.h:121
cloudViewer::visualization::gui::KEY_RSHIFT
@ KEY_RSHIFT
Definition:
Events.h:173
cloudViewer::visualization::gui::KEY_W
@ KEY_W
Definition:
Events.h:163
cloudViewer::visualization::gui::KEY_B
@ KEY_B
Definition:
Events.h:142
cloudViewer::visualization::gui::KEY_RIGHT
@ KEY_RIGHT
Definition:
Events.h:180
cloudViewer::visualization::gui::KEY_F9
@ KEY_F9
Definition:
Events.h:196
cloudViewer::visualization::gui::KEY_H
@ KEY_H
Definition:
Events.h:148
cloudViewer::visualization::gui::KEY_Z
@ KEY_Z
Definition:
Events.h:166
cloudViewer::visualization::gui::KEY_ASTERISK
@ KEY_ASTERISK
Definition:
Events.h:112
cloudViewer::visualization::gui::KEY_QUESTION_MARK
@ KEY_QUESTION_MARK
Definition:
Events.h:133
cloudViewer::visualization::gui::KEY_F2
@ KEY_F2
Definition:
Events.h:189
cloudViewer::visualization::gui::KEY_F4
@ KEY_F4
Definition:
Events.h:191
cloudViewer::visualization::gui::KEY_F8
@ KEY_F8
Definition:
Events.h:195
cloudViewer::visualization::gui::KEY_CAPSLOCK
@ KEY_CAPSLOCK
Definition:
Events.h:178
cloudViewer::visualization::gui::KEY_TILDE
@ KEY_TILDE
Definition:
Events.h:170
cloudViewer::visualization::gui::KEY_PAGEUP
@ KEY_PAGEUP
Definition:
Events.h:186
cloudViewer::visualization::gui::KEY_ALT
@ KEY_ALT
Definition:
Events.h:176
cloudViewer::visualization::gui::KEY_F3
@ KEY_F3
Definition:
Events.h:190
cloudViewer::visualization::gui::KEY_C
@ KEY_C
Definition:
Events.h:143
cloudViewer::visualization::gui::KEY_EQUALS
@ KEY_EQUALS
Definition:
Events.h:131
cloudViewer::visualization::gui::KEY_PERCENT
@ KEY_PERCENT
Definition:
Events.h:107
cloudViewer::visualization::gui::KEY_9
@ KEY_9
Definition:
Events.h:127
cloudViewer::visualization::gui::KEY_F6
@ KEY_F6
Definition:
Events.h:193
cloudViewer::visualization::gui::KEY_F12
@ KEY_F12
Definition:
Events.h:199
cloudViewer::visualization::gui::KEY_V
@ KEY_V
Definition:
Events.h:162
cloudViewer::visualization::gui::KEY_PLUS
@ KEY_PLUS
Definition:
Events.h:113
cloudViewer::visualization::gui::KEY_P
@ KEY_P
Definition:
Events.h:156
cloudViewer::visualization::gui::KEY_F1
@ KEY_F1
Definition:
Events.h:188
cloudViewer::visualization::gui::KEY_INSERT
@ KEY_INSERT
Definition:
Events.h:183
cloudViewer::visualization::gui::KEY_RIGHT_BRACE
@ KEY_RIGHT_BRACE
Definition:
Events.h:169
cloudViewer::visualization::gui::KEY_DELETE
@ KEY_DELETE
Definition:
Events.h:171
cloudViewer::visualization::gui::KEY_I
@ KEY_I
Definition:
Events.h:149
cloudViewer::visualization::gui::KEY_LEFT_PAREN
@ KEY_LEFT_PAREN
Definition:
Events.h:110
cloudViewer::visualization::gui::KEY_5
@ KEY_5
Definition:
Events.h:123
cloudViewer::visualization::gui::KEY_M
@ KEY_M
Definition:
Events.h:153
cloudViewer::visualization::gui::KEY_LSHIFT
@ KEY_LSHIFT
Definition:
Events.h:172
cloudViewer::visualization::gui::KEY_PIPE
@ KEY_PIPE
Definition:
Events.h:168
cloudViewer::visualization::gui::KEY_LEFT_BRACKET
@ KEY_LEFT_BRACKET
Definition:
Events.h:135
cloudViewer::visualization::gui::KEY_F10
@ KEY_F10
Definition:
Events.h:197
cloudViewer::visualization::gui::KEY_META
@ KEY_META
Definition:
Events.h:177
cloudViewer::visualization::gui::KEY_MINUS
@ KEY_MINUS
Definition:
Events.h:115
cloudViewer::visualization::gui::KEY_UNDERSCORE
@ KEY_UNDERSCORE
Definition:
Events.h:139
cloudViewer::visualization::gui::KEY_U
@ KEY_U
Definition:
Events.h:161
cloudViewer::visualization::gui::KEY_HOME
@ KEY_HOME
Definition:
Events.h:184
cloudViewer::visualization::gui::KEY_L
@ KEY_L
Definition:
Events.h:152
cloudViewer::visualization::gui::KEY_1
@ KEY_1
Definition:
Events.h:119
cloudViewer::visualization::gui::KEY_D
@ KEY_D
Definition:
Events.h:144
cloudViewer::visualization::gui::KEY_HASH
@ KEY_HASH
Definition:
Events.h:105
cloudViewer::visualization::gui::KEY_BACKSPACE
@ KEY_BACKSPACE
Definition:
Events.h:98
cloudViewer::visualization::gui::KEY_AMPERSAND
@ KEY_AMPERSAND
Definition:
Events.h:108
cloudViewer::visualization::gui::KEY_K
@ KEY_K
Definition:
Events.h:151
cloudViewer::visualization::gui::KEY_O
@ KEY_O
Definition:
Events.h:155
cloudViewer::visualization::gui::KEY_LEFT_BRACE
@ KEY_LEFT_BRACE
Definition:
Events.h:167
cloudViewer::visualization::gui::KEY_F5
@ KEY_F5
Definition:
Events.h:192
cloudViewer::visualization::gui::KEY_GREATER_THAN
@ KEY_GREATER_THAN
Definition:
Events.h:132
cloudViewer::visualization::gui::KEY_COLON
@ KEY_COLON
Definition:
Events.h:128
cloudViewer::visualization::gui::KEY_DOLLAR_SIGN
@ KEY_DOLLAR_SIGN
Definition:
Events.h:106
cloudViewer::visualization::gui::KEY_4
@ KEY_4
Definition:
Events.h:122
cloudViewer::visualization::gui::KEY_UNKNOWN
@ KEY_UNKNOWN
Definition:
Events.h:200
cloudViewer::visualization::gui::KEY_R
@ KEY_R
Definition:
Events.h:158
cloudViewer::visualization::gui::KEY_ESCAPE
@ KEY_ESCAPE
Definition:
Events.h:101
cloudViewer::visualization::gui::KEY_7
@ KEY_7
Definition:
Events.h:125
cloudViewer::visualization::gui::KEY_SINGLE_QUOTE
@ KEY_SINGLE_QUOTE
Definition:
Events.h:109
cloudViewer::visualization::gui::KEY_A
@ KEY_A
Definition:
Events.h:141
cloudViewer::visualization::gui::KEY_SPACE
@ KEY_SPACE
Definition:
Events.h:102
cloudViewer::visualization::gui::KEY_Q
@ KEY_Q
Definition:
Events.h:157
cloudViewer::visualization::gui::KEY_G
@ KEY_G
Definition:
Events.h:147
cloudViewer::visualization::gui::KEY_F
@ KEY_F
Definition:
Events.h:146
cloudViewer::visualization::gui::KEY_F7
@ KEY_F7
Definition:
Events.h:194
cloudViewer::visualization::gui::KEY_LEFT
@ KEY_LEFT
Definition:
Events.h:179
cloudViewer
Generic file read and write utility for python interface.
Definition:
AutoSegmentationTools.h:16
cloudViewer::visualization::gui::KeyEvent
Definition:
Events.h:203
cloudViewer::visualization::gui::KeyEvent::Type
Type
Definition:
Events.h:204
cloudViewer::visualization::gui::KeyEvent::UP
@ UP
Definition:
Events.h:204
cloudViewer::visualization::gui::KeyEvent::DOWN
@ DOWN
Definition:
Events.h:204
cloudViewer::visualization::gui::KeyEvent::isRepeat
bool isRepeat
Definition:
Events.h:210
cloudViewer::visualization::gui::KeyEvent::key
uint32_t key
Definition:
Events.h:209
cloudViewer::visualization::gui::KeyEvent::type
Type type
Definition:
Events.h:205
cloudViewer::visualization::gui::MouseEvent
Definition:
Events.h:45
cloudViewer::visualization::gui::MouseEvent::wheel
struct cloudViewer::visualization::gui::MouseEvent::@17::@21 wheel
cloudViewer::visualization::gui::MouseEvent::FromJson
bool FromJson(const Json::Value &value)
Definition:
Events.cpp:70
cloudViewer::visualization::gui::MouseEvent::move
struct cloudViewer::visualization::gui::MouseEvent::@17::@19 move
cloudViewer::visualization::gui::MouseEvent::dy
float dy
Definition:
Events.h:83
cloudViewer::visualization::gui::MouseEvent::modifiers
int modifiers
Definition:
Events.h:72
cloudViewer::visualization::gui::MouseEvent::count
int count
Definition:
Events.h:79
cloudViewer::visualization::gui::MouseEvent::type
Type type
Definition:
Events.h:69
cloudViewer::visualization::gui::MouseEvent::Type
Type
Definition:
Events.h:46
cloudViewer::visualization::gui::MouseEvent::BUTTON_DOWN
@ BUTTON_DOWN
Definition:
Events.h:46
cloudViewer::visualization::gui::MouseEvent::MOVE
@ MOVE
Definition:
Events.h:46
cloudViewer::visualization::gui::MouseEvent::BUTTON_UP
@ BUTTON_UP
Definition:
Events.h:46
cloudViewer::visualization::gui::MouseEvent::DRAG
@ DRAG
Definition:
Events.h:46
cloudViewer::visualization::gui::MouseEvent::WHEEL
@ WHEEL
Definition:
Events.h:46
cloudViewer::visualization::gui::MouseEvent::y
int y
Definition:
Events.h:71
cloudViewer::visualization::gui::MouseEvent::MakeWheelEvent
static MouseEvent MakeWheelEvent(const Type type, const int x, const int y, const int modifiers, const float dx, const float dy, const bool isTrackpad)
Definition:
Events.cpp:169
cloudViewer::visualization::gui::MouseEvent::MakeButtonEvent
static MouseEvent MakeButtonEvent(const Type type, const int x, const int y, const int modifiers, const MouseButton button, const int count)
Definition:
Events.cpp:153
cloudViewer::visualization::gui::MouseEvent::x
int x
Definition:
Events.h:70
cloudViewer::visualization::gui::MouseEvent::button
MouseButton button
Definition:
Events.h:78
cloudViewer::visualization::gui::MouseEvent::dx
float dx
Definition:
Events.h:82
cloudViewer::visualization::gui::MouseEvent::isTrackpad
bool isTrackpad
Definition:
Events.h:84
cloudViewer::visualization::gui::MouseEvent::buttons
int buttons
Definition:
Events.h:75
cloudViewer::visualization::gui::MouseEvent::MakeMoveEvent
static MouseEvent MakeMoveEvent(const Type type, const int x, const int y, const int modifiers, const int buttons)
Definition:
Events.cpp:139
cloudViewer::visualization::gui::MouseEvent::ToString
std::string ToString() const
Definition:
Events.cpp:21
cloudViewer::visualization::gui::TextInputEvent
Definition:
Events.h:213
cloudViewer::visualization::gui::TextInputEvent::utf8
const char * utf8
Definition:
Events.h:214
cloudViewer::visualization::gui::TickEvent
Definition:
Events.h:92
cloudViewer::visualization::gui::TickEvent::dt
double dt
Definition:
Events.h:93
libs
cloudViewer
visualization
gui
Events.h
Generated on Wed Jan 28 2026 09:00:56 for ACloudViewer by
1.9.1