//
// File: list_mesh.cc
//
// (C) 2000-2008 Helmut Cantzler
//
// Licensed under the terms of the Lesser General Public License.
//
#include "list_mesh.h"
int ListMesh::read(FILE *f, int (*updateProgress)(int pos),
void (*setTotal)(int size))
{
char filename[101];
FILE *file;
Mesh *mesh;
do // Reads till end of the line
{
filename[0]=fgetc(f);
}
while (filename[0] != EOF && filename[0] != '\n');
// check if there are some comments
filename[0]=fgetc(f);
while (filename[0] != EOF && filename[0] == '#')
{
do // Reads till end of the line
{
filename[0]=fgetc(f);
}
while (filename[0] != EOF && filename[0] != '\n');
filename[0]=fgetc(f);
}
ungetc(filename[0], f);
while (fscanf(f,"%100s\n", filename) == 1)
if ((file = fopen(filename,"r")) == NULL)
fprintf(stderr, "Can't open %s for reading\n", filename);
else
{
//printf(" Filename: %s Type: %d\n", filename, Mesh::type(file));
mesh=NULL;
switch (Mesh::type(file))
{
case LIST_MESH:
mesh = new ListMesh();
break;
case P_MESH:
mesh = new PMesh();
break;
case OBJ_MESH:
mesh = new OBJMesh();
break;
case VTK_MESH:
mesh = new VTKMesh();
break;
case GTS_MESH:
mesh = new GTSMesh();
break;
case GEOMVIEW_MESH:
mesh = new GeomviewMesh();
break;
case PLY_MESH:
mesh = new PLYMesh();
break;
case VRML1_MESH:
mesh = new Vrml1Mesh();
break;
case VRML2_MESH:
mesh = new Vrml2Mesh();
break;
case FEATURES_MESH:
mesh = new FeatureMesh();
break;
default:
fprintf(stderr, "Not supported mesh type\n");
}
if (mesh != NULL)
{
if (mesh->read(file, (int (*)(int)) updateProgress,
(void (*)(int)) setTotal) != 0)
{
delete mesh;
fclose(file);
return 1;
}
addMesh(mesh);
delete mesh;
}
fclose(file);
}
return 0;
}
void ListMesh::write(FILE *f, const char *comment)
{
}