diff data/model/DenseTimeValueModel.cpp @ 841:226733f3cf3f tonioni

Merge from default branch
author Chris Cannam
date Fri, 22 Nov 2013 10:37:28 +0000
parents 33fca917c800
children e802e550a1f2
line wrap: on
line diff
--- a/data/model/DenseTimeValueModel.cpp	Wed Jul 17 16:01:28 2013 +0100
+++ b/data/model/DenseTimeValueModel.cpp	Fri Nov 22 10:37:28 2013 +0000
@@ -16,6 +16,8 @@
 #include "DenseTimeValueModel.h"
 #include "base/PlayParameterRepository.h"
 
+#include <QStringList>
+
 DenseTimeValueModel::DenseTimeValueModel()
 {
     PlayParameterRepository::getInstance()->addPlayable(this);
@@ -26,3 +28,36 @@
     PlayParameterRepository::getInstance()->removePlayable(this);
 }
 	
+QString
+DenseTimeValueModel::toDelimitedDataString(QString delimiter, size_t f0, size_t f1) const
+{
+    size_t ch = getChannelCount();
+
+    std::cerr << "f0 = " << f0 << ", f1 = " << f1 << std::endl;
+
+    if (f1 <= f0) return "";
+
+    float **all = new float *[ch];
+    for (size_t c = 0; c < ch; ++c) {
+        all[c] = new float[f1 - f0];
+    }
+
+    size_t n = getData(0, ch - 1, f0, f1 - f0, all);
+
+    QStringList list;
+    for (size_t i = 0; i < n; ++i) {
+        QStringList parts;
+        parts << QString("%1").arg(f0 + i);
+        for (size_t c = 0; c < ch; ++c) {
+            parts << QString("%1").arg(all[c][i]);
+        }
+        list << parts.join(delimiter);
+    }
+
+    for (size_t c = 0; c < ch; ++c) {
+        delete[] all[c];
+    }
+    delete[] all;
+
+    return list.join("\n");
+}