Open3D (C++ API)  0.16.0
Events.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// The MIT License (MIT)
5//
6// Copyright (c) 2018-2021 www.open3d.org
7//
8// Permission is hereby granted, free of charge, to any person obtaining a copy
9// of this software and associated documentation files (the "Software"), to deal
10// in the Software without restriction, including without limitation the rights
11// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12// copies of the Software, and to permit persons to whom the Software is
13// furnished to do so, subject to the following conditions:
14//
15// The above copyright notice and this permission notice shall be included in
16// all copies or substantial portions of the Software.
17//
18// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24// IN THE SOFTWARE.
25// ----------------------------------------------------------------------------
26
27#pragma once
28
29#include <cstdint>
30#include <sstream>
31#include <string>
32
34
36namespace Json {
37class Value;
38} // namespace Json
40
41namespace open3d {
42namespace visualization {
43namespace gui {
44
45enum class MouseButton {
46 NONE = 0,
47 LEFT = (1 << 0),
48 MIDDLE = (1 << 1),
49 RIGHT = (1 << 2),
50 BUTTON4 = (1 << 3),
51 BUTTON5 = (1 << 4)
52};
53
54// The key modifiers are labeled by functionality; for instance,
55// Ctrl on Windows and Command on macOS have roughly the same functionality.
56enum class KeyModifier {
57 NONE = 0,
58 SHIFT = (1 << 0),
59 CTRL = (1 << 1), // win/linux: ctrl, macOS: command
60 ALT = (1 << 2), // win/linux: alt, macOS: ctrl
61 META = (1 << 3), // win/linux: windows key, macOS: option
62};
63
64struct MouseEvent {
66
67 static MouseEvent MakeMoveEvent(const Type type,
68 const int x,
69 const int y,
70 const int modifiers,
71 const int buttons);
72
74 const int x,
75 const int y,
76 const int modifiers,
77 const MouseButton button,
78 const int count);
79
81 const int x,
82 const int y,
83 const int modifiers,
84 const float dx,
85 const float dy,
86 const bool isTrackpad);
87
89 int x;
90 int y;
91 int modifiers; // KeyModifiers ORed together
92 union {
93 struct {
94 int buttons; // MouseButtons ORed together
95 } move; // includes drag
96 struct {
98 int count;
100 struct {
101 float dx; // macOS gives fractional values, and is required
102 float dy; // for the buttery-smooth trackpad scrolling on macOS
105 };
106
107 bool FromJson(const Json::Value &value);
108 std::string ToString() const;
109};
110
111struct TickEvent {
112 double dt;
113};
114
137 KEY_0 = 48,
153 KEY_AT = 64,
160 KEY_A = 97,
187 KEY_PIPE = 124,
207 KEY_F1 = 290,
219 KEY_UNKNOWN = 1000
221
222struct KeyEvent {
223 enum Type { DOWN, UP };
225 // This is the actual key that was pressed, not the character that
226 // was generated (use TextInputEvent for that). Values correspond
227 // to ASCII values where applicable.
230};
231
233 const char *utf8;
234};
235
236} // namespace gui
237} // namespace visualization
238} // namespace open3d
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t timeout_in_ms capture_handle capture_handle capture_handle image_handle temperature_c k4a_image_t image_handle uint8_t image_handle image_handle image_handle image_handle uint32_t
Definition: K4aPlugin.cpp:567
KeyName
Definition: Events.h:115
@ KEY_L
Definition: Events.h:171
@ KEY_EXCLAMATION
Definition: Events.h:122
@ KEY_F
Definition: Events.h:165
@ KEY_P
Definition: Events.h:175
@ KEY_J
Definition: Events.h:169
@ KEY_META
Definition: Events.h:196
@ KEY_SINGLE_QUOTE
Definition: Events.h:128
@ KEY_F11
Definition: Events.h:217
@ KEY_RSHIFT
Definition: Events.h:192
@ KEY_PLUS
Definition: Events.h:132
@ KEY_H
Definition: Events.h:167
@ KEY_Y
Definition: Events.h:184
@ KEY_B
Definition: Events.h:161
@ KEY_RIGHT_PAREN
Definition: Events.h:130
@ KEY_T
Definition: Events.h:179
@ KEY_AMPERSAND
Definition: Events.h:127
@ KEY_F5
Definition: Events.h:211
@ KEY_I
Definition: Events.h:168
@ KEY_ASTERISK
Definition: Events.h:131
@ KEY_F3
Definition: Events.h:209
@ KEY_ENTER
Definition: Events.h:119
@ KEY_PIPE
Definition: Events.h:187
@ KEY_R
Definition: Events.h:177
@ KEY_Q
Definition: Events.h:176
@ KEY_V
Definition: Events.h:181
@ KEY_7
Definition: Events.h:144
@ KEY_SEMICOLON
Definition: Events.h:148
@ KEY_UNDERSCORE
Definition: Events.h:158
@ KEY_LSHIFT
Definition: Events.h:191
@ KEY_F6
Definition: Events.h:212
@ KEY_S
Definition: Events.h:178
@ KEY_DOWN
Definition: Events.h:201
@ KEY_2
Definition: Events.h:139
@ KEY_8
Definition: Events.h:145
@ KEY_ALT
Definition: Events.h:195
@ KEY_LESS_THAN
Definition: Events.h:149
@ KEY_3
Definition: Events.h:140
@ KEY_LEFT_PAREN
Definition: Events.h:129
@ KEY_UNKNOWN
Definition: Events.h:219
@ KEY_UP
Definition: Events.h:200
@ KEY_F2
Definition: Events.h:208
@ KEY_LEFT_BRACKET
Definition: Events.h:154
@ KEY_F9
Definition: Events.h:215
@ KEY_F7
Definition: Events.h:213
@ KEY_ESCAPE
Definition: Events.h:120
@ KEY_CARET
Definition: Events.h:157
@ KEY_F1
Definition: Events.h:207
@ KEY_F8
Definition: Events.h:214
@ KEY_E
Definition: Events.h:164
@ KEY_4
Definition: Events.h:141
@ KEY_G
Definition: Events.h:166
@ KEY_PAGEUP
Definition: Events.h:205
@ KEY_W
Definition: Events.h:182
@ KEY_O
Definition: Events.h:174
@ KEY_TILDE
Definition: Events.h:189
@ KEY_EQUALS
Definition: Events.h:150
@ KEY_HASH
Definition: Events.h:124
@ KEY_U
Definition: Events.h:180
@ KEY_X
Definition: Events.h:183
@ KEY_PAGEDOWN
Definition: Events.h:206
@ KEY_INSERT
Definition: Events.h:202
@ KEY_0
Definition: Events.h:137
@ KEY_BACKSLASH
Definition: Events.h:155
@ KEY_END
Definition: Events.h:204
@ KEY_SLASH
Definition: Events.h:136
@ KEY_LEFT_BRACE
Definition: Events.h:186
@ KEY_MINUS
Definition: Events.h:134
@ KEY_COLON
Definition: Events.h:147
@ KEY_BACKTICK
Definition: Events.h:159
@ KEY_TAB
Definition: Events.h:118
@ KEY_PERIOD
Definition: Events.h:135
@ KEY_RIGHT_BRACKET
Definition: Events.h:156
@ KEY_NONE
Definition: Events.h:116
@ KEY_RCTRL
Definition: Events.h:194
@ KEY_SPACE
Definition: Events.h:121
@ KEY_QUESTION_MARK
Definition: Events.h:152
@ KEY_A
Definition: Events.h:160
@ KEY_F10
Definition: Events.h:216
@ KEY_5
Definition: Events.h:142
@ KEY_RIGHT_BRACE
Definition: Events.h:188
@ KEY_COMMA
Definition: Events.h:133
@ KEY_BACKSPACE
Definition: Events.h:117
@ KEY_HOME
Definition: Events.h:203
@ KEY_PERCENT
Definition: Events.h:126
@ KEY_LCTRL
Definition: Events.h:193
@ KEY_1
Definition: Events.h:138
@ KEY_RIGHT
Definition: Events.h:199
@ KEY_DOUBLE_QUOTE
Definition: Events.h:123
@ KEY_6
Definition: Events.h:143
@ KEY_M
Definition: Events.h:172
@ KEY_Z
Definition: Events.h:185
@ KEY_D
Definition: Events.h:163
@ KEY_AT
Definition: Events.h:153
@ KEY_GREATER_THAN
Definition: Events.h:151
@ KEY_CAPSLOCK
Definition: Events.h:197
@ KEY_F12
Definition: Events.h:218
@ KEY_C
Definition: Events.h:162
@ KEY_LEFT
Definition: Events.h:198
@ KEY_K
Definition: Events.h:170
@ KEY_9
Definition: Events.h:146
@ KEY_F4
Definition: Events.h:210
@ KEY_DELETE
Definition: Events.h:190
@ KEY_N
Definition: Events.h:173
@ KEY_DOLLAR_SIGN
Definition: Events.h:125
MouseButton
Definition: Events.h:45
KeyModifier
Definition: Events.h:56
Definition: PinholeCameraIntrinsic.cpp:35
Definition: Events.h:222
Type type
Definition: Events.h:224
uint32_t key
Definition: Events.h:228
Type
Definition: Events.h:223
@ UP
Definition: Events.h:223
@ DOWN
Definition: Events.h:223
bool isRepeat
Definition: Events.h:229
bool FromJson(const Json::Value &value)
Definition: Events.cpp:90
struct open3d::visualization::gui::MouseEvent::@1::@3 move
@ BUTTON_DOWN
Definition: Events.h:65
@ WHEEL
Definition: Events.h:65
@ BUTTON_UP
Definition: Events.h:65
float dy
Definition: Events.h:102
int buttons
Definition: Events.h:94
float dx
Definition: Events.h:101
int modifiers
Definition: Events.h:91
std::string ToString() const
Definition: Events.cpp:41
struct open3d::visualization::gui::MouseEvent::@1::@5 wheel
bool isTrackpad
Definition: Events.h:103
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:189
static MouseEvent MakeButtonEvent(const Type type, const int x, const int y, const int modifiers, const MouseButton button, const int count)
Definition: Events.cpp:173
int count
Definition: Events.h:98
Type type
Definition: Events.h:88
MouseButton button
Definition: Events.h:97
int y
Definition: Events.h:90
static MouseEvent MakeMoveEvent(const Type type, const int x, const int y, const int modifiers, const int buttons)
Definition: Events.cpp:159
int x
Definition: Events.h:89
const char * utf8
Definition: Events.h:233
double dt
Definition: Events.h:112