MNE-CPP  0.1.9
A Framework for Electrophysiology
geometrymultiplier.h
Go to the documentation of this file.
1 //=============================================================================================================
36 #ifndef DISP3DLIB_GEOMETRYMULTIPLIER_H
37 #define DISP3DLIB_GEOMETRYMULTIPLIER_H
38 
39 //=============================================================================================================
40 // INCLUDES
41 //=============================================================================================================
42 
43 #include "../../../disp3D_global.h"
44 
45 //=============================================================================================================
46 // QT INCLUDES
47 //=============================================================================================================
48 
49 #include <QSharedPointer>
50 #include <QPointer>
51 #include <Qt3DRender/QGeometryRenderer>
52 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
53 #define QT_COMPATIBILITY_3D Qt3DRender
54 #include <Qt3DRender/QGeometry>
55 #include <Qt3DRender/QBuffer>
56 #include <Qt3DRender/QAttribute>
57 #else
58 #define QT_COMPATIBILITY_3D Qt3DCore
59 #include <Qt3DCore/QGeometry>
60 #include <Qt3DCore/QBuffer>
61 #include <Qt3DCore/QAttribute>
62 #endif
63 
64 //=============================================================================================================
65 // EIGEN INCLUDES
66 //=============================================================================================================
67 
68 //=============================================================================================================
69 // FORWARD DECLARATIONS
70 //=============================================================================================================
71 
72 namespace Qt3DCore {
73  class QNode;
74 }
75 
76 namespace QtCore {
77  class QVector3D;
78  class QMatrix4x4;
79 }
80 
81 //=============================================================================================================
82 // DEFINE NAMESPACE DISP3DLIB
83 //=============================================================================================================
84 
85 namespace DISP3DLIB {
86 
87 //=============================================================================================================
88 // DISP3DLIB FORWARD DECLARATIONS
89 //=============================================================================================================
90 
91 //=============================================================================================================
99 class DISP3DSHARED_EXPORT GeometryMultiplier : public Qt3DRender::QGeometryRenderer
100 {
101  Q_OBJECT
102 
103 public:
104  typedef QSharedPointer<GeometryMultiplier> SPtr;
105  typedef QSharedPointer<const GeometryMultiplier> ConstSPtr;
107  //=========================================================================================================
111  explicit GeometryMultiplier(QSharedPointer<QT_COMPATIBILITY_3D::QGeometry> tGeometry,
112  Qt3DCore::QNode *tParent = nullptr);
113 
114  //=========================================================================================================
118  GeometryMultiplier(const GeometryMultiplier& other) = delete;
119 
120  //=========================================================================================================
124  GeometryMultiplier& operator =(const GeometryMultiplier& other) = delete;
125 
126  //=========================================================================================================
131 
132  //=========================================================================================================
139  void setTransforms(const QVector<QMatrix4x4> &tInstanceTansform);
140 
141  //=========================================================================================================
147  void setColors(const QVector<QColor> &tInstanceColors);
148 
149 private:
150  //=========================================================================================================
154  void init();
155 
156  //=========================================================================================================
163  QByteArray buildTransformBuffer(const QVector<QMatrix4x4> &tInstanceTransform);
164 
165  //=========================================================================================================
172  QByteArray buildColorBuffer(const QVector<QColor> &tInstanceColor);
173 
174  QSharedPointer<QT_COMPATIBILITY_3D::QGeometry> m_pGeometry;
175 
176  QPointer<QT_COMPATIBILITY_3D::QBuffer> m_pTransformBuffer;
177 
178  QPointer<QT_COMPATIBILITY_3D::QBuffer> m_pColorBuffer;
179 
180  QPointer<QT_COMPATIBILITY_3D::QAttribute> m_pTransformAttribute;
181 
182  QPointer<QT_COMPATIBILITY_3D::QAttribute> m_pColorAttribute;
183 };
184 
185 //=============================================================================================================
186 // INLINE DEFINITIONS
187 //=============================================================================================================
188 } // namespace DISP3DLIB
189 
190 #endif // DISP3DLIB_GEOMETRYMULTIPLIER_H
DISP3DLIB::GeometryMultiplier
Instaced based renderer.
Definition: geometrymultiplier.h:99
DISP3DLIB::GeometryMultiplier::ConstSPtr
QSharedPointer< const GeometryMultiplier > ConstSPtr
Definition: geometrymultiplier.h:105
DISP3DLIB::GeometryMultiplier::SPtr
QSharedPointer< GeometryMultiplier > SPtr
Definition: geometrymultiplier.h:104
DISP3DSHARED_EXPORT
#define DISP3DSHARED_EXPORT
Definition: disp3D_global.h:55