mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-20 11:26:11 +00:00
809 lines
24 KiB
C++
809 lines
24 KiB
C++
/****************************************************************************
|
|
* MeshLab o o *
|
|
* A versatile mesh processing toolbox o o *
|
|
* _ O _ *
|
|
* Copyright(C) 2004-2008 \/)\/ *
|
|
* 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_FILTERPARAMETER_H
|
|
#define MESHLAB_FILTERPARAMETER_H
|
|
#include <QtCore>
|
|
#include <QtXml>
|
|
|
|
#include <QMap>
|
|
#include<QString>
|
|
#include <QPair>
|
|
#include <QAction>
|
|
#include <vcg/math/matrix44.h>
|
|
#include <vcg/space/color4.h>
|
|
#include <vcg/math/shot.h>
|
|
#include <wrap/callback.h>
|
|
class MeshModel;
|
|
class MeshDocument;
|
|
|
|
//enum TypeId {BOOL,INT,FLOAT,STRING,MATRIX44F,POINT3F,COLOR,ENUM,MESH,GROUP,FILENAME};
|
|
//
|
|
//class Binding
|
|
//{
|
|
//public:
|
|
// TypeId tid;
|
|
// QString name;
|
|
// QString value;
|
|
//};
|
|
//
|
|
//class BindingSet
|
|
//{
|
|
//public:
|
|
// QList<Binding> binds;
|
|
//
|
|
// bool declare(const TypeId id,const QString& nm,const QString& val);
|
|
//};
|
|
//
|
|
//class Environment
|
|
//{
|
|
//public:
|
|
// BindingSet globals;
|
|
// BindingSet locals;
|
|
//
|
|
// int evalInt(const QString& val,bool& conv) const;
|
|
// float evalFloat(const QString& val,bool& conv) const;
|
|
// bool evalBool(const QString& val,bool& conv) const;
|
|
//};
|
|
//
|
|
//class Decoration
|
|
//{
|
|
//public:
|
|
// QString fieldDesc;
|
|
// QString tooltip;
|
|
//};
|
|
|
|
class Value
|
|
{
|
|
public:
|
|
virtual bool getBool() const {assert(0);return bool();}
|
|
virtual int getInt() const {assert(0);return int();}
|
|
virtual float getFloat() const {assert(0);return float();}
|
|
virtual QString getString() const {assert(0);return QString();}
|
|
virtual vcg::Matrix44f getMatrix44f() const {assert(0);return vcg::Matrix44f();}
|
|
virtual vcg::Point3f getPoint3f() const {assert(0);return vcg::Point3f();}
|
|
virtual vcg::Shotf getShotf() const {assert(0);return vcg::Shotf();}
|
|
virtual QColor getColor() const {assert(0);return QColor();}
|
|
virtual float getAbsPerc() const {assert(0);return float();}
|
|
virtual int getEnum() const {assert(0);return int();}
|
|
virtual MeshModel* getMesh() const {assert(0);return NULL;}
|
|
virtual QList<float> getFloatList() const {assert(0);return QList<float>();}
|
|
virtual float getDynamicFloat() const {assert(0);return float();}
|
|
virtual QString getFileName() const {assert(0);return QString();}
|
|
|
|
virtual bool isBool() const {return false;}
|
|
virtual bool isInt() const {return false;}
|
|
virtual bool isFloat() const {return false;}
|
|
virtual bool isString() const {return false;}
|
|
virtual bool isMatrix44f() const {return false;}
|
|
virtual bool isPoint3f() const {return false;}
|
|
virtual bool isShotf() const {return false;}
|
|
virtual bool isColor() const {return false;}
|
|
virtual bool isAbsPerc() const {return false;}
|
|
virtual bool isEnum() const {return false;}
|
|
virtual bool isMesh() const {return false;}
|
|
virtual bool isFloatList() const {return false;}
|
|
virtual bool isDynamicFloat() const {return false;}
|
|
virtual bool isFileName() const {return false;}
|
|
|
|
|
|
virtual QString typeName() const = 0;
|
|
virtual void set(const Value& p) = 0;
|
|
virtual ~Value(){}
|
|
};
|
|
|
|
class BoolValue : public Value
|
|
{
|
|
public:
|
|
BoolValue(const bool val);
|
|
inline bool getBool() const {return pval;}
|
|
inline bool isBool() const {return true;}
|
|
inline QString typeName() const {return QString("Bool");}
|
|
inline void set(const Value& p) {pval = p.getBool();}
|
|
~BoolValue() {}
|
|
private:
|
|
bool pval;
|
|
};
|
|
|
|
class IntValue : public Value
|
|
{
|
|
public:
|
|
IntValue(const int val) : pval(val){};
|
|
inline int getInt() const {return pval;}
|
|
inline bool isInt() const {return true;}
|
|
inline QString typeName() const {return QString("Int");}
|
|
inline void set(const Value& p) {pval = p.getInt();}
|
|
~IntValue(){}
|
|
private:
|
|
int pval;
|
|
};
|
|
|
|
class FloatValue : public Value
|
|
{
|
|
public:
|
|
FloatValue(const float val) :pval(val){};
|
|
inline float getFloat() const {return pval;}
|
|
inline bool isFloat() const {return true;}
|
|
inline QString typeName() const {return QString("Float");}
|
|
inline void set(const Value& p) {pval = p.getFloat();}
|
|
~FloatValue(){}
|
|
private:
|
|
float pval;
|
|
};
|
|
|
|
class StringValue : public Value
|
|
{
|
|
public:
|
|
StringValue(const QString& val) :pval(val){};
|
|
inline QString getString() const {return pval;}
|
|
inline bool isString() const {return true;}
|
|
inline QString typeName() const {return QString("String");}
|
|
inline void set(const Value& p) {pval = p.getString();}
|
|
~StringValue(){}
|
|
private:
|
|
QString pval;
|
|
};
|
|
|
|
class Matrix44fValue : public Value
|
|
{
|
|
public:
|
|
Matrix44fValue(const vcg::Matrix44f& val) :pval(val){};
|
|
inline vcg::Matrix44f getMatrix44f() const {return pval;}
|
|
inline bool isMatrix44f() const {return true;}
|
|
inline QString typeName() const {return QString("Matrix44f");}
|
|
inline void set(const Value& p){pval = p.getMatrix44f();}
|
|
~Matrix44fValue(){}
|
|
private:
|
|
vcg::Matrix44f pval;
|
|
};
|
|
|
|
class Point3fValue : public Value
|
|
{
|
|
public:
|
|
Point3fValue(const vcg::Point3f& val) : pval(val){};
|
|
inline vcg::Point3f getPoint3f() const {return pval;}
|
|
inline bool isPoint3f() const {return true;}
|
|
inline QString typeName() const {return QString("Point3f");}
|
|
inline void set(const Value& p) {pval = p.getPoint3f();}
|
|
~Point3fValue(){}
|
|
private:
|
|
vcg::Point3f pval;
|
|
};
|
|
|
|
class ShotfValue : public Value
|
|
{
|
|
public:
|
|
ShotfValue(const vcg::Shotf& val) : pval(val){};
|
|
inline vcg::Shotf getShotf() const {return pval;}
|
|
inline bool isShotf() const {return true;}
|
|
inline QString typeName() const {return QString("Shotf");}
|
|
inline void set(const Value& p) {pval = p.getShotf();}
|
|
~ShotfValue(){}
|
|
private:
|
|
vcg::Shotf pval;
|
|
};
|
|
|
|
class ColorValue : public Value
|
|
{
|
|
public:
|
|
ColorValue(QColor val) :pval(val){};
|
|
inline QColor getColor() const {return pval;}
|
|
inline bool isColor() const {return true;}
|
|
inline QString typeName() const {return QString("Color");}
|
|
inline void set(const Value& p) {pval = p.getColor();}
|
|
~ColorValue(){}
|
|
private:
|
|
QColor pval;
|
|
};
|
|
|
|
class AbsPercValue : public FloatValue
|
|
{
|
|
public:
|
|
AbsPercValue(const float val) :FloatValue(val){};
|
|
inline float getAbsPerc() const {return getFloat();}
|
|
inline QString typeName() const {return QString("AbsPerc");}
|
|
inline bool isAbsPerc() const {return true;}
|
|
~AbsPercValue(){}
|
|
};
|
|
|
|
class EnumValue : public IntValue
|
|
{
|
|
public:
|
|
EnumValue(const int val) :IntValue(val){};
|
|
inline int getEnum() const {return getInt();}
|
|
inline bool isEnum() const {return true;}
|
|
inline QString typeName() const {return QString("Enum");}
|
|
~EnumValue(){}
|
|
};
|
|
|
|
class FloatListValue : public Value
|
|
{
|
|
public:
|
|
FloatListValue(QList<float>& val) :pval(val){};
|
|
inline QList<float> getFloatList() const {return pval;}
|
|
inline void set(const Value& p) {pval = p.getFloatList();}
|
|
inline QString typeName() const {return QString("FloatList");}
|
|
inline bool isFloatList() const {return true;}
|
|
~FloatListValue() {}
|
|
private:
|
|
QList<float> pval;
|
|
};
|
|
|
|
class DynamicFloatValue : public FloatValue
|
|
{
|
|
public:
|
|
DynamicFloatValue(const float val) :FloatValue(val){};
|
|
inline float getDynamicFloat() const {return getFloat();}
|
|
inline bool isDynamicFloat() const {return true;}
|
|
inline QString typeName() const {return QString("DynamicFloat");}
|
|
~DynamicFloatValue() {}
|
|
};
|
|
|
|
class FileValue : public Value
|
|
{
|
|
public:
|
|
FileValue(QString filename) :pval(filename){};
|
|
inline QString getFileName() const {return pval;}
|
|
inline bool isFileName() const {return true;}
|
|
inline QString typeName() const {return QString("FileName");}
|
|
inline void set(const Value& p) {pval = p.getFileName();}
|
|
~FileValue(){}
|
|
private:
|
|
QString pval;
|
|
};
|
|
|
|
class MeshValue : public Value
|
|
{
|
|
public:
|
|
MeshValue(MeshModel* mesh) : pval(mesh){};
|
|
inline MeshModel* getMesh() const {return pval;}
|
|
inline bool isMesh() const {return true;}
|
|
inline QString typeName() const {return QString("Mesh");}
|
|
inline void set(const Value& p) {pval = p.getMesh();}
|
|
~MeshValue(){}
|
|
|
|
private:
|
|
MeshModel* pval;
|
|
};
|
|
|
|
/*************************/
|
|
|
|
//class ParameterDeclaration
|
|
//{
|
|
//public:
|
|
// const QString name;
|
|
// Value* val;
|
|
//
|
|
// virtual void accept(Visitor& v) = 0;
|
|
// virtual bool operator==(const ParameterDeclaration& rp) = 0;
|
|
// virtual ~RichParameter();
|
|
//};
|
|
//
|
|
//class BoolDeclaration
|
|
//{
|
|
//public:
|
|
// BoolDeclaration(const QString nm,const bool defval);
|
|
// bool operator==(const ParameterDeclaration& rp);
|
|
// void accept(Visitor& v);
|
|
// ~BoolDeclaration();
|
|
//};
|
|
//
|
|
//class IntDeclaration
|
|
//{
|
|
//public:
|
|
// IntDeclaration(const QString nm,const bool defval);
|
|
// bool operator==(const ParameterDeclaration& rp);
|
|
// void accept(Visitor& v);
|
|
// ~IntDeclaration();
|
|
//};
|
|
|
|
|
|
/******************************/
|
|
|
|
class ParameterDecoration
|
|
{
|
|
public:
|
|
QString fieldDesc;
|
|
QString tooltip;
|
|
Value* defVal;
|
|
|
|
ParameterDecoration(Value* defvalue,const QString desc = QString(),const QString tltip = QString());
|
|
|
|
virtual ~ParameterDecoration();
|
|
|
|
};
|
|
|
|
class BoolDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
BoolDecoration(BoolValue* defvalue,const QString desc=QString(),const QString tltip=QString());
|
|
~BoolDecoration(){}
|
|
};
|
|
|
|
class IntDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
IntDecoration(IntValue* defvalue,const QString desc = QString(),const QString tltip = QString());
|
|
~IntDecoration(){}
|
|
};
|
|
|
|
class FloatDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
FloatDecoration(FloatValue* defvalue,const QString desc = QString(),const QString tltip = QString());
|
|
~FloatDecoration(){}
|
|
};
|
|
|
|
class StringDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
StringDecoration(StringValue* defvalue,const QString desc = QString(),const QString tltip = QString());
|
|
~StringDecoration(){}
|
|
};
|
|
|
|
class Matrix44fDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
Matrix44fDecoration(Matrix44fValue* defvalue,const QString desc = QString(),const QString tltip = QString());
|
|
~Matrix44fDecoration(){}
|
|
};
|
|
|
|
class Point3fDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
Point3fDecoration(Point3fValue* defvalue,const QString desc = QString(),const QString tltip = QString());
|
|
~Point3fDecoration(){}
|
|
};
|
|
|
|
class ShotfDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
ShotfDecoration(ShotfValue* defvalue,const QString desc = QString(),const QString tltip = QString());
|
|
~ShotfDecoration(){}
|
|
};
|
|
|
|
class ColorDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
ColorDecoration(ColorValue* defvalue,const QString desc = QString(),const QString tltip= QString());
|
|
~ColorDecoration(){}
|
|
};
|
|
|
|
class AbsPercDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
AbsPercDecoration(AbsPercValue* defvalue,const float minVal,const float maxVal,const QString desc = QString(),const QString tltip = QString());
|
|
float min;
|
|
float max;
|
|
~AbsPercDecoration(){}
|
|
};
|
|
|
|
class EnumDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
EnumDecoration(EnumValue* defvalue, QStringList values,const QString desc = QString(),const QString tltip = QString());
|
|
QStringList enumvalues;
|
|
~EnumDecoration(){}
|
|
};
|
|
|
|
class FloatListDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
FloatListDecoration(FloatListValue* defvalue,const QString desc = QString(),const QString tltip = QString())
|
|
:ParameterDecoration(defvalue,desc,tltip) {}
|
|
~FloatListDecoration(){}
|
|
};
|
|
|
|
class DynamicFloatDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
DynamicFloatDecoration(DynamicFloatValue* defvalue, const float minVal,const float maxVal,const QString desc = QString(),const QString tltip = QString());
|
|
~DynamicFloatDecoration(){};
|
|
float min;
|
|
float max;
|
|
};
|
|
|
|
class SaveFileDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
SaveFileDecoration(FileValue* defvalue,const QString extension,const QString desc = QString(),const QString tltip = QString());
|
|
~SaveFileDecoration(){}
|
|
|
|
QString ext;
|
|
};
|
|
|
|
class OpenFileDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
OpenFileDecoration(FileValue* directorydefvalue,const QStringList extensions,const QString desc = QString(),const QString tltip = QString());
|
|
~OpenFileDecoration(){}
|
|
|
|
QStringList exts;
|
|
};
|
|
|
|
|
|
class MeshDecoration : public ParameterDecoration
|
|
{
|
|
public:
|
|
MeshDecoration(MeshValue* defvalue,MeshDocument* doc,const QString desc=QString(), const QString tltip=QString());
|
|
|
|
MeshDecoration(int meshind,MeshDocument* doc,const QString desc=QString(), const QString tltip=QString());
|
|
|
|
//WARNING: IT SHOULD BE USED ONLY BY MESHLABSERVER!!!!!!!
|
|
MeshDecoration(int meshind,const QString desc=QString(), const QString tltip=QString());
|
|
|
|
~MeshDecoration(){}
|
|
|
|
MeshDocument* meshdoc;
|
|
int meshindex;
|
|
};
|
|
|
|
/******************************/
|
|
class RichBool;
|
|
class RichInt;
|
|
class RichFloat;
|
|
class RichString;
|
|
class RichMatrix44f;
|
|
class RichPoint3f;
|
|
class RichShotf;
|
|
class RichColor;
|
|
class RichAbsPerc;
|
|
class RichEnum;
|
|
class RichFloatList;
|
|
class RichDynamicFloat;
|
|
class RichOpenFile;
|
|
class RichSaveFile;
|
|
class RichMesh;
|
|
|
|
|
|
class Visitor
|
|
{
|
|
public:
|
|
|
|
virtual void visit( RichBool& pd) = 0;
|
|
virtual void visit( RichInt& pd) = 0;
|
|
virtual void visit( RichFloat& pd) = 0;
|
|
virtual void visit( RichString& pd) = 0;
|
|
virtual void visit( RichMatrix44f& pd) = 0;
|
|
virtual void visit( RichPoint3f& pd) = 0;
|
|
virtual void visit( RichShotf& pd) = 0;
|
|
virtual void visit( RichColor& pd) = 0;
|
|
virtual void visit( RichAbsPerc& pd) = 0;
|
|
virtual void visit( RichEnum& pd) = 0;
|
|
virtual void visit( RichFloatList& pd) = 0;
|
|
virtual void visit( RichDynamicFloat& pd) = 0;
|
|
virtual void visit( RichOpenFile& pd) = 0;
|
|
virtual void visit( RichSaveFile& pd) = 0;
|
|
virtual void visit( RichMesh& pd) = 0;
|
|
|
|
virtual ~Visitor() {}
|
|
};
|
|
|
|
class RichParameter
|
|
{
|
|
public:
|
|
const QString name;
|
|
|
|
Value* val;
|
|
|
|
ParameterDecoration* pd;
|
|
|
|
RichParameter(const QString nm,Value* v,ParameterDecoration* prdec);
|
|
virtual void accept(Visitor& v) = 0;
|
|
virtual bool operator==(const RichParameter& rp) = 0;
|
|
virtual ~RichParameter();
|
|
};
|
|
|
|
|
|
class RichBool : public RichParameter
|
|
{
|
|
public:
|
|
RichBool(const QString nm,const bool defval);
|
|
RichBool(const QString nm,const bool defval,const QString desc);
|
|
RichBool(const QString nm,const bool defval,const QString desc,const QString tltip);
|
|
RichBool(const QString nm,const bool val,const bool defval,const QString desc,const QString tltip);
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
|
|
~RichBool();
|
|
};
|
|
|
|
class RichInt : public RichParameter
|
|
{
|
|
public:
|
|
RichInt(const QString nm,const int defval,const QString desc=QString(),const QString tltip=QString());
|
|
RichInt(const QString nm,const int val,const int defval,const QString desc=QString(),const QString tltip=QString());
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
~RichInt();
|
|
};
|
|
|
|
class RichFloat : public RichParameter
|
|
{
|
|
public:
|
|
RichFloat(const QString nm,const float defval,const QString desc=QString(),const QString tltip=QString());
|
|
RichFloat(const QString nm,const float val,const float defval,const QString desc=QString(),const QString tltip=QString());
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
~RichFloat();
|
|
};
|
|
|
|
class RichString : public RichParameter
|
|
{
|
|
public:
|
|
RichString(const QString nm,const QString defval,const QString desc,const QString tltip);
|
|
RichString(const QString nm,const QString defval);
|
|
RichString(const QString nm,const QString defval,const QString desc);
|
|
RichString(const QString nm,const QString val,const QString defval,const QString desc,const QString tltip);
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
~RichString();
|
|
};
|
|
|
|
class RichMatrix44f : public RichParameter
|
|
{
|
|
public:
|
|
RichMatrix44f(const QString nm,const vcg::Matrix44f& defval,const QString desc=QString(),const QString tltip=QString());
|
|
RichMatrix44f(const QString nm,const vcg::Matrix44f& val,const vcg::Matrix44f& defval,const QString desc=QString(),const QString tltip=QString());
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
~RichMatrix44f();
|
|
};
|
|
|
|
class RichPoint3f : public RichParameter
|
|
{
|
|
public:
|
|
RichPoint3f(const QString nm,const vcg::Point3f defval,const QString desc=QString(),const QString tltip=QString());
|
|
RichPoint3f(const QString nm,const vcg::Point3f val,const vcg::Point3f defval,const QString desc=QString(),const QString tltip=QString());
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
~RichPoint3f();
|
|
};
|
|
class RichShotf : public RichParameter
|
|
{
|
|
public:
|
|
RichShotf(const QString nm,const vcg::Shotf defval,const QString desc=QString(),const QString tltip=QString());
|
|
RichShotf(const QString nm,const vcg::Shotf val,const vcg::Shotf defval,const QString desc=QString(),const QString tltip=QString());
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
~RichShotf();
|
|
};
|
|
|
|
class RichColor : public RichParameter
|
|
{
|
|
public:
|
|
RichColor(const QString nm,const QColor defval);
|
|
RichColor(const QString nm,const QColor defval,const QString desc);
|
|
RichColor(const QString nm,const QColor defval,const QString desc,const QString tltip);
|
|
RichColor(const QString nm,const QColor val,const QColor defval,const QString desc,const QString tltip);
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
~RichColor();
|
|
|
|
};
|
|
|
|
class RichAbsPerc : public RichParameter
|
|
{
|
|
public:
|
|
RichAbsPerc(const QString nm,const float defval,const float minval,const float maxval,const QString desc=QString(),const QString tltip=QString());
|
|
RichAbsPerc(const QString nm,const float val,const float defval,const float minval,const float maxval,const QString desc=QString(),const QString tltip=QString());
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
~RichAbsPerc();
|
|
};
|
|
|
|
class RichEnum : public RichParameter
|
|
{
|
|
public:
|
|
RichEnum(const QString nm,const int defval,const QStringList values,const QString desc=QString(),const QString tltip=QString());
|
|
RichEnum(const QString nm,const int val,const int defval,const QStringList values,const QString desc=QString(),const QString tltip=QString());
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
~RichEnum();
|
|
};
|
|
|
|
class RichMesh : public RichParameter
|
|
{
|
|
public:
|
|
RichMesh(const QString nm,MeshModel* defval,MeshDocument* doc,const QString desc=QString(),const QString tltip=QString());
|
|
RichMesh(const QString nm,MeshModel* val,MeshModel* defval,MeshDocument* doc,const QString desc=QString(),const QString tltip=QString());
|
|
|
|
RichMesh(const QString nm,int meshindex,MeshDocument* doc,const QString desc=QString(),const QString tltip=QString());
|
|
|
|
//WARNING: IT SHOULD BE USED ONLY BY MESHLABSERVER!!!!!!!
|
|
RichMesh(const QString nm,int meshindex,const QString desc=QString(),const QString tltip=QString());
|
|
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
~RichMesh();
|
|
};
|
|
|
|
class RichFloatList : public RichParameter
|
|
{
|
|
public:
|
|
RichFloatList(const QString nm,FloatListValue* v,FloatListDecoration* prdec);
|
|
RichFloatList(const QString nm,FloatListValue* val,FloatListValue* v,FloatListDecoration* prdec);
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
~RichFloatList();
|
|
};
|
|
|
|
class RichDynamicFloat : public RichParameter
|
|
{
|
|
public:
|
|
RichDynamicFloat(const QString nm,const float defval,const float minval,const float maxval,const QString desc=QString(),const QString tltip=QString());
|
|
RichDynamicFloat(const QString nm,const float val,const float defval,const float minval,const float maxval,const QString desc=QString(),const QString tltip=QString());
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
~RichDynamicFloat();
|
|
|
|
};
|
|
|
|
class RichOpenFile : public RichParameter
|
|
{
|
|
public:
|
|
RichOpenFile( const QString nm,const QString directorydefval,const QStringList exts ,const QString desc =QString(),const QString tltip =QString());
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
~RichOpenFile();
|
|
};
|
|
|
|
class RichSaveFile : public RichParameter
|
|
{
|
|
public:
|
|
RichSaveFile( const QString nm,const QString filedefval,const QString ext,const QString desc =QString(),const QString tltip =QString());
|
|
void accept(Visitor& v);
|
|
bool operator==(const RichParameter& rb);
|
|
~RichSaveFile();
|
|
};
|
|
|
|
|
|
|
|
/******************************/
|
|
|
|
class RichParameterCopyConstructor : public Visitor
|
|
{
|
|
public:
|
|
RichParameterCopyConstructor(){}
|
|
|
|
void visit(RichBool& pd);
|
|
void visit(RichInt& pd);
|
|
void visit(RichFloat& pd);
|
|
void visit(RichString& pd);
|
|
void visit(RichMatrix44f& pd);
|
|
void visit(RichPoint3f& pd);
|
|
void visit(RichShotf& pd);
|
|
void visit(RichColor& pd);
|
|
void visit(RichAbsPerc& pd);
|
|
|
|
void visit(RichEnum& pd);
|
|
void visit(RichFloatList& pd);
|
|
|
|
void visit(RichDynamicFloat& pd);
|
|
|
|
void visit(RichOpenFile& pd);
|
|
void visit(RichSaveFile& pd);
|
|
void visit(RichMesh& pd);
|
|
|
|
~RichParameterCopyConstructor() {}
|
|
|
|
RichParameter* lastCreated;
|
|
};
|
|
|
|
class RichParameterFactory
|
|
{
|
|
public:
|
|
static bool create(const QDomElement& np,RichParameter** par);
|
|
};
|
|
|
|
class RichParameterXMLVisitor : public Visitor
|
|
{
|
|
public:
|
|
RichParameterXMLVisitor(QDomDocument& doc) : docdom(doc){}
|
|
|
|
void visit(RichBool& pd);
|
|
void visit(RichInt& pd);
|
|
void visit(RichFloat& pd);
|
|
void visit(RichString& pd);
|
|
void visit(RichMatrix44f& pd);
|
|
void visit(RichPoint3f& pd);
|
|
void visit(RichShotf& pd);
|
|
void visit(RichColor& pd);
|
|
void visit(RichAbsPerc& pd);
|
|
|
|
void visit(RichEnum& pd);
|
|
void visit(RichFloatList& pd);
|
|
|
|
void visit(RichDynamicFloat& pd);
|
|
|
|
void visit(RichOpenFile& pd);
|
|
void visit(RichSaveFile& pd);
|
|
void visit(RichMesh& pd);
|
|
|
|
~RichParameterXMLVisitor(){}
|
|
|
|
QDomDocument docdom;
|
|
QDomElement parElem;
|
|
private:
|
|
void fillRichParameterAttribute(const QString& type,const QString& name,const QString& desc,const QString& tooltip);
|
|
void fillRichParameterAttribute(const QString& type,const QString& name,const QString& val,const QString& desc,const QString& tooltip);
|
|
};
|
|
|
|
class RichParameterSet
|
|
{
|
|
|
|
public:
|
|
RichParameterSet();
|
|
RichParameterSet(const RichParameterSet& rps);
|
|
// The data is just a list of Parameters
|
|
//QMap<QString, FilterParameter *> paramMap;
|
|
QList<RichParameter*> paramList;
|
|
bool isEmpty() const;
|
|
//RichParameter* findParameter(QString name);
|
|
RichParameter* findParameter(QString name) const;
|
|
bool hasParameter(QString name) const;
|
|
|
|
|
|
RichParameterSet& operator=(const RichParameterSet& rps);
|
|
RichParameterSet& copy(const RichParameterSet& rps);
|
|
RichParameterSet& join(const RichParameterSet& rps);
|
|
bool operator==(const RichParameterSet& rps);
|
|
|
|
RichParameterSet& addParam(RichParameter* pd);
|
|
|
|
//remove a parameter from the set by name
|
|
RichParameterSet& removeParameter(QString name);
|
|
|
|
void clear();
|
|
|
|
void setValue(const QString name,const Value& val);
|
|
|
|
bool getBool(QString name) const;
|
|
int getInt(QString name) const;
|
|
float getFloat(QString name) const;
|
|
QString getString(QString name) const;
|
|
vcg::Matrix44f getMatrix44(QString name) const;
|
|
vcg::Point3f getPoint3f(QString name) const;
|
|
vcg::Shotf getShotf(QString name) const;
|
|
QColor getColor(QString name) const;
|
|
vcg::Color4b getColor4b(QString name) const;
|
|
float getAbsPerc(QString name) const;
|
|
int getEnum(QString name) const;
|
|
MeshModel* getMesh(QString name) const;
|
|
QList<float> getFloatList(QString name) const;
|
|
float getDynamicFloat(QString name) const;
|
|
QString getOpenFileName(QString name) const;
|
|
QString getSaveFileName(QString name) const;
|
|
|
|
|
|
~RichParameterSet();
|
|
};
|
|
|
|
/****************************/
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|