v2.0.0
Loading...
Searching...
No Matches
multimodalscene.h
Go to the documentation of this file.
1//=============================================================================================================
22
23#ifndef DISP3DLIB_MULTIMODALSCENE_H
24#define DISP3DLIB_MULTIMODALSCENE_H
25
26//=============================================================================================================
27// INCLUDES
28//=============================================================================================================
29
30#include "../disp3D_global.h"
31#include "pickresult.h"
32
33//=============================================================================================================
34// QT INCLUDES
35//=============================================================================================================
36
37#include <QHash>
38#include <QObject>
39#include <QString>
40#include <QVector>
41#include <QVector3D>
42
43#include <functional>
44#include <memory>
45
46namespace DISP3DLIB
47{
48
49//=============================================================================================================
68
69//=============================================================================================================
84{
85 QString id;
86 QString displayName;
88 bool visible = true;
89 float opacity = 1.0f;
90 int drawOrder = 0;
91 std::shared_ptr<void> payload;
92};
93
94//=============================================================================================================
115{
116 Q_OBJECT
117
118public:
119 explicit MultimodalScene(QObject* parent = nullptr);
121
122 //=========================================================================================================
134 void addLayer(SceneLayer layer);
135
136 //=========================================================================================================
143 bool removeLayer(const QString& id);
144
145 //=========================================================================================================
149 void clear();
150
151 //=========================================================================================================
156 QVector<SceneLayer> layers() const;
157
158 //=========================================================================================================
164 const SceneLayer* findLayer(const QString& id) const;
165
166 //=========================================================================================================
170 void setLayerVisible(const QString& id, bool visible);
171
172 //=========================================================================================================
176 void setLayerOpacity(const QString& id, float opacity);
177
178 //=========================================================================================================
183 int currentTimeSample() const;
184
185 //=========================================================================================================
190 void setCurrentTimeSample(int sample);
191
192 //=========================================================================================================
199 double timeCursor() const;
200
201 //=========================================================================================================
206 void setTimeCursor(double seconds);
207
208 //=========================================================================================================
212 float overlayFmin() const;
213
214 //=========================================================================================================
218 float overlayFmid() const;
219
220 //=========================================================================================================
224 float overlayFmax() const;
225
226 //=========================================================================================================
233 void setOverlayThresholds(float fmin, float fmid, float fmax);
234
235 //=========================================================================================================
240 const PickResult& lastPick() const;
241
242 //=========================================================================================================
248 void reportPick(const PickResult& pick);
249
250 //=========================================================================================================
257 void worldBounds(QVector3D& bbMin, QVector3D& bbMax) const;
258
259 //=========================================================================================================
266 using BoundsFn = std::function<bool(const SceneLayer& layer,
267 QVector3D& bbMin,
268 QVector3D& bbMax)>;
269
270 //=========================================================================================================
276
277signals:
284
289 void timeSampleChanged(int sample);
290
296 void timeCursorChanged(double seconds);
297
301 void overlayThresholdsChanged(float fmin, float fmid, float fmax);
302
307 void picked(const DISP3DLIB::PickResult& pick);
308
309private:
310 QVector<SceneLayer> m_layers;
311 QHash<QString, int> m_indexById;
312 QHash<int, BoundsFn> m_boundsFns;
313 int m_currentTimeSample = -1;
314 double m_timeCursor = 0.0;
315 float m_overlayFmin = 0.0f;
316 float m_overlayFmid = 0.5f;
317 float m_overlayFmax = 1.0f;
318 PickResult m_lastPick;
319
321 void rebuildOrder();
322};
323
324} // namespace DISP3DLIB
325
326#endif // DISP3DLIB_MULTIMODALSCENE_H
@ Dipole
Definition rendertypes.h:65
Uniform pick payload (object identity, sub-index, world hit point, distance) for multimodal 3-D scene...
Library export/import macros and namespace marker for the disp3D library.
#define DISP3DSHARED_EXPORT
3-D brain visualisation using the Qt RHI rendering backend.
SceneLayerKind
Modality of a layer in the multimodal scene.
Renderable cortical surface mesh with per-vertex color, curvature data, and GPU buffer management.
Opaque, type-erased handle to a layer payload.
std::shared_ptr< void > payload
const PickResult & lastPick() const
void timeCursorChanged(double seconds)
void setLayerOpacity(const QString &id, float opacity)
void reportPick(const PickResult &pick)
void setOverlayThresholds(float fmin, float fmid, float fmax)
void registerBoundsFn(SceneLayerKind kind, BoundsFn fn)
void setLayerVisible(const QString &id, bool visible)
std::function< bool(const SceneLayer &layer, QVector3D &bbMin, QVector3D &bbMax)> BoundsFn
void picked(const DISP3DLIB::PickResult &pick)
void setTimeCursor(double seconds)
MultimodalScene(QObject *parent=nullptr)
void worldBounds(QVector3D &bbMin, QVector3D &bbMax) const
void addLayer(SceneLayer layer)
QVector< SceneLayer > layers() const
bool removeLayer(const QString &id)
const SceneLayer * findLayer(const QString &id) const
void setCurrentTimeSample(int sample)
void timeSampleChanged(int sample)
void overlayThresholdsChanged(float fmin, float fmid, float fmax)
Uniform payload for object-id picking across the multimodal scene.
Definition pickresult.h:70