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 //=============================================================================================================
60 // EIGEN INCLUDES
61 //=============================================================================================================
62 
63 //=============================================================================================================
64 // FORWARD DECLARATIONS
65 //=============================================================================================================
66 
67 //=============================================================================================================
68 // DEFINE NAMESPACE DISP3DLIB
69 //=============================================================================================================
70 
71 namespace DISP3DLIB {
72 
73 //=============================================================================================================
74 // DISP3DLIB FORWARD DECLARATIONS
75 //=============================================================================================================
76 
77 //=============================================================================================================
89 class DISP3DSHARED_EXPORT OrbitalCameraController : public Qt3DExtras::QAbstractCameraController
90 {
91  Q_OBJECT
92  Q_PROPERTY(int rotating READ rotating WRITE setRotating)
94 public:
95  typedef QSharedPointer<OrbitalCameraController> SPtr;
96  typedef QSharedPointer<const OrbitalCameraController> ConstSPtr;
98  //=========================================================================================================
102  OrbitalCameraController(Qt3DCore::QNode *pParent = nullptr);
103 
104  //=========================================================================================================
108  ~OrbitalCameraController() = default;
109 
110  //=========================================================================================================
116  void invertCameraRotation(bool newStatusFlag);
117 
118  //=========================================================================================================
124  void setRotating(int count);
125 
126  //=========================================================================================================
132  int rotating() const;
133 
134 private:
135  //=========================================================================================================
142  void moveCamera(const QAbstractCameraController::InputState &state, float dt) override;
143 
144  //=========================================================================================================
148  void initController();
149 
150  //=========================================================================================================
159  inline float distance(const QVector3D &firstPoint, const QVector3D &secondPoint) const;
160 
161  float m_fRotationInverseFactor = 1.0f;
162  const float m_fZoomInLimit = 0.04f;
163  const float m_fAutoRotationSpeed = 1.0f;
164  int m_iRotating;
166 };
167 
168 //=============================================================================================================
169 // INLINE DEFINITIONS
170 //=============================================================================================================
171 
172 float OrbitalCameraController::distance(const QVector3D &firstPoint, const QVector3D &secondPoint) const
173 {
174  return (secondPoint - firstPoint).length();
175 }
176 } // namespace DISP3DLIB
177 
178 #endif // DISP3DLIB_ORBITALCAMERACONTROLLER_H
QSharedPointer< OrbitalCameraController > SPtr
This class allows controlling the scene camera along an orbital path.
#define DISP3DSHARED_EXPORT
Definition: disp3D_global.h:55
QSharedPointer< const OrbitalCameraController > ConstSPtr