diff data/model/DenseTimeValueModel.cpp @ 838:33fca917c800

Add toDelimitedDataString alternative with frame extents
author Chris Cannam
date Wed, 09 Oct 2013 14:47:19 +0100
parents 5858cc462d0a
children e802e550a1f2
line wrap: on
line diff
--- a/data/model/DenseTimeValueModel.cpp	Wed Oct 09 14:45:21 2013 +0100
+++ b/data/model/DenseTimeValueModel.cpp	Wed Oct 09 14:47:19 2013 +0100
@@ -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");
+}