MNE-CPP  0.1.9
A Framework for Electrophysiology
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 
62 namespace FSLIB
63 {
64 
65 //=============================================================================================================
66 // FORWARD DECLARATIONS
67 //=============================================================================================================
68 
69 //=============================================================================================================
76 {
77 public:
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 
284 private:
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 
301 inline qint32 Surface::hemi() const
302 {
303  return m_iHemi;
304 }
305 
306 //=============================================================================================================
307 
308 inline bool Surface::isEmpty() const
309 {
310  return m_iHemi == -1;
311 }
312 
313 //=============================================================================================================
314 
315 inline QString Surface::surf() const
316 {
317  return m_sSurf;
318 }
319 
320 //=============================================================================================================
321 
322 inline const Eigen::MatrixX3f& Surface::rr() const
323 {
324  return m_matRR;
325 }
326 
327 //=============================================================================================================
328 
329 inline const Eigen::MatrixX3i& Surface::tris() const
330 {
331  return m_matTris;
332 }
333 
334 //=============================================================================================================
335 
336 inline const Eigen::MatrixX3f& Surface::nn() const
337 {
338  return m_matNN;
339 }
340 
341 //=============================================================================================================
342 
343 inline const Eigen::VectorXf& Surface::curv() const
344 {
345  return m_vecCurv;
346 }
347 
348 //=============================================================================================================
349 
350 inline const Eigen::Vector3f& Surface::offset() const
351 {
352  return m_vecOffset;
353 }
354 
355 //=============================================================================================================
356 
357 inline Eigen::Vector3f& Surface::offset()
358 {
359  return m_vecOffset;
360 }
361 
362 //=============================================================================================================
363 
364 inline QString Surface::filePath() const
365 {
366  return m_sFilePath;
367 }
368 
369 //=============================================================================================================
370 
371 inline QString Surface::fileName() const
372 {
373  return m_sFileName;
374 }
375 } // NAMESPACE
376 
377 #endif // SURFACE_H
FSLIB::Surface::offset
const Eigen::Vector3f & offset() const
Definition: surface.h:350
FSLIB::Surface::fileName
QString fileName() const
Definition: surface.h:371
fs_global.h
Fs library export/import macros.
FSLIB::Surface::isEmpty
bool isEmpty() const
Definition: surface.h:308
FSLIB::Surface::hemi
qint32 hemi() const
Definition: surface.h:301
FSLIB::Surface::rr
const Eigen::MatrixX3f & rr() const
Definition: surface.h:322
FSLIB::Surface::ConstSPtr
QSharedPointer< const Surface > ConstSPtr
Definition: surface.h:79
FSLIB::Surface::nn
const Eigen::MatrixX3f & nn() const
Definition: surface.h:336
FSLIB::Surface::tris
const Eigen::MatrixX3i & tris() const
Definition: surface.h:329
FSLIB::Surface::filePath
QString filePath() const
Definition: surface.h:364
FSLIB::Surface::surf
QString surf() const
Definition: surface.h:315
FSLIB::Surface::SPtr
QSharedPointer< Surface > SPtr
Definition: surface.h:78
FSSHARED_EXPORT
#define FSSHARED_EXPORT
Definition: fs_global.h:56
FSLIB::Surface
FreeSurfer surface mesh.
Definition: surface.h:75
FSLIB::Surface::curv
const Eigen::VectorXf & curv() const
Definition: surface.h:343