MNE-CPP  0.1.9
A Framework for Electrophysiology
view3D.h
Go to the documentation of this file.
1 //=============================================================================================================
36 #ifndef DISP3DLIB_VIEW3D_H
37 #define DISP3DLIB_VIEW3D_H
38 
39 //=============================================================================================================
40 // INCLUDES
41 //=============================================================================================================
42 
43 #include "../../disp3D_global.h"
45 
46 //=============================================================================================================
47 // QT INCLUDES
48 //=============================================================================================================
49 
50 #include <Qt3DExtras/Qt3DWindow>
51 #include <QVector3D>
52 #include <QPointer>
53 #include <QObjectPicker>
54 #include <Qt3DCore>
55 
56 //=============================================================================================================
57 // FORWARD DECLARATIONS
58 //=============================================================================================================
59 
60 class QPropertyAnimation;
61 
62 namespace Qt3DRender {
63  class QPointLight;
64  class QRenderCaptureReply;
65  class QPickEvent;
66  class QRenderSurfaceSelector;
67  class QViewport;
68 }
69 
70 //=============================================================================================================
71 // DEFINE NAMESPACE DISP3DLIB
72 //=============================================================================================================
73 
74 namespace DISP3DLIB
75 {
76 
77 //=============================================================================================================
78 // DISP3DLIB FORWARD DECLARATIONS
79 //=============================================================================================================
80 
81 class Data3DTreeModel;
82 class CustomFrameGraph;
83 
84 //=============================================================================================================
90 class DISP3DSHARED_EXPORT View3D : public Qt3DExtras::Qt3DWindow
91 {
92  Q_OBJECT
93 
94 public:
95  typedef QSharedPointer<View3D> SPtr;
96  typedef QSharedPointer<const View3D> ConstSPtr;
98  //=========================================================================================================
102  explicit View3D(/*QWidget *parent = 0*/);
103 
104  //=========================================================================================================
108  ~View3D();
109 
110  //=========================================================================================================
116  void setModel(QSharedPointer<DISP3DLIB::Data3DTreeModel> pModel);
117 
118  //=========================================================================================================
124  void setSceneColor(const QColor& colSceneColor);
125 
126  //=========================================================================================================
130  void startStopCameraRotation(bool bChecked);
131 
132  //=========================================================================================================
139  void setCameraRotation(float fAngle);
140 
141  //=========================================================================================================
148  Qt3DCore::QTransform getCameraTransform();
149 
150  //=========================================================================================================
154  void toggleCoordAxis(bool bChecked);
155 
156  //=========================================================================================================
160  void showFullScreen(bool bChecked);
161 
162  //=========================================================================================================
166  void setLightColor(const QColor &color);
167 
168  //=========================================================================================================
172  void setLightIntensity(double value);
173 
174  //=========================================================================================================
180  void takeScreenshot();
181 
182  //=========================================================================================================
188  void activatePicker(const bool bActivatePicker);
189 
190  //=========================================================================================================
194  void showSingleView();
195 
196  //=========================================================================================================
200  void showMultiView();
201 
202 protected:
203 
204  void saveScreenshot();
205 
206  //=========================================================================================================
210  void initLight();
211 
212  //=========================================================================================================
216  void initObjectPicking();
217 
218  //=========================================================================================================
222  void keyPressEvent(QKeyEvent* e) override;
223 
224  //=========================================================================================================
230  void createCoordSystem(Qt3DCore::QEntity* parent);
231 
232  //=========================================================================================================
238  void handlePickerPress(Qt3DRender::QPickEvent *qPickEvent);
239 
240  //=========================================================================================================
244  void initSingleCam();
245 
246  //=========================================================================================================
250  void initMultiCams();
251 
252  //=========================================================================================================
256  void initSingleView();
257 
258  //=========================================================================================================
262  void initMultiView();
263 
264  //=========================================================================================================
268  void updateMultiViewAspectRatio();
269 
270  //=========================================================================================================
274  void setMultiViewVertical();
275 
276  //=========================================================================================================
280  void setMultiViewHorizontal();
281 
282  //=========================================================================================================
286  void resizeEvent(QResizeEvent *) override;
287 
288  enum MultiViewOrientation{
289  Horizontal,
290  Veritical
291  };
292 
293  QPointer<Qt3DCore::QEntity> m_pRootEntity;
294  QPointer<Qt3DCore::QEntity> m_p3DObjectsEntity;
295  QPointer<Qt3DCore::QEntity> m_pLightEntity;
296  QSharedPointer<Qt3DCore::QEntity> m_pCoordSysEntity;
298  QPointer<CustomFrameGraph> m_pFrameGraph;
299  QPointer<Qt3DRender::QRenderSurfaceSelector>m_pMultiFrame;
300 
301  QPointer<Qt3DRender::QCamera> m_pCamera;
302  QPointer<Qt3DRender::QCamera> m_pMultiCam1;
303  QPointer<Qt3DRender::QCamera> m_pMultiCam2;
304  QPointer<Qt3DRender::QCamera> m_pMultiCam3;
306  QPointer<Qt3DRender::QViewport> m_pMultiViewport1;
307  QPointer<Qt3DRender::QViewport> m_pMultiViewport2;
308  QPointer<Qt3DRender::QViewport> m_pMultiViewport3;
310  QPointer<Qt3DRender::QRenderCaptureReply> m_pScreenCaptureReply;
311  QPointer<Qt3DRender::QObjectPicker> m_pPicker;
313  QPointer<OrbitalCameraController> m_pCamController;
314  QPointer<QPropertyAnimation> m_pCameraAnimation;
316  QList<QPointer<Qt3DRender::QPointLight> > m_lLightSources;
318  MultiViewOrientation m_MultiViewOrientation;
320 signals:
321  /*
322  * Send whenever a pick event occured
323  */
324  void pickEventOccured(Qt3DRender::QPickEvent *qPickEvent);
325 
326 };
327 } // NAMESPACE
328 
329 #endif // DISP3DLIB_VIEW3D_H
DISP3DLIB::View3D
Visualizes 3D data.
Definition: view3D.h:90
DISP3DLIB::View3D::m_pCamController
QPointer< OrbitalCameraController > m_pCamController
Definition: view3D.h:313
DISP3DLIB::View3D::m_pFrameGraph
QPointer< CustomFrameGraph > m_pFrameGraph
Definition: view3D.h:298
DISP3DLIB::View3D::m_pLightEntity
QPointer< Qt3DCore::QEntity > m_pLightEntity
Definition: view3D.h:295
DISP3DLIB::View3D::m_MultiViewOrientation
MultiViewOrientation m_MultiViewOrientation
Definition: view3D.h:318
orbitalcameracontroller.h
OrbitalCameraController class declaration.
DISP3DLIB::View3D::SPtr
QSharedPointer< View3D > SPtr
Definition: view3D.h:95
DISP3DLIB::View3D::m_pMultiCam2
QPointer< Qt3DRender::QCamera > m_pMultiCam2
Definition: view3D.h:303
DISP3DLIB::View3D::m_pMultiCam1
QPointer< Qt3DRender::QCamera > m_pMultiCam1
Definition: view3D.h:302
DISP3DLIB::View3D::m_pMultiViewport3
QPointer< Qt3DRender::QViewport > m_pMultiViewport3
Definition: view3D.h:308
DISP3DLIB::View3D::m_pScreenCaptureReply
QPointer< Qt3DRender::QRenderCaptureReply > m_pScreenCaptureReply
Definition: view3D.h:310
DISP3DLIB::View3D::m_lLightSources
QList< QPointer< Qt3DRender::QPointLight > > m_lLightSources
Definition: view3D.h:316
DISP3DLIB::View3D::m_pMultiViewport2
QPointer< Qt3DRender::QViewport > m_pMultiViewport2
Definition: view3D.h:307
DISP3DLIB::View3D::m_pCoordSysEntity
QSharedPointer< Qt3DCore::QEntity > m_pCoordSysEntity
Definition: view3D.h:296
DISP3DLIB::View3D::m_pPicker
QPointer< Qt3DRender::QObjectPicker > m_pPicker
Definition: view3D.h:311
DISP3DLIB::View3D::m_pMultiCam3
QPointer< Qt3DRender::QCamera > m_pMultiCam3
Definition: view3D.h:304
DISP3DLIB::View3D::ConstSPtr
QSharedPointer< const View3D > ConstSPtr
Definition: view3D.h:96
DISP3DLIB::View3D::m_pMultiViewport1
QPointer< Qt3DRender::QViewport > m_pMultiViewport1
Definition: view3D.h:306
DISP3DLIB::View3D::m_pCamera
QPointer< Qt3DRender::QCamera > m_pCamera
Definition: view3D.h:301
DISP3DSHARED_EXPORT
#define DISP3DSHARED_EXPORT
Definition: disp3D_global.h:55
DISP3DLIB::View3D::m_pCameraAnimation
QPointer< QPropertyAnimation > m_pCameraAnimation
Definition: view3D.h:314
DISP3DLIB::View3D::m_p3DObjectsEntity
QPointer< Qt3DCore::QEntity > m_p3DObjectsEntity
Definition: view3D.h:294
DISP3DLIB::View3D::m_pRootEntity
QPointer< Qt3DCore::QEntity > m_pRootEntity
Definition: view3D.h:293