From 4183e174e97fc24cb683c0fe54c70e48a7488bbc Mon Sep 17 00:00:00 2001 From: Paolo Cignoni cignoni Date: Thu, 6 Mar 2008 08:25:04 +0000 Subject: [PATCH] updated to the error message reporting style for filters --- src/meshlabplugins/meshfilter/meshfilter.cpp | 38 ++++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/src/meshlabplugins/meshfilter/meshfilter.cpp b/src/meshlabplugins/meshfilter/meshfilter.cpp index e5f75fc36..9760bf513 100644 --- a/src/meshlabplugins/meshfilter/meshfilter.cpp +++ b/src/meshlabplugins/meshfilter/meshfilter.cpp @@ -22,6 +22,9 @@ /**************************************************************************** History $Log$ +Revision 1.105 2008/03/06 08:25:04 cignoni +updated to the error message reporting style for filters + Revision 1.104 2008/02/12 14:21:39 cignoni changed the function getParameter into the more meaningful getCustomParameter and added the freeze option @@ -373,8 +376,8 @@ bool ExtraMeshFilterPlugin::applyFilter(QAction *filter, MeshModel &m, FilterPar if( getClass(filter)==Remeshing) { - if ( ! vcg::tri::Clean::IsTwoManifoldFace(m.cm) ) { - QMessageBox::warning(0, QString("Can't continue"), QString("Mesh faces not 2 manifold")); // text + if ( ! tri::Clean::IsTwoManifoldFace(m.cm) ) { + errorMessage = "Mesh has some not 2 manifoldfaces, subdivision surfaces require manifoldness"; // text return false; // can't continue, mesh can't be processed } @@ -488,14 +491,14 @@ bool ExtraMeshFilterPlugin::applyFilter(QAction *filter, MeshModel &m, FilterPar if (ID(filter) == (FP_INVERT_FACES) ) { tri::Clean::FlipMesh(m.cm); - vcg::tri::UpdateNormals::PerVertexNormalizedPerFace(m.cm); + tri::UpdateNormals::PerVertexNormalizedPerFace(m.cm); m.clearDataMask(MeshModel::MM_FACETOPO | MeshModel::MM_BORDERFLAG); } if (ID(filter) == (FP_FREEZE_TRANSFORM) ) { - vcg::tri::UpdatePosition::Matrix(m.cm, m.cm.Tr); - vcg::tri::UpdateNormals::PerVertexNormalizedPerFace(m.cm); - vcg::tri::UpdateBounding::Box(m.cm); + tri::UpdatePosition::Matrix(m.cm, m.cm.Tr); + tri::UpdateNormals::PerVertexNormalizedPerFace(m.cm); + tri::UpdateBounding::Box(m.cm); m.cm.Tr.SetIdentity(); } if (ID(filter) == (FP_TRANSFORM) ) { @@ -522,17 +525,22 @@ bool ExtraMeshFilterPlugin::applyFilter(QAction *filter, MeshModel &m, FilterPar if (ID(filter) == (FP_QUADRIC_TEXCOORD_SIMPLIFICATION) ) { if(!tri::HasPerWedgeTexCoord(m.cm)) - QMessageBox::warning(0,"Meshlab Filtering","Warning: nothing have been done. Mesh has no Texture."); - else { - int TargetFaceNum = par.getInt("TargetFaceNum"); - lastqtex_QualityThr = par.getFloat("QualityThr"); - lastqtex_extratw = par.getFloat("Extratcoordw"); - - QuadricTexSimplification(m.cm,TargetFaceNum,lastqtex_QualityThr,lastqtex_extratw, cb); - tri::UpdateNormals::PerVertexNormalizedPerFace(m.cm); - tri::UpdateBounding::Box(m.cm); + errorMessage="Warning: nothing have been done. Mesh has no Texture."; + return false; } + if ( ! tri::Clean::HasConsistentPerWedgeTexCoord(m.cm) ) { + errorMessage = "Mesh has some inconsistent tex coords (some faces without texture)"; // text + return false; // can't continue, mesh can't be processed + } + + int TargetFaceNum = par.getInt("TargetFaceNum"); + lastqtex_QualityThr = par.getFloat("QualityThr"); + lastqtex_extratw = par.getFloat("Extratcoordw"); + + QuadricTexSimplification(m.cm,TargetFaceNum,lastqtex_QualityThr,lastqtex_extratw, cb); + tri::UpdateNormals::PerVertexNormalizedPerFace(m.cm); + tri::UpdateBounding::Box(m.cm); } if (ID(filter) == (FP_NORMAL_EXTRAPOLATION) ) {