From c6dbfc8f7e7f800feaa3b3f667c5e80b37025efe Mon Sep 17 00:00:00 2001 From: alemuntoni Date: Thu, 27 Jan 2022 10:30:59 +0100 Subject: [PATCH] save matrix in single row on mlp --- src/meshlabplugins/io_base/load_project.cpp | 19 ++++++++----------- src/meshlabplugins/io_base/save_project.cpp | 14 +++++--------- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/src/meshlabplugins/io_base/load_project.cpp b/src/meshlabplugins/io_base/load_project.cpp index c2a3b3927..858f35558 100644 --- a/src/meshlabplugins/io_base/load_project.cpp +++ b/src/meshlabplugins/io_base/load_project.cpp @@ -227,19 +227,16 @@ std::vector loadMLP( QDomNode tr = mesh.firstChildElement("MLMatrix44"); if (!tr.isNull()) { - vcg::Matrix44f trm; if (tr.childNodes().size() == 1) { if (!binary) { - auto * const v = md.mm()->cm.Tr.V(); - auto const rows = tr.firstChild().nodeValue().split("\n", QString::SkipEmptyParts); - auto i = 0u; - for (auto const & row: rows) { - { - auto const values = row.split(" ", QString::SkipEmptyParts); - for (auto const & value: values) { - if (i >= 16u) break; - v[i++] = value.toFloat(); - } + Scalarm* v = md.mm()->cm.Tr.V(); + const QStringList rows = tr.firstChild().nodeValue().split("\n", Qt::SkipEmptyParts); + unsigned int i = 0; + for (const QString& row: rows) { + const QStringList values = row.split(" ", Qt::SkipEmptyParts); + for (const QString& value: values) { + if (i >= 16u) break; + v[i++] = value.toFloat(); } } } diff --git a/src/meshlabplugins/io_base/save_project.cpp b/src/meshlabplugins/io_base/save_project.cpp index 2ea0a6000..2d3e7c4e1 100644 --- a/src/meshlabplugins/io_base/save_project.cpp +++ b/src/meshlabplugins/io_base/save_project.cpp @@ -7,10 +7,6 @@ #include #include -#include // std::copy -#include // std::ostream_iterator -#include // std::ostringstream - namespace mlp { QDomElement matrix44mToXML(const Matrix44m &m, bool binary, QDomDocument &doc) @@ -22,11 +18,11 @@ QDomElement matrix44mToXML(const Matrix44m &m, bool binary, QDomDocument &doc) QDomText nd = doc.createTextNode(QString(value)); } else { - std::ostringstream matrix; - std::copy(m.V(), m.V() + 16u, - std::ostream_iterator(matrix, " ")); - //std::experimental::make_ostream_joiner(matrix, ", ")); // with - nd = doc.createTextNode(QString(matrix.str().c_str())); + QString row[4]; + for (int i = 0; i < 4; ++i) + row[i] = QString("%1 %2 %3 %4 ").arg(m[i][0]).arg(m[i][1]).arg(m[i][2]).arg(m[i][3]); + + nd = doc.createTextNode("\n" + row[0] + row[1] + row[2] + row[3] + "\n"); } matrixElem.appendChild(nd);