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

Revision 1078, 2.7 KB checked in by gumbau, 18 years ago (diff)

Extended Mesh implementation

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        unsigned short chunkid = 0xdcba;
69        s.WriteData(&chunkid,sizeof(unsigned short),1);
70        unsigned long size = mSteps.size()*8*sizeof(int);
71        s.WriteData(&size,sizeof(unsigned long),1);
72
73        int tam = mSteps.size();
74        s.WriteData(&tam,sizeof(int),1);
75        for(unsigned int i=0; i<tam; i++)
76        {
77                Geometry::TreeSimplificationSequence::Step paso = mSteps.operator [](i);
78
79                s.WriteData(&paso.mV0,sizeof(int),1);
80                s.WriteData(&paso.mV1,sizeof(int),1);
81                s.WriteData(&paso.mT0,sizeof(int),1);
82                s.WriteData(&paso.mT1,sizeof(int),1);
83
84                s.WriteData(paso.mNewQuad,sizeof(int),4);
85
86                // El último %u que recibe el sprintf es para indicar si un paso es dependiente del anterior. REVISAR
87                // ------------------------------------------------------------------------
88/*              sprintf(simp,"%u %u %u %u &", paso.mV0, paso.mV1, paso.mT0, paso.mT1);
89                s.WriteData(simp,sizeof(char),strlen(simp));
90
91                // los quads
92                sprintf(simp," %u %u %u %u\n",paso.mNewQuad[0],paso.mNewQuad[1],paso.mNewQuad[2],paso.mNewQuad[3]);
93                s.WriteData(simp,sizeof(char),strlen(simp));*/
94                //s.WriteData("\n",sizeof(char),1);
95        }
96}
97
98void TreeSimplificationSequence::putMeshName(char *name)
99{
100        meshName=name;
101}
102
103char *TreeSimplificationSequence::getMeshName(void)
104{
105        return meshName;
106}
Note: See TracBrowser for help on using the repository browser.