// ************************************** // Output Functions // ************************************** void OutputDataFile(ofstream &out, NodeSetPtr NS, EdgeSetPtr ES, TileSetPtr TS, FaceSetPtr FS) { // for the purposes of the output file we want the 'tidiest' file // (i.e. we want to get rid of all the equatedTo pointers and have just the nodes that we like) // ResolveEquatedNodes(NS, ES); // ResolveEquatedEdges(ES); // GetRidOfAnyZeroLengthEdges(ES, FS); OutputNodeSet(out, NS); out << endl; // put a space between each set for improved viewing OutputEdgeSet(out, ES); out << endl; OutputTileSet(out, TS); out << endl; OutputFaceSet(out, FS); out << endl; } /* OVERLOAD! void OutputNodeSet(ofstream &out, NodeSetPtr NS) { out << "nodeset" << endl << "{" << endl; for (unsigned int i=0; isize(); i++) out << "node " << (*NS)[i]->Name() << "(" << (*NS)[i]->X() << ", " << (*NS)[i]->Y() << ")" << endl; out << "}" << endl; } void OutputEdgeSet(ofstream &out, EdgeSetPtr ES) { // this could create an invalid output file iff there is an edge that has the same name as a segmented edge // with a number after it (e.g. there is an edge "e1" and another edge "e" that is broken into two segments) out << "edgeset" << endl << "{" << endl; for (unsigned int i=0; isize(); i++) { for (unsigned int j=0; j<(*ES)[i]->Segments()->size(); j++) { out << "edge " << (*ES)[i]->Name(); if (j>0) out << j; out << "(" << (*((*ES)[i]->Segments()))[j]->start->Name() << ", "; out << (*((*ES)[i]->Segments()))[j]->finish->Name() << ")" << endl; } } out << "}" << endl; } void OutputTileSet(ofstream &out, TileSetPtr TS) { out << "tileset" << endl << "{" << endl; for (unsigned int i=0; isize(); i++) { out << "tile " << (*TS)[i]->Name() << "{"; out << "}" << endl; } out << "}" << endl; } void OutputFaceSet(ofstream &out, FaceSetPtr FS) { out << "faceset" << endl << "{" << endl; for (unsigned int i=0; isize(); i++) { out << "face " << (*FS)[i]->Name() << "{"; for (unsigned int j=0; j<(*FS)[i]->Edges()->size(); j++) { out << ((*((*FS)[i])->Edges()))[j]->Name(); if (j < (*FS)[i]->Edges()->size() - 1) out << ", "; } out << "}" << endl; } out << "}" << endl; } */