64 using namespace Eigen;
82 : m_qListDigPoint(p_FiffDigPointSet.m_qListDigPoint)
89 : m_qListDigPoint(pointList)
105 qInfo() <<
"[FiffDigPointSet::FiffDigPointSet] Could not read the FiffDigPointSet";
108 qInfo(
"[FiffDigPointSet::FiffDigPointSet] %i digitizer Points read from file.", this->
size());
124 bool open_here =
false;
126 if (!p_pStream->device()->isOpen()) {
127 QString t_sFileName = p_pStream->streamName();
129 if(!p_pStream->open())
132 printf(
"Opening header data %s...\n",t_sFileName.toUtf8().constData());
141 fiff_int_t kind = -1;
148 QList<FiffDirNode::SPtr> isotrak = p_pStream->dirtree()->dir_tree_find(FIFFB_ISOTRAK);
150 fiff_int_t coord_frame = FIFFV_COORD_HEAD;
154 if (isotrak.size() == 1)
156 for (k = 0; k < isotrak[0]->nent(); ++k)
158 kind = isotrak[0]->dir[k]->kind;
159 pos = isotrak[0]->dir[k]->pos;
162 p_pStream->read_tag(t_pTag, pos);
163 p_Dig.m_qListDigPoint.append(t_pTag->toDigPoint());
169 p_pStream->read_tag(t_pTag, pos);
170 qDebug() <<
"NEEDS To BE DEBBUGED: FIFF_MNE_COORD_FRAME" << t_pTag->getType();
171 coord_frame = *t_pTag->toInt();
175 p_pStream->read_tag(t_pTag, pos);
176 qDebug() <<
"NEEDS To BE DEBBUGED: FIFF_COORD_TRANS" << t_pTag->getType();
177 dig_trans = t_pTag->toCoordTrans();
182 for(k = 0; k < p_Dig.
size(); ++k)
184 p_Dig[k].coord_frame = coord_frame;
207 printf(
"Write Digitizer Points in %s...\n", t_pStream->streamName().toUtf8().constData());
209 t_pStream->end_file();
220 for(qint32 h = 0; h < m_qListDigPoint.size(); ++h)
225 printf(
"\t%d digitizer points written\n", m_qListDigPoint.size());
235 if (idx>=m_qListDigPoint.length())
237 qWarning(
"Warning: Required DigPoint doesn't exist! Returning DigPoint '0'.");
240 return m_qListDigPoint[idx];
247 if (idx >= m_qListDigPoint.length())
249 qWarning(
"Warning: Required DigPoint doesn't exist! Returning DigPoint '0'.");
252 return m_qListDigPoint[idx];
261 for(
int i = 0; i < m_qListDigPoint.size(); ++i) {
262 if(includeTypes.contains(m_qListDigPoint[i].kind)) {
263 pickedSet << m_qListDigPoint[i];
274 this->m_qListDigPoint.append(dig);
282 this->m_qListDigPoint.append(*dig);
291 for(
int i = 0; i < m_qListDigPoint.size(); ++i) {
292 tempvec(0) = m_qListDigPoint.at(i).r[0];
293 tempvec(1) = m_qListDigPoint.at(i).r[1];
294 tempvec(2) = m_qListDigPoint.at(i).r[2];
297 tempvec = coordTrans.
invtrans * tempvec;
299 tempvec = coordTrans.
trans * tempvec;
301 m_qListDigPoint[i].r[0] = tempvec(0);
302 m_qListDigPoint[i].r[1] = tempvec(1);
303 m_qListDigPoint[i].r[2] = tempvec(2);
311 return m_qListDigPoint;
FiffTag class declaration, which provides fiff tag I/O and processing methods.
Digitization point description.
void write(QIODevice &p_IODevice)
write
Definitions for describing the objects in a FIFF file.
Coordinate transformation description.
static bool readFromStream(FiffStream::SPtr &p_Stream, FiffDigPointSet &p_Dig)
#define FIFF_MNE_COORD_FRAME
FiffDigPointSet pickTypes(QList< int > includeTypes) const
fiff_long_t write_dig_point(const FiffDigPoint &dig)
void writeToStream(FiffStream *p_pStream)
writeToStream
Holds a set of digitizer points.
QSharedPointer< FiffTag > SPtr
Eigen::Matrix< float, 4, 4, Eigen::DontAlign > trans
const FiffDigPoint & operator[](qint32 idx) const
Eigen::Matrix< float, 4, 4, Eigen::DontAlign > invtrans
fiff_long_t end_block(fiff_int_t kind, fiff_int_t next=FIFFV_NEXT_SEQ)
FiffDigPoint class declaration.
fiff_long_t start_block(fiff_int_t kind)
void applyTransform(const FiffCoordTrans &coordTrans, bool bApplyInverse=false)
static FiffStream::SPtr start_file(QIODevice &p_IODevice)
FiffDirNode class declaration, which provides fiff dir tree processing methods.
FiffDigPointSet class declaration.
FiffDigPointSet & operator<<(const FiffDigPoint &dig)
QSharedPointer< FiffStream > SPtr
QList< FiffDigPoint > getList()