Mercurial > hg > svcore
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"); +}