Fixed code related to creation o fthe XML file

This commit is contained in:
Paolo Cignoni 2005-09-29 14:48:15 +00:00
parent 83eb240e34
commit 3f0170846e
1 changed files with 386 additions and 315 deletions

View File

@ -24,6 +24,9 @@
History History
$Log: not supported by cvs2svn $ $Log: not supported by cvs2svn $
Revision 1.3 2005/09/28 13:57:09 rita_borgo
Fixed some printout not alligned
Revision 1.2 2005/09/28 10:46:04 rita_borgo Revision 1.2 2005/09/28 10:46:04 rita_borgo
Added possibility of saving File in OFF format Added possibility of saving File in OFF format
@ -239,7 +242,7 @@ void main(int argc,char ** argv){
/*------------XML file part ------------------*/
doc.initializeMain(XML_SCHEMA_NAME); doc.initializeMain(XML_SCHEMA_NAME);
char* s1 = "http://www.w3.org/2001/XMLSchema-instance"; char* s1 = "http://www.w3.org/2001/XMLSchema-instance";
char* s2 = new(char[50]); char* s2 = new(char[50]);
@ -249,6 +252,7 @@ void main(int argc,char ** argv){
s2 = new(char[100]); s2 = new(char[100]);
sprintf(s2,"\"%s\"",s1); sprintf(s2,"\"%s\"",s1);
doc.addHeaders(" xsi:noNamespaceSchemaLocation=", s2); doc.addHeaders(" xsi:noNamespaceSchemaLocation=", s2);
/*--------------------------------------------*/
FILE * index; FILE * index;
index = fopen((string(argv[1])+string("2.html")).c_str(),"w"); index = fopen((string(argv[1])+string("2.html")).c_str(),"w");
@ -261,8 +265,9 @@ void main(int argc,char ** argv){
printf(" M: '%s'\n\t Number of vertices: %d \n", argv[1], m.vn); printf(" M: '%s'\n\t Number of vertices: %d \n", argv[1], m.vn);
printf("\t Number of faces: %d \n", m.fn); printf("\t Number of faces: %d \n", m.fn);
//XML
/*------------XML file part ------------------*/
NodeGroup* ng = new NodeGroup; NodeGroup* ng = new NodeGroup;
char* s =new(char[25]); char* s =new(char[25]);
@ -292,6 +297,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
@ -301,6 +307,7 @@ void main(int argc,char ** argv){
fprintf(index, "<p>Object color(4b): %f %f %f </p>\n\n", Color[0], Color[1], Color[2]); fprintf(index, "<p>Object color(4b): %f %f %f </p>\n\n", Color[0], Color[1], Color[2]);
printf( "\t Object color(4b): %f %f %f \n", Color[0], Color[1], Color[2]); printf( "\t Object color(4b): %f %f %f \n", Color[0], Color[1], Color[2]);
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -314,6 +321,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
@ -352,6 +360,8 @@ void main(int argc,char ** argv){
{ {
fprintf(index, "<p> Manifold: NO </p>"); fprintf(index, "<p> Manifold: NO </p>");
printf( "\t Manifold: NO\n"); printf( "\t Manifold: NO\n");
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -365,11 +375,14 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
else else
{ {
fprintf(index, "<p> Manifold: YES </p>"); fprintf(index, "<p> Manifold: YES </p>");
printf( "\t Manifold: YES\n "); printf( "\t Manifold: YES\n ");
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -383,6 +396,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
@ -435,6 +449,7 @@ void main(int argc,char ** argv){
printf("\t Number of internal edges: %d \n", count_e-boundary_e); printf("\t Number of internal edges: %d \n", count_e-boundary_e);
printf("\t Number of boundary edges: %i \n", boundary_e); printf("\t Number of boundary edges: %i \n", boundary_e);
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -448,6 +463,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
@ -459,6 +475,8 @@ void main(int argc,char ** argv){
count_fd++; count_fd++;
fprintf(index, "<p>Number of degenerated faces: %d </p>\n", count_fd); fprintf(index, "<p>Number of degenerated faces: %d </p>\n", count_fd);
printf("\t Number of degenerated faces: %d \n", count_fd); printf("\t Number of degenerated faces: %d \n", count_fd);
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -472,6 +490,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
// UNREFERENCED VERTEX // UNREFERENCED VERTEX
@ -492,6 +511,8 @@ void main(int argc,char ** argv){
++count_uv; ++count_uv;
fprintf(index,"<p>Number of unreferenced vertices: %d</p>\n",count_uv); fprintf(index,"<p>Number of unreferenced vertices: %d</p>\n",count_uv);
printf("\t Number of unreferenced vertices: %d\n",count_uv); printf("\t Number of unreferenced vertices: %d\n",count_uv);
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -505,6 +526,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
// HOLES COUNT // HOLES COUNT
@ -564,6 +586,8 @@ void main(int argc,char ** argv){
numholes = holes.size(); numholes = holes.size();
fprintf(index,"<p>Number of holes/boundaries: %d </p>\n", numholes); fprintf(index,"<p>Number of holes/boundaries: %d </p>\n", numholes);
printf("\t Number of holes/boundaries: %d \n", numholes); printf("\t Number of holes/boundaries: %d \n", numholes);
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -577,6 +601,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
@ -589,6 +614,8 @@ void main(int argc,char ** argv){
if(i==numholes-1){ printf("%i)\n",holes[i].size()); BEdges++;} if(i==numholes-1){ printf("%i)\n",holes[i].size()); BEdges++;}
else{ printf("%i, ",holes[i].size()); BEdges++;} else{ printf("%i, ",holes[i].size()); BEdges++;}
} }
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -601,6 +628,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
} }
else else
@ -614,6 +642,8 @@ void main(int argc,char ** argv){
{ {
fprintf(index,"<p>Volume: %d </p>\n", m.Volume()); fprintf(index,"<p>Volume: %d </p>\n", m.Volume());
printf("\t Volume: %f \n", m.Volume()); printf("\t Volume: %f \n", m.Volume());
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -627,6 +657,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
else else
{ {
@ -676,6 +707,8 @@ void main(int argc,char ** argv){
int numcomponents = nrfaces.size(); int numcomponents = nrfaces.size();
fprintf(index, "<p> Number of connected components: %d </p>", numcomponents); fprintf(index, "<p> Number of connected components: %d </p>", numcomponents);
printf("\t Number of connected components: %d\n", numcomponents); printf("\t Number of connected components: %d\n", numcomponents);
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -689,6 +722,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
//GENUS --> 2( #components - genus ) = #vertices + #faces - #edge - #boundary_loops = eulernumber - #holes //GENUS --> 2( #components - genus ) = #vertices + #faces - #edge - #boundary_loops = eulernumber - #holes
//eulero = (mesh.vn-count_uv) - (count_e)+mesh.fn; //eulero = (mesh.vn-count_uv) - (count_e)+mesh.fn;
@ -699,6 +733,8 @@ void main(int argc,char ** argv){
int genus = -( 0.5 * (eulernumber - numholes) - numcomponents ); int genus = -( 0.5 * (eulernumber - numholes) - numcomponents );
fprintf(index, "<p> Genus: %d </p> \n ", genus); fprintf(index, "<p> Genus: %d </p> \n ", genus);
printf( "\t Genus: %d \n", genus); printf( "\t Genus: %d \n", genus);
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -712,6 +748,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
else //(!Manifold) else //(!Manifold)
{ {
@ -766,6 +803,8 @@ void main(int argc,char ** argv){
{ {
fprintf(index, "<p> Type of Mesh: REGULAR</p>"); fprintf(index, "<p> Type of Mesh: REGULAR</p>");
printf("\t Type of Mesh: REGULAR\n"); printf("\t Type of Mesh: REGULAR\n");
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -779,6 +818,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
else if (Semiregular) else if (Semiregular)
{ {
@ -802,6 +842,8 @@ void main(int argc,char ** argv){
{ {
fprintf(index, "<p> Type of Mesh: IRREGULAR</p>"); fprintf(index, "<p> Type of Mesh: IRREGULAR</p>");
printf("\t Type of Mesh: IRREGULAR\n"); printf("\t Type of Mesh: IRREGULAR\n");
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -815,6 +857,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
// ORIENTABLE E ORIENTED MESH // ORIENTABLE E ORIENTED MESH
@ -824,6 +867,8 @@ void main(int argc,char ** argv){
{ {
fprintf(index, "<p> Orientable Mesh: NO</p>"); fprintf(index, "<p> Orientable Mesh: NO</p>");
printf( "\t Orientable Mesh: NO\n"); printf( "\t Orientable Mesh: NO\n");
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -837,6 +882,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
else else
{ {
@ -929,6 +975,8 @@ void main(int argc,char ** argv){
{ {
fprintf(index, "<p> Orientable Mesh: YES</p>"); fprintf(index, "<p> Orientable Mesh: YES</p>");
printf( "\t Orientable Mesh: YES\n"); printf( "\t Orientable Mesh: YES\n");
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -942,11 +990,14 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
else else
{ {
fprintf(index, "<p> Orientable Mesh: NO</p>"); fprintf(index, "<p> Orientable Mesh: NO</p>");
printf( "\t Orientable Mesh: NO\n"); printf( "\t Orientable Mesh: NO\n");
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -960,12 +1011,15 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
} }
if (Oriented && Manifold) if (Oriented && Manifold)
{ {
fprintf(index, "<p> Oriented Mesh: YES</p>"); fprintf(index, "<p> Oriented Mesh: YES</p>");
printf( "\t Oriented Mesh: YES\n"); printf( "\t Oriented Mesh: YES\n");
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -979,11 +1033,14 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
else else
{ {
fprintf(index, "<p> Oriented Mesh: NO</p>"); fprintf(index, "<p> Oriented Mesh: NO</p>");
printf( "\t Oriented Mesh: NO\n"); printf( "\t Oriented Mesh: NO\n");
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -997,12 +1054,15 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
int dv = DuplicateVertex(m); int dv = DuplicateVertex(m);
if(dv>0) if(dv>0)
{ {
fprintf(index, "<p> Duplicated vertices: %d</p>", dv); fprintf(index, "<p> Duplicated vertices: %d</p>", dv);
printf( "\t Number of duplicated vertices found: %d\n",dv); printf( "\t Number of duplicated vertices found: %d\n",dv);
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -1016,12 +1076,14 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
else else
{ {
fprintf(index, "<p> Duplicated vertices: NO</p>"); fprintf(index, "<p> Duplicated vertices: NO</p>");
printf( "\t Duplicated vertices: NO\n"); printf( "\t Duplicated vertices: NO\n");
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -1035,6 +1097,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
// SELF INTERSECTION // SELF INTERSECTION
if (m.fn<300000) if (m.fn<300000)
@ -1060,6 +1123,8 @@ void main(int argc,char ** argv){
{ {
fprintf(index, "<p> Self Intersection: YES</p>"); fprintf(index, "<p> Self Intersection: YES</p>");
printf( "\t Self Intersection: YES\n"); printf( "\t Self Intersection: YES\n");
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -1073,11 +1138,14 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
else else
{ {
fprintf(index, "<p> Self Intersection: NO</p>"); fprintf(index, "<p> Self Intersection: NO</p>");
printf( "\t Self Intersection: NO\n"); printf( "\t Self Intersection: NO\n");
/*------------XML file part ------------------*/
s = new(char[25]); s = new(char[25]);
vn = new ValueNode; vn = new ValueNode;
en = new EntryNode; en = new EntryNode;
@ -1091,6 +1159,7 @@ void main(int argc,char ** argv){
osn->addEntry(*en); osn->addEntry(*en);
sn->addOwnSlot(osn); sn->addOwnSlot(osn);
ng->addNode(osn); ng->addNode(osn);
/*--------------------------------------------*/
} }
} }
@ -1121,6 +1190,7 @@ void main(int argc,char ** argv){
tri::io::ExporterOFF<MyMesh>::Save(m,filesave); tri::io::ExporterOFF<MyMesh>::Save(m,filesave);
} }
/*------------XML file part ------------------*/
doc.addSlots(sn); doc.addSlots(sn);
OwnSlotsNode* ossn = new OwnSlotsNode; OwnSlotsNode* ossn = new OwnSlotsNode;
ossn->addOwnSlot(ng); ossn->addOwnSlot(ng);
@ -1134,5 +1204,6 @@ void main(int argc,char ** argv){
doc.finalizeMain("/",XML_SCHEMA_NAME); doc.finalizeMain("/",XML_SCHEMA_NAME);
doc.printXMLTree(); doc.printXMLTree();
fclose(index); fclose(index);
/*--------------------------------------------*/
} }