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//=============================================================================================================
92{
93public:
94 typedef QSharedPointer<FsSurface> SPtr;
95 typedef QSharedPointer<const FsSurface> ConstSPtr;
96
97 //=========================================================================================================
101 FsSurface();
102
103 //=========================================================================================================
109 explicit FsSurface(const QString& p_sFile);
110
111 //=========================================================================================================
120 explicit FsSurface(const QString &subject_id, qint32 hemi, const QString &surf, const QString &subjects_dir);
121
122 //=========================================================================================================
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 //=========================================================================================================
223 static Eigen::VectorXf read_curv(const QString &p_sFileName);
224
225 //=========================================================================================================
234 static Eigen::MatrixX3f compute_normals(const Eigen::MatrixX3f& rr, const Eigen::MatrixX3i& tris);
235
236 //=========================================================================================================
242 inline const Eigen::MatrixX3f& rr() const;
243
244 //=========================================================================================================
250 inline const Eigen::MatrixX3i& tris() const;
251
252 //=========================================================================================================
258 inline const Eigen::MatrixX3f& nn() const;
259
260 //=========================================================================================================
266 inline const Eigen::VectorXf& curv() const;
267
268 //=========================================================================================================
274 inline const Eigen::Vector3f& offset() const;
275
276 //=========================================================================================================
282 inline Eigen::Vector3f& offset();
283
284 //=========================================================================================================
290 inline QString filePath() const;
291
292 //=========================================================================================================
298 inline QString fileName() const;
299
300 //=========================================================================================================
307 static qint32 fread3(QDataStream &stream);
308
309 //=========================================================================================================
316 static qint32 fread3(std::iostream &stream);
317
318 //=========================================================================================================
326 static Eigen::VectorXi fread3_many(QDataStream &stream, qint32 count);
327
328 //=========================================================================================================
336 static Eigen::VectorXi fread3_many(std::iostream &stream, qint32 count);
337
338private:
339 QString m_sFilePath;
340 QString m_sFileName;
341 qint32 m_iHemi;
342 QString m_sSurf;
343 Eigen::MatrixX3f m_matRR;
344 Eigen::MatrixX3i m_matTris;
345 Eigen::MatrixX3f m_matNN;
346 Eigen::VectorXf m_vecCurv;
347
348 Eigen::Vector3f m_vecOffset;
349};
350
351//=============================================================================================================
352// INLINE DEFINITIONS
353//=============================================================================================================
354
355inline qint32 FsSurface::hemi() const
356{
357 return m_iHemi;
358}
359
360//=============================================================================================================
361
362inline bool FsSurface::isEmpty() const
363{
364 return m_iHemi == -1;
365}
366
367//=============================================================================================================
368
369inline QString FsSurface::surf() const
370{
371 return m_sSurf;
372}
373
374//=============================================================================================================
375
376inline const Eigen::MatrixX3f& FsSurface::rr() const
377{
378 return m_matRR;
379}
380
381//=============================================================================================================
382
383inline const Eigen::MatrixX3i& FsSurface::tris() const
384{
385 return m_matTris;
386}
387
388//=============================================================================================================
389
390inline const Eigen::MatrixX3f& FsSurface::nn() const
391{
392 return m_matNN;
393}
394
395//=============================================================================================================
396
397inline const Eigen::VectorXf& FsSurface::curv() const
398{
399 return m_vecCurv;
400}
401
402//=============================================================================================================
403
404inline const Eigen::Vector3f& FsSurface::offset() const
405{
406 return m_vecOffset;
407}
408
409//=============================================================================================================
410
411inline Eigen::Vector3f& FsSurface::offset()
412{
413 return m_vecOffset;
414}
415
416//=============================================================================================================
417
418inline QString FsSurface::filePath() const
419{
420 return m_sFilePath;
421}
422
423//=============================================================================================================
424
425inline QString FsSurface::fileName() const
426{
427 return m_sFileName;
428}
429} // NAMESPACE
430
431#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:390
bool isEmpty() const
Definition fs_surface.h:362
static Eigen::VectorXi fread3_many(QDataStream &stream, qint32 count)
QString fileName() const
Definition fs_surface.h:425
QSharedPointer< FsSurface > SPtr
Definition fs_surface.h:94
qint32 hemi() const
Definition fs_surface.h:355
static qint32 fread3(QDataStream &stream)
QString filePath() const
Definition fs_surface.h:418
const Eigen::MatrixX3i & tris() const
Definition fs_surface.h:383
const Eigen::Vector3f & offset() const
Definition fs_surface.h:404
QString surf() const
Definition fs_surface.h:369
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:376
const Eigen::VectorXf & curv() const
Definition fs_surface.h:397
QSharedPointer< const FsSurface > ConstSPtr
Definition fs_surface.h:95
static Eigen::MatrixX3f compute_normals(const Eigen::MatrixX3f &rr, const Eigen::MatrixX3i &tris)