diff --git a/openbr/core/qtutils.cpp b/openbr/core/qtutils.cpp index aaccf0a..c18907b 100644 --- a/openbr/core/qtutils.cpp +++ b/openbr/core/qtutils.cpp @@ -399,33 +399,31 @@ void showFile(const QString &file) QString toString(const QVariant &variant) { - if (variant.canConvert(QVariant::String)) - return variant.toString(); - else if(variant.canConvert(QVariant::PointF)) { - QPointF pt = qvariant_cast(variant); - return QString("(%1,%2)").arg(QString::number(pt.x()), - QString::number(pt.y())); - } - else if (variant.canConvert(QVariant::RectF)) { + if (variant.canConvert(QVariant::List)) return toString(qvariant_cast(variant)); + else if (variant.canConvert(QVariant::String)) return variant.toString(); + else if (variant.canConvert(QVariant::PointF)) { + QPointF point = qvariant_cast(variant); + return QString("(%1,%2)").arg(QString::number(point.x()),QString::number(point.y())); + } else if (variant.canConvert(QVariant::RectF)) { QRectF rect = qvariant_cast(variant); return QString("(%1,%2,%3,%4)").arg(QString::number(rect.x()), QString::number(rect.y()), QString::number(rect.width()), QString::number(rect.height())); } - else if (variant.canConvert(QVariant::List)) { - QString ret = QString("["); - bool first = true; - foreach (const QVariant &i, variant.toList()) { - if (!first) - ret += ","; - else - first = false; - ret += toString(i); - } - ret += "]"; - return ret; - } + + return QString(); +} + +QString toString(const QVariantList &variantList) +{ + QStringList variants; + + foreach(const QVariant &variant, variantList) + variants.append(toString(variant)); + + if (!variants.isEmpty()) return "[" + variants.join(", ") + "]"; + return QString(); } diff --git a/openbr/core/qtutils.h b/openbr/core/qtutils.h index 9eb2c6c..3435b80 100644 --- a/openbr/core/qtutils.h +++ b/openbr/core/qtutils.h @@ -73,6 +73,7 @@ namespace QtUtils /**** Variant Utilities ****/ QString toString(const QVariant &variant); + QString toString(const QVariantList &variantList); template QVariantList toVariantList(const QList &list) diff --git a/openbr/openbr_plugin.cpp b/openbr/openbr_plugin.cpp index 4963867..02a1caa 100644 --- a/openbr/openbr_plugin.cpp +++ b/openbr/openbr_plugin.cpp @@ -58,16 +58,7 @@ QString File::flat() const foreach (const QString &key, keys) { const QVariant value = this->value(key); if (value.isNull()) values.append(key); - else { - if (QString(value.typeName()) == "QVariantList") { - QStringList variants; - foreach(const QVariant &variant, qvariant_cast(value)) { - variants.append(QtUtils::toString(variant)); - } - if (!variants.isEmpty()) values.append(key + "=[" + variants.join(", ") + "]"); - } - else values.append(key + "=" + QtUtils::toString(value)); - } + else values.append(key + "=" + QtUtils::toString(value)); } QString flat = name; diff --git a/openbr/plugins/stasm4.cpp b/openbr/plugins/stasm4.cpp index acb7911..a0c1b08 100644 --- a/openbr/plugins/stasm4.cpp +++ b/openbr/plugins/stasm4.cpp @@ -133,12 +133,14 @@ class StasmTransform : public UntrainableTransform if (!foundFace) { qWarning("No face found in %s.", qPrintable(src.file.fileName())); } else { + QList points; for (int i = 0; i < nLandmarks; i++) { QPointF point(landmarks[2 * i], landmarks[2 * i + 1]); - dst.file.appendPoint(point); - if (i == 38) dst.file.set("StasmRightEye",point); - else if (i == 39) dst.file.set("StasmLeftEye", point); + points.append(point); } + dst.file.set("StasmRightEye", points[38]); + dst.file.set("StasmLeftEye", points[39]); + dst.file.appendPoints(points); } } }; diff --git a/openbr/plugins/template.cpp b/openbr/plugins/template.cpp index cd68a32..5d92eba 100644 --- a/openbr/plugins/template.cpp +++ b/openbr/plugins/template.cpp @@ -9,7 +9,7 @@ namespace br * \brief Retains only the values for the keys listed, to reduce template size * \author Scott Klum \cite sklum */ -class RetainTransform : public UntrainableTransform +class KeepMetadataTransform : public UntrainableTransform { Q_OBJECT Q_PROPERTY(QStringList keys READ get_keys WRITE set_keys RESET reset_keys STORED false) @@ -24,7 +24,7 @@ class RetainTransform : public UntrainableTransform } }; -BR_REGISTER(Transform, RetainTransform) +BR_REGISTER(Transform, KeepMetadataTransform) /*! * \ingroup transforms