MNE-CPP 0.1.9
A Framework for Electrophysiology
Loading...
Searching...
No Matches
surface.h
Go to the documentation of this file.
1//=============================================================================================================
37#ifndef SURFACE_H
38#define SURFACE_H
39
40//=============================================================================================================
41// INCLUDES
42//=============================================================================================================
43
44#include "fs_global.h"
45
46//=============================================================================================================
47// QT INCLUDES
48//=============================================================================================================
49
50#include <QSharedPointer>
51
52//=============================================================================================================
53// EIGEN INCLUDES
54//=============================================================================================================
55
56#include <Eigen/Core>
57
58//=============================================================================================================
59// DEFINE NAMESPACE FSLIB
60//=============================================================================================================
61
62namespace FSLIB
63{
64
65//=============================================================================================================
66// FORWARD DECLARATIONS
67//=============================================================================================================
68
69//=============================================================================================================
76{
77public:
78 typedef QSharedPointer<Surface> SPtr;
79 typedef QSharedPointer<const Surface> ConstSPtr;
81 //=========================================================================================================
85 Surface();
86
87 //=========================================================================================================
93 explicit Surface(const QString& p_sFile);
94
95 //=========================================================================================================
104 explicit Surface(const QString &subject_id, qint32 hemi, const QString &surf, const QString &subjects_dir);
105
106 //=========================================================================================================
116 explicit Surface(const QString &path, qint32 hemi, const QString &surf);
117
118 //=========================================================================================================
122 ~Surface();
123
124 //=========================================================================================================
128 void clear();
129
130 //=========================================================================================================
136 inline qint32 hemi() const;
137
138 //=========================================================================================================
144 inline bool isEmpty() const;
145
146 //=========================================================================================================
152 inline QString surf() const;
153
154 //=========================================================================================================
169 static bool read(const QString &subject_id, qint32 hemi, const QString &surf, const QString &subjects_dir, Surface &p_Surface, bool p_bLoadCurvature = true);
170
171 //=========================================================================================================
185 static bool read(const QString &path, qint32 hemi, const QString &surf, Surface &p_Surface, bool p_bLoadCurvature = true);
186
187 //=========================================================================================================
199 static bool read(const QString &p_sFileName, Surface &p_Surface, bool p_bLoadCurvature = true);
200
201 //=========================================================================================================
207 static Eigen::VectorXf read_curv(const QString &p_sFileName);
208
209 //=========================================================================================================
218 static Eigen::MatrixX3f compute_normals(const Eigen::MatrixX3f& rr, const Eigen::MatrixX3i& tris);
219
220 //=========================================================================================================
226 inline const Eigen::MatrixX3f& rr() const;
227
228 //=========================================================================================================
234 inline const Eigen::MatrixX3i& tris() const;
235
236 //=========================================================================================================
242 inline const Eigen::MatrixX3f& nn() const;
243
244 //=========================================================================================================
250 inline const Eigen::VectorXf& curv() const;
251
252 //=========================================================================================================
258 inline const Eigen::Vector3f& offset() const;
259
260 //=========================================================================================================
266 inline Eigen::Vector3f& offset();
267
268 //=========================================================================================================
274 inline QString filePath() const;
275
276 //=========================================================================================================
282 inline QString fileName() const;
283
284private:
285 QString m_sFilePath;
286 QString m_sFileName;
287 qint32 m_iHemi;
288 QString m_sSurf;
289 Eigen::MatrixX3f m_matRR;
290 Eigen::MatrixX3i m_matTris;
291 Eigen::MatrixX3f m_matNN;
292 Eigen::VectorXf m_vecCurv;
294 Eigen::Vector3f m_vecOffset;
295};
296
297//=============================================================================================================
298// INLINE DEFINITIONS
299//=============================================================================================================
300
301inline qint32 Surface::hemi() const
302{
303 return m_iHemi;
304}
305
306//=============================================================================================================
307
308inline bool Surface::isEmpty() const
309{
310 return m_iHemi == -1;
311}
312
313//=============================================================================================================
314
315inline QString Surface::surf() const
316{
317 return m_sSurf;
318}
319
320//=============================================================================================================
321
322inline const Eigen::MatrixX3f& Surface::rr() const
323{
324 return m_matRR;
325}
326
327//=============================================================================================================
328
329inline const Eigen::MatrixX3i& Surface::tris() const
330{
331 return m_matTris;
332}
333
334//=============================================================================================================
335
336inline const Eigen::MatrixX3f& Surface::nn() const
337{
338 return m_matNN;
339}
340
341//=============================================================================================================
342
343inline const Eigen::VectorXf& Surface::curv() const
344{
345 return m_vecCurv;
346}
347
348//=============================================================================================================
349
350inline const Eigen::Vector3f& Surface::offset() const
351{
352 return m_vecOffset;
353}
354
355//=============================================================================================================
356
357inline Eigen::Vector3f& Surface::offset()
358{
359 return m_vecOffset;
360}
361
362//=============================================================================================================
363
364inline QString Surface::filePath() const
365{
366 return m_sFilePath;
367}
368
369//=============================================================================================================
370
371inline QString Surface::fileName() const
372{
373 return m_sFileName;
374}
375} // NAMESPACE
376
377#endif // SURFACE_H
Fs library export/import macros.
#define FSSHARED_EXPORT
Definition fs_global.h:56
FreeSurfer surface mesh.
Definition surface.h:76
QString surf() const
Definition surface.h:315
QSharedPointer< const Surface > ConstSPtr
Definition surface.h:79
const Eigen::MatrixX3f & nn() const
Definition surface.h:336
const Eigen::Vector3f & offset() const
Definition surface.h:350
const Eigen::MatrixX3f & rr() const
Definition surface.h:322
bool isEmpty() const
Definition surface.h:308
const Eigen::VectorXf & curv() const
Definition surface.h:343
QString fileName() const
Definition surface.h:371
QSharedPointer< Surface > SPtr
Definition surface.h:78
QString filePath() const
Definition surface.h:364
qint32 hemi() const
Definition surface.h:301
const Eigen::MatrixX3i & tris() const
Definition surface.h:329