ErrorCode ReadCCMIO::read_all_faces(CCMIOID topologyID, TupleList &vert_map, TupleList &face_map #ifndef TUPLE_LIST ,SenseList &sense_map #endif , Range *new_faces) { CCMIOSize_t index = CCMIOSIZEC(0); CCMIOID faceID; ErrorCode rval; // get total # internal/bdy faces, size the face map accordingly int nint_faces = 0, nbdy_faces = 0; CCMIOSize_t nf; CCMIOError error = kCCMIONoErr; while (kCCMIONoErr == CCMIONextEntity(NULL, topologyID, kCCMIOBoundaryFaces, &index, &faceID)) { CCMIOEntitySize(&error, faceID, &nf, NULL); nbdy_faces = nbdy_faces + nf; } CCMIOGetEntity(&error, topologyID, kCCMIOInternalFaces, 0, &faceID); CCMIOEntitySize(&error, faceID, &nf, NULL); nint_faces = nint_faces + nf; #ifdef TUPLE_LIST face_map.resize(2*nint_faces + nbdy_faces); #endif // get multiple blocks of bdy faces index = CCMIOSIZEC(0); while (kCCMIONoErr == CCMIONextEntity(NULL, topologyID, kCCMIOBoundaryFaces, &index, &faceID)) { rval = read_faces(faceID, kCCMIOBoundaryFaces, vert_map, face_map #ifndef TUPLE_LIST , sense_map #endif , new_faces); CHKERR(rval, "Trouble reading boundary faces."); } // now get internal faces CCMIOGetEntity(&error, topologyID, kCCMIOInternalFaces, 0, &faceID); rval = read_faces(faceID, kCCMIOInternalFaces, vert_map,face_map #ifndef TUPLE_LIST , sense_map #endif , new_faces); CHKERR(rval, "Trouble reading internal faces."); return rval; }
void BinaryMeshFileReader::read_meshes(ReaderAdapter& reader, IMeshBuilder& builder) { try { while (true) { // Read the name of the next mesh. string mesh_name; try { mesh_name = read_string(reader); } catch (const ExceptionEOF&) { // Expected EOF. break; } builder.begin_mesh(mesh_name.c_str()); read_vertices(reader, builder); read_vertex_normals(reader, builder); read_texture_coordinates(reader, builder); read_material_slots(reader, builder); read_faces(reader, builder); builder.end_mesh(); } } catch (const ExceptionEOF&) { // Unexpected EOF. throw ExceptionIOError(); } }
void read_rst(const char *fn) { /* just read */ FILE *fd; fd = safe_fopen(fn, "r"); read_header(fd); read_vertices(fd); read_faces(fd); fclose(fd); }
void read_fst(const char *fn) { /* read and alloc */ FILE *fd; fd = safe_fopen(fn, "r"); read_header(fd); balloc(); read_vertices(fd); read_faces(fd); fclose(fd); }
int off2nmg(FILE *fpin, struct rt_wdb *fpout) { char title[64], geom_fname[64]; char rname[67], sname[67]; char buf[200], buf2[200]; FILE *fgeom; struct model *m; title[0] = geom_fname[0] = '\0'; bu_fgets(buf, sizeof(buf), fpin); while (!feof(fpin)) { /* Retrieve the important data */ if (sscanf(buf, "name %[^\n]s", buf2) > 0) bu_strlcpy(title, buf2, sizeof(title)); if (sscanf(buf, "geometry %200[^\n]s", buf2) > 0) { char dtype[40], format[40]; if (sscanf(buf2, "%40s %40s %64s", dtype, format, geom_fname) != 3) bu_exit(1, "Incomplete geometry field in input file."); if (!BU_STR_EQUAL(dtype, "indexed_poly")) bu_exit(1, "Unknown geometry data type. Must be \"indexed_poly\"."); } bu_fgets(buf, sizeof(buf), fpin); } if (strlen(title) < (unsigned)1) fprintf(stderr, "Warning: no title\n"); if (strlen(geom_fname) < (unsigned)1) bu_exit(1, "ERROR: no geometry filename given"); if ((fgeom = fopen(geom_fname, "rb")) == NULL) { bu_exit(1, "off2nmg: cannot open %s (geometry description) for reading\n", geom_fname); } m = nmg_mm(); read_faces(m, fgeom); fclose(fgeom); snprintf(sname, 67, "s.%s", title); snprintf(rname, 67, "r.%s", title); mk_id(fpout, title); mk_nmg(fpout, sname, m); mk_comb1(fpout, rname, sname, 1); nmg_km(m); return 0; }
file_load_status quake3_bsp_map::load(istream& stream) { if (!stream.good()) { m_last_error = "The stream was invalid"; return FILE_NOT_FOUND; } if (!load_and_check_header(stream)) { m_last_error = "Map contains an invalid header string"; return FILE_LOAD_FAILED; } read_lumps(stream); read_entities(stream); read_vertices(stream); read_faces(stream); read_face_indices(stream); read_textures(stream); read_lightmaps(stream); read_bsp_nodes(stream); read_bsp_leaves(stream); read_bsp_leaf_faces(stream); read_bsp_leaf_brushes(stream); read_models(stream); read_planes(stream); read_brushes(stream); read_brushsides(stream); read_effects(stream); read_lightvols(stream); read_visibility_data(stream); do_post_load(); print_statistics(); return FILE_LOAD_SUCCESS; }