51 #include <QTextStream>
52 #include <QStringList>
65 using namespace FSLIB;
82 Label::Label(
const VectorXi &p_vertices,
const MatrixX3f &p_pos,
const VectorXd &p_values, qint32 p_hemi,
const QString &p_name, qint32 p_id)
83 : vertices(p_vertices)
109 pos = MatrixX3f(0,3);
156 return MatrixX3i(0,3);
158 MatrixX3i tris(p_matTris.rows(),3);
161 verts.reserve(this->
vertices.size());
162 for(qint32 i = 0; i < this->
vertices.size(); ++i)
163 verts.insert(this->vertices[i]);
169 for(qint32 i = 0; i < p_matTris.rows(); ++i)
171 if(verts.contains(p_matTris(i,0)) || verts.contains(p_matTris(i,1)) || verts.contains(p_matTris(i,2)))
173 tris.row(t_size) = p_matTris.row(i);
178 tris.conservativeResize(t_size, 3);
190 if(p_sFileName.mid(p_sFileName.size()-6,6).compare(
".label") != 0)
192 qWarning(
"Given file (%s) is not a .label file!\n", p_sFileName.toLatin1().constData());
196 printf(
"Reading label...");
197 QFile t_File(p_sFileName);
199 if (!t_File.open(QIODevice::ReadOnly | QIODevice::Text))
201 qWarning(
"\tError: Couldn't open the label file\n");
205 QTextStream t_TextStream(&t_File);
207 QString
comment = t_TextStream.readLine();
208 qint32 nv = t_TextStream.readLine().toInt();
210 MatrixXd data(nv, 5);
216 for(qint32 i = 0; i < nv; ++i)
219 list = t_TextStream.readLine().split(QRegExp(
"\\s+"), QString::SkipEmptyParts);
221 for(qint32 j = 0; j < list.size(); ++j)
223 value = list[j].toDouble(&isNumber);
226 data(i, count) = value;
232 p_Label.
comment = comment.mid(1,comment.size()-1);
233 if(t_File.fileName().contains(
"lh."))
242 p_Label.
vertices = data.cast<
int>().block(0,0,data.rows(),1);
243 p_Label.
pos = data.cast<
float>().block(0,1,data.rows(),3).array() * 1e-3f;
244 p_Label.
values = data.block(0,4,data.rows(),1);
246 if(t_File.fileName().contains(
"lh.label"))
248 QStringList tmpList = t_File.fileName().split(
"lh.")[0].split(QRegExp(
"\\W+"));
249 p_Label.
name = tmpList[tmpList.size()-1];
251 else if(t_File.fileName().contains(
"lh."))
252 p_Label.
name = t_File.fileName().split(
"lh.")[1].split(QRegExp(
"\\W+"))[0];
MatrixX3i selectTris(const Surface &p_Surface)
const MatrixX3i & tris() const
static bool read(const QString &p_sFileName, Label &p_Label)
Surface class declaration.