minor changes to comply gcc compiler (typename's and stuff)

This commit is contained in:
ganovelli 2004-08-25 15:15:27 +00:00
parent 04a6543ad6
commit 0bbd5bb33b
9 changed files with 102 additions and 63 deletions

View File

@ -24,6 +24,9 @@
History History
$Log: not supported by cvs2svn $ $Log: not supported by cvs2svn $
Revision 1.9 2004/07/18 10:13:34 cignoni
NewUserBit -> NewBitFlag
Revision 1.8 2004/06/24 09:08:31 cignoni Revision 1.8 2004/06/24 09:08:31 cignoni
Official Release of Metro 4.00 Official Release of Metro 4.00
@ -264,7 +267,7 @@ void Sampling<MetroMesh>::VertexSampling()
printf("Vertex sampling\n"); printf("Vertex sampling\n");
VertexIterator vi; VertexIterator vi;
std::vector<VertexPointer>::iterator vif; typename std::vector<VertexPointer>::iterator vif;
for(vi=S1.vert.begin();vi!=S1.vert.end();++vi) for(vi=S1.vert.begin();vi!=S1.vert.end();++vi)
if( (*vi).IsUserBit(referredBit) || // it is referred if( (*vi).IsUserBit(referredBit) || // it is referred
((Flags&SamplingFlags::INCLUDE_UNREFERENCED_VERTICES) != 0) ) //include also unreferred ((Flags&SamplingFlags::INCLUDE_UNREFERENCED_VERTICES) != 0) ) //include also unreferred

View File

@ -24,6 +24,9 @@
History History
$Log: not supported by cvs2svn $ $Log: not supported by cvs2svn $
Revision 1.11 2004/08/07 17:38:00 pietroni
solved errors on AddFaces relative to VFp pointers of faces
Revision 1.10 2004/08/07 16:16:32 pietroni Revision 1.10 2004/08/07 16:16:32 pietroni
corrected errors in AddFaces ( must be updated pointers to chain of faces of VFTopology) corrected errors in AddFaces ( must be updated pointers to chain of faces of VFTopology)
@ -200,7 +203,7 @@ static FaceIterator AddFaces(MeshType &m, int n, PointerUpdater<FacePointer> &pu
pu.Update((FacePointer&)(*it)); pu.Update((FacePointer&)(*it));
}*/ }*/
std::vector<FaceType **>::iterator jit; typename std::vector<FaceType **>::iterator jit;
for(jit=local_var.begin(); jit!=local_var.end(); ++jit) for(jit=local_var.begin(); jit!=local_var.end(); ++jit)
if((**jit) !=0 ) if((**jit) !=0 )
{ {

View File

@ -24,6 +24,9 @@
History History
$Log: not supported by cvs2svn $ $Log: not supported by cvs2svn $
Revision 1.3 2004/07/18 06:55:37 cignoni
NewUserBit -> NewBitFlag
Revision 1.2 2004/07/09 15:48:37 tarini Revision 1.2 2004/07/09 15:48:37 tarini
Added an include (<algorithm>) Added an include (<algorithm>)
@ -73,17 +76,17 @@ static int RemoveDuplicateVertex( MeshType & m ) // V1.0
{ {
if(m.vert.size()==0 || m.vn==0) return 0; if(m.vert.size()==0 || m.vn==0) return 0;
std::map<VertexIterator, VertexIterator> mp; std::map<VertexPointer, VertexPointer> mp;
int i,j; int i,j;
VertexIterator vi; VertexIterator vi;
int deleted=0; int deleted=0;
int k=0; int k=0;
int num_vert = m.vert.size(); int num_vert = m.vert.size();
vector<VertexIterator> perm(num_vert); vector<VertexPointer> perm(num_vert);
for(vi=m.vert.begin(); vi!=m.vert.end(); ++vi, ++k) for(vi=m.vert.begin(); vi!=m.vert.end(); ++vi, ++k)
perm[k] = vi; perm[k] = &(*vi);
RemoveDuplicateVert_Compare<VertexIterator> c_obj; RemoveDuplicateVert_Compare<VertexPointer> c_obj;
std::sort(perm.begin(),perm.end(),c_obj); std::sort(perm.begin(),perm.end(),c_obj);
@ -97,7 +100,7 @@ static int RemoveDuplicateVertex( MeshType & m ) // V1.0
(! (*perm[j]).IsD()) && (! (*perm[j]).IsD()) &&
(*perm[i]).P() == (*perm[j]).cP() ) (*perm[i]).P() == (*perm[j]).cP() )
{ {
VertexIterator t = perm[i]; VertexPointer t = perm[i];
mp[perm[i]] = perm[j]; mp[perm[i]] = perm[j];
++i; ++i;
(*t).SetD(); (*t).SetD();
@ -113,7 +116,7 @@ static int RemoveDuplicateVertex( MeshType & m ) // V1.0
for(fi = m.face.begin(); fi!=m.face.end(); ++fi) for(fi = m.face.begin(); fi!=m.face.end(); ++fi)
for(k = 0; k < 3; ++k) for(k = 0; k < 3; ++k)
if( !(*fi).IsD() ) if( !(*fi).IsD() )
if( mp.find( (*fi).V(k) ) != mp.end() ) if( mp.find( (typename MeshType::VertexPointer)(*fi).V(k) ) != mp.end() )
{ {
(*fi).V(k) = &*mp[ (*fi).V(k) ]; (*fi).V(k) = &*mp[ (*fi).V(k) ];
} }

View File

@ -24,6 +24,9 @@
History History
$Log: not supported by cvs2svn $ $Log: not supported by cvs2svn $
Revision 1.5 2004/07/15 00:13:39 cignoni
Better doxigen documentation
Revision 1.4 2004/06/24 07:56:54 cignoni Revision 1.4 2004/06/24 07:56:54 cignoni
now use std::numeric_limits instead of old max val() now use std::numeric_limits instead of old max val()
@ -52,25 +55,25 @@ template <class UpdateMeshType>
class UpdateColor class UpdateColor
{ {
public: public:
typedef UpdateMeshType MeshType; typedef UpdateMeshType MeshType;
typedef typename MeshType::VertexType VertexType; typedef typename UpdateMeshType::VertexType VertexType;
typedef typename MeshType::VertexPointer VertexPointer; typedef typename UpdateMeshType::VertexPointer VertexPointer;
typedef typename MeshType::VertexIterator VertexIterator; typedef typename UpdateMeshType::VertexIterator VertexIterator;
typedef typename MeshType::FaceType FaceType; typedef typename UpdateMeshType::FaceType FaceType;
typedef typename MeshType::FacePointer FacePointer; typedef typename UpdateMeshType::FacePointer FacePointer;
typedef typename MeshType::FaceIterator FaceIterator; typedef typename UpdateMeshType::FaceIterator FaceIterator;
/** Color the vertex of the mesh that are on the border /** Color the vertex of the mesh that are on the border
It uses the information in the flags, and not any topology. So it just require that you have correctly computed (or loaded) the flags; See the It uses the information in the flags, and not any topology. So it just require that you have correctly computed (or loaded) the flags; See the
**/ **/
static void VertexBorderFlag(MeshType &m, Color4b vb=Color4b::Blue) static void VertexBorderFlag( UpdateMeshType &m, Color4b vb=Color4b::Blue)
{ {
MeshType::VertexIterator vi; typename UpdateMeshType::VertexIterator vi;
for(vi=m.vert.begin();vi!=m.vert.end();++vi) for(vi=m.vert.begin();vi!=m.vert.end();++vi)
if(!(*vi).IsD()) if(!(*vi).IsD())
(*vi).C()=Color4b::White; (*vi).C()=Color4b::White;
MeshType::FaceIterator fi; typename UpdateMeshType::FaceIterator fi;
for(fi=m.face.begin();fi!=m.face.end();++fi) if(!(*fi).IsD()) for(fi=m.face.begin();fi!=m.face.end();++fi) if(!(*fi).IsD())
for(int j=0;j<3;++j) for(int j=0;j<3;++j)
if((*fi).IsB(j)){ if((*fi).IsB(j)){
@ -80,10 +83,10 @@ static void VertexBorderFlag(MeshType &m, Color4b vb=Color4b::Blue)
} }
} }
static void FaceBF(MeshType &m, Color4b vn=Color4b::White, Color4b vb=Color4b::Blue, static void FaceBF( UpdateMeshType &m, Color4b vn=Color4b::White, Color4b vb=Color4b::Blue,
Color4b vc=Color4b::Red, Color4b vs=Color4b::LightBlue) Color4b vc=Color4b::Red, Color4b vs=Color4b::LightBlue)
{ {
MeshType::FaceIterator fi; typename UpdateMeshType::FaceIterator fi;
for(fi=m.face.begin();fi!=m.face.end();++fi) for(fi=m.face.begin();fi!=m.face.end();++fi)
if(!(*fi).IsD()) if(!(*fi).IsD())
(*fi).C() = vn; (*fi).C() = vn;
@ -96,7 +99,7 @@ static void FaceBF(MeshType &m, Color4b vn=Color4b::White, Color4b vb=Color4b::B
else else
{ {
for(int j=0;j<3;++j) for(int j=0;j<3;++j)
if(face::IsManifold(*fi,j)){ if(*fi.IsManifold(j)){
if((*fi).IsB(j)){ if((*fi).IsB(j)){
(*fi).C() = vb; (*fi).C() = vb;
(*fi).C() = vb; (*fi).C() = vb;
@ -112,10 +115,10 @@ static void FaceBF(MeshType &m, Color4b vn=Color4b::White, Color4b vb=Color4b::B
} }
static int FaceSelected(MeshType &m, Color4b vs=Color4b::LightBlue) static int FaceSelected(UpdateMeshType &m, Color4b vs=Color4b::LightBlue)
{ {
int cnt=0; int cnt=0;
MeshType::FaceIterator fi; typename UpdateMeshType::FaceIterator fi;
for(fi=m.face.begin();fi!=m.face.end();++fi) for(fi=m.face.begin();fi!=m.face.end();++fi)
if(!(*fi).IsD()) if(!(*fi).IsD())
if((*fi).IsS()) { (*fi).C() = vs; ++cnt; } if((*fi).IsS()) { (*fi).C() = vs; ++cnt; }
@ -123,12 +126,20 @@ static int FaceSelected(MeshType &m, Color4b vs=Color4b::LightBlue)
return cnt; return cnt;
} }
static void FaceColorStrip(MeshType &m, std::vector<FacePointer> &TStripF) static void FaceColorStrip(UpdateMeshType &m, std::vector<FacePointer> &TStripF)
{ {
Color4b::Color4b cc[7]={Color4b::White ,Color4b::Red ,Color4b::Green ,Color4b::Blue ,Color4b::Cyan ,Color4b::Yellow ,Color4b::Magenta}; vcg::Color4b cc[7]={
vcg::Color4b::White ,
vcg::Color4b::Red ,
vcg::Color4b::Green ,
vcg::Color4b::Blue ,
vcg::Color4b::Cyan ,
vcg::Color4b::Yellow ,
vcg::Color4b::Magenta
};
int cnt=0; int cnt=0;
vector<FacePointer>::iterator fi; typename std::vector<FacePointer>::iterator fi;
for(fi=TStripF.begin();fi!=TStripF.end();++fi) for(fi=TStripF.begin();fi!=TStripF.end();++fi)
if(*fi) (**fi).C().ColorRamp(0,16,cnt); if(*fi) (**fi).C().ColorRamp(0,16,cnt);
else cnt=(cnt+1)%16; else cnt=(cnt+1)%16;
@ -138,10 +149,10 @@ static void FaceColorStrip(MeshType &m, std::vector<FacePointer> &TStripF)
} }
static int VertexSelected(MeshType &m, Color4b vs=Color4b::LightBlue) static int VertexSelected(UpdateMeshType &m, Color4b vs=Color4b::LightBlue)
{ {
int cnt=0; int cnt=0;
MeshType::VertexIterator vi; typename UpdateMeshType::VertexIterator vi;
for(vi=m.vert.begin();vi!=m.vert.end();++vi) for(vi=m.vert.begin();vi!=m.vert.end();++vi)
if(!(*vi).IsD()) if(!(*vi).IsD())
if((*vi).IsS()) {(*vi).C() = vs; ++cnt; } if((*vi).IsS()) {(*vi).C() = vs; ++cnt; }
@ -150,27 +161,27 @@ static int VertexSelected(MeshType &m, Color4b vs=Color4b::LightBlue)
return cnt; return cnt;
} }
static void VertexConstant(MeshType &m, Color4b c=Color4b::White) static void VertexConstant(UpdateMeshType &m, Color4b c=Color4b::White)
{ {
MeshType::VertexIterator vi; typename UpdateMeshType::VertexIterator vi;
for(vi=m.vert.begin();vi!=m.vert.end();++vi) if(!(*vi).IsD()) for(vi=m.vert.begin();vi!=m.vert.end();++vi) if(!(*vi).IsD())
(*vi).C()=c; (*vi).C()=c;
} }
static void FaceConstant(MeshType &m, Color4b c=Color4b::White) static void FaceConstant(UpdateMeshType &m, Color4b c=Color4b::White)
{ {
MeshType::FaceIterator fi; typename UpdateMeshType::FaceIterator fi;
for(fi=m.face.begin();fi!=m.face.end();++fi) for(fi=m.face.begin();fi!=m.face.end();++fi)
(*fi).C()=c; (*fi).C()=c;
} }
static void VertexBorderManifoldFlag(MeshType &m, Color4b vn=Color4b::White, Color4b vb=Color4b::Blue, Color4b vc=Color4b::Red) static void VertexBorderManifoldFlag(UpdateMeshType &m, Color4b vn=Color4b::White, Color4b vb=Color4b::Blue, Color4b vc=Color4b::Red)
{ {
MeshType::VertexIterator vi; typename UpdateMeshType::VertexIterator vi;
for(vi=m.vert.begin();vi!=m.vert.end();++vi) if(!(*vi).IsD()) for(vi=m.vert.begin();vi!=m.vert.end();++vi) if(!(*vi).IsD())
(*vi).C()=vn; (*vi).C()=vn;
MeshType::FaceIterator fi; typename UpdateMeshType::FaceIterator fi;
for(fi=m.face.begin();fi!=m.face.end();++fi) for(fi=m.face.begin();fi!=m.face.end();++fi)
if(!(*fi).IsD()) if(!(*fi).IsD())
for(int j=0;j<3;++j) for(int j=0;j<3;++j)
@ -189,10 +200,10 @@ static void VertexBorderManifoldFlag(MeshType &m, Color4b vn=Color4b::White, Col
static void FaceQuality(MeshType &m) static void FaceQuality(UpdateMeshType &m)
{ {
// step 1: find the range // step 1: find the range
MeshType::FaceIterator fi; typename UpdateMeshType::FaceIterator fi;
float minq=m.face[0].Q(), float minq=m.face[0].Q(),
maxq=m.face[0].Q(); maxq=m.face[0].Q();
for(fi=m.face.begin();fi!=m.face.end();++fi) if(!(*fi).IsD()) for(fi=m.face.begin();fi!=m.face.end();++fi) if(!(*fi).IsD())
@ -205,27 +216,27 @@ static void FaceQuality(MeshType &m)
FaceQuality(m,minq,maxq); FaceQuality(m,minq,maxq);
} }
static void FaceQuality(MeshType &m, float minq, float maxq) static void FaceQuality(UpdateMeshType &m, float minq, float maxq)
{ {
MeshType::FaceIterator fi; typename UpdateMeshType::FaceIterator fi;
for(fi=m.face.begin();fi!=m.face.end();++fi) if(!(*fi).IsD()) for(fi=m.face.begin();fi!=m.face.end();++fi) if(!(*fi).IsD())
(*fi).C().ColorRamp(minq,maxq,(*fi).Q()); (*fi).C().ColorRamp(minq,maxq,(*fi).Q());
} }
static void VertexQuality(MeshType &m, float minq, float maxq) static void VertexQuality(UpdateMeshType &m, float minq, float maxq)
{ {
MeshType::VertexIterator vi; typename UpdateMeshType::VertexIterator vi;
for(vi=m.vert.begin();vi!=m.vert.end();++vi) for(vi=m.vert.begin();vi!=m.vert.end();++vi)
if(!(*vi).IsD()) if(!(*vi).IsD())
(*vi).C().ColorRamp(minq,maxq,(*vi).Q()); (*vi).C().ColorRamp(minq,maxq,(*vi).Q());
} }
static void VertexQuality(MeshType &m) static void VertexQuality(UpdateMeshType &m)
{ {
// step 1: find the range // step 1: find the range
MeshType::VertexIterator vi; typename UpdateMeshType::VertexIterator vi;
float minq=std::numeric_limits<float>::max(), float minq=std::numeric_limits<float>::max(),
maxq=std::numeric_limits<float>::min(); maxq=std::numeric_limits<float>::min();
for(vi=m.vert.begin();vi!=m.vert.end();++vi) for(vi=m.vert.begin();vi!=m.vert.end();++vi)
@ -237,10 +248,10 @@ static void VertexQuality(MeshType &m)
VertexQuality(m,minq,maxq); VertexQuality(m,minq,maxq);
} }
static void VertexQualityHistEq(MeshType &m) static void VertexQualityHistEq(UpdateMeshType &m)
{ {
// step 1: find the range // step 1: find the range
MeshType::VertexIterator vi; typename UpdateMeshType::VertexIterator vi;
float minq=MaxVal(0.0f), float minq=MaxVal(0.0f),
maxq=-MaxVal(0.0f); maxq=-MaxVal(0.0f);
for(vi=m.vert.begin();vi!=m.vert.end();++vi) for(vi=m.vert.begin();vi!=m.vert.end();++vi)
@ -250,12 +261,12 @@ static void VertexQualityHistEq(MeshType &m)
maxq=max(maxq,(*vi).Q()); maxq=max(maxq,(*vi).Q());
} }
// step 2; Get the distribution // step 2; Get the distribution
Hist H; // Hist H;
H.SetRange(minq,maxq,1024); //H.SetRange(minq,maxq,1024);
for(vi=m.vert.begin();vi!=m.vert.end();++vi) //for(vi=m.vert.begin();vi!=m.vert.end();++vi)
if(!(*vi).IsD()) H.Add((*vi).Q()); // if(!(*vi).IsD()) H.Add((*vi).Q());
VertexQuality(m,H.Percentile(.05f),H.Percentile(.95f)); // VertexQuality(m,H.Percentile(.05f),H.Percentile(.95f));
} }
}; };

View File

@ -24,6 +24,9 @@
History History
$Log: not supported by cvs2svn $ $Log: not supported by cvs2svn $
Revision 1.1 2004/06/24 09:12:28 cignoni
Initial Release
****************************************************************************/ ****************************************************************************/

View File

@ -24,6 +24,9 @@
History History
$Log: not supported by cvs2svn $ $Log: not supported by cvs2svn $
Revision 1.17 2004/07/15 12:03:07 ganovelli
minor changes
Revision 1.16 2004/07/15 11:31:59 ganovelli Revision 1.16 2004/07/15 11:31:59 ganovelli
minor changes minor changes
@ -145,7 +148,7 @@ public:
return v[j]; return v[j];
} }
inline const FVTYPE * const & V( const int j ) const inline FVTYPE * const & V( const int j ) const
{ {
assert( (_flags & DELETED) == 0 ); assert( (_flags & DELETED) == 0 );
assert( (_flags & NOTREAD) == 0 ); assert( (_flags & NOTREAD) == 0 );
@ -153,7 +156,7 @@ public:
assert(j<3); assert(j<3);
return v[j]; return v[j];
} }
inline const FVTYPE * const & cV( const int j ) const inline FVTYPE * const cV( const int j ) const
{ {
assert( (_flags & DELETED) == 0 ); assert( (_flags & DELETED) == 0 );
assert( (_flags & NOTREAD) == 0 ); assert( (_flags & NOTREAD) == 0 );
@ -1092,7 +1095,7 @@ const ScalarType EPSILON = ScalarType(0.000001);
/// Return the DOUBLE of the area of the face /// Return the DOUBLE of the area of the face
ScalarType Area() const ScalarType Area() const
{ {
return Norm( (V(1)->P() - V(0)->P()) ^ (V(2)->P() - V(0)->P()) ); return ( (V(1)->cP() - V(0)->cP()) ^ (V(2)->cP() - V(0)->P()) ).Norm();
} }
CoordType Barycenter() const CoordType Barycenter() const

View File

@ -24,6 +24,9 @@
History History
$Log: not supported by cvs2svn $ $Log: not supported by cvs2svn $
Revision 1.10 2004/07/27 09:47:49 cignoni
Added V() access function instead of V(0)
Revision 1.9 2004/07/18 07:45:30 cignoni Revision 1.9 2004/07/18 07:45:30 cignoni
Removed two const modifiers from the VFIterator Removed two const modifiers from the VFIterator
@ -327,7 +330,7 @@ public:
This class is used as an iterator over the VF adjacency. This class is used as an iterator over the VF adjacency.
*/ */
template <class FaceType> template <typename FaceType>
class VFIterator class VFIterator
{ {
public: public:
@ -335,14 +338,14 @@ public:
/// The vertex type /// The vertex type
typedef typename FaceType::VertexType VertexType; typedef typename FaceType::VertexType VertexType;
/// The Base face type /// The Base face type
typedef typename FaceType VFIFaceType; typedef FaceType VFIFaceType;
/// The vector type /// The vector type
typedef typename VertexType::CoordType CoordType; typedef typename VertexType::CoordType CoordType;
/// The scalar type /// The scalar type
typedef typename VertexType::ScalarType ScalarType; typedef typename VertexType::ScalarType ScalarType;
/// Pointer to the face of the half-edge /// Pointer to the face of the half-edge
VFIFaceType *f; FaceType *f;
/// Index of the vertex /// Index of the vertex
int z; int z;
@ -352,7 +355,7 @@ public:
VFIterator(FaceType * _f, const int & _z){f = _f; z = _z;} VFIterator(FaceType * _f, const int & _z){f = _f; z = _z;}
VFIFaceType * F() const { return f;} VFIFaceType * F() const { return f;}
const int I() const { return z;} const int & I() const { return z;}
bool End() const {return f==0;} bool End() const {return f==0;}
VFIFaceType *operator++() { VFIFaceType *operator++() {

View File

@ -23,6 +23,9 @@
/**************************************************************************** /****************************************************************************
History History
$Log: not supported by cvs2svn $ $Log: not supported by cvs2svn $
Revision 1.17 2004/07/20 15:24:53 pietroni
corrected NormalizedNormalV function...
Revision 1.16 2004/07/15 11:25:01 ganovelli Revision 1.16 2004/07/15 11:25:01 ganovelli
VFb moved to VFp, userbit to bitflag,setV, inclusion of pos.h VFb moved to VFp, userbit to bitflag,setV, inclusion of pos.h
@ -42,6 +45,9 @@ Revision 1.12 2004/05/10 13:31:13 ganovelli
function for edge adjacency added function for edge adjacency added
$Log: not supported by cvs2svn $ $Log: not supported by cvs2svn $
Revision 1.17 2004/07/20 15:24:53 pietroni
corrected NormalizedNormalV function...
Revision 1.16 2004/07/15 11:25:01 ganovelli Revision 1.16 2004/07/15 11:25:01 ganovelli
VFb moved to VFp, userbit to bitflag,setV, inclusion of pos.h VFb moved to VFp, userbit to bitflag,setV, inclusion of pos.h
@ -840,10 +846,10 @@ template <class VERTEX_TYPE> typename VERTEX_TYPE::CoordType NormalizedNormalV(V
} }
else else
{ {
vcg::face::VFIterator<VERTEX_TYPE::FaceType> VFi=vcg::face::VFIterator<VERTEX_TYPE::FaceType>(); vcg::face::VFIterator<typename VERTEX_TYPE::FaceType> VFi=vcg::face::VFIterator<typename VERTEX_TYPE::FaceType>();
VFi.f=v->VFp(); VFi.f=v->VFp();
VFi.z=v->VFi(); VFi.z=v->VFi();
VERTEX_TYPE::CoordType N=VERTEX_TYPE::CoordType(0,0,0); typename VERTEX_TYPE::CoordType N= typename VERTEX_TYPE::CoordType(0,0,0);
int i=0; int i=0;
while (!VFi.End()) while (!VFi.End())
{ {
@ -851,7 +857,7 @@ template <class VERTEX_TYPE> typename VERTEX_TYPE::CoordType NormalizedNormalV(V
i++; i++;
VFi++; VFi++;
} }
return ((VERTEX_TYPE::CoordType) N/(VERTEX_TYPE::CoordType::ScalarType)i); return ((typename VERTEX_TYPE::CoordType) N/(typename VERTEX_TYPE::CoordType::ScalarType)i);
} }
} }

View File

@ -25,6 +25,10 @@
History History
$Log: not supported by cvs2svn $ $Log: not supported by cvs2svn $
Revision 1.5 2004/06/23 15:36:44 cignoni
Restructured management of error, now the standard open for any mesh type return the error code, the default success value is zero
Any import class has a method ErrorMsg that give a verbal description of an error code.
Revision 1.4 2004/03/18 15:30:57 cignoni Revision 1.4 2004/03/18 15:30:57 cignoni
Removed float/double warning Removed float/double warning