possibility to check version of plugin and if it has been built with double precision

This commit is contained in:
alemuntoni 2021-02-02 12:58:24 +01:00
parent fc763cb9f7
commit 32df9a9aaf
58 changed files with 324 additions and 198 deletions

View File

@ -24,6 +24,9 @@
#ifndef MESHLAB_GLOBALS_H
#define MESHLAB_GLOBALS_H
#define meshlab_xstr(a) mlstringify(a)
#define mlstringify(a) #a
#include <QString>
class RichParameterList;
@ -37,6 +40,17 @@ QString defaultShadersPath();
RichParameterList& defaultGlobalParameterList();
PluginManager& pluginManagerInstance();
//keep this functions inlined please
inline std::string meshlabVersion()
{
return std::string(meshlab_xstr(MESHLAB_VERSION));
};
inline bool builtWithDoublePrecision()
{
return std::string(meshlab_xstr(MESHLAB_SCALAR)) == std::string("double");
}
}
#endif // MESHLAB_GLOBALS_H

View File

@ -1,6 +1,7 @@
#include "mlapplication.h"
#include "mlexception.h"
#include <vcg/complex/complex.h>
#include "globals.h"
#ifndef MESHLAB_VERSION
#define MESHLAB_VERSION 2020.09
@ -20,9 +21,6 @@
#define ML_COMPILER_VER std::string()
#endif
#define xstr(a) stringify(a)
#define stringify(a) #a
#ifdef NDEBUG
bool MeshLabApplication::notify( QObject * rec, QEvent * ev )
{
@ -46,7 +44,7 @@ bool MeshLabApplication::notify( QObject * rec, QEvent * ev )
const QString MeshLabApplication::appVer()
{
return QString(xstr(MESHLAB_VERSION));
return QString::fromStdString(meshlab::meshlabVersion());
}
const QString MeshLabApplication::compilerVersion()

View File

@ -112,7 +112,13 @@ protected:
virtual FilterIDType ID(QString name) const;
};
#define MESHLAB_PLUGIN_IID_EXPORTER(x) Q_PLUGIN_METADATA(IID x)
#define MESHLAB_PLUGIN_IID_EXPORTER(x) \
Q_PLUGIN_METADATA(IID x) \
public: \
virtual std::pair<std::string, bool> getMLVersion() const { \
return std::make_pair(meshlab::meshlabVersion(), meshlab::builtWithDoublePrecision()); \
} \
private:
#define MESHLAB_PLUGIN_NAME_EXPORTER(x)
#define DECORATE_PLUGIN_INTERFACE_IID "vcg.meshlab.MeshDecorateInterface/1.0"

View File

@ -105,6 +105,8 @@ class EditPluginInterfaceFactory
{
public:
virtual ~EditPluginInterfaceFactory() {}
virtual std::pair<std::string, bool> getMLVersion() const = 0;
//returns the plugin name
virtual QString pluginName() const = 0;
@ -117,10 +119,22 @@ public:
//get the description for the given action
virtual QString getEditToolDescription(const QAction *) = 0;
};
#define MESHLAB_PLUGIN_IID_EXPORTER(x) Q_PLUGIN_METADATA(IID x)
#define MESHLAB_EDIT_PLUGIN \
public: \
virtual std::pair<std::string, bool> getMLVersion() const { \
return std::make_pair(meshlab::meshlabVersion(), meshlab::builtWithDoublePrecision()); \
} \
private:
#define MESHLAB_PLUGIN_IID_EXPORTER(x) \
Q_PLUGIN_METADATA(IID x) \
public: \
virtual std::pair<std::string, bool> getMLVersion() const { \
return std::make_pair(meshlab::meshlabVersion(), meshlab::builtWithDoublePrecision()); \
} \
private:
#define MESHLAB_PLUGIN_NAME_EXPORTER(x)
#define EDIT_PLUGIN_INTERFACE_IID "vcg.meshlab.EditPluginInterface/1.0"

View File

@ -40,7 +40,7 @@ Q_DECLARE_METATYPE(Eigen::VectorXd)
*\brief The FilterPluginInterface class provide the interface of the filter plugins.
*
*/
class FilterPluginInterface : public PluginInterface
class FilterPluginInterface : virtual public PluginInterface
{
public:
/**
@ -233,7 +233,13 @@ protected:
QString errorMessage;
};
#define MESHLAB_PLUGIN_IID_EXPORTER(x) Q_PLUGIN_METADATA(IID x)
#define MESHLAB_PLUGIN_IID_EXPORTER(x) \
Q_PLUGIN_METADATA(IID x) \
public: \
virtual std::pair<std::string, bool> getMLVersion() const { \
return std::make_pair(meshlab::meshlabVersion(), meshlab::builtWithDoublePrecision()); \
} \
private:
#define MESHLAB_PLUGIN_NAME_EXPORTER(x)
#define FILTER_PLUGIN_INTERFACE_IID "vcg.meshlab.FilterPluginInterface/1.0"

View File

@ -31,7 +31,7 @@
/** \brief The IOPluginInterface is the base class for all the single mesh loading plugins.
*/
class IOMeshPluginInterface : public PluginInterface
class IOMeshPluginInterface : virtual public PluginInterface
{
public:
IOMeshPluginInterface() : PluginInterface() { }
@ -103,7 +103,13 @@ protected:
};
#define MESHLAB_PLUGIN_IID_EXPORTER(x) Q_PLUGIN_METADATA(IID x)
#define MESHLAB_PLUGIN_IID_EXPORTER(x) \
Q_PLUGIN_METADATA(IID x) \
public: \
virtual std::pair<std::string, bool> getMLVersion() const { \
return std::make_pair(meshlab::meshlabVersion(), meshlab::builtWithDoublePrecision()); \
} \
private:
#define MESHLAB_PLUGIN_NAME_EXPORTER(x)
#define IOMESH_PLUGIN_INTERFACE_IID "vcg.meshlab.IOMeshPluginInterface/1.0"

View File

@ -28,7 +28,7 @@
#include "../../utilities/file_format.h"
#include "../../ml_document/raster_model.h"
class IORasterPluginInterface : public PluginInterface
class IORasterPluginInterface : virtual public PluginInterface
{
public:
IORasterPluginInterface() : PluginInterface() {}
@ -59,7 +59,13 @@ protected:
QString errorMessage;
};
#define MESHLAB_PLUGIN_IID_EXPORTER(x) Q_PLUGIN_METADATA(IID x)
#define MESHLAB_PLUGIN_IID_EXPORTER(x) \
Q_PLUGIN_METADATA(IID x) \
public: \
virtual std::pair<std::string, bool> getMLVersion() const { \
return std::make_pair(meshlab::meshlabVersion(), meshlab::builtWithDoublePrecision()); \
} \
private:
#define MESHLAB_PLUGIN_NAME_EXPORTER(x)
#define IORASTER_PLUGIN_INTERFACE_IID "vcg.meshlab.IORasterPluginInterface/1.0"

View File

@ -29,6 +29,7 @@
#include "../../GLLogStream.h"
#include "../../parameters/rich_parameter_list.h"
#include "../../globals.h"
/**
* \brief The PluginInterface class is the base of all the plugin interfaces.
@ -53,6 +54,15 @@ public:
PluginInterface();
virtual ~PluginInterface() {}
/**
* This function will be automatically defined in your plugin class
* when you use the MESHLAB_PLUGIN_IID_EXPORTER macro.
* The only exception is for the Edit plugins (not EditFactory!):
* in this case, this function is defined by the macro
* MESHLAB_EDIT_PLUGIN
**/
virtual std::pair<std::string, bool> getMLVersion() const = 0;
/**
* @brief This functions returns the name of the current plugin.
* Must be implemented in every plugin.

View File

@ -49,7 +49,7 @@ if(mp->visible) mp->Render(rm.drawMode,rm.colorMode,rm.textureMode);
class GLArea;
class RenderPluginInterface : public PluginInterface
class RenderPluginInterface : virtual public PluginInterface
{
public:
RenderPluginInterface() :PluginInterface() {}
@ -62,7 +62,13 @@ public:
virtual QList<QAction *> actions() = 0;
};
#define MESHLAB_PLUGIN_IID_EXPORTER(x) Q_PLUGIN_METADATA(IID x)
#define MESHLAB_PLUGIN_IID_EXPORTER(x) \
Q_PLUGIN_METADATA(IID x) \
public: \
virtual std::pair<std::string, bool> getMLVersion() const { \
return std::make_pair(meshlab::meshlabVersion(), meshlab::builtWithDoublePrecision()); \
} \
private:
#define MESHLAB_PLUGIN_NAME_EXPORTER(x)
#define RENDER_PLUGIN_INTERFACE_IID "vcg.meshlab.RenderPluginInterface/1.0"

View File

@ -92,9 +92,9 @@ unsigned int PluginManager::size() const
return allPlugins.size();
}
int PluginManager::numberIOPlugins() const
{
return ioMeshPlugins.size();
int PluginManager::numberIOPlugins() const
{
return ioMeshPlugins.size();
}
// Search among all the decorator plugins the one that contains a decoration with the given name
@ -221,99 +221,141 @@ PluginManager::EditPluginFactoryRangeIterator PluginManager::editPluginFactoryIt
return EditPluginFactoryRangeIterator(this);
}
void PluginManager::loadPlugin(QString& fileName)
bool PluginManager::loadPlugin(const QString& fileName)
{
QString absfilepath = pluginsDir.absoluteFilePath(fileName);
QFileInfo fin(absfilepath);
QPluginLoader loader(absfilepath);
QObject *plugin = loader.instance();
if (plugin) {
PluginInterface *iCommon = nullptr;
if (!plugin) {
qDebug() << loader.errorString();
return false;
}
PluginInterface* ip = dynamic_cast<PluginInterface *>(plugin);
EditPluginInterfaceFactory* efp = qobject_cast<EditPluginInterfaceFactory *>(plugin);
if (!ip && !efp){
qDebug() << fin.fileName() << " is not a MeshLab plugin.";
return false;
}
if (ip && ip->getMLVersion().second != MeshLabScalarTest<Scalarm>::doublePrecision()) {
qDebug() << fin.fileName() << " has different floating point precision from the running MeshLab version.";
return false;
}
if (efp && efp->getMLVersion().second != MeshLabScalarTest<Scalarm>::doublePrecision()) {
qDebug() << fin.fileName() << " has different floating point precision from the running MeshLab version.";
return false;
}
//TODO: check in some way also the meshlab version of the plugin
if (ip) { //Classic MeshLab plugin (non Edit...)
bool loadOk = false;
//FilterPlugin
FilterPluginInterface *iFilter = qobject_cast<FilterPluginInterface *>(plugin);
if (iFilter)
{
iCommon = iFilter;
bool loadFilterOK = true;
for(QAction *filterAction : iFilter->actions()) {
if(iFilter->getClass(filterAction)==FilterPluginInterface::Generic){
qDebug() << "Missing class for " +fileName + " " + filterAction->text();
loadFilterOK = false;
}
if(iFilter->getRequirements(filterAction) == int(MeshModel::MM_UNKNOWN)){
qDebug() << "Missing requirements for " +fileName + " " + filterAction->text();
loadFilterOK = false;
}
if(iFilter->getPreConditions(filterAction) == int(MeshModel::MM_UNKNOWN)){
qDebug() << "Missing preconditions for "+fileName + " " + filterAction->text();
loadFilterOK = false;
}
if(iFilter->postCondition(filterAction) == int(MeshModel::MM_UNKNOWN )) {
qDebug() << "Missing postcondition for "+fileName + " " + filterAction->text();
loadFilterOK = false;
}
if(iFilter->filterArity(filterAction) == FilterPluginInterface::UNKNOWN_ARITY ) {
qDebug() << "Missing Arity for " +fileName + " " + filterAction->text();
loadFilterOK = false;
}
}
if (loadFilterOK) {
for(QAction *filterAction : iFilter->actions()) {
filterAction->setData(QVariant(fileName));
actionFilterMap.insert(filterAction->text(), filterAction);
}
filterPlugins.push_back(iFilter);
}
}
loadOk = loadFilterPlugin(iFilter, fileName);
//IOMesh
IOMeshPluginInterface *iIOMesh = qobject_cast<IOMeshPluginInterface *>(plugin);
if (iIOMesh)
{
iCommon = iIOMesh;
ioMeshPlugins.push_back(iIOMesh);
}
loadOk = loadIOMeshPlugin(iIOMesh, fileName);
//IORaster
IORasterPluginInterface* iIORaster = qobject_cast<IORasterPluginInterface*>(plugin);
if (iIORaster){
iCommon = iIORaster;
ioRasterPlugins.push_back(iIORaster);
}
if (iIORaster)
loadOk = loadIORasterPlugin(iIORaster, fileName);
//Decorate
DecoratePluginInterface *iDecorator = qobject_cast<DecoratePluginInterface *>(plugin);
if (iDecorator)
{
iCommon = iDecorator;
decoratePlugins.push_back(iDecorator);
for(QAction *decoratorAction : iDecorator->actions())
{
iDecorator->initGlobalParameterList(decoratorAction, meshlab::defaultGlobalParameterList());
}
}
loadOk = loadDecoratePlugin(iDecorator, fileName);
//Render
RenderPluginInterface *iRender = qobject_cast<RenderPluginInterface *>(plugin);
if (iRender)
{
iCommon = iRender;
renderPlugins.push_back(iRender);
}
loadOk = loadRenderPlugin(iRender, fileName);
EditPluginInterfaceFactory *iEditFactory = qobject_cast<EditPluginInterfaceFactory *>(plugin);
if (iEditFactory)
{
editPlugins.push_back(iEditFactory);
}
else if (iCommon)
{
if (allPlugins.find(iCommon->pluginName()) == allPlugins.end()) {
allPlugins[iCommon->pluginName()] = iCommon;
if (loadOk){ //If the plugin has been loaded correctly
if (allPlugins.find(ip->pluginName()) != allPlugins.end()) {
qDebug() << "Warning: " << ip->pluginName() << " has been already loaded.\n";
}
else{
qDebug() << "Warning: " << iCommon->pluginName() << " has been already loaded.\n";
}
} else {
// qDebug("Plugin %s was loaded, but could not be casted to any known type.", qUtf8Printable(fileName));
allPlugins[ip->pluginName()] = ip;
}
}
else
qDebug() << loader.errorString();
if (efp) { //EditFactory Plugin
//EditFactory
EditPluginInterfaceFactory *iEditFactory = qobject_cast<EditPluginInterfaceFactory *>(plugin);
if (iEditFactory)
loadEditPlugin(iEditFactory, fileName);
}
return true;
}
bool PluginManager::loadFilterPlugin(FilterPluginInterface* iFilter, const QString& fileName )
{
bool loadFilterOK = true;
for(QAction *filterAction : iFilter->actions()) {
if(iFilter->getClass(filterAction)==FilterPluginInterface::Generic){
qDebug() << "Missing class for " +fileName + " " + filterAction->text();
loadFilterOK = false;
}
if(iFilter->getRequirements(filterAction) == int(MeshModel::MM_UNKNOWN)){
qDebug() << "Missing requirements for " +fileName + " " + filterAction->text();
loadFilterOK = false;
}
if(iFilter->getPreConditions(filterAction) == int(MeshModel::MM_UNKNOWN)){
qDebug() << "Missing preconditions for "+fileName + " " + filterAction->text();
loadFilterOK = false;
}
if(iFilter->postCondition(filterAction) == int(MeshModel::MM_UNKNOWN )) {
qDebug() << "Missing postcondition for "+fileName + " " + filterAction->text();
loadFilterOK = false;
}
if(iFilter->filterArity(filterAction) == FilterPluginInterface::UNKNOWN_ARITY ) {
qDebug() << "Missing Arity for " +fileName + " " + filterAction->text();
loadFilterOK = false;
}
}
if (loadFilterOK) {
for(QAction *filterAction : iFilter->actions()) {
filterAction->setData(QVariant(fileName));
actionFilterMap.insert(filterAction->text(), filterAction);
}
filterPlugins.push_back(iFilter);
}
return loadFilterOK;
}
bool PluginManager::loadIOMeshPlugin(IOMeshPluginInterface* iIOMesh, const QString&)
{
ioMeshPlugins.push_back(iIOMesh);
return true;
}
bool PluginManager::loadIORasterPlugin(IORasterPluginInterface* iIORaster, const QString&)
{
ioRasterPlugins.push_back(iIORaster);
return true;
}
bool PluginManager::loadDecoratePlugin(DecoratePluginInterface* iDecorate, const QString&)
{
decoratePlugins.push_back(iDecorate);
for(QAction *decoratorAction : iDecorate->actions()) {
iDecorate->initGlobalParameterList(decoratorAction, meshlab::defaultGlobalParameterList());
}
return true;
}
bool PluginManager::loadRenderPlugin(RenderPluginInterface* iRender, const QString&)
{
renderPlugins.push_back(iRender);
return true;
}
bool PluginManager::loadEditPlugin(EditPluginInterfaceFactory* iEditFactory, const QString&)
{
editPlugins.push_back(iEditFactory);
return true;
}
void PluginManager::fillKnownIOFormats()

View File

@ -156,7 +156,7 @@ public:
private:
QDir pluginsDir;
//all plugins
//all plugins (except Edit plugins)
std::map<QString, PluginInterface*> allPlugins;
//IOMeshPlugins
@ -185,7 +185,14 @@ private:
QVector<EditPluginInterfaceFactory*> editPlugins;
//Private member functions
void loadPlugin(QString& filename);
bool loadPlugin(const QString& filename);
bool loadFilterPlugin(FilterPluginInterface* iFilter, const QString& fileName);
bool loadIOMeshPlugin(IOMeshPluginInterface* iIOMesh, const QString& fileName);
bool loadIORasterPlugin(IORasterPluginInterface* iIORaster, const QString& fileName);
bool loadDecoratePlugin(DecoratePluginInterface* iDecorate, const QString& fileName);
bool loadRenderPlugin(RenderPluginInterface* iRender, const QString& fileName);
bool loadEditPlugin(EditPluginInterfaceFactory* iEditFactory, const QString& fileName);
void fillKnownIOFormats();

View File

@ -41,7 +41,7 @@ New small samples
class DecorateBackgroundPlugin : public QObject, public DecoratePluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(DECORATE_PLUGIN_INTERFACE_IID)
MESHLAB_PLUGIN_IID_EXPORTER(DECORATE_PLUGIN_INTERFACE_IID)
Q_INTERFACES(DecoratePluginInterface)
QString decorationName(FilterIDType id) const;
QString decorationInfo(FilterIDType id) const;

View File

@ -38,7 +38,7 @@ typedef std::pair<Point3m,vcg::Color4b> PointPC; // this type is used to have a
class DecorateBasePlugin : public QObject, public DecoratePluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(DECORATE_PLUGIN_INTERFACE_IID)
MESHLAB_PLUGIN_IID_EXPORTER(DECORATE_PLUGIN_INTERFACE_IID)
Q_INTERFACES(DecoratePluginInterface)
QString decorationName(FilterIDType filter) const;
QString decorationInfo(FilterIDType filter) const;

View File

@ -35,7 +35,7 @@
class DecorateShadowPlugin : public QObject, public DecoratePluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(DECORATE_PLUGIN_INTERFACE_IID)
MESHLAB_PLUGIN_IID_EXPORTER(DECORATE_PLUGIN_INTERFACE_IID)
Q_INTERFACES(DecoratePluginInterface)
enum {

View File

@ -34,7 +34,8 @@
class EditAlignPlugin : public QObject, public EditPluginInterface
{
Q_OBJECT
Q_INTERFACES(EditPluginInterface)
MESHLAB_EDIT_PLUGIN
Q_INTERFACES(EditPluginInterface)
enum
{

View File

@ -31,7 +31,7 @@
class EditAlignFactory : public QObject, public EditPluginInterfaceFactory
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(EDIT_PLUGIN_INTERFACE_FACTORY_IID)
MESHLAB_PLUGIN_IID_EXPORTER(EDIT_PLUGIN_INTERFACE_FACTORY_IID)
Q_INTERFACES(EditPluginInterfaceFactory)
public:

View File

@ -31,8 +31,9 @@
class EditManipulatorsPlugin : public QObject, public EditPluginInterface
{
Q_OBJECT
Q_INTERFACES(EditPluginInterface)
Q_OBJECT
MESHLAB_EDIT_PLUGIN
Q_INTERFACES(EditPluginInterface)
public:

View File

@ -49,8 +49,9 @@ public:
class EditMeasurePlugin : public QObject, public EditPluginInterface
{
Q_OBJECT
Q_INTERFACES(EditPluginInterface)
Q_OBJECT
MESHLAB_EDIT_PLUGIN
Q_INTERFACES(EditPluginInterface)
public:
EditMeasurePlugin();

View File

@ -36,6 +36,7 @@
class EditMutualCorrsPlugin : public QObject, public EditPluginInterface
{
Q_OBJECT
MESHLAB_EDIT_PLUGIN
Q_INTERFACES(EditPluginInterface)
public:

View File

@ -51,7 +51,8 @@ enum PaintOptions {
*/
class EditPaintPlugin : public QObject, public EditPluginInterface {
Q_OBJECT
Q_INTERFACES(EditPluginInterface)
MESHLAB_EDIT_PLUGIN
Q_INTERFACES(EditPluginInterface)
public:
EditPaintPlugin();

View File

@ -36,6 +36,7 @@
class EditPickPointsPlugin : public QObject, public EditPluginInterface
{
Q_OBJECT
MESHLAB_EDIT_PLUGIN
Q_INTERFACES(EditPluginInterface)
public:

View File

@ -30,6 +30,7 @@
class EditPointPlugin : public QObject, public EditPluginInterface
{
Q_OBJECT
MESHLAB_EDIT_PLUGIN
Q_INTERFACES(EditPluginInterface)
public:

View File

@ -41,7 +41,8 @@ FIRST RELEASE
class QualityMapperPlugin : public QObject, public EditPluginInterface
{
Q_OBJECT
Q_INTERFACES(EditPluginInterface)
MESHLAB_EDIT_PLUGIN
Q_INTERFACES(EditPluginInterface)
private:
QualityMapperDialog *_qualityMapperDialog;

View File

@ -35,6 +35,7 @@
class EditReferencingPlugin : public QObject, public EditPluginInterface
{
Q_OBJECT
MESHLAB_EDIT_PLUGIN
Q_INTERFACES(EditPluginInterface)
public:

View File

@ -30,6 +30,7 @@
class SampleEditPlugin : public QObject, public EditPluginInterface
{
Q_OBJECT
MESHLAB_EDIT_PLUGIN
Q_INTERFACES(EditPluginInterface)
public:

View File

@ -28,7 +28,8 @@
class EditSelectPlugin : public QObject, public EditPluginInterface
{
Q_OBJECT
Q_INTERFACES(EditPluginInterface)
MESHLAB_EDIT_PLUGIN
Q_INTERFACES(EditPluginInterface)
public:
@ -65,9 +66,9 @@ public:
GLdouble mvMatrix_f[16];
GLdouble prMatrix_f[16];
GLint viewpSize[4];
Eigen::Matrix<Scalarm,4,4> SelMatrix;
Scalarm SelViewport[4];
Eigen::Matrix<Scalarm,4,4> SelMatrix;
Scalarm SelViewport[4];
signals:
void setDecorator(QString, bool);

View File

@ -31,9 +31,9 @@
class AOGLWidget;
class AmbientOcclusionPlugin : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
// Attributes
protected:

View File

@ -31,8 +31,8 @@
class FilterCameraPlugin : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
public:
enum { FP_SET_MESH_CAMERA,

View File

@ -29,9 +29,9 @@
class CleanFilter : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
public:
/* naming convention :

View File

@ -30,9 +30,9 @@
class FilterColorProc : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
public:
enum { CP_FILLING,

View File

@ -27,9 +27,9 @@
class FilterCreate : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
public:
enum {

View File

@ -38,9 +38,9 @@ Added the new sample filter plugin that removes border faces
class FilterCreateIso : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
public:
/* naming convention :

View File

@ -36,9 +36,9 @@
class FilterCSG : public QObject, public FilterPluginInterface
{
Q_OBJECT
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_INTERFACES(FilterPluginInterface)
enum {
CSG_OPERATION_INTERSECTION = 0,

View File

@ -38,9 +38,9 @@ using namespace vcg;
class FilterDirt : public QObject, public FilterPluginInterface
{
Q_OBJECT
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_INTERFACES(FilterPluginInterface)
protected:
double x,y,z,nx,ny,nz,r,g,b,q,rad;
//double x0,y0,z0,x1,y1,z1,x2,y2,z2,nx0,ny0,nz0,nx1,ny1,nz1,nx2,ny2,nz2,r0,g0,b0,r1,g1,b1,r2,g2,b2,q0,q1,q2;

View File

@ -33,9 +33,9 @@
class FilterFractal : public QObject, public FilterPluginInterface
{
Q_OBJECT
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_INTERFACES(FilterPluginInterface)
public:
FilterFractal();

View File

@ -28,9 +28,9 @@
class GlobalRegistrationPlugin : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
public:
enum { FP_GLOBAL_REGISTRATION } ;

View File

@ -37,9 +37,9 @@ class VisibleSet;
class FilterImgPatchParamPlugin : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES( FilterPluginInterface )
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES( FilterPluginInterface )
enum
{

View File

@ -33,9 +33,9 @@
class FilterIsoParametrization : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
public:
enum {ISOP_PARAM,

View File

@ -30,9 +30,9 @@
class FilterLayerPlugin : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
public:
enum {

View File

@ -29,8 +29,8 @@
class ExtraMeshFilterPlugin : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
enum RefPlane { REF_CENTER,REF_MIN,REF_ORIG};

View File

@ -28,9 +28,9 @@
class PlyMCPlugin : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
public:
enum {

View File

@ -33,9 +33,9 @@ History
class QhullPlugin : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
public:

View File

@ -57,9 +57,9 @@ public:
class QualityMapperFilter : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
private:
Frange _meshMinMaxQuality;

View File

@ -30,9 +30,9 @@
class ExtraSampleDynPlugin : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
public:
enum { FP_VERTEX_COLOR_NOISE } ;

View File

@ -27,9 +27,9 @@
class FilterDocSampling : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
public:
enum {

View File

@ -30,10 +30,10 @@
#include <common/plugins/interfaces/filter_plugin_interface.h>
#include <meshlabplugins/io_x3d/io_x3d.h>
class FilterSSynth : public QObject,public IOMeshPluginInterface, public FilterPluginInterface{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface IOMeshPluginInterface)
class FilterSSynth : public QObject, public IOMeshPluginInterface, public FilterPluginInterface{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface IOMeshPluginInterface)
public:
enum {CR_SSYNTH} ;

View File

@ -36,9 +36,9 @@
class FilterTexturePlugin : public QObject, public FilterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(FILTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(FilterPluginInterface)
public:
enum {

View File

@ -31,9 +31,9 @@
class ExtraMeshIOPlugin : public QObject, public IOMeshPluginInterface
{
Q_OBJECT
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
Q_INTERFACES(IOMeshPluginInterface)
public:

View File

@ -29,8 +29,8 @@
class BaseMeshIOPlugin : public QObject, public IOMeshPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
public:

View File

@ -152,9 +152,9 @@ namespace io {
class BreMeshIOPlugin : public QObject, public IOMeshPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
public:

View File

@ -49,9 +49,9 @@
class ColladaIOPlugin : public QObject, public IOMeshPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
public:
//std::map<MeshModel*,typename vcg::tri::io::InfoDAE*> _mp;

View File

@ -36,9 +36,9 @@
class IOMPlugin : public QObject, public IOMeshPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
public:

View File

@ -31,9 +31,9 @@
class ExpeIOPlugin : public QObject, public IOMeshPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
public:

View File

@ -29,9 +29,9 @@
class PDBIOPlugin : public QObject, public IOMeshPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
public:

View File

@ -36,9 +36,9 @@
class TriIOPlugin : public QObject, public IOMeshPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
public:

View File

@ -30,9 +30,9 @@
class TxtIOPlugin : public QObject, public IOMeshPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IOMESH_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IOMeshPluginInterface)
public:

View File

@ -29,8 +29,8 @@
class IORasterBasePlugin : public QObject, public IORasterPluginInterface
{
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(IORASTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IORasterPluginInterface)
MESHLAB_PLUGIN_IID_EXPORTER(IORASTER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(IORasterPluginInterface)
public:

View File

@ -36,9 +36,9 @@
#include "texture2D.h"
class RadianceScalingRendererPlugin : public QObject, public RenderPluginInterface {
Q_OBJECT
Q_OBJECT
MESHLAB_PLUGIN_IID_EXPORTER(RENDER_PLUGIN_INTERFACE_IID)
Q_INTERFACES(RenderPluginInterface)
Q_INTERFACES(RenderPluginInterface)
bool _supported;
QList<QAction *> _actionList;