iMSTK
Interactive Medical Simulation Toolkit
imstkMouseControl.h
1 /*
2 ** This file is part of the Interactive Medical Simulation Toolkit (iMSTK)
3 ** iMSTK is distributed under the Apache License, Version 2.0.
4 ** See accompanying NOTICE for details.
5 */
6 
7 #pragma once
8 
9 #include "imstkDeviceControl.h"
10 #include "imstkMath.h"
11 #include "imstkMacros.h"
12 
13 namespace imstk
14 {
15 class MouseDeviceClient;
16 class MouseEvent;
17 
25 class MouseControl : public DeviceControl, public std::enable_shared_from_this<MouseControl>
26 {
27 public:
28  MouseControl(const std::string& name = "MouseControl") : DeviceControl(name) { }
29  ~MouseControl() override = default;
30 
31  void setDevice(std::shared_ptr<DeviceClient> device) override;
32 
33  virtual void OnButtonPress(const int imstkNotUsed(key)) { }
34 
35  virtual void OnButtonRelease(const int imstkNotUsed(key)) { }
36 
37  virtual void OnScroll(const double imstkNotUsed(dx)) { }
38 
39  virtual void OnMouseMove(const Vec2d& imstkNotUsed(pos)) { }
40 
41 private:
45  virtual void mouseButtonPressEvent(MouseEvent* e);
46 
50  virtual void mouseButtonReleaseEvent(MouseEvent* e);
51 
55  virtual void mouseScrollEvent(MouseEvent* e);
56 
60  virtual void mouseMoveEvent(MouseEvent* e);
61 
62 protected:
63  std::shared_ptr<MouseDeviceClient> m_mouseDevice = nullptr;
64 };
65 } // namespace imstk
This is the base class for mouse based controls It can be constructed and observed or subclassed and ...
While the DeviceClient provides quantities from the device, the control defines what to do with those...
Compound Geometry.
Provides the information of a mouse event, this includes button presses/releases and scrolling...