comparison data/model/TimeFrequencyBoxModel.h @ 1786:a72921e2194f time-frequency-boxes

Ensure CSV-style export from time-freq box model is in the expected format
author Chris Cannam
date Fri, 20 Sep 2019 11:24:47 +0100
parents 894c2a780444
children baafe1bb7e51
comparison
equal deleted inserted replaced
1785:894c2a780444 1786:a72921e2194f
206 int getRowCount() const override { 206 int getRowCount() const override {
207 return m_events.count(); 207 return m_events.count();
208 } 208 }
209 209
210 int getColumnCount() const override { 210 int getColumnCount() const override {
211 return 5; 211 return 6;
212 } 212 }
213 213
214 bool isColumnTimeValue(int column) const override { 214 bool isColumnTimeValue(int column) const override {
215 // NB duration is not a "time value" -- that's for columns 215 // NB duration is not a "time value" -- that's for columns
216 // whose sort ordering is exactly that of the frame time 216 // whose sort ordering is exactly that of the frame time
232 QString getHeading(int column) const override { 232 QString getHeading(int column) const override {
233 switch (column) { 233 switch (column) {
234 case 0: return tr("Time"); 234 case 0: return tr("Time");
235 case 1: return tr("Frame"); 235 case 1: return tr("Frame");
236 case 2: return tr("Duration"); 236 case 2: return tr("Duration");
237 case 3: return tr("Minimum Frequency"); 237 case 3: return tr("Min Freq");
238 case 4: return tr("Maximum Frequency"); 238 case 4: return tr("Max Freq");
239 case 5: return tr("Label"); 239 case 5: return tr("Label");
240 default: return tr("Unknown"); 240 default: return tr("Unknown");
241 } 241 }
242 } 242 }
243 243
321 321
322 QString toDelimitedDataString(QString delimiter, 322 QString toDelimitedDataString(QString delimiter,
323 DataExportOptions options, 323 DataExportOptions options,
324 sv_frame_t startFrame, 324 sv_frame_t startFrame,
325 sv_frame_t duration) const override { 325 sv_frame_t duration) const override {
326 return m_events.toDelimitedDataString 326
327 (delimiter, 327 // We need a custom format here
328 options, 328
329 startFrame, 329 EventVector ee = m_events.getEventsSpanning(startFrame, duration);
330 duration, 330
331 m_sampleRate, 331 QString s;
332 m_resolution, 332
333 Event().withValue(0.f).withDuration(m_resolution)); 333 for (auto e: ee) {
334
335 QStringList list;
336
337 list << RealTime::frame2RealTime
338 (e.getFrame(), getSampleRate())
339 .toString().c_str()
340 << RealTime::frame2RealTime
341 (e.getFrame() + e.getDuration(), getSampleRate())
342 .toString().c_str()
343 << QString("%1").arg(e.getValue())
344 << QString("%1").arg(e.getValue() + fabsf(e.getLevel()));
345
346 if (e.getLabel() != "") {
347 list << e.getLabel();
348 }
349
350 s += list.join(delimiter) + "\n";
351 }
352
353 return s;
334 } 354 }
335 355
336 protected: 356 protected:
337 sv_samplerate_t m_sampleRate; 357 sv_samplerate_t m_sampleRate;
338 int m_resolution; 358 int m_resolution;