Point Cloud Library (PCL)  1.10.1-dev
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 
43 namespace pcl
44 {
45  namespace visualization
46  {
47  class MouseEvent
48  {
49  public:
50  enum Type
51  {
52  MouseMove = 1,
58  };
59 
61  {
62  NoButton = 0,
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
167  MouseEvent::setType (const Type& type)
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
unsigned int getY() const
Definition: mouse_event.h:191
unsigned int getKeyboardModifiers() const
Definition: mouse_event.h:197
const Type & getType() const
Definition: mouse_event.h:161
unsigned int getX() const
Definition: mouse_event.h:185
static const unsigned int Shift
bit patter for the Shift key
MouseEvent(const Type &type, const MouseButton &button, unsigned int x, unsigned int y, bool alt, bool ctrl, bool shift, bool selection_mode=false)
Constructor.
Definition: mouse_event.h:139
void setButton(const MouseButton &button)
Set the button that caused the event.
Definition: mouse_event.h:179
const MouseButton & getButton() const
Definition: mouse_event.h:173
static const unsigned int Ctrl
bit patter for the Control key
static const unsigned int Alt
bit patter for the ALT key
void setType(const Type &type)
Sets the mouse event type.
Definition: mouse_event.h:167