Point Cloud Library (PCL) 1.13.1
Loading...
Searching...
No Matches
mouse_event.h
1/*
2 * Software License Agreement (BSD License)
3 *
4 * Point Cloud Library (PCL) - www.pointclouds.org
5 * Copyright (c) 2011, Willow Garage, Inc.
6 * Copyright (c) 2012-, Open Perception, Inc.
7 *
8 * All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 *
14 * * Redistributions of source code must retain the above copyright
15 * notice, this list of conditions and the following disclaimer.
16 * * Redistributions in binary form must reproduce the above
17 * copyright notice, this list of conditions and the following
18 * disclaimer in the documentation and/or other materials provided
19 * with the distribution.
20 * * Neither the name of the copyright holder(s) nor the names of its
21 * contributors may be used to endorse or promote products derived
22 * from this software without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 * POSSIBILITY OF SUCH DAMAGE.
36 *
37 */
38
39#pragma once
40
41#include <pcl/visualization/keyboard_event.h>
42
43namespace pcl
44{
45 namespace visualization
46 {
48 {
49 public:
59
61 {
66 VScroll /*other buttons, scroll wheels etc. may follow*/
67 };
68
69 /** Constructor.
70 * \param[in] type event type
71 * \param[in] button The Button that causes the event
72 * \param[in] x x position of mouse pointer at that time where event got fired
73 * \param[in] y y position of mouse pointer at that time where event got fired
74 * \param[in] alt whether the ALT key was pressed at that time where event got fired
75 * \param[in] ctrl whether the CTRL key was pressed at that time where event got fired
76 * \param[in] shift whether the Shift key was pressed at that time where event got fired
77 * \param[in] selection_mode whether we are in selection mode
78 */
79 inline MouseEvent (const Type& type, const MouseButton& button,
80 unsigned int x, unsigned int y,
81 bool alt, bool ctrl, bool shift,
82 bool selection_mode = false);
83
84 /**
85 * \return type of mouse event
86 */
87 inline const Type&
88 getType () const;
89
90 /**
91 * \brief Sets the mouse event type
92 */
93 inline void
94 setType (const Type& type);
95
96 /**
97 * \return the Button that caused the action
98 */
99 inline const MouseButton&
100 getButton () const;
101
102 /** \brief Set the button that caused the event */
103 inline void
104 setButton (const MouseButton& button);
105
106 /**
107 * \return the x position of the mouse pointer at that time where the event got fired
108 */
109 inline unsigned int
110 getX () const;
111
112 /**
113 * \return the y position of the mouse pointer at that time where the event got fired
114 */
115 inline unsigned int
116 getY () const;
117
118 /**
119 * \return returns the keyboard modifiers state at that time where the event got fired
120 */
121 inline unsigned int
122 getKeyboardModifiers () const;
123
124 /**
125 * \return selection mode status
126 */
127 inline bool
128 getSelectionMode () const;
129
130 protected:
133 unsigned int pointer_x_;
134 unsigned int pointer_y_;
135 unsigned int key_state_;
137 };
138
139 MouseEvent::MouseEvent (const Type& type, const MouseButton& button,
140 unsigned x, unsigned y,
141 bool alt, bool ctrl, bool shift,
142 bool selection_mode)
143 : type_ (type)
144 , button_ (button)
145 , pointer_x_ (x)
146 , pointer_y_ (y)
147 , key_state_ (0)
148 , selection_mode_ (selection_mode)
149 {
150 if (alt)
152
153 if (ctrl)
155
156 if (shift)
158 }
159
160 const MouseEvent::Type&
162 {
163 return (type_);
164 }
165
166 void
168 {
169 type_ = type;
170 }
171
174 {
175 return (button_);
176 }
177
178 void
180 {
181 button_ = button;
182 }
183
184 unsigned int
186 {
187 return (pointer_x_);
188 }
189
190 unsigned int
192 {
193 return (pointer_y_);
194 }
195
196 unsigned int
198 {
199 return (key_state_);
200 }
201
202 bool
204 {
205 return (selection_mode_);
206 }
207
208 } //namespace visualization
209} //namespace pcl
static const unsigned int Alt
bit pattern for the ALT key
static const unsigned int Shift
bit pattern for the Shift key
static const unsigned int Ctrl
bit pattern for the Control key
void setType(const Type &type)
Sets the mouse event type.
const MouseButton & getButton() const
unsigned int getX() const
unsigned int getY() const
void setButton(const MouseButton &button)
Set the button that caused the event.
MouseEvent(const Type &type, const MouseButton &button, unsigned int x, unsigned int y, bool alt, bool ctrl, bool shift, bool selection_mode=false)
Constructor.
unsigned int getKeyboardModifiers() const
const Type & getType() const