MNE-CPP  0.1.9
A Framework for Electrophysiology
orbitalcameracontroller.h
Go to the documentation of this file.
1 //=============================================================================================================
35 #ifndef DISP3DLIB_ORBITALCAMERACONTROLLER_H
36 #define DISP3DLIB_ORBITALCAMERACONTROLLER_H
37 
38 //=============================================================================================================
39 // INCLUDES
40 //=============================================================================================================
41 
42 #include <Qt3DExtras/QAbstractCameraController>
43 #include "../../disp3D_global.h"
44 
45 //=============================================================================================================
46 // QT INCLUDES
47 //=============================================================================================================
48 
49 #include <QSharedPointer>
50 #include <QVector3D>
51 #include <QObject>
52 #include <QMatrix4x4>
53 
54 namespace Qt3DCore {
55 class QTransform;
56 }
57 
58 //=============================================================================================================
59 // EIGEN INCLUDES
60 //=============================================================================================================
61 
62 //=============================================================================================================
63 // FORWARD DECLARATIONS
64 //=============================================================================================================
65 
66 //=============================================================================================================
67 // DEFINE NAMESPACE DISP3DLIB
68 //=============================================================================================================
69 
70 namespace DISP3DLIB {
71 
72 //=============================================================================================================
73 // DISP3DLIB FORWARD DECLARATIONS
74 //=============================================================================================================
75 
76 //=============================================================================================================
88 class DISP3DSHARED_EXPORT OrbitalCameraController : public Qt3DExtras::QAbstractCameraController
89 {
90  Q_OBJECT
91  Q_PROPERTY(int rotating READ rotating WRITE setRotating)
93 public:
94  typedef QSharedPointer<OrbitalCameraController> SPtr;
95  typedef QSharedPointer<const OrbitalCameraController> ConstSPtr;
97  //=========================================================================================================
101  OrbitalCameraController(Qt3DCore::QNode *pParent = nullptr);
102 
103  //=========================================================================================================
107  ~OrbitalCameraController() = default;
108 
109  //=========================================================================================================
115  void invertCameraRotation(bool newStatusFlag);
116 
117  //=========================================================================================================
123  void setRotating(int count);
124 
125  //=========================================================================================================
131  int rotating() const;
132 
133 private:
134  //=========================================================================================================
141  void moveCamera(const QAbstractCameraController::InputState &state, float dt) override;
142 
143  //=========================================================================================================
147  void initController();
148 
149  //=========================================================================================================
158  inline float distance(const QVector3D &firstPoint, const QVector3D &secondPoint) const;
159 
160  float m_fRotationInverseFactor = 1.0f;
161  const float m_fZoomInLimit = 0.04f;
162  const float m_fAutoRotationSpeed = 1.0f;
163  int m_iRotating;
165 };
166 
167 //=============================================================================================================
168 // INLINE DEFINITIONS
169 //=============================================================================================================
170 
171 float OrbitalCameraController::distance(const QVector3D &firstPoint, const QVector3D &secondPoint) const
172 {
173  return (secondPoint - firstPoint).length();
174 }
175 } // namespace DISP3DLIB
176 
177 #endif // DISP3DLIB_ORBITALCAMERACONTROLLER_H
DISP3DLIB::OrbitalCameraController::SPtr
QSharedPointer< OrbitalCameraController > SPtr
Definition: orbitalcameracontroller.h:94
DISP3DLIB::OrbitalCameraController::ConstSPtr
QSharedPointer< const OrbitalCameraController > ConstSPtr
Definition: orbitalcameracontroller.h:95
DISP3DLIB::OrbitalCameraController
This class allows controlling the scene camera along an orbital path.
Definition: orbitalcameracontroller.h:88
DISP3DSHARED_EXPORT
#define DISP3DSHARED_EXPORT
Definition: disp3D_global.h:55