Chris@392: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@392: Chris@392: /* Chris@392: Sonic Visualiser Chris@392: An audio file viewer and annotation editor. Chris@392: Centre for Digital Music, Queen Mary, University of London. Chris@392: This file copyright 2006 Chris Cannam. Chris@392: Chris@392: This program is free software; you can redistribute it and/or Chris@392: modify it under the terms of the GNU General Public License as Chris@392: published by the Free Software Foundation; either version 2 of the Chris@392: License, or (at your option) any later version. See the file Chris@392: COPYING included with this distribution for more information. Chris@392: */ Chris@392: Chris@392: #ifndef _CSV_FORMAT_H_ Chris@392: #define _CSV_FORMAT_H_ Chris@392: Chris@392: #include Chris@392: #include Chris@392: Chris@392: class CSVFormat Chris@392: { Chris@392: public: Chris@392: enum ModelType { Chris@392: OneDimensionalModel, Chris@392: TwoDimensionalModel, Chris@392: ThreeDimensionalModel Chris@392: }; Chris@392: Chris@392: enum TimingType { Chris@392: ExplicitTiming, Chris@392: ImplicitTiming Chris@392: }; Chris@392: Chris@392: enum TimeUnits { Chris@392: TimeSeconds, Chris@392: TimeAudioFrames, Chris@392: TimeWindows Chris@392: }; Chris@392: Chris@392: CSVFormat(QString path); // guess format Chris@392: Chris@392: CSVFormat() : // arbitrary defaults Chris@392: m_modelType(TwoDimensionalModel), Chris@392: m_timingType(ExplicitTiming), Chris@392: m_timeUnits(TimeSeconds), Chris@392: m_separator(","), Chris@392: m_sampleRate(44100), Chris@392: m_windowSize(1024), Chris@392: m_behaviour(QString::KeepEmptyParts) Chris@392: { } Chris@392: Chris@392: ModelType getModelType() const { return m_modelType; } Chris@392: TimingType getTimingType() const { return m_timingType; } Chris@392: TimeUnits getTimeUnits() const { return m_timeUnits; } Chris@392: QString getSeparator() const { return m_separator; } Chris@392: size_t getSampleRate() const { return m_sampleRate; } Chris@392: size_t getWindowSize() const { return m_windowSize; } Chris@392: Chris@392: QString::SplitBehavior getSplitBehaviour() const { return m_behaviour; } Chris@392: Chris@392: void setModelType(ModelType t) { m_modelType = t; } Chris@392: void setTimingType(TimingType t) { m_timingType = t; } Chris@392: void setTimeUnits(TimeUnits t) { m_timeUnits = t; } Chris@392: void setSeparator(QString s) { m_separator = s; } Chris@392: void setSampleRate(size_t r) { m_sampleRate = r; } Chris@392: void setWindowSize(size_t s) { m_windowSize = s; } Chris@392: Chris@392: void setSplitBehaviour(QString::SplitBehavior b) { m_behaviour = b; } Chris@392: Chris@392: // only valid if constructor that guesses format was used: Chris@392: QList getExample() const { return m_example; } Chris@392: int getMaxExampleCols() const { return m_maxExampleCols; } Chris@392: Chris@392: protected: Chris@392: ModelType m_modelType; Chris@392: TimingType m_timingType; Chris@392: TimeUnits m_timeUnits; Chris@392: QString m_separator; Chris@392: size_t m_sampleRate; Chris@392: size_t m_windowSize; Chris@392: Chris@392: QString::SplitBehavior m_behaviour; Chris@392: Chris@392: QList m_example; Chris@392: int m_maxExampleCols; Chris@392: }; Chris@392: Chris@392: #endif