diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dc0d9d1e5..1825ee4d4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -172,6 +172,7 @@ if(NOT DEFINED MESHLAB_PLUGINS) # it may be already defined in parent directory meshlabplugins/filter_mls meshlabplugins/filter_mutualglobal meshlabplugins/filter_mutualinfo + meshlabplugins/filter_parametrization meshlabplugins/filter_plymc meshlabplugins/filter_qhull meshlabplugins/filter_quality diff --git a/src/meshlabplugins/filter_parametrization/CMakeLists.txt b/src/meshlabplugins/filter_parametrization/CMakeLists.txt new file mode 100644 index 000000000..fbf159df9 --- /dev/null +++ b/src/meshlabplugins/filter_parametrization/CMakeLists.txt @@ -0,0 +1,7 @@ +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council + +set(SOURCES filter_parametrization.cpp) + +set(HEADERS filter_parametrization.h) + +add_meshlab_plugin(filter_parametrization ${SOURCES} ${HEADERS}) diff --git a/src/meshlabplugins/filter_parametrization/filter_parametrization.cpp b/src/meshlabplugins/filter_parametrization/filter_parametrization.cpp new file mode 100644 index 000000000..c9de97161 --- /dev/null +++ b/src/meshlabplugins/filter_parametrization/filter_parametrization.cpp @@ -0,0 +1,121 @@ +/**************************************************************************** +* MeshLab o o * +* A versatile mesh processing toolbox o o * +* _ O _ * +* Copyright(C) 2005-2021 \/)\/ * +* Visual Computing Lab /\/| * +* ISTI - Italian National Research Council | * +* \ * +* All rights reserved. * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +* This program is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU General Public License (http://www.gnu.org/licenses/gpl.txt) * +* for more details. * +* * +****************************************************************************/ + +#include "filter_parametrization.h" + +FilterParametrizationPlugin::FilterParametrizationPlugin() +{ + typeList = { FP_HARMONIC_PARAM}; + + for(const ActionIDType& tt : typeList) + actionList.push_back(new QAction(filterName(tt), this)); +} + +QString FilterParametrizationPlugin::pluginName() const +{ + return "FilterParametrization"; +} + +QString FilterParametrizationPlugin::vendor() const +{ + return "CNR-ISTI-VCLab"; +} + +QString FilterParametrizationPlugin::filterName(ActionIDType filterId) const +{ + switch(filterId) { + case FP_HARMONIC_PARAM : + return "Armonic Parametrization"; + default : + assert(0); + return ""; + } +} + +QString FilterParametrizationPlugin::filterInfo(ActionIDType filterId) const +{ + switch(filterId) { + case FP_HARMONIC_PARAM : + return ""; + default : + assert(0); + return "Unknown Filter"; + } +} + +FilterParametrizationPlugin::FilterClass FilterParametrizationPlugin::getClass(const QAction *a) const +{ + switch(ID(a)) { + case FP_HARMONIC_PARAM : + return FilterPlugin::Texture; + default : + assert(0); + return FilterPlugin::Generic; + } +} + +FilterPlugin::FilterArity FilterParametrizationPlugin::filterArity(const QAction*) const +{ + return SINGLE_MESH; +} + +int FilterParametrizationPlugin::getPreConditions(const QAction*) const +{ + return MeshModel::MM_NONE; +} + +int FilterParametrizationPlugin::postCondition(const QAction*) const +{ + return MeshModel::MM_VERTTEXCOORD; +} + +RichParameterList FilterParametrizationPlugin::initParameterList(const QAction *action, const MeshModel &m) +{ + RichParameterList parlst; + switch(ID(action)) { + case FP_HARMONIC_PARAM : + break; + default : + assert(0); + } + return parlst; +} + +std::map FilterParametrizationPlugin::applyFilter( + const QAction * action, + const RichParameterList & par, + MeshDocument &md, + unsigned int& /*postConditionMask*/, + vcg::CallBackPos *cb) +{ + switch(ID(action)) { + case FP_HARMONIC_PARAM : + + break; + default : + wrongActionCalled(action); + } + return std::map(); +} + +MESHLAB_PLUGIN_NAME_EXPORTER(FilterSamplePlugin) diff --git a/src/meshlabplugins/filter_parametrization/filter_parametrization.h b/src/meshlabplugins/filter_parametrization/filter_parametrization.h new file mode 100644 index 000000000..347d0f927 --- /dev/null +++ b/src/meshlabplugins/filter_parametrization/filter_parametrization.h @@ -0,0 +1,62 @@ +/**************************************************************************** +* MeshLab o o * +* A versatile mesh processing toolbox o o * +* _ O _ * +* Copyright(C) 2005-2021 \/)\/ * +* Visual Computing Lab /\/| * +* ISTI - Italian National Research Council | * +* \ * +* All rights reserved. * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +* This program is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU General Public License (http://www.gnu.org/licenses/gpl.txt) * +* for more details. * +* * +****************************************************************************/ + +#ifndef MESHLAB_FILTER_PARAMETRIZATION_PLUGIN_H +#define MESHLAB_FILTER_PARAMETRIZATION_PLUGIN_H + +#include + +class FilterParametrizationPlugin : public QObject, public FilterPlugin +{ + //keep these three lines unchanged + Q_OBJECT + MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_IID) + Q_INTERFACES(FilterPlugin) + +public: + //enum used to give an ID to every filter implemented in the plugin + enum FileterIds {FP_HARMONIC_PARAM}; + + FilterParametrizationPlugin(); + + QString pluginName() const; + QString vendor() const; + + QString filterName(ActionIDType filter) const; + QString filterInfo(ActionIDType filter) const; + FilterClass getClass(const QAction* a) const; + FilterArity filterArity(const QAction*) const; + int getPreConditions(const QAction *) const; + int postCondition(const QAction* ) const; + RichParameterList initParameterList(const QAction*, const MeshModel &/*m*/); + std::map applyFilter( + const QAction* action, + const RichParameterList & params, + MeshDocument &md, + unsigned int& postConditionMask, + vcg::CallBackPos * cb); + +private: +}; + +#endif //MESHLAB_FILTER_PARAMETRIZATION_PLUGIN_H