v2.0.0
Loading...
Searching...
No Matches
fs_surface.h
Go to the documentation of this file.
1//=============================================================================================================
38
39#ifndef FS_SURFACE_H
40#define FS_SURFACE_H
41
42//=============================================================================================================
43// INCLUDES
44//=============================================================================================================
45
46#include "fs_global.h"
47
48//=============================================================================================================
49// QT INCLUDES
50//=============================================================================================================
51
52#include <QSharedPointer>
53#include <QDataStream>
54
55//=============================================================================================================
56// STL INCLUDES
57//=============================================================================================================
58
59#include <iostream>
60
61//=============================================================================================================
62// EIGEN INCLUDES
63//=============================================================================================================
64
65#include <Eigen/Core>
66
67//=============================================================================================================
68// DEFINE NAMESPACE FSLIB
69//=============================================================================================================
70
71namespace FSLIB
72{
73
74//=============================================================================================================
75// FORWARD DECLARATIONS
76//=============================================================================================================
77
78//=============================================================================================================
94{
95public:
96 typedef QSharedPointer<FsSurface> SPtr;
97 typedef QSharedPointer<const FsSurface> ConstSPtr;
98
99 //=========================================================================================================
103 FsSurface();
104
105 //=========================================================================================================
111 explicit FsSurface(const QString& p_sFile);
112
113 //=========================================================================================================
122 explicit FsSurface(const QString& subject_id, qint32 hemi, const QString& surf, const QString& subjects_dir);
123
124 //=========================================================================================================
132 explicit FsSurface(const QString& path, qint32 hemi, const QString& surf);
133
134 //=========================================================================================================
138 ~FsSurface();
139
140 //=========================================================================================================
144 void clear();
145
146 //=========================================================================================================
152 inline qint32 hemi() const;
153
154 //=========================================================================================================
160 inline bool isEmpty() const;
161
162 //=========================================================================================================
168 inline QString surf() const;
169
170 //=========================================================================================================
185 static bool read(const QString& subject_id, qint32 hemi, const QString& surf, const QString& subjects_dir, FsSurface& p_Surface, bool p_bLoadCurvature = true);
186
187 //=========================================================================================================
201 static bool read(const QString& path, qint32 hemi, const QString& surf, FsSurface& p_Surface, bool p_bLoadCurvature = true);
202
203 //=========================================================================================================
215 static bool read(const QString& p_sFileName, FsSurface& p_Surface, bool p_bLoadCurvature = true);
216
217 //=========================================================================================================
225 static Eigen::VectorXf read_curv(const QString& p_sFileName);
226
227 //=========================================================================================================
236 static Eigen::MatrixX3f compute_normals(const Eigen::MatrixX3f& rr, const Eigen::MatrixX3i& tris);
237
238 //=========================================================================================================
244 inline const Eigen::MatrixX3f& rr() const;
245
246 //=========================================================================================================
252 inline const Eigen::MatrixX3i& tris() const;
253
254 //=========================================================================================================
260 inline const Eigen::MatrixX3f& nn() const;
261
262 //=========================================================================================================
268 inline const Eigen::VectorXf& curv() const;
269
270 //=========================================================================================================
276 inline const Eigen::Vector3f& offset() const;
277
278 //=========================================================================================================
284 inline Eigen::Vector3f& offset();
285
286 //=========================================================================================================
292 inline QString filePath() const;
293
294 //=========================================================================================================
300 inline QString fileName() const;
301
302 //=========================================================================================================
309 static qint32 fread3(QDataStream& stream);
310
311 //=========================================================================================================
318 static qint32 fread3(std::iostream& stream);
319
320 //=========================================================================================================
328 static Eigen::VectorXi fread3_many(QDataStream& stream, qint32 count);
329
330 //=========================================================================================================
338 static Eigen::VectorXi fread3_many(std::iostream& stream, qint32 count);
339
340private:
341 QString m_sFilePath;
342 QString m_sFileName;
343 qint32 m_iHemi;
344 QString m_sSurf;
345 Eigen::MatrixX3f m_matRR;
346 Eigen::MatrixX3i m_matTris;
347 Eigen::MatrixX3f m_matNN;
348 Eigen::VectorXf m_vecCurv;
349
350 Eigen::Vector3f m_vecOffset;
351};
352
353//=============================================================================================================
354// INLINE DEFINITIONS
355//=============================================================================================================
356
357inline qint32 FsSurface::hemi() const
358{
359 return m_iHemi;
360}
361
362//=============================================================================================================
363
364inline bool FsSurface::isEmpty() const
365{
366 return m_iHemi == -1;
367}
368
369//=============================================================================================================
370
371inline QString FsSurface::surf() const
372{
373 return m_sSurf;
374}
375
376//=============================================================================================================
377
378inline const Eigen::MatrixX3f& FsSurface::rr() const
379{
380 return m_matRR;
381}
382
383//=============================================================================================================
384
385inline const Eigen::MatrixX3i& FsSurface::tris() const
386{
387 return m_matTris;
388}
389
390//=============================================================================================================
391
392inline const Eigen::MatrixX3f& FsSurface::nn() const
393{
394 return m_matNN;
395}
396
397//=============================================================================================================
398
399inline const Eigen::VectorXf& FsSurface::curv() const
400{
401 return m_vecCurv;
402}
403
404//=============================================================================================================
405
406inline const Eigen::Vector3f& FsSurface::offset() const
407{
408 return m_vecOffset;
409}
410
411//=============================================================================================================
412
413inline Eigen::Vector3f& FsSurface::offset()
414{
415 return m_vecOffset;
416}
417
418//=============================================================================================================
419
420inline QString FsSurface::filePath() const
421{
422 return m_sFilePath;
423}
424
425//=============================================================================================================
426
427inline QString FsSurface::fileName() const
428{
429 return m_sFileName;
430}
431} // NAMESPACE
432
433#endif // FS_SURFACE_H
Export/import macros and build-info accessors for the FSLIB FreeSurfer I/O library.
#define FSSHARED_EXPORT
Definition fs_global.h:38
FreeSurfer surface, annotation and parcellation I/O for mne-cpp.
static Eigen::VectorXf read_curv(const QString &p_sFileName)
const Eigen::MatrixX3f & nn() const
Definition fs_surface.h:392
bool isEmpty() const
Definition fs_surface.h:364
static Eigen::VectorXi fread3_many(QDataStream &stream, qint32 count)
QString fileName() const
Definition fs_surface.h:427
QSharedPointer< FsSurface > SPtr
Definition fs_surface.h:96
qint32 hemi() const
Definition fs_surface.h:357
static qint32 fread3(QDataStream &stream)
QString filePath() const
Definition fs_surface.h:420
const Eigen::MatrixX3i & tris() const
Definition fs_surface.h:385
const Eigen::Vector3f & offset() const
Definition fs_surface.h:406
QString surf() const
Definition fs_surface.h:371
static bool read(const QString &subject_id, qint32 hemi, const QString &surf, const QString &subjects_dir, FsSurface &p_Surface, bool p_bLoadCurvature=true)
const Eigen::MatrixX3f & rr() const
Definition fs_surface.h:378
const Eigen::VectorXf & curv() const
Definition fs_surface.h:399
QSharedPointer< const FsSurface > ConstSPtr
Definition fs_surface.h:97
static Eigen::MatrixX3f compute_normals(const Eigen::MatrixX3f &rr, const Eigen::MatrixX3i &tris)