summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO6
-rw-r--r--PKGBUILD8
-rw-r--r--muparser.patch14
-rw-r--r--muparser_drop_unicode.patch555
4 files changed, 577 insertions, 6 deletions
diff --git a/.SRCINFO b/.SRCINFO
index fcfc12c611a7..f2a0808844b2 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = meshlab-git
pkgdesc = System for processing and editing of unstructured 3D models arising in 3D scanning (qt5 version)
- pkgver = 2019.01.29.f6c6675.r0.gf6c6675b
+ pkgver = 2019.01.29.f6c6675.r2.g17d380b1
pkgrel = 1
url = http://www.meshlab.net
install = meshlab-git.install
@@ -35,6 +35,7 @@ pkgbase = meshlab-git
source = 3ds.patch
source = levmar.patch
source = muparser.patch
+ source = muparser_drop_unicode.patch
source = meshlabserver_GLU.patch
source = mpir.patch
source = rpath.patch
@@ -48,7 +49,8 @@ pkgbase = meshlab-git
md5sums = 0ac7701c703d3d88a9295f8fb39beeb9
md5sums = 473a1af178e0ea2e92441e5dc29a3842
md5sums = 32581c7128c8e544705c39e59647ab10
- md5sums = f1efa4f1400cc0952fdcd44adc11174b
+ md5sums = e60c9cccc4051f0c383a8634859fe49c
+ md5sums = a78fc74c7e24d6ce455188d4122ae9c7
md5sums = a4f7548978564637e502ecdbd2b537e0
md5sums = 726e5aeee66681b586150c08cafbe3f1
md5sums = eb89ce7e86bba52ca4ad4aa173d3f8a2
diff --git a/PKGBUILD b/PKGBUILD
index 646f78bd221c..a591d43a990e 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,6 +1,6 @@
# Maintainer : bartus <arch-user-repoᘓbartus.33mail.com>
pkgname=meshlab-git
-pkgver=2019.01.29.f6c6675.r0.gf6c6675b
+pkgver=2019.01.29.f6c6675.r2.g17d380b1
pkgrel=1
pkgdesc="System for processing and editing of unstructured 3D models arising in 3D scanning (qt5 version)"
arch=('i686' 'x86_64')
@@ -25,6 +25,7 @@ source=("git+https://github.com/cnr-isti-vclab/meshlab.git"
"3ds.patch"
"levmar.patch"
"muparser.patch"
+ "muparser_drop_unicode.patch"
"meshlabserver_GLU.patch"
"mpir.patch"
"rpath.patch"
@@ -38,7 +39,8 @@ md5sums=('SKIP'
'0ac7701c703d3d88a9295f8fb39beeb9'
'473a1af178e0ea2e92441e5dc29a3842'
'32581c7128c8e544705c39e59647ab10'
- 'f1efa4f1400cc0952fdcd44adc11174b'
+ 'e60c9cccc4051f0c383a8634859fe49c'
+ 'a78fc74c7e24d6ce455188d4122ae9c7'
'a4f7548978564637e502ecdbd2b537e0'
'726e5aeee66681b586150c08cafbe3f1'
'eb89ce7e86bba52ca4ad4aa173d3f8a2'
@@ -78,6 +80,8 @@ prepare() {
patch -Np1 -i ../shaders_dir.patch
msg "qt(5.11) compatibility"
patch -Np1 -i ../qt5.11.patch
+ msg "fix muparser unicode string"
+ patch -Np1 -i ../muparser_drop_unicode.patch
cd ${srcdir}/vcglib
msg "fix import bundler/nvm"
patch -Np1 -i ../import_bundle_out.patch
diff --git a/muparser.patch b/muparser.patch
index 2cb56d1fc0f5..926655b1528e 100644
--- a/muparser.patch
+++ b/muparser.patch
@@ -1,8 +1,18 @@
diff --git a/src/meshlabplugins/filter_func/filter_func.pro b/src/meshlabplugins/filter_func/filter_func.pro
-index ef6b654c..2052ed61 100644
+index ef6b654c..7d8d32c8 100644
--- a/src/meshlabplugins/filter_func/filter_func.pro
+++ b/src/meshlabplugins/filter_func/filter_func.pro
-@@ -22,7 +22,7 @@ win32-msvc2013:LIBS += ../../external/lib/win32-msvc2013/muparser.lib
+@@ -7,9 +7,6 @@ SOURCES += filter_func.cpp
+ TARGET = filter_func
+
+
+-DEFINES += _UNICODE
+-INCLUDEPATH += ../../external/muparser_v225/include
+-
+ # Note: we need static libs so when building muparser lib use
+ # ./configure --enable-shared=no
+
+@@ -22,7 +19,7 @@ win32-msvc2013:LIBS += ../../external/lib/win32-msvc2013/muparser.lib
win32-msvc2015:LIBS += ../../external/lib/win32-msvc2015/muparser.lib
macx:LIBS += $$MACLIBDIR/libmuparser.a
diff --git a/muparser_drop_unicode.patch b/muparser_drop_unicode.patch
new file mode 100644
index 000000000000..2a1790d10e02
--- /dev/null
+++ b/muparser_drop_unicode.patch
@@ -0,0 +1,555 @@
+diff --git a/src/meshlabplugins/filter_func/filter_func.cpp b/src/meshlabplugins/filter_func/filter_func.cpp
+index 193cd190..e8e1f5c1 100644
+--- a/src/meshlabplugins/filter_func/filter_func.cpp
++++ b/src/meshlabplugins/filter_func/filter_func.cpp
+@@ -378,14 +378,13 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ case FF_VERT_SELECTION :
+ {
+ std::string expr = par.getString("condSelect").toStdString();
+- std::wstring wexpr = conversion::fromStringToWString(expr);
+
+ // muparser initialization and explicitely define parser variables
+ Parser p;
+ setPerVertexVariables(p,m.cm);
+
+ // set expression inserted by user as string (required by muparser)
+- p.SetExpr(wexpr);
++ p.SetExpr(expr);
+
+ int numvert = 0;
+ time_t start = clock();
+@@ -403,7 +402,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ try {
+ selected = p.Eval();
+ } catch(Parser::exception_type &e) {
+- errorMessage = conversion::fromWStringToString(e.GetMsg()).c_str();
++ errorMessage = e.GetMsg().c_str();
+ return false;
+ }
+
+@@ -430,7 +429,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ setPerFaceVariables(p,m.cm);
+
+ // set expression inserted by user as string (required by muparser)
+- p.SetExpr(conversion::fromStringToWString(select.toStdString()));
++ p.SetExpr(select.toStdString());
+
+ int numface = 0;
+ time_t start = clock();
+@@ -448,7 +447,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ try {
+ selected = p.Eval();
+ } catch(Parser::exception_type &e) {
+- errorMessage = conversion::fromWStringToString(e.GetMsg()).c_str();
++ errorMessage = e.GetMsg().c_str();
+ return false;
+ }
+
+@@ -501,10 +500,10 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ setPerVertexVariables(p3,m.cm);
+ setPerVertexVariables(p4,m.cm);
+
+- p1.SetExpr(conversion::fromStringToWString(func_x));
+- p2.SetExpr(conversion::fromStringToWString(func_y));
+- p3.SetExpr(conversion::fromStringToWString(func_z));
+- p4.SetExpr(conversion::fromStringToWString(func_a));
++ p1.SetExpr(func_x);
++ p2.SetExpr(func_y);
++ p3.SetExpr(func_z);
++ p4.SetExpr(func_a);
+
+ double newx=0,newy=0,newz=0,newa=255;
+ errorMessage = "";
+@@ -580,7 +579,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ setPerVertexVariables(p,m.cm);
+
+ // set expression to calc with parser
+- p.SetExpr(conversion::fromStringToWString(func_q));
++ p.SetExpr(func_q);
+
+ // every parser variables is related to vertex coord and attributes.
+ time_t start = clock();
+@@ -596,7 +595,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ try {
+ (*vi).Q() = p.Eval();
+ } catch(Parser::exception_type &e) {
+- errorMessage = conversion::fromWStringToString(e.GetMsg()).c_str();
++ errorMessage = e.GetMsg().c_str();
+ return false;
+ }
+ }
+@@ -642,8 +641,8 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ setPerVertexVariables(pv,m.cm);
+
+ // set expression to calc with parser
+- pu.SetExpr(conversion::fromStringToWString(func_u));
+- pv.SetExpr(conversion::fromStringToWString(func_v));
++ pu.SetExpr(func_u);
++ pv.SetExpr(func_v);
+
+ // every parser variables is related to vertex coord and attributes.
+ time_t start = clock();
+@@ -660,7 +659,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ (*vi).T().U() = pu.Eval();
+ (*vi).T().V() = pv.Eval();
+ } catch(Parser::exception_type &e) {
+- errorMessage = conversion::fromWStringToString(e.GetMsg()).c_str();
++ errorMessage = e.GetMsg().c_str();
+ return false;
+ }
+ }
+@@ -695,9 +694,9 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ setPerFaceVariables(pu2,m.cm); setPerFaceVariables(pv2,m.cm);
+
+ // set expression to calc with parser
+- pu0.SetExpr(conversion::fromStringToWString(func_u0)); pv0.SetExpr(conversion::fromStringToWString(func_v0));
+- pu1.SetExpr(conversion::fromStringToWString(func_u1)); pv1.SetExpr(conversion::fromStringToWString(func_v1));
+- pu2.SetExpr(conversion::fromStringToWString(func_u2)); pv2.SetExpr(conversion::fromStringToWString(func_v2));
++ pu0.SetExpr(func_u0); pv0.SetExpr(func_v0);
++ pu1.SetExpr(func_u1); pv1.SetExpr(func_v1);
++ pu2.SetExpr(func_u2); pv2.SetExpr(func_v2);
+
+ // every parser variables is related to vertex coord and attributes.
+ time_t start = clock();
+@@ -715,7 +714,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ (*fi).WT(1).U() = pu1.Eval(); (*fi).WT(1).V() = pv1.Eval();
+ (*fi).WT(2).U() = pu2.Eval(); (*fi).WT(2).V() = pv2.Eval();
+ } catch(Parser::exception_type &e) {
+- errorMessage = conversion::fromWStringToString(e.GetMsg()).c_str();
++ errorMessage = e.GetMsg().c_str();
+ return false;
+ }
+ }
+@@ -750,10 +749,10 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ setPerFaceVariables(p3,m.cm);
+ setPerFaceVariables(p4,m.cm);
+
+- p1.SetExpr(conversion::fromStringToWString(func_r));
+- p2.SetExpr(conversion::fromStringToWString(func_g));
+- p3.SetExpr(conversion::fromStringToWString(func_b));
+- p4.SetExpr(conversion::fromStringToWString(func_a));
++ p1.SetExpr(func_r);
++ p2.SetExpr(func_g);
++ p3.SetExpr(func_b);
++ p4.SetExpr(func_a);
+
+ // RGB is related to every face
+ CMeshO::FaceIterator fi;
+@@ -809,7 +808,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ setPerFaceVariables(pf,m.cm);
+
+ // set expression to calc with parser
+- pf.SetExpr(conversion::fromStringToWString(func_q));
++ pf.SetExpr(func_q);
+
+ time_t start = clock();
+ errorMessage = "";
+@@ -872,7 +871,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ qDebug("Now mesh has %lu vertex float attribute",AllVertexAttribName.size());
+ Parser p;
+ setPerVertexVariables(p,m.cm);
+- p.SetExpr(conversion::fromStringToWString(expr));
++ p.SetExpr(expr);
+
+ time_t start = clock();
+
+@@ -886,7 +885,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ try {
+ h[vi] = p.Eval();
+ } catch(Parser::exception_type &e) {
+- errorMessage = conversion::fromWStringToString(e.GetMsg()).c_str();
++ errorMessage = e.GetMsg().c_str();
+ return false;
+ }
+ }
+@@ -926,7 +925,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ h = tri::Allocator<CMeshO>::AddPerFaceAttribute<float> (m.cm,name);
+ Parser p;
+ setPerFaceVariables(p,m.cm);
+- p.SetExpr(conversion::fromStringToWString(expr));
++ p.SetExpr(expr);
+
+ time_t start = clock();
+
+@@ -940,7 +939,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ try {
+ h[fi] = p.Eval();
+ } catch(Parser::exception_type &e) {
+- errorMessage = conversion::fromWStringToString(e.GetMsg()).c_str();
++ errorMessage = e.GetMsg().c_str();
+ return false;
+ }
+ }
+@@ -1018,11 +1017,11 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+
+ Parser p;
+ double x,y,z;
+- p.DefineVar(conversion::fromStringToWString("x"), &x);
+- p.DefineVar(conversion::fromStringToWString("y"), &y);
+- p.DefineVar(conversion::fromStringToWString("z"), &z);
++ p.DefineVar("x", &x);
++ p.DefineVar("y", &y);
++ p.DefineVar("z", &z);
+ std::string expr = par.getString("expr").toStdString();
+- p.SetExpr(conversion::fromStringToWString(expr));
++ p.SetExpr(expr);
+ Log("Filling a Volume of %i %i %i",siz[0],siz[1],siz[2]);
+ volume.Init(siz,RangeBBox);
+ for(double i=0;i<siz[0];i++)
+@@ -1035,7 +1034,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ try {
+ volume.Val(i,j,k)=p.Eval();
+ } catch(Parser::exception_type &e) {
+- errorMessage = conversion::fromWStringToString(e.GetMsg()).c_str();
++ errorMessage = e.GetMsg().c_str();
+ return false;
+ }
+ }
+@@ -1100,7 +1099,7 @@ bool FilterFunctionPlugin::applyFilter(QAction *filter, MeshDocument &md, RichPa
+ void FilterFunctionPlugin::showParserError(const QString &s, Parser::exception_type &e)
+ {
+ errorMessage += s;
+- errorMessage += conversion::fromWStringToString(e.GetMsg()).c_str();
++ errorMessage += e.GetMsg().c_str();
+ errorMessage += "\n";
+ }
+
+@@ -1260,23 +1259,23 @@ void FilterFunctionPlugin::setAttributes(CMeshO::FaceIterator &fi, CMeshO &m)
+ // and q for quality
+ void FilterFunctionPlugin::setPerVertexVariables(Parser &p, CMeshO &m)
+ {
+- p.DefineVar(conversion::fromStringToWString("x"), &x);
+- p.DefineVar(conversion::fromStringToWString("y"), &y);
+- p.DefineVar(conversion::fromStringToWString("z"), &z);
+- p.DefineVar(conversion::fromStringToWString("nx"), &nx);
+- p.DefineVar(conversion::fromStringToWString("ny"), &ny);
+- p.DefineVar(conversion::fromStringToWString("nz"), &nz);
+- p.DefineVar(conversion::fromStringToWString("r"), &r);
+- p.DefineVar(conversion::fromStringToWString("g"), &g);
+- p.DefineVar(conversion::fromStringToWString("b"), &b);
+- p.DefineVar(conversion::fromStringToWString("a"), &a);
+- p.DefineVar(conversion::fromStringToWString("q"), &q);
+- p.DefineVar(conversion::fromStringToWString("vi"),&v);
+- p.DefineVar(conversion::fromStringToWString("rad"),&rad);
+- p.DefineVar(conversion::fromStringToWString("vtu"),&vtu);
+- p.DefineVar(conversion::fromStringToWString("vtv"),&vtv);
+- p.DefineVar(conversion::fromStringToWString("ti"), &ti);
+- p.DefineVar(conversion::fromStringToWString("vsel"), &vsel);
++ p.DefineVar("x", &x);
++ p.DefineVar("y", &y);
++ p.DefineVar("z", &z);
++ p.DefineVar("nx", &nx);
++ p.DefineVar("ny", &ny);
++ p.DefineVar("nz", &nz);
++ p.DefineVar("r", &r);
++ p.DefineVar("g", &g);
++ p.DefineVar("b", &b);
++ p.DefineVar("a", &a);
++ p.DefineVar("q", &q);
++ p.DefineVar("vi",&v);
++ p.DefineVar("rad",&rad);
++ p.DefineVar("vtu",&vtu);
++ p.DefineVar("vtv",&vtv);
++ p.DefineVar("ti", &ti);
++ p.DefineVar("vsel", &vsel);
+
+ // define var for user-defined attributes (if any exists)
+ // if vector is empty, code won't be executed
+@@ -1294,7 +1293,7 @@ void FilterFunctionPlugin::setPerVertexVariables(Parser &p, CMeshO &m)
+ v_handlers.push_back(hh);
+ v_attrNames.push_back(AllVertexAttribName[i]);
+ v_attrValue.push_back(0);
+- p.DefineVar(conversion::fromStringToWString(v_attrNames.back()), &v_attrValue.back());
++ p.DefineVar(v_attrNames.back(), &v_attrValue.back());
+ qDebug("Adding custom per vertex float variable %s",v_attrNames.back().c_str());
+ }
+ AllVertexAttribName.clear();
+@@ -1307,15 +1306,15 @@ void FilterFunctionPlugin::setPerVertexVariables(Parser &p, CMeshO &m)
+
+ v3_attrValue.push_back(0);
+ v3_attrNames.push_back(AllVertexAttribName[i]+"_x");
+- p.DefineVar(conversion::fromStringToWString(v3_attrNames.back()), &v3_attrValue.back());
++ p.DefineVar(v3_attrNames.back(), &v3_attrValue.back());
+
+ v3_attrValue.push_back(0);
+ v3_attrNames.push_back(AllVertexAttribName[i]+"_y");
+- p.DefineVar(conversion::fromStringToWString(v3_attrNames.back()), &v3_attrValue.back());
++ p.DefineVar(v3_attrNames.back(), &v3_attrValue.back());
+
+ v3_attrValue.push_back(0);
+ v3_attrNames.push_back(AllVertexAttribName[i]+"_z");
+- p.DefineVar(conversion::fromStringToWString(v3_attrNames.back()), &v3_attrValue.back());
++ p.DefineVar(v3_attrNames.back(), &v3_attrValue.back());
+ qDebug("Adding custom per vertex Point3f variable %s",v3_attrNames.back().c_str());
+ }
+ }
+@@ -1325,85 +1324,85 @@ void FilterFunctionPlugin::setPerVertexVariables(Parser &p, CMeshO &m)
+ void FilterFunctionPlugin::setPerFaceVariables(Parser &p, CMeshO &m)
+ {
+ // coord of the three vertices within a face
+- p.DefineVar(conversion::fromStringToWString("x0"), &x0);
+- p.DefineVar(conversion::fromStringToWString("y0"), &y0);
+- p.DefineVar(conversion::fromStringToWString("z0"), &z0);
+- p.DefineVar(conversion::fromStringToWString("x1"), &x1);
+- p.DefineVar(conversion::fromStringToWString("y1"), &y1);
+- p.DefineVar(conversion::fromStringToWString("z1"), &z1);
+- p.DefineVar(conversion::fromStringToWString("x2"), &x2);
+- p.DefineVar(conversion::fromStringToWString("y2"), &y2);
+- p.DefineVar(conversion::fromStringToWString("z2"), &z2);
++ p.DefineVar("x0", &x0);
++ p.DefineVar("y0", &y0);
++ p.DefineVar("z0", &z0);
++ p.DefineVar("x1", &x1);
++ p.DefineVar("y1", &y1);
++ p.DefineVar("z1", &z1);
++ p.DefineVar("x2", &x2);
++ p.DefineVar("y2", &y2);
++ p.DefineVar("z2", &z2);
+
+ // attributes of the vertices
+ // normals:
+- p.DefineVar(conversion::fromStringToWString("nx0"), &nx0);
+- p.DefineVar(conversion::fromStringToWString("ny0"), &ny0);
+- p.DefineVar(conversion::fromStringToWString("nz0"), &nz0);
++ p.DefineVar("nx0", &nx0);
++ p.DefineVar("ny0", &ny0);
++ p.DefineVar("nz0", &nz0);
+
+- p.DefineVar(conversion::fromStringToWString("nx1"), &nx1);
+- p.DefineVar(conversion::fromStringToWString("ny1"), &ny1);
+- p.DefineVar(conversion::fromStringToWString("nz1"), &nz1);
++ p.DefineVar("nx1", &nx1);
++ p.DefineVar("ny1", &ny1);
++ p.DefineVar("nz1", &nz1);
+
+- p.DefineVar(conversion::fromStringToWString("nx2"), &nx2);
+- p.DefineVar(conversion::fromStringToWString("ny2"), &ny2);
+- p.DefineVar(conversion::fromStringToWString("nz2"), &nz2);
++ p.DefineVar("nx2", &nx2);
++ p.DefineVar("ny2", &ny2);
++ p.DefineVar("nz2", &nz2);
+
+ // colors:
+- p.DefineVar(conversion::fromStringToWString("r0"), &r0);
+- p.DefineVar(conversion::fromStringToWString("g0"), &g0);
+- p.DefineVar(conversion::fromStringToWString("b0"), &b0);
+- p.DefineVar(conversion::fromStringToWString("a0"), &a0);
++ p.DefineVar("r0", &r0);
++ p.DefineVar("g0", &g0);
++ p.DefineVar("b0", &b0);
++ p.DefineVar("a0", &a0);
+
+- p.DefineVar(conversion::fromStringToWString("r1"), &r1);
+- p.DefineVar(conversion::fromStringToWString("g1"), &g1);
+- p.DefineVar(conversion::fromStringToWString("b1"), &b1);
+- p.DefineVar(conversion::fromStringToWString("a1"), &a1);
++ p.DefineVar("r1", &r1);
++ p.DefineVar("g1", &g1);
++ p.DefineVar("b1", &b1);
++ p.DefineVar("a1", &a1);
+
+- p.DefineVar(conversion::fromStringToWString("r2"), &r2);
+- p.DefineVar(conversion::fromStringToWString("g2"), &g2);
+- p.DefineVar(conversion::fromStringToWString("b2"), &b2);
+- p.DefineVar(conversion::fromStringToWString("a2"), &a2);
++ p.DefineVar("r2", &r2);
++ p.DefineVar("g2", &g2);
++ p.DefineVar("b2", &b2);
++ p.DefineVar("a2", &a2);
+
+ // quality
+- p.DefineVar(conversion::fromStringToWString("q0"), &q0);
+- p.DefineVar(conversion::fromStringToWString("q1"), &q1);
+- p.DefineVar(conversion::fromStringToWString("q2"), &q2);
++ p.DefineVar("q0", &q0);
++ p.DefineVar("q1", &q1);
++ p.DefineVar("q2", &q2);
+
+ // face color
+- p.DefineVar(conversion::fromStringToWString("fr"), &fr);
+- p.DefineVar(conversion::fromStringToWString("fg"), &fg);
+- p.DefineVar(conversion::fromStringToWString("fb"), &fb);
+- p.DefineVar(conversion::fromStringToWString("fa"), &fa);
++ p.DefineVar("fr", &fr);
++ p.DefineVar("fg", &fg);
++ p.DefineVar("fb", &fb);
++ p.DefineVar("fa", &fa);
+
+ // face normal
+- p.DefineVar(conversion::fromStringToWString("fnx"), &fnx);
+- p.DefineVar(conversion::fromStringToWString("fny"), &fny);
+- p.DefineVar(conversion::fromStringToWString("fnz"), &fnz);
++ p.DefineVar("fnx", &fnx);
++ p.DefineVar("fny", &fny);
++ p.DefineVar("fnz", &fnz);
+
+ // face quality
+- p.DefineVar(conversion::fromStringToWString("fq"), &fq);
++ p.DefineVar("fq", &fq);
+
+ // index
+- p.DefineVar(conversion::fromStringToWString("fi"),&f);
+- p.DefineVar(conversion::fromStringToWString("vi0"),&v0i);
+- p.DefineVar(conversion::fromStringToWString("vi1"),&v1i);
+- p.DefineVar(conversion::fromStringToWString("vi2"),&v2i);
++ p.DefineVar("fi",&f);
++ p.DefineVar("vi0",&v0i);
++ p.DefineVar("vi1",&v1i);
++ p.DefineVar("vi2",&v2i);
+
+ // texture
+- p.DefineVar(conversion::fromStringToWString("wtu0"),&wtu0);
+- p.DefineVar(conversion::fromStringToWString("wtv0"),&wtv0);
+- p.DefineVar(conversion::fromStringToWString("wtu1"),&wtu1);
+- p.DefineVar(conversion::fromStringToWString("wtv1"),&wtv1);
+- p.DefineVar(conversion::fromStringToWString("wtu2"),&wtu2);
+- p.DefineVar(conversion::fromStringToWString("wtv2"),&wtv2);
+- p.DefineVar(conversion::fromStringToWString("ti"), &ti);
++ p.DefineVar("wtu0",&wtu0);
++ p.DefineVar("wtv0",&wtv0);
++ p.DefineVar("wtu1",&wtu1);
++ p.DefineVar("wtv1",&wtv1);
++ p.DefineVar("wtu2",&wtu2);
++ p.DefineVar("wtv2",&wtv2);
++ p.DefineVar("ti", &ti);
+
+ //selection
+- p.DefineVar(conversion::fromStringToWString("vsel0"), &vsel0);
+- p.DefineVar(conversion::fromStringToWString("vsel1"), &vsel1);
+- p.DefineVar(conversion::fromStringToWString("vsel2"), &vsel2);
+- p.DefineVar(conversion::fromStringToWString("fsel"), &fsel);
++ p.DefineVar("vsel0", &vsel0);
++ p.DefineVar("vsel1", &vsel1);
++ p.DefineVar("vsel2", &vsel2);
++ p.DefineVar("fsel", &fsel);
+
+ // define var for user-defined attributes (if any exists)
+ // if vector is empty, code won't be executed
+@@ -1418,7 +1417,7 @@ void FilterFunctionPlugin::setPerFaceVariables(Parser &p, CMeshO &m)
+ f_handlers.push_back(hh);
+ f_attrNames.push_back(AllFaceAttribName[i]);
+ f_attrValue.push_back(0);
+- p.DefineVar(conversion::fromStringToWString(f_attrNames.back()), &f_attrValue.back());
++ p.DefineVar(f_attrNames.back(), &f_attrValue.back());
+ }
+
+ }
+diff --git a/src/meshlabplugins/filter_func/filter_refine.h b/src/meshlabplugins/filter_func/filter_refine.h
+index 81a28cac..534bad38 100644
+--- a/src/meshlabplugins/filter_func/filter_refine.h
++++ b/src/meshlabplugins/filter_func/filter_refine.h
+@@ -37,9 +37,9 @@ public :
+ MidPointCustom(MESH_TYPE &_m,std::string expr1, std::string expr2, std::string expr3, bool &error, std::string &msg):m(_m)
+ {
+ // expr1, expr2, expr3 are parameters for x,y and z coord respectively
+- this->p1.SetExpr(conversion::fromStringToWString(expr1));
+- this->p2.SetExpr(conversion::fromStringToWString(expr2));
+- this->p3.SetExpr(conversion::fromStringToWString(expr3));
++ this->p1.SetExpr(expr1);
++ this->p2.SetExpr(expr2);
++ this->p3.SetExpr(expr3);
+
+ this->setVars(p1);
+ this->setVars(p2);
+@@ -53,7 +53,7 @@ public :
+ p2.Eval();
+ p3.Eval();
+ } catch(Parser::exception_type &e) {
+- msg = conversion::fromWStringToString(e.GetMsg()).c_str();
++ msg = e.GetMsg().c_str();
+ error = true;
+ }
+ }
+@@ -150,12 +150,12 @@ protected:
+ // parser variables
+ void setVars(Parser &p)
+ {
+- p.DefineVar(conversion::fromStringToWString("x0"), &x0);
+- p.DefineVar(conversion::fromStringToWString("y0"), &y0);
+- p.DefineVar(conversion::fromStringToWString("z0"), &z0);
+- p.DefineVar(conversion::fromStringToWString("x1"), &x1);
+- p.DefineVar(conversion::fromStringToWString("y1"), &y1);
+- p.DefineVar(conversion::fromStringToWString("z1"), &z1);
++ p.DefineVar("x0", &x0);
++ p.DefineVar("y0", &y0);
++ p.DefineVar("z0", &z0);
++ p.DefineVar("x1", &x1);
++ p.DefineVar("y1", &y1);
++ p.DefineVar("z1", &z1);
+ }
+ };
+
+@@ -168,7 +168,7 @@ public:
+ CustomEdge(std::string expr, bool &error, std::string &msg)
+ {
+ // set expression and variables needed by parser
+- this->p.SetExpr(conversion::fromStringToWString(expr));
++ this->p.SetExpr(expr);
+ this->setVars(p);
+ this->varDefined = false;
+
+@@ -176,7 +176,7 @@ public:
+ try {
+ p.Eval();
+ } catch(Parser::exception_type &e) {
+- msg = conversion::fromWStringToString(e.GetMsg()).c_str();
++ msg = e.GetMsg().c_str();
+ error = true;
+ }
+ }
+@@ -240,30 +240,30 @@ protected:
+ // parser variables
+ void setVars(Parser &p)
+ {
+- p.DefineVar(conversion::fromStringToWString("x0"), &x0);
+- p.DefineVar(conversion::fromStringToWString("y0"), &y0);
+- p.DefineVar(conversion::fromStringToWString("z0"), &z0);
+- p.DefineVar(conversion::fromStringToWString("x1"), &x1);
+- p.DefineVar(conversion::fromStringToWString("y1"), &y1);
+- p.DefineVar(conversion::fromStringToWString("z1"), &z1);
+-
+- p.DefineVar(conversion::fromStringToWString("nx0"), &nx0);
+- p.DefineVar(conversion::fromStringToWString("ny0"), &ny0);
+- p.DefineVar(conversion::fromStringToWString("nz0"), &nz0);
+-
+- p.DefineVar(conversion::fromStringToWString("nx1"), &nx1);
+- p.DefineVar(conversion::fromStringToWString("ny1"), &ny1);
+- p.DefineVar(conversion::fromStringToWString("nz1"), &nz1);
+-
+- p.DefineVar(conversion::fromStringToWString("r0"), &r0);
+- p.DefineVar(conversion::fromStringToWString("g0"), &g0);
+- p.DefineVar(conversion::fromStringToWString("b0"), &b0);
+-
+- p.DefineVar(conversion::fromStringToWString("r1"), &r1);
+- p.DefineVar(conversion::fromStringToWString("g1"), &g1);
+- p.DefineVar(conversion::fromStringToWString("b1"), &b1);
+-
+- p.DefineVar(conversion::fromStringToWString("q0"), &q0);
+- p.DefineVar(conversion::fromStringToWString("q1"), &q1);
++ p.DefineVar("x0", &x0);
++ p.DefineVar("y0", &y0);
++ p.DefineVar("z0", &z0);
++ p.DefineVar("x1", &x1);
++ p.DefineVar("y1", &y1);
++ p.DefineVar("z1", &z1);
++
++ p.DefineVar("nx0", &nx0);
++ p.DefineVar("ny0", &ny0);
++ p.DefineVar("nz0", &nz0);
++
++ p.DefineVar("nx1", &nx1);
++ p.DefineVar("ny1", &ny1);
++ p.DefineVar("nz1", &nz1);
++
++ p.DefineVar("r0", &r0);
++ p.DefineVar("g0", &g0);
++ p.DefineVar("b0", &b0);
++
++ p.DefineVar("r1", &r1);
++ p.DefineVar("g1", &g1);
++ p.DefineVar("b1", &b1);
++
++ p.DefineVar("q0", &q0);
++ p.DefineVar("q1", &q1);
+ }
+ };