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//=============================================================================================================
69
70//=============================================================================================================
87{
88 QString id;
89 QString displayName;
91 bool visible = true;
92 float opacity = 1.0f;
93 int drawOrder = 0;
94 std::shared_ptr<void> payload;
95};
96
97//=============================================================================================================
120{
121 Q_OBJECT
122
123public:
124 explicit MultimodalScene(QObject* parent = nullptr);
126
127 //=========================================================================================================
139 void addLayer(SceneLayer layer);
140
141 //=========================================================================================================
148 bool removeLayer(const QString& id);
149
150 //=========================================================================================================
154 void clear();
155
156 //=========================================================================================================
161 QVector<SceneLayer> layers() const;
162
163 //=========================================================================================================
169 const SceneLayer* findLayer(const QString& id) const;
170
171 //=========================================================================================================
178 void setLayerVisible(const QString& id, bool visible);
179
180 //=========================================================================================================
187 void setLayerOpacity(const QString& id, float opacity);
188
189 //=========================================================================================================
194 int currentTimeSample() const;
195
196 //=========================================================================================================
203 void setCurrentTimeSample(int sample);
204
205 //=========================================================================================================
212 double timeCursor() const;
213
214 //=========================================================================================================
221 void setTimeCursor(double seconds);
222
223 //=========================================================================================================
227 float overlayFmin() const;
228
229 //=========================================================================================================
233 float overlayFmid() const;
234
235 //=========================================================================================================
239 float overlayFmax() const;
240
241 //=========================================================================================================
252 void setOverlayThresholds(float fmin, float fmid, float fmax);
253
254 //=========================================================================================================
259 const PickResult& lastPick() const;
260
261 //=========================================================================================================
269 void reportPick(const PickResult& pick);
270
271 //=========================================================================================================
281 void worldBounds(QVector3D& bbMin, QVector3D& bbMax) const;
282
283 //=========================================================================================================
290 using BoundsFn = std::function<bool(const SceneLayer& layer,
291 QVector3D& bbMin,
292 QVector3D& bbMax)>;
293
294 //=========================================================================================================
303
304signals:
311
316 void timeSampleChanged(int sample);
317
323 void timeCursorChanged(double seconds);
324
328 void overlayThresholdsChanged(float fmin, float fmid, float fmax);
329
334 void picked(const DISP3DLIB::PickResult& pick);
335
336private:
337 QVector<SceneLayer> m_layers;
338 QHash<QString, int> m_indexById;
339 QHash<int, BoundsFn> m_boundsFns;
340 int m_currentTimeSample = -1;
341 double m_timeCursor = 0.0;
342 float m_overlayFmin = 0.0f;
343 float m_overlayFmid = 0.5f;
344 float m_overlayFmax = 1.0f;
345 PickResult m_lastPick;
346
348 void rebuildOrder();
349};
350
351} // namespace DISP3DLIB
352
353#endif // DISP3DLIB_MULTIMODALSCENE_H
Library export/import macros and namespace marker for the disp3D library.
#define DISP3DSHARED_EXPORT
Uniform pick payload (object identity, sub-index, world hit point, distance) for multimodal 3-D scene...
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:73