source: GTP/trunk/Lib/Geom/shared/GTGeometry/src/GeoTreeSimpSequence.cpp @ 1009

Revision 1009, 2.2 KB checked in by gumbau, 18 years ago (diff)
Line 
1#include "GeoTreeSimpSequence.h"
2#include <iostream>
3#include <fstream>
4
5using namespace Geometry;
6using namespace std;
7
8TreeSimplificationSequence::TreeSimplificationSequence()
9{
10        meshName="";
11}
12
13TreeSimplificationSequence::~TreeSimplificationSequence()
14{
15}
16
17void TreeSimplificationSequence::Load(Serializer &s)
18{
19        // Carga una secuencia de simplificación desde un fichero
20        char buffer[256];
21        char nombre[256];
22        Geometry::Index quad;
23        int cont;
24
25        if (s.ReadData(buffer,256) != NULL)
26        {
27                sscanf(buffer,"%s",&nombre);
28                meshName=new char[strlen(nombre)];
29                strcpy(meshName,nombre);
30        }
31
32        while (s.ReadData(buffer,256) != NULL)
33        {
34                Geometry::TreeSimplificationSequence::Step pasosimp;
35                sscanf(buffer,"%u %u %u %u &",&pasosimp.mV0,&pasosimp.mV1,&pasosimp.mT0,&pasosimp.mT1);
36                // Quitar el salto de línea del final.
37                buffer[strlen(buffer)-1]='\0';
38
39                char *ptr1;
40                ptr1=strtok(buffer,"&");
41                ptr1=strtok(NULL,"&");
42                if (ptr1!=NULL)
43                {
44                        char *ptr;
45                        ptr=strtok(ptr1," ");
46                        cont=0;
47                        while(ptr != NULL )
48                        {
49                                quad = (Index)atoi(ptr);
50                                pasosimp.mNewQuad[cont]=quad;
51                                ptr=strtok(NULL," ");
52                                cont++;
53                        }
54                }
55                mSteps.push_back(pasosimp);
56        }
57}
58
59void TreeSimplificationSequence::Save(Serializer &s)
60{
61        // Almacena la secuencia de simplificación en un fichero
62        char simp[256];
63
64        // Nombre del mesh
65        sprintf(simp,"%s\n",meshName);
66        s.WriteData(simp,sizeof(char),strlen(simp));
67
68        for(unsigned int i=0; i<mSteps.size(); i++)
69        {
70                Geometry::TreeSimplificationSequence::Step paso = mSteps.operator [](i);
71
72                // El último %u que recibe el sprintf es para indicar si un paso es dependiente del anterior. REVISAR
73                // ------------------------------------------------------------------------
74                sprintf(simp,"%u %u %u %u &", paso.mV0, paso.mV1, paso.mT0, paso.mT1);
75                s.WriteData(simp,sizeof(char),strlen(simp));
76
77                // los quads
78                sprintf(simp," %u %u %u %u\n",paso.mNewQuad[0],paso.mNewQuad[1],paso.mNewQuad[2],paso.mNewQuad[3]);
79                s.WriteData(simp,sizeof(char),strlen(simp));
80                //s.WriteData("\n",sizeof(char),1);
81        }
82}
83
84void TreeSimplificationSequence::putMeshName(char *name)
85{
86        meshName=name;
87}
88
89char *TreeSimplificationSequence::getMeshName(void)
90{
91        return meshName;
92}
Note: See TracBrowser for help on using the repository browser.