From 63e5ef9763f176ac704e4b24d1c5e4b993eb2435 Mon Sep 17 00:00:00 2001 From: cignoni Date: Thu, 6 Dec 2012 11:00:37 +0000 Subject: [PATCH] changed to the new RequireXXXX syntax for type reflections --- vcg/complex/algorithms/update/curvature.h | 22 +++++++-------- vcg/complex/algorithms/update/flag.h | 33 +++++++++++------------ vcg/complex/algorithms/update/normal.h | 26 +++++++++--------- 3 files changed, 38 insertions(+), 43 deletions(-) diff --git a/vcg/complex/algorithms/update/curvature.h b/vcg/complex/algorithms/update/curvature.h index e6f81420..7ff7e523 100644 --- a/vcg/complex/algorithms/update/curvature.h +++ b/vcg/complex/algorithms/update/curvature.h @@ -90,9 +90,7 @@ public: */ static void PrincipalDirections(MeshType &m) { - - assert(tri::HasPerFaceVFAdjacency(m) && tri::HasPerVertexVFAdjacency(m)); - + tri::RequireVFAdjacency(m); vcg::tri::UpdateNormal::PerVertexAngleWeighted(m); vcg::tri::UpdateNormal::NormalizePerVertex(m); @@ -400,7 +398,8 @@ For further details, please, refer to: \n */ static void MeanAndGaussian(MeshType & m) { - assert(HasFFAdjacency(m)); + tri::RequireFFAdjacency(m); + float area0, area1, area2, angle0, angle1, angle2; FaceIterator fi; VertexIterator vi; @@ -591,12 +590,10 @@ static void MeanAndGaussian(MeshType & m) static void PerVertex(MeshType & m) { - // VFAdjacency required! - assert(FaceType::HasVFAdjacency()); - assert(VertexType::HasVFAdjacency()); + tri::RequireVFAdjacency(m); - for(VertexIterator vi = m.vert.begin(); vi != m.vert.end(); ++vi) - ComputeSingleVertexCurvature(&*vi,false); + for(VertexIterator vi = m.vert.begin(); vi != m.vert.end(); ++vi) + ComputeSingleVertexCurvature(&*vi,false); } @@ -612,9 +609,9 @@ static void MeanAndGaussian(MeshType & m) */ static void PrincipalDirectionsNormalCycle(MeshType & m){ - assert(VertexType::HasVFAdjacency()); - assert(FaceType::HasFFAdjacency()); - assert(FaceType::HasFaceNormal()); + tri::RequireVFAdjacency(m); + tri::RequireFFAdjacency(m); + tri::RequirePerFaceNormal(m); typename MeshType::VertexIterator vi; @@ -626,7 +623,6 @@ static void MeanAndGaussian(MeshType & m) typename MeshType::VertexType * firstv = p.VFlip(); assert(p.F()->V(p.VInd())==&(*vi)); - do{ if( p.F() != p.FFlip()){ Point3 normalized_edge = p.F()->V(p.F()->Next(p.VInd()))->cP() - (*vi).P(); diff --git a/vcg/complex/algorithms/update/flag.h b/vcg/complex/algorithms/update/flag.h index 0f20efc6..44e4bd01 100644 --- a/vcg/complex/algorithms/update/flag.h +++ b/vcg/complex/algorithms/update/flag.h @@ -43,7 +43,6 @@ class UpdateFlags public: typedef UpdateMeshType MeshType; - typedef vcg::face::Pos PosType; typedef typename MeshType::ScalarType ScalarType; typedef typename MeshType::VertexType VertexType; typedef typename MeshType::VertexPointer VertexPointer; @@ -72,7 +71,7 @@ public: static void VertexClear(MeshType &m, unsigned int FlagMask = 0xffffffff) { - if(!HasPerVertexFlags(m)) throw vcg::MissingComponentException("VertexFlags"); + tri::RequirePerVertexFlags(m); int andMask = ~FlagMask; for(VertexIterator vi=m.vert.begin(); vi!=m.vert.end(); ++vi) if(!(*vi).IsD()) (*vi).Flags() &= andMask ; @@ -80,7 +79,7 @@ public: static void EdgeClear(MeshType &m, unsigned int FlagMask = 0xffffffff) { - if(!HasPerEdgeFlags(m)) throw vcg::MissingComponentException("EdgeFlags"); + tri::RequirePerEdgeFlags(m); int andMask = ~FlagMask; for(EdgeIterator ei=m.edge.begin(); ei!=m.edge.end(); ++ei) if(!(*ei).IsD()) (*ei).Flags() &= andMask ; @@ -88,7 +87,7 @@ public: static void FaceClear(MeshType &m, unsigned int FlagMask = 0xffffffff) { - if(!HasPerFaceFlags(m)) throw vcg::MissingComponentException("FaceFlags"); + tri::RequirePerFaceFlags(m); int andMask = ~FlagMask; for(FaceIterator fi=m.face.begin(); fi!=m.face.end(); ++fi) if(!(*fi).IsD()) (*fi).Flags() &= andMask ; @@ -96,14 +95,14 @@ public: static void VertexSet(MeshType &m, unsigned int FlagMask) { - if(!HasPerVertexFlags(m)) throw vcg::MissingComponentException("VertexFlags"); + tri::RequirePerVertexFlags(m); for(VertexIterator vi=m.vert.begin(); vi!=m.vert.end(); ++vi) if(!(*vi).IsD()) (*vi).Flags() |= FlagMask ; } static void FaceSet(MeshType &m, unsigned int FlagMask) { - if(!HasPerFaceFlags(m)) throw vcg::MissingComponentException("FaceFlags"); + tri::RequirePerFaceFlags(m); for(FaceIterator fi=m.face.begin(); fi!=m.face.end(); ++fi) if(!(*fi).IsD()) (*fi).Flags() |= FlagMask ; } @@ -133,8 +132,9 @@ public: */ static void FaceBorderFromFF(MeshType &m) { - if(!HasPerFaceFlags(m)) throw vcg::MissingComponentException("FaceFlags"); - if(!HasFFAdjacency(m)) throw vcg::MissingComponentException("FFAdj"); + tri::RequirePerFaceFlags(m); + tri::RequireFFAdjacency(m); + for(FaceIterator fi=m.face.begin();fi!=m.face.end();++fi)if(!(*fi).IsD()) for(int j=0;j<3;++j) { @@ -146,8 +146,8 @@ public: static void FaceBorderFromVF(MeshType &m) { - if(!HasPerFaceFlags(m)) throw vcg::MissingComponentException("FaceFlags"); - if(!HasVFAdjacency(m)) throw vcg::MissingComponentException("VFAdj"); + tri::RequirePerFaceFlags(m); + tri::RequireVFAdjacency(m); FaceClearB(m); int visitedBit=VertexType::NewBitFlag(); @@ -232,7 +232,7 @@ public: // versione minimale che non calcola i complex flag. static void VertexBorderFromNone(MeshType &m) { - if(!HasPerVertexFlags(m)) throw vcg::MissingComponentException("VertexFlags"); + tri::RequirePerVertexFlags(m); std::vector e; typename UpdateMeshType::FaceIterator pf; @@ -278,7 +278,7 @@ public: /// It has a O(fn log fn) complexity. static void FaceBorderFromNone(MeshType &m) { - if(!HasPerFaceFlags(m)) throw vcg::MissingComponentException("FaceFlags"); + tri::RequirePerFaceFlags(m); std::vector e; typename UpdateMeshType::FaceIterator pf; @@ -331,9 +331,8 @@ public: /// Compute the PerVertex Border flag deriving it from the border flag of faces static void VertexBorderFromFace(MeshType &m) { - if(!HasPerFaceFlags(m)) throw vcg::MissingComponentException("FaceFlags"); - if(!HasPerVertexFlags(m)) throw vcg::MissingComponentException("VertexFlags"); - + tri::RequirePerFaceFlags(m); + tri::RequirePerVertexFlags(m); for(VertexIterator vi=m.vert.begin();vi!=m.vert.end();++vi) (*vi).ClearB(); @@ -351,8 +350,8 @@ public: // static void FaceFauxCrease(MeshType &m,float AngleRad) { - if(!HasPerFaceFlags(m)) throw vcg::MissingComponentException("FaceFlags"); - if(!HasFFAdjacency(m)) throw vcg::MissingComponentException("FFAdj"); + tri::RequirePerFaceFlags(m); + tri::RequireFFAdjacency(m); typename MeshType::FaceIterator f; diff --git a/vcg/complex/algorithms/update/normal.h b/vcg/complex/algorithms/update/normal.h index 7bd2b989..f519d6b9 100644 --- a/vcg/complex/algorithms/update/normal.h +++ b/vcg/complex/algorithms/update/normal.h @@ -168,7 +168,7 @@ static void PerFace(ComputeMeshType &m) */ static void PerVertexFromCurrentFaceNormal(ComputeMeshType &m) { - if(!HasPerVertexNormal(m)) throw vcg::MissingComponentException("PerVertexNormal"); + tri::RequirePerVertexNormal(m); VertexIterator vi; for(vi=m.vert.begin();vi!=m.vert.end();++vi) @@ -191,8 +191,8 @@ static void PerVertexFromCurrentFaceNormal(ComputeMeshType &m) */ static void PerFaceFromCurrentVertexNormal(ComputeMeshType &m) { - if(!HasPerVertexNormal(m) ) throw vcg::MissingComponentException("PerVertexNormal"); - if(!HasPerFaceNormal(m)) throw vcg::MissingComponentException("PerFaceNormal"); + tri::RequirePerVertexNormal(m); + tri::RequirePerFaceNormal(m); for (FaceIterator fi=m.face.begin(); fi!=m.face.end(); ++fi) if( !(*fi).IsD()) { @@ -208,7 +208,7 @@ static void PerFaceFromCurrentVertexNormal(ComputeMeshType &m) /// \brief Normalize the length of the vertex normals. static void NormalizePerVertex(ComputeMeshType &m) { - if(!HasPerVertexNormal(m)) throw vcg::MissingComponentException("PerVertexNormal"); + tri::RequirePerVertexNormal(m); for(VertexIterator vi=m.vert.begin();vi!=m.vert.end();++vi) if( !(*vi).IsD() && (*vi).IsRW() ) (*vi).N().Normalize(); @@ -217,7 +217,7 @@ static void NormalizePerVertex(ComputeMeshType &m) /// \brief Normalize the length of the face normals. static void NormalizePerFace(ComputeMeshType &m) { - if(!HasPerFaceNormal(m)) throw vcg::MissingComponentException("PerFaceNormal"); + tri::RequirePerFaceNormal(m); for(FaceIterator fi=m.face.begin();fi!=m.face.end();++fi) if( !(*fi).IsD() ) (*fi).N().Normalize(); } @@ -225,7 +225,7 @@ static void NormalizePerFace(ComputeMeshType &m) /// \brief Set the length of the face normals to their area (without recomputing their directions). static void NormalizePerFaceByArea(ComputeMeshType &m) { - if(!HasPerFaceNormal(m)) throw vcg::MissingComponentException("PerFaceNormal"); + tri::RequirePerFaceNormal(m); FaceIterator fi; for(fi=m.face.begin();fi!=m.face.end();++fi) if( !(*fi).IsD() ) @@ -288,7 +288,7 @@ static void PerBitQuadFaceNormalized(ComputeMeshType &m) /// \brief Multiply the vertex normals by the matrix passed. By default, the scale component is removed. static void PerVertexMatrix(ComputeMeshType &m, const Matrix44 &mat, bool remove_scaling= true) { - if(!HasPerVertexNormal(m)) throw vcg::MissingComponentException("PerVertexNormal"); + tri::RequirePerVertexNormal(m); float scale; Matrix33 mat33(mat,3); @@ -309,8 +309,8 @@ static void PerVertexMatrix(ComputeMeshType &m, const Matrix44 &mat, /// \brief Multiply the face normals by the matrix passed. By default, the scale component is removed. static void PerFaceMatrix(ComputeMeshType &m, const Matrix44 &mat, bool remove_scaling= true) { - if(!HasPerFaceNormal(m)) throw vcg::MissingComponentException("PerFaceNormal"); - float scale; + tri::RequirePerFaceNormal(m); + float scale; Matrix33 mat33(mat,3); @@ -334,8 +334,8 @@ static void PerFaceMatrix(ComputeMeshType &m, const Matrix44 &mat, b /// It requires FFAdjacency. static void PerWedgeCrease(ComputeMeshType &m, ScalarType angleRad) { - if(!HasPerWedgeNormal(m) ) throw vcg::MissingComponentException("PerWedgeNormal"); - if(!HasFFAdjacency(m)) throw vcg::MissingComponentException("Face-Face Adjacency"); + tri::RequirePerFaceWedgeNormal(m); + tri::RequireFFAdjacency(m); ScalarType cosangle=math::Cos(angleRad); @@ -365,8 +365,8 @@ static void PerWedgeCrease(ComputeMeshType &m, ScalarType angleRad) static void PerFaceRW(ComputeMeshType &m, bool normalize=false) { - if(!HasPerFaceNormal(m)) throw vcg::MissingComponentException("PerFaceNormal"); - FaceIterator f; + tri::RequirePerFaceNormal(m); + FaceIterator f; bool cn = true; if(normalize)