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 
183  //=========================================================================================================
189  void activatePicker(const bool bActivatePicker);
190 
191  //=========================================================================================================
195  void showSingleView();
196 
197  //=========================================================================================================
201  void showMultiView();
202 
203 protected:
204 
205  void saveScreenshot();
206 
207  //=========================================================================================================
211  void initLight();
212 
213  //=========================================================================================================
217  void initObjectPicking();
218 
219  //=========================================================================================================
223  void keyPressEvent(QKeyEvent* e) override;
224 
225  //=========================================================================================================
231  void createCoordSystem(Qt3DCore::QEntity* parent);
232 
233  //=========================================================================================================
239  void handlePickerPress(Qt3DRender::QPickEvent *qPickEvent);
240 
241  //=========================================================================================================
245  void initSingleCam();
246 
247  //=========================================================================================================
251  void initMultiCams();
252 
253  //=========================================================================================================
257  void initSingleView();
258 
259  //=========================================================================================================
263  void initMultiView();
264 
265  //=========================================================================================================
269  void updateMultiViewAspectRatio();
270 
271  //=========================================================================================================
275  void setMultiViewVertical();
276 
277  //=========================================================================================================
281  void setMultiViewHorizontal();
282 
283  //=========================================================================================================
287  void resizeEvent(QResizeEvent *) override;
288 
289  enum MultiViewOrientation{
290  Horizontal,
291  Veritical
292  };
293 
294  QPointer<Qt3DCore::QEntity> m_pRootEntity;
295  QPointer<Qt3DCore::QEntity> m_p3DObjectsEntity;
296  QPointer<Qt3DCore::QEntity> m_pLightEntity;
297  QSharedPointer<Qt3DCore::QEntity> m_pCoordSysEntity;
299  QPointer<CustomFrameGraph> m_pFrameGraph;
300  QPointer<Qt3DRender::QRenderSurfaceSelector>m_pMultiFrame;
301 
302  QPointer<Qt3DRender::QCamera> m_pCamera;
303  QPointer<Qt3DRender::QCamera> m_pMultiCam1;
304  QPointer<Qt3DRender::QCamera> m_pMultiCam2;
305  QPointer<Qt3DRender::QCamera> m_pMultiCam3;
307  QPointer<Qt3DRender::QViewport> m_pMultiViewport1;
308  QPointer<Qt3DRender::QViewport> m_pMultiViewport2;
309  QPointer<Qt3DRender::QViewport> m_pMultiViewport3;
311  QPointer<Qt3DRender::QRenderCaptureReply> m_pScreenCaptureReply;
312  QPointer<Qt3DRender::QObjectPicker> m_pPicker;
314  QPointer<OrbitalCameraController> m_pCamController;
315  QPointer<QPropertyAnimation> m_pCameraAnimation;
317  QList<QPointer<Qt3DRender::QPointLight> > m_lLightSources;
319  MultiViewOrientation m_MultiViewOrientation;
321 signals:
322  /*
323  * Send whenever a pick event occured
324  */
325  void pickEventOccured(Qt3DRender::QPickEvent *qPickEvent);
326 
327 };
328 } // NAMESPACE
329 
330 #endif // DISP3DLIB_VIEW3D_H
QPointer< Qt3DRender::QRenderCaptureReply > m_pScreenCaptureReply
Definition: view3D.h:311
QPointer< Qt3DCore::QEntity > m_pRootEntity
Definition: view3D.h:294
QPointer< Qt3DRender::QCamera > m_pMultiCam3
Definition: view3D.h:305
QPointer< Qt3DRender::QObjectPicker > m_pPicker
Definition: view3D.h:312
QSharedPointer< const View3D > ConstSPtr
Definition: view3D.h:96
MultiViewOrientation m_MultiViewOrientation
Definition: view3D.h:319
OrbitalCameraController class declaration.
QPointer< QPropertyAnimation > m_pCameraAnimation
Definition: view3D.h:315
QPointer< OrbitalCameraController > m_pCamController
Definition: view3D.h:314
QPointer< Qt3DCore::QEntity > m_p3DObjectsEntity
Definition: view3D.h:295
QPointer< CustomFrameGraph > m_pFrameGraph
Definition: view3D.h:299
QSharedPointer< View3D > SPtr
Definition: view3D.h:95
QPointer< Qt3DRender::QViewport > m_pMultiViewport1
Definition: view3D.h:307
QPointer< Qt3DRender::QViewport > m_pMultiViewport3
Definition: view3D.h:309
QSharedPointer< Qt3DCore::QEntity > m_pCoordSysEntity
Definition: view3D.h:297
QPointer< Qt3DRender::QViewport > m_pMultiViewport2
Definition: view3D.h:308
#define DISP3DSHARED_EXPORT
Definition: disp3D_global.h:55
QList< QPointer< Qt3DRender::QPointLight > > m_lLightSources
Definition: view3D.h:317
QPointer< Qt3DCore::QEntity > m_pLightEntity
Definition: view3D.h:296
QPointer< Qt3DRender::QCamera > m_pCamera
Definition: view3D.h:302
QPointer< Qt3DRender::QCamera > m_pMultiCam1
Definition: view3D.h:303
QPointer< Qt3DRender::QCamera > m_pMultiCam2
Definition: view3D.h:304
Visualizes 3D data.
Definition: view3D.h:90