v2.0.0
Loading...
Searching...
No Matches
rtsourcedataworker.h
Go to the documentation of this file.
1//=============================================================================================================
34
35#ifndef BRAINVIEW_RTSOURCEDATAWORKER_H
36#define BRAINVIEW_RTSOURCEDATAWORKER_H
37
38//=============================================================================================================
39// INCLUDES
40//=============================================================================================================
41
43
44#include <QObject>
45#include <QList>
46#include <QMutex>
47#include <QVector>
48#include <QSharedPointer>
49#include <Eigen/Core>
50#include <Eigen/SparseCore>
51
52//=============================================================================================================
53// DEFINE NAMESPACE
54//=============================================================================================================
55
56namespace DISP3DRHILIB {
57
58//=============================================================================================================
69{
70 Q_OBJECT
71
72public:
73 //=========================================================================================================
79 explicit RtSourceDataWorker(QObject *parent = nullptr);
80
81 //=========================================================================================================
88 void addData(const Eigen::VectorXd &data);
89
90 //=========================================================================================================
94 void clear();
95
96 //=========================================================================================================
102 void setInterpolationMatrixLeft(QSharedPointer<Eigen::SparseMatrix<float>> mat);
103
104 //=========================================================================================================
110 void setInterpolationMatrixRight(QSharedPointer<Eigen::SparseMatrix<float>> mat);
111
112 //=========================================================================================================
118 void setNumberAverages(int numAvr);
119
120 //=========================================================================================================
126 void setColormapType(const QString &name);
127
128 //=========================================================================================================
136 void setThresholds(double min, double mid, double max);
137
138 //=========================================================================================================
144 void setLoopState(bool enabled);
145
146 //=========================================================================================================
152 void setSFreq(double sFreq);
153
154 //=========================================================================================================
166 void setStreamSmoothedData(bool bStreamSmoothedData);
167
168 //=========================================================================================================
176 void setSurfaceColor(const QVector<uint32_t> &baseColorsLh,
177 const QVector<uint32_t> &baseColorsRh);
178
179public slots:
180 //=========================================================================================================
185 void streamData();
186
187signals:
188 //=========================================================================================================
195 void newRtSmoothedData(const QVector<uint32_t> &colorsLh,
196 const QVector<uint32_t> &colorsRh);
197
198 //=========================================================================================================
205 void newRtRawData(const Eigen::VectorXd &dataLh,
206 const Eigen::VectorXd &dataRh);
207
208private:
209 //=========================================================================================================
217 uint32_t valueToColor(double value, uint8_t alpha = 255) const;
218
219 //=========================================================================================================
227 QVector<uint32_t> computeHemiColors(const Eigen::VectorXf &sourceData,
228 const QSharedPointer<Eigen::SparseMatrix<float>> &interpMat,
229 const QVector<uint32_t> &baseColors) const;
230
231 mutable QMutex m_mutex;
232
233 QList<Eigen::VectorXd> m_lDataQ;
234 QList<Eigen::VectorXd> m_lDataLoopQ;
235 Eigen::VectorXd m_vecAverage;
236 int m_iSampleCtr = 0;
237 int m_iCurrentSample = 0;
238
239 QSharedPointer<Eigen::SparseMatrix<float>> m_interpMatLh;
240 QSharedPointer<Eigen::SparseMatrix<float>> m_interpMatRh;
241
242 int m_iNumAverages = 1;
243 bool m_bIsLooping = true;
244 bool m_bStreamSmoothedData = true;
245 double m_dSFreq = 1000.0;
246
247 QString m_sColormapType = QStringLiteral("Hot");
248 double m_dThreshMin = 0.0;
249 double m_dThreshMid = 0.5;
250 double m_dThreshMax = 1.0;
251
252 QVector<uint32_t> m_baseColorsLh;
253 QVector<uint32_t> m_baseColorsRh;
254};
255
256} // namespace DISP3DRHILIB
257
258#endif // BRAINVIEW_RTSOURCEDATAWORKER_H
disp3D_rhi library export/import macros.
#define DISP3DRHISHARED_EXPORT
3-D brain visualisation using the Qt RHI rendering backend.
void newRtSmoothedData(const QVector< uint32_t > &colorsLh, const QVector< uint32_t > &colorsRh)
void setInterpolationMatrixRight(QSharedPointer< Eigen::SparseMatrix< float > > mat)
void setColormapType(const QString &name)
void setInterpolationMatrixLeft(QSharedPointer< Eigen::SparseMatrix< float > > mat)
RtSourceDataWorker(QObject *parent=nullptr)
void newRtRawData(const Eigen::VectorXd &dataLh, const Eigen::VectorXd &dataRh)
void setStreamSmoothedData(bool bStreamSmoothedData)
void setThresholds(double min, double mid, double max)
void addData(const Eigen::VectorXd &data)
void setSurfaceColor(const QVector< uint32_t > &baseColorsLh, const QVector< uint32_t > &baseColorsRh)