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
$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
Official Release of Metro 4.00
@ -264,7 +267,7 @@ void Sampling<MetroMesh>::VertexSampling()
printf("Vertex sampling\n");
VertexIterator vi;
std::vector<VertexPointer>::iterator vif;
typename std::vector<VertexPointer>::iterator vif;
for(vi=S1.vert.begin();vi!=S1.vert.end();++vi)
if( (*vi).IsUserBit(referredBit) || // it is referred
((Flags&SamplingFlags::INCLUDE_UNREFERENCED_VERTICES) != 0) ) //include also unreferred

View File

@ -24,6 +24,9 @@
History
$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
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));
}*/
std::vector<FaceType **>::iterator jit;
typename std::vector<FaceType **>::iterator jit;
for(jit=local_var.begin(); jit!=local_var.end(); ++jit)
if((**jit) !=0 )
{

View File

@ -24,6 +24,9 @@
History
$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
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;
std::map<VertexIterator, VertexIterator> mp;
std::map<VertexPointer, VertexPointer> mp;
int i,j;
VertexIterator vi;
int deleted=0;
int k=0;
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)
perm[k] = vi;
perm[k] = &(*vi);
RemoveDuplicateVert_Compare<VertexIterator> c_obj;
RemoveDuplicateVert_Compare<VertexPointer> 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[i]).P() == (*perm[j]).cP() )
{
VertexIterator t = perm[i];
VertexPointer t = perm[i];
mp[perm[i]] = perm[j];
++i;
(*t).SetD();
@ -113,7 +116,7 @@ static int RemoveDuplicateVertex( MeshType & m ) // V1.0
for(fi = m.face.begin(); fi!=m.face.end(); ++fi)
for(k = 0; k < 3; ++k)
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) ];
}

View File

@ -24,6 +24,9 @@
History
$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
now use std::numeric_limits instead of old max val()
@ -52,25 +55,25 @@ template <class UpdateMeshType>
class UpdateColor
{
public:
typedef UpdateMeshType MeshType;
typedef typename MeshType::VertexType VertexType;
typedef typename MeshType::VertexPointer VertexPointer;
typedef typename MeshType::VertexIterator VertexIterator;
typedef typename MeshType::FaceType FaceType;
typedef typename MeshType::FacePointer FacePointer;
typedef typename MeshType::FaceIterator FaceIterator;
typedef UpdateMeshType MeshType;
typedef typename UpdateMeshType::VertexType VertexType;
typedef typename UpdateMeshType::VertexPointer VertexPointer;
typedef typename UpdateMeshType::VertexIterator VertexIterator;
typedef typename UpdateMeshType::FaceType FaceType;
typedef typename UpdateMeshType::FacePointer FacePointer;
typedef typename UpdateMeshType::FaceIterator FaceIterator;
/** 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
**/
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)
if(!(*vi).IsD())
(*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(int j=0;j<3;++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)
{
MeshType::FaceIterator fi;
typename UpdateMeshType::FaceIterator fi;
for(fi=m.face.begin();fi!=m.face.end();++fi)
if(!(*fi).IsD())
(*fi).C() = vn;
@ -96,7 +99,7 @@ static void FaceBF(MeshType &m, Color4b vn=Color4b::White, Color4b vb=Color4b::B
else
{
for(int j=0;j<3;++j)
if(face::IsManifold(*fi,j)){
if(*fi.IsManifold(j)){
if((*fi).IsB(j)){
(*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;
MeshType::FaceIterator fi;
typename UpdateMeshType::FaceIterator fi;
for(fi=m.face.begin();fi!=m.face.end();++fi)
if(!(*fi).IsD())
if((*fi).IsS()) { (*fi).C() = vs; ++cnt; }
@ -123,12 +126,20 @@ static int FaceSelected(MeshType &m, Color4b vs=Color4b::LightBlue)
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;
vector<FacePointer>::iterator fi;
typename std::vector<FacePointer>::iterator fi;
for(fi=TStripF.begin();fi!=TStripF.end();++fi)
if(*fi) (**fi).C().ColorRamp(0,16,cnt);
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;
MeshType::VertexIterator vi;
typename UpdateMeshType::VertexIterator vi;
for(vi=m.vert.begin();vi!=m.vert.end();++vi)
if(!(*vi).IsD())
if((*vi).IsS()) {(*vi).C() = vs; ++cnt; }
@ -150,27 +161,27 @@ static int VertexSelected(MeshType &m, Color4b vs=Color4b::LightBlue)
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())
(*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)
(*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())
(*vi).C()=vn;
MeshType::FaceIterator fi;
typename UpdateMeshType::FaceIterator fi;
for(fi=m.face.begin();fi!=m.face.end();++fi)
if(!(*fi).IsD())
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
MeshType::FaceIterator fi;
typename UpdateMeshType::FaceIterator fi;
float minq=m.face[0].Q(),
maxq=m.face[0].Q();
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);
}
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())
(*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)
if(!(*vi).IsD())
(*vi).C().ColorRamp(minq,maxq,(*vi).Q());
}
static void VertexQuality(MeshType &m)
static void VertexQuality(UpdateMeshType &m)
{
// step 1: find the range
MeshType::VertexIterator vi;
typename UpdateMeshType::VertexIterator vi;
float minq=std::numeric_limits<float>::max(),
maxq=std::numeric_limits<float>::min();
for(vi=m.vert.begin();vi!=m.vert.end();++vi)
@ -237,10 +248,10 @@ static void VertexQuality(MeshType &m)
VertexQuality(m,minq,maxq);
}
static void VertexQualityHistEq(MeshType &m)
static void VertexQualityHistEq(UpdateMeshType &m)
{
// step 1: find the range
MeshType::VertexIterator vi;
typename UpdateMeshType::VertexIterator vi;
float minq=MaxVal(0.0f),
maxq=-MaxVal(0.0f);
for(vi=m.vert.begin();vi!=m.vert.end();++vi)
@ -250,16 +261,16 @@ static void VertexQualityHistEq(MeshType &m)
maxq=max(maxq,(*vi).Q());
}
// step 2; Get the distribution
Hist H;
H.SetRange(minq,maxq,1024);
for(vi=m.vert.begin();vi!=m.vert.end();++vi)
if(!(*vi).IsD()) H.Add((*vi).Q());
// Hist H;
//H.SetRange(minq,maxq,1024);
//for(vi=m.vert.begin();vi!=m.vert.end();++vi)
// if(!(*vi).IsD()) H.Add((*vi).Q());
VertexQuality(m,H.Percentile(.05f),H.Percentile(.95f));
// VertexQuality(m,H.Percentile(.05f),H.Percentile(.95f));
}
};
/*@}*/
}// end namespace
}// end namespace
#endif
#endif

View File

@ -24,6 +24,9 @@
History
$Log: not supported by cvs2svn $
Revision 1.1 2004/06/24 09:12:28 cignoni
Initial Release
****************************************************************************/
@ -115,4 +118,4 @@ void Histogram<ScalarType>::Add(ScalarType v){
}
}
}// end namespace
#endif
#endif

View File

@ -24,6 +24,9 @@
History
$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
minor changes
@ -145,7 +148,7 @@ public:
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 & NOTREAD) == 0 );
@ -153,7 +156,7 @@ public:
assert(j<3);
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 & NOTREAD) == 0 );
@ -1092,7 +1095,7 @@ const ScalarType EPSILON = ScalarType(0.000001);
/// Return the DOUBLE of the area of the face
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

View File

@ -24,6 +24,9 @@
History
$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
Removed two const modifiers from the VFIterator
@ -327,7 +330,7 @@ public:
This class is used as an iterator over the VF adjacency.
*/
template <class FaceType>
template <typename FaceType>
class VFIterator
{
public:
@ -335,14 +338,14 @@ public:
/// The vertex type
typedef typename FaceType::VertexType VertexType;
/// The Base face type
typedef typename FaceType VFIFaceType;
typedef FaceType VFIFaceType;
/// The vector type
typedef typename VertexType::CoordType CoordType;
/// The scalar type
typedef typename VertexType::ScalarType ScalarType;
/// Pointer to the face of the half-edge
VFIFaceType *f;
FaceType *f;
/// Index of the vertex
int z;
@ -352,7 +355,7 @@ public:
VFIterator(FaceType * _f, const int & _z){f = _f; z = _z;}
VFIFaceType * F() const { return f;}
const int I() const { return z;}
const int & I() const { return z;}
bool End() const {return f==0;}
VFIFaceType *operator++() {

View File

@ -23,6 +23,9 @@
/****************************************************************************
History
$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
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
$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
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
{
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.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;
while (!VFi.End())
{
@ -851,7 +857,7 @@ template <class VERTEX_TYPE> typename VERTEX_TYPE::CoordType NormalizedNormalV(V
i++;
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
$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
Removed float/double warning
@ -210,4 +214,4 @@ static int OpenBinary( OpenMeshType &m, const char * filename, CallBackPos *cb=0
//@}
#endif
#endif