// // File: list_mesh.cc // // (C) 2000-2006 Helmut Cantzler // // Licensed under the terms of the Lesser General Public License. // #include "list_mesh.h" int List_Mesh::read(FILE *f, int (*update_progress)(int pos), void (*set_total)(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 List_Mesh(); break; case P_MESH: mesh = new P_Mesh(); break; case OBJ_MESH: mesh = new OBJ_Mesh(); break; case VTK_MESH: mesh = new VTK_Mesh(); break; case GTS_MESH: mesh = new GTS_Mesh(); break; case GEOMVIEW_MESH: mesh = new Geomview_Mesh(); break; case PLY_MESH: mesh = new PLY_Mesh(); break; case VRML1_MESH: mesh = new Vrml1_Mesh(); break; case VRML2_MESH: mesh = new Vrml2_Mesh(); break; case FEATURES_MESH: mesh = new Feature_Mesh(); break; default: fprintf(stderr, "Not supported mesh type\n"); } if (mesh != NULL) { if (mesh->read(file, (int (*)(int)) update_progress, (void (*)(int)) set_total) != 0) { delete mesh; fclose(file); return 1; } add_mesh(mesh); delete mesh; } fclose(file); } return 0; } void List_Mesh::write(FILE *f, const char *comment) { }