v2.0.0
Loading...
Searching...
No Matches
fs_surface.h
Go to the documentation of this file.
1//=============================================================================================================
36
37#ifndef FS_SURFACE_H
38#define FS_SURFACE_H
39
40//=============================================================================================================
41// INCLUDES
42//=============================================================================================================
43
44#include "fs_global.h"
45
46//=============================================================================================================
47// QT INCLUDES
48//=============================================================================================================
49
50#include <QSharedPointer>
51#include <QDataStream>
52
53//=============================================================================================================
54// STL INCLUDES
55//=============================================================================================================
56
57#include <iostream>
58
59//=============================================================================================================
60// EIGEN INCLUDES
61//=============================================================================================================
62
63#include <Eigen/Core>
64
65//=============================================================================================================
66// DEFINE NAMESPACE FSLIB
67//=============================================================================================================
68
69namespace FSLIB
70{
71
72//=============================================================================================================
73// FORWARD DECLARATIONS
74//=============================================================================================================
75
76//=============================================================================================================
83{
84public:
85 typedef QSharedPointer<FsSurface> SPtr;
86 typedef QSharedPointer<const FsSurface> ConstSPtr;
87
88 //=========================================================================================================
92 FsSurface();
93
94 //=========================================================================================================
100 explicit FsSurface(const QString& p_sFile);
101
102 //=========================================================================================================
111 explicit FsSurface(const QString &subject_id, qint32 hemi, const QString &surf, const QString &subjects_dir);
112
113 //=========================================================================================================
123 explicit FsSurface(const QString &path, qint32 hemi, const QString &surf);
124
125 //=========================================================================================================
129 ~FsSurface();
130
131 //=========================================================================================================
135 void clear();
136
137 //=========================================================================================================
143 inline qint32 hemi() const;
144
145 //=========================================================================================================
151 inline bool isEmpty() const;
152
153 //=========================================================================================================
159 inline QString surf() const;
160
161 //=========================================================================================================
176 static bool read(const QString &subject_id, qint32 hemi, const QString &surf, const QString &subjects_dir, FsSurface &p_Surface, bool p_bLoadCurvature = true);
177
178 //=========================================================================================================
192 static bool read(const QString &path, qint32 hemi, const QString &surf, FsSurface &p_Surface, bool p_bLoadCurvature = true);
193
194 //=========================================================================================================
206 static bool read(const QString &p_sFileName, FsSurface &p_Surface, bool p_bLoadCurvature = true);
207
208 //=========================================================================================================
214 static Eigen::VectorXf read_curv(const QString &p_sFileName);
215
216 //=========================================================================================================
225 static Eigen::MatrixX3f compute_normals(const Eigen::MatrixX3f& rr, const Eigen::MatrixX3i& tris);
226
227 //=========================================================================================================
233 inline const Eigen::MatrixX3f& rr() const;
234
235 //=========================================================================================================
241 inline const Eigen::MatrixX3i& tris() const;
242
243 //=========================================================================================================
249 inline const Eigen::MatrixX3f& nn() const;
250
251 //=========================================================================================================
257 inline const Eigen::VectorXf& curv() const;
258
259 //=========================================================================================================
265 inline const Eigen::Vector3f& offset() const;
266
267 //=========================================================================================================
273 inline Eigen::Vector3f& offset();
274
275 //=========================================================================================================
281 inline QString filePath() const;
282
283 //=========================================================================================================
289 inline QString fileName() const;
290
291 //=========================================================================================================
298 static qint32 fread3(QDataStream &stream);
299
300 //=========================================================================================================
307 static qint32 fread3(std::iostream &stream);
308
309 //=========================================================================================================
317 static Eigen::VectorXi fread3_many(QDataStream &stream, qint32 count);
318
319 //=========================================================================================================
327 static Eigen::VectorXi fread3_many(std::iostream &stream, qint32 count);
328
329private:
330 QString m_sFilePath;
331 QString m_sFileName;
332 qint32 m_iHemi;
333 QString m_sSurf;
334 Eigen::MatrixX3f m_matRR;
335 Eigen::MatrixX3i m_matTris;
336 Eigen::MatrixX3f m_matNN;
337 Eigen::VectorXf m_vecCurv;
338
339 Eigen::Vector3f m_vecOffset;
340};
341
342//=============================================================================================================
343// INLINE DEFINITIONS
344//=============================================================================================================
345
346inline qint32 FsSurface::hemi() const
347{
348 return m_iHemi;
349}
350
351//=============================================================================================================
352
353inline bool FsSurface::isEmpty() const
354{
355 return m_iHemi == -1;
356}
357
358//=============================================================================================================
359
360inline QString FsSurface::surf() const
361{
362 return m_sSurf;
363}
364
365//=============================================================================================================
366
367inline const Eigen::MatrixX3f& FsSurface::rr() const
368{
369 return m_matRR;
370}
371
372//=============================================================================================================
373
374inline const Eigen::MatrixX3i& FsSurface::tris() const
375{
376 return m_matTris;
377}
378
379//=============================================================================================================
380
381inline const Eigen::MatrixX3f& FsSurface::nn() const
382{
383 return m_matNN;
384}
385
386//=============================================================================================================
387
388inline const Eigen::VectorXf& FsSurface::curv() const
389{
390 return m_vecCurv;
391}
392
393//=============================================================================================================
394
395inline const Eigen::Vector3f& FsSurface::offset() const
396{
397 return m_vecOffset;
398}
399
400//=============================================================================================================
401
402inline Eigen::Vector3f& FsSurface::offset()
403{
404 return m_vecOffset;
405}
406
407//=============================================================================================================
408
409inline QString FsSurface::filePath() const
410{
411 return m_sFilePath;
412}
413
414//=============================================================================================================
415
416inline QString FsSurface::fileName() const
417{
418 return m_sFileName;
419}
420} // NAMESPACE
421
422#endif // FS_SURFACE_H
Fs library export/import macros.
#define FSSHARED_EXPORT
Definition fs_global.h:52
FreeSurfer surface and annotation I/O.
static Eigen::VectorXf read_curv(const QString &p_sFileName)
const Eigen::MatrixX3f & nn() const
Definition fs_surface.h:381
bool isEmpty() const
Definition fs_surface.h:353
static Eigen::VectorXi fread3_many(QDataStream &stream, qint32 count)
QString fileName() const
Definition fs_surface.h:416
QSharedPointer< FsSurface > SPtr
Definition fs_surface.h:85
qint32 hemi() const
Definition fs_surface.h:346
static qint32 fread3(QDataStream &stream)
QString filePath() const
Definition fs_surface.h:409
const Eigen::MatrixX3i & tris() const
Definition fs_surface.h:374
const Eigen::Vector3f & offset() const
Definition fs_surface.h:395
QString surf() const
Definition fs_surface.h:360
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:367
const Eigen::VectorXf & curv() const
Definition fs_surface.h:388
QSharedPointer< const FsSurface > ConstSPtr
Definition fs_surface.h:86
static Eigen::MatrixX3f compute_normals(const Eigen::MatrixX3f &rr, const Eigen::MatrixX3i &tris)