Main Page | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members

PgnParser Class Reference

#include <pgnparser.h>

Inheritance diagram for PgnParser:

Parser List of all members.

Public Member Functions

 PgnParser ()
void importPGN (const char *filename)
void exportPGN (const char *filename)
virtual void setParameters (const int &nbPoints, const int &nbPolys, const vector< Point3D * > &pointsList, const vector< int > &referencesList)
virtual int getNbPoints ()
virtual int getNbPolys ()
virtual vector< Point3D * > getPointsList ()
virtual vector< int > getReferencesList ()

Protected Attributes

int nbPoints
int nbPolys
vector< Point3D * > pointsList
vector< int > referencesList

Detailed Description

La classe pgnparser regoupe toutes les fonctionalités nécéssaires au parsing d'un fichier de type polygone PGN. La syntaxe de ce type de fichier est la suivante : nombre_de_points nombre_de_polygones Liste de points (x1 y1 z1, x2 y2 z2, ...) Liste de polygones (rp1 rp2 rp3, ...)

Author:
Guitteny Fabrice

Idiart Baptiste

Le Goff Erwan


Constructor & Destructor Documentation

PgnParser::PgnParser  ) 
 

Constructeur de PgnParser

00005 { 00006 //initialisation du parser 00007 nbPoints=0; 00008 nbPolys = 0; 00009 }


Member Function Documentation

void PgnParser::exportPGN const char *  filename  ) 
 

Export d'un fichier en PGN

Parameters:
filename nom du fichier

00013 { 00014 ofstream wrlfile(filename); 00015 00016 wrlfile << "#PGN format" << endl; 00017 wrlfile << "#Generated by PgnParser" <<endl <<endl; 00018 00019 wrlfile << nbPoints <<"\t"<< nbPolys <<endl; 00020 for (int i=0;i<nbPoints; i++) { 00021 wrlfile << (pointsList[i])->getCoordinate(0) << " " 00022 << (pointsList[i]) ->getCoordinate(1)<< " " 00023 << (pointsList[i]) ->getCoordinate(2)<< endl; 00024 } 00025 wrlfile << endl; 00026 for (int i=0;i<nbPolys*3; i+=3) { 00027 wrlfile << referencesList[i] <<" " 00028 << referencesList[i+1]<<" " 00029 << referencesList[i+2] 00030 << endl; 00031 } 00032 wrlfile << endl; 00033 00034 wrlfile.close(); 00035 }

virtual int Parser::getNbPoints  )  [inline, virtual, inherited]
 

Returns:
nombre de points

00088 {return nbPoints;}

virtual int Parser::getNbPolys  )  [inline, virtual, inherited]
 

Returns:
nombre de polygones

00091 {return nbPolys;}

virtual vector<Point3D*> Parser::getPointsList  )  [inline, virtual, inherited]
 

Returns:
pointsList liste de points du model

00094 {return pointsList;}

virtual vector<int> Parser::getReferencesList  )  [inline, virtual, inherited]
 

Returns:
referencesList liste de références du model

00097 {return referencesList;}

void PgnParser::importPGN const char *  filename  ) 
 

Import d'un fichier PGN

Parameters:
filename nom du fichier

00042 { 00043 ifstream file(filename); 00044 bool lpoints = false;//flag indiquant si l'on est en train de parser la liste de points 00045 bool lfacets =false;//idem pour la liste de face 00046 00047 string line; 00048 00049 Point3D *p; 00050 float px=0.0 , py=0.0 , pz=0.0; 00051 00052 int refp1,refp2,refp3; 00053 int cptPoints=0; 00054 00055 unsigned int i=0,j=0;//indices de position dans la ligne 00056 00057 00058 while(getline(file, line)) 00059 { 00060 00061 delSpace(line); 00062 00063 if((line[0]!='#')&&(line!="")){ 00064 00065 if((!lpoints)&&(!lfacets)) 00066 { 00067 //récupération du nombre de points 00068 while((line[i]!='\t')&&(i<line.size()))i++; 00069 nbPoints=stoi(line.substr(0,i)); 00070 00071 //et du nombre de faces 00072 nbPolys=stoi(line.substr(i,line.size()-i)); 00073 lpoints = true; 00074 00075 } 00076 else if((lpoints)&&(cptPoints<nbPoints)) 00077 { 00078 cptPoints++; 00079 //on parse la liste de points 00080 i=0; 00081 while((line[i]!=' ')&&(i<line.size()))i++; 00082 px=stof(line.substr(0,i)); 00083 00084 j=i+1; 00085 while((line[j]!=' ')&&(j<line.size()))j++; 00086 py=stof(line.substr(i+1,j-i-1)); 00087 00088 pz=stof(line.substr(j+1,line.size()-j-1)); 00089 00090 p = new Point3D(px,py,pz); 00091 pointsList.push_back(p); 00092 } 00093 else {//on parse la liste de faces 00094 i=0; 00095 j=0; 00096 while((line[i]!=' ')&&(i<line.size()))i++; 00097 refp1=stoi(line.substr(0,i)); 00098 referencesList.push_back(refp1); 00099 j=i+1; 00100 while((line[j]!=' ')&&(j<line.size()))j++; 00101 refp2=stoi(line.substr(i+1,j-i-1)); 00102 referencesList.push_back(refp2); 00103 refp3=stoi(line.substr(j+1,line.size()-j-1)); 00104 referencesList.push_back(refp3); 00105 } 00106 00107 } 00108 } 00109 00110 file.close(); 00111 00112 }

void Parser::setParameters const int &  nbPoints,
const int &  nbPolys,
const vector< Point3D * > &  pointsList,
const vector< int > &  referencesList
[virtual, inherited]
 

Positionne les paramètres nécéssaires pour l'export d'un modele

Parameters:
nbPoints nombre de points
nbPolys nombre de polygones
pointsList liste de points du model
referencesList liste de références du model

00005 { 00006 nbPoints = nbPts; 00007 nbPolys = nbPly; 00008 pointsList = ptsList; 00009 referencesList = refList; 00010 }


Member Data Documentation

int Parser::nbPoints [protected, inherited]
 

Parameters:
nbPoints nombre de points

int Parser::nbPolys [protected, inherited]
 

Parameters:
nbPolys nombre de polygones

vector<Point3D*> Parser::pointsList [protected, inherited]
 

Parameters:
pointsList liste de points du model

vector<int> Parser::referencesList [protected, inherited]
 

Parameters:
referencesList liste de références du model


The documentation for this class was generated from the following files:
Generated on Tue Nov 29 21:58:59 2005 for CylinderGenerator by doxygen 1.3.7