MNE-CPP  beta 1.0
surface.h
Go to the documentation of this file.
1 //=============================================================================================================
36 #ifndef SURFACE_H
37 #define SURFACE_H
38 
39 //*************************************************************************************************************
40 //=============================================================================================================
41 // INCLUDES
42 //=============================================================================================================
43 
44 #include "fs_global.h"
45 #include <iostream>
46 
47 
48 //*************************************************************************************************************
49 //=============================================================================================================
50 // QT INCLUDES
51 //=============================================================================================================
52 
53 #include <QSharedPointer>
54 
55 
56 //*************************************************************************************************************
57 //=============================================================================================================
58 // Eigen INCLUDES
59 //=============================================================================================================
60 
61 #include <Eigen/Core>
62 
63 
64 //*************************************************************************************************************
65 //=============================================================================================================
66 // DEFINE NAMESPACE FSLIB
67 //=============================================================================================================
68 
69 namespace FSLIB
70 {
71 
72 //*************************************************************************************************************
73 //=============================================================================================================
74 // USED NAMESPACES
75 //=============================================================================================================
76 
77 using namespace Eigen;
78 
79 
80 //*************************************************************************************************************
81 //=============================================================================================================
82 // FORWARD DECLARATIONS
83 //=============================================================================================================
84 
85 
86 //=============================================================================================================
93 {
94 public:
95  typedef QSharedPointer<Surface> SPtr;
96  typedef QSharedPointer<const Surface> ConstSPtr;
98  //=========================================================================================================
102  Surface();
103 
104  //=========================================================================================================
110  explicit Surface(const QString& p_sFile);
111 
112  //=========================================================================================================
121  explicit Surface(const QString &subject_id, qint32 hemi, const QString &surf, const QString &subjects_dir);
122 
123  //=========================================================================================================
133  explicit Surface(const QString &path, qint32 hemi, const QString &surf);
134 
135 
136  //=========================================================================================================
140  ~Surface();
141 
142  //=========================================================================================================
146  void clear();
147 
148  //=========================================================================================================
154  inline qint32 hemi() const;
155 
156  //=========================================================================================================
162  inline bool isEmpty() const;
163 
164  //=========================================================================================================
170  inline QString surf() const;
171 
172  //=========================================================================================================
187  static bool read(const QString &subject_id, qint32 hemi, const QString &surf, const QString &subjects_dir, Surface &p_Surface, bool p_bLoadCurvature = true);
188 
189  //=========================================================================================================
203  static bool read(const QString &path, qint32 hemi, const QString &surf, Surface &p_Surface, bool p_bLoadCurvature = true);
204 
205  //=========================================================================================================
217  static bool read(const QString &p_sFileName, Surface &p_Surface, bool p_bLoadCurvature = true);
218 
219  //=========================================================================================================
225  static VectorXf read_curv(const QString &p_sFileName);
226 
227  //=========================================================================================================
236  static MatrixX3f compute_normals(const MatrixX3f& rr, const MatrixX3i& tris);
237 
238  //=========================================================================================================
244  inline const MatrixX3f& rr() const;
245 
246  //=========================================================================================================
252  inline const MatrixX3i& tris() const;
253 
254  //=========================================================================================================
260  inline const MatrixX3f& nn() const;
261 
262  //=========================================================================================================
268  inline const VectorXf& curv() const;
269 
270  //=========================================================================================================
276  inline const Vector3f& offset() const;
277 
278  //=========================================================================================================
284  inline Vector3f& offset();
285 
286 private:
287  QString m_sFilePath;
288  QString m_sFileName;
289  qint32 m_iHemi;
290  QString m_sSurf;
291  MatrixX3f m_matRR;
292  MatrixX3i m_matTris;
293  MatrixX3f m_matNN;
294  VectorXf m_vecCurv;
296  Vector3f m_vecOffset;
297 };
298 
299 //*************************************************************************************************************
300 //=============================================================================================================
301 // INLINE DEFINITIONS
302 //=============================================================================================================
303 
304 inline qint32 Surface::hemi() const
305 {
306  return m_iHemi;
307 }
308 
309 
310 //*************************************************************************************************************
311 
312 inline bool Surface::isEmpty() const
313 {
314  return m_iHemi == -1;
315 }
316 
317 
318 //*************************************************************************************************************
319 
320 inline QString Surface::surf() const
321 {
322  return m_sSurf;
323 }
324 
325 
326 //*************************************************************************************************************
327 
328 inline const MatrixX3f& Surface::rr() const
329 {
330  return m_matRR;
331 }
332 
333 
334 //*************************************************************************************************************
335 
336 inline const MatrixX3i& Surface::tris() const
337 {
338  return m_matTris;
339 }
340 
341 
342 //*************************************************************************************************************
343 
344 inline const MatrixX3f& Surface::nn() const
345 {
346  return m_matNN;
347 }
348 
349 
350 //*************************************************************************************************************
351 
352 inline const VectorXf& Surface::curv() const
353 {
354  return m_vecCurv;
355 }
356 
357 
358 //*************************************************************************************************************
359 
360 inline const Vector3f& Surface::offset() const
361 {
362  return m_vecOffset;
363 }
364 
365 
366 //*************************************************************************************************************
367 
368 inline Vector3f& Surface::offset()
369 {
370  return m_vecOffset;
371 }
372 
373 } // NAMESPACE
374 
375 #endif // SURFACE_H
bool isEmpty() const
Definition: surface.h:312
QSharedPointer< const Surface > ConstSPtr
Definition: surface.h:96
Fs library export/import macros.
const VectorXf & curv() const
Definition: surface.h:352
const MatrixX3f & nn() const
Definition: surface.h:344
const MatrixX3i & tris() const
Definition: surface.h:336
FreeSurfer surface mesh.
Definition: surface.h:92
const Vector3f & offset() const
Definition: surface.h:360
qint32 hemi() const
Definition: surface.h:304
#define FSSHARED_EXPORT
Definition: fs_global.h:58
QSharedPointer< Surface > SPtr
Definition: surface.h:95
QString surf() const
Definition: surface.h:320
const MatrixX3f & rr() const
Definition: surface.h:328