diff --git a/src/meshlabplugins/meshselect/meshselect.cpp b/src/meshlabplugins/meshselect/meshselect.cpp index 1b17141dd..8b2ccd1ae 100644 --- a/src/meshlabplugins/meshselect/meshselect.cpp +++ b/src/meshlabplugins/meshselect/meshselect.cpp @@ -23,6 +23,9 @@ /**************************************************************************** History $Log$ +Revision 1.8 2007/02/08 15:59:46 cignoni +Added Border selection filters + Revision 1.7 2006/11/29 00:59:20 cignoni Cleaned plugins interface; changed useless help class into a plain string @@ -66,6 +69,7 @@ const QString SelectionFilterPlugin::ST(FilterType filter) case FP_SELECT_DELETE : return QString("Delete Selected Faces"); case FP_SELECT_ERODE : return QString("Erode Selection"); case FP_SELECT_DILATE : return QString("Dilate Selection"); + case FP_SELECT_BORDER_FACES: return QString("Select Border Faces"); } return QString("Unknown filter"); } @@ -78,6 +82,7 @@ SelectionFilterPlugin::SelectionFilterPlugin() FP_SELECT_DELETE << FP_SELECT_ERODE << FP_SELECT_DILATE << + FP_SELECT_BORDER_FACES << FP_SELECT_INVERT; FilterType tt; @@ -119,10 +124,12 @@ bool SelectionFilterPlugin::applyFilter(QAction *action, MeshModel &m, FilterPar case FP_SELECT_INVERT : tri::UpdateSelection::InvertFace(m.cm); break; case FP_SELECT_ERODE : tri::UpdateSelection::VertexFromFaceStrict(m.cm); tri::UpdateSelection::FaceFromVertexStrict(m.cm); - break; + break; case FP_SELECT_DILATE : tri::UpdateSelection::VertexFromFaceLoose(m.cm); tri::UpdateSelection::FaceFromVertexLoose(m.cm); break; + case FP_SELECT_BORDER_FACES: tri::UpdateSelection::FaceFromBorder(m.cm); + break; default: assert(0); @@ -139,6 +146,7 @@ bool SelectionFilterPlugin::applyFilter(QAction *action, MeshModel &m, FilterPar case FP_SELECT_INVERT : return tr("Invert the current set of selected faces"); case FP_SELECT_NONE : return tr("Clear the current set of selected faces"); case FP_SELECT_ALL : return tr("Select all the faces of the current mesh"); + case FP_SELECT_BORDER_FACES : return tr("Select all the faces on the boundary"); } assert(0); return QString(); @@ -152,5 +160,12 @@ bool SelectionFilterPlugin::applyFilter(QAction *action, MeshModel &m, FilterPar ai.Author = ("Paolo Cignoni"); return ai; } - + +const int SelectionFilterPlugin::getRequirements(QAction *action) +{ + switch(ID(action)) + { + case FP_SELECT_BORDER_FACES: return MeshModel::MM_BORDERFLAG; + } +} Q_EXPORT_PLUGIN(SelectionFilterPlugin) diff --git a/src/meshlabplugins/meshselect/meshselect.h b/src/meshlabplugins/meshselect/meshselect.h index 547688931..b498e0748 100644 --- a/src/meshlabplugins/meshselect/meshselect.h +++ b/src/meshlabplugins/meshselect/meshselect.h @@ -22,6 +22,9 @@ ****************************************************************************/ /* History $Log$ +Revision 1.5 2007/02/08 15:59:46 cignoni +Added Border selection filters + Revision 1.4 2006/11/29 00:59:20 cignoni Cleaned plugins interface; changed useless help class into a plain string @@ -48,7 +51,7 @@ class SelectionFilterPlugin : public QObject, public MeshFilterInterface - FP -> Filter Plugin - name of the plugin separated by _ */ - enum { FP_SELECT_ALL, FP_SELECT_NONE, FP_SELECT_INVERT, FP_SELECT_DELETE, FP_SELECT_ERODE, FP_SELECT_DILATE} ; + enum { FP_SELECT_ALL, FP_SELECT_NONE, FP_SELECT_INVERT, FP_SELECT_DELETE, FP_SELECT_ERODE, FP_SELECT_DILATE, FP_SELECT_BORDER_FACES} ; SelectionFilterPlugin(); ~SelectionFilterPlugin(); @@ -58,7 +61,7 @@ class SelectionFilterPlugin : public QObject, public MeshFilterInterface virtual const QString ST(FilterType filter); virtual const FilterClass getClass(QAction *) {return MeshFilterInterface::Selection;}; virtual bool getParameters(QAction *, QWidget *, MeshModel &m, FilterParameter &par){return true;}; - virtual const int getRequirements(QAction *){return 0;}; + virtual const int getRequirements(QAction *); virtual bool applyFilter(QAction *filter, MeshModel &m, FilterParameter & /*parent*/, vcg::CallBackPos * cb) ; protected: