several templated parameters to make it possible to works with mesh that have scalar type as double

This commit is contained in:
Nico Pietroni 2013-01-22 10:03:33 +00:00
parent c1c3782576
commit 4124b595f7
1 changed files with 11 additions and 9 deletions

View File

@ -44,7 +44,8 @@ namespace io {
typedef typename SaveMeshType::FaceIterator FaceIterator; typedef typename SaveMeshType::FaceIterator FaceIterator;
typedef typename SaveMeshType::VertexIterator VertexIterator; typedef typename SaveMeshType::VertexIterator VertexIterator;
typedef typename SaveMeshType::VertexType VertexType; typedef typename SaveMeshType::VertexType VertexType;
typedef typename SaveMeshType::ScalarType ScalarType;
typedef typename SaveMeshType::CoordType CoordType;
/* /*
enum of all the types of error enum of all the types of error
*/ */
@ -144,7 +145,7 @@ namespace io {
//vertexs + normal //vertexs + normal
VertexIterator vi; VertexIterator vi;
std::map<Point3f,int> NormalVertex; std::map<CoordType,int> NormalVertex;
std::vector<int> VertexId(m.vert.size()); std::vector<int> VertexId(m.vert.size());
int numvert = 0; int numvert = 0;
int curNormalIndex = 1; int curNormalIndex = 1;
@ -193,7 +194,7 @@ namespace io {
//faces + texture coords //faces + texture coords
FaceIterator fi; FaceIterator fi;
std::map<vcg::TexCoord2<float>,int> CoordIndexTexture; std::map<vcg::TexCoord2<ScalarType>,int> CoordIndexTexture;
unsigned int material_num = 0; unsigned int material_num = 0;
int mem_index = 0; //var temporany int mem_index = 0; //var temporany
int curTexCoordIndex = 1; int curTexCoordIndex = 1;
@ -288,9 +289,9 @@ namespace io {
/* /*
returns index of the texture coord returns index of the texture coord
*/ */
inline static int GetIndexVertexTexture(std::map<TexCoord2<float>,int> &mapTexToInt, const vcg::TexCoord2<float> &wt) inline static int GetIndexVertexTexture(typename std::map<TexCoord2<ScalarType>,int> &mapTexToInt, const vcg::TexCoord2<ScalarType> &wt)
{ {
std::map<vcg::TexCoord2<float>,int>::iterator iter= mapTexToInt.find(wt); typename std::map<vcg::TexCoord2<ScalarType>,int>::iterator iter= mapTexToInt.find(wt);
if(iter != mapTexToInt.end()) return (*iter).second; if(iter != mapTexToInt.end()) return (*iter).second;
else return -1; else return -1;
// Old wrong version. // Old wrong version.
@ -301,9 +302,9 @@ namespace io {
/* /*
returns index of the vertex normal returns index of the vertex normal
*/ */
inline static int GetIndexVertexNormal(SaveMeshType &/*m*/, std::map<Point3f,int> &mapNormToInt, const Point3f &norm ) inline static int GetIndexVertexNormal(SaveMeshType &/*m*/, std::map<CoordType,int> &mapNormToInt, const CoordType &norm )
{ {
std::map<Point3f,int>::iterator iter= mapNormToInt.find(norm); typename std::map<CoordType,int>::iterator iter= mapNormToInt.find(norm);
if(iter != mapNormToInt.end()) return (*iter).second; if(iter != mapNormToInt.end()) return (*iter).second;
else return -1; else return -1;
// Old wrong version. // Old wrong version.
@ -337,7 +338,8 @@ namespace io {
adds a new index to the coordinate of Texture if it is the first time adds a new index to the coordinate of Texture if it is the first time
which is otherwise met not execute anything which is otherwise met not execute anything
*/ */
inline static bool AddNewTextureCoord(std::map<vcg::TexCoord2<float>,int> &m, const vcg::TexCoord2<float> &wt,int value) inline static bool AddNewTextureCoord(std::map<typename vcg::TexCoord2<ScalarType>,int> &m,
const typename vcg::TexCoord2<ScalarType> &wt,int value)
{ {
int index = m[wt]; int index = m[wt];
if(index==0){m[wt]=value;return true;} if(index==0){m[wt]=value;return true;}
@ -348,7 +350,7 @@ namespace io {
adds a new index to the normal per vertex if it is the first time adds a new index to the normal per vertex if it is the first time
which is otherwise met does not execute anything which is otherwise met does not execute anything
*/ */
inline static bool AddNewNormalVertex(std::map<Point3f,int> &m, Point3f &n ,int value) inline static bool AddNewNormalVertex(typename std::map<CoordType,int> &m, CoordType &n ,int value)
{ {
int index = m[n]; int index = m[n];
if(index==0){m[n]=value;return true;} if(index==0){m[n]=value;return true;}