lbajardsilogic@0: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@0: lbajardsilogic@0: /* lbajardsilogic@0: Sonic Visualiser lbajardsilogic@0: An audio file viewer and annotation editor. lbajardsilogic@0: Centre for Digital Music, Queen Mary, University of London. lbajardsilogic@0: This file copyright 2006 Chris Cannam. lbajardsilogic@0: lbajardsilogic@0: This program is free software; you can redistribute it and/or lbajardsilogic@0: modify it under the terms of the GNU General Public License as lbajardsilogic@0: published by the Free Software Foundation; either version 2 of the lbajardsilogic@0: License, or (at your option) any later version. See the file lbajardsilogic@0: COPYING included with this distribution for more information. lbajardsilogic@0: */ lbajardsilogic@0: lbajardsilogic@0: #ifndef _DENSE_TIME_VALUE_MODEL_H_ lbajardsilogic@0: #define _DENSE_TIME_VALUE_MODEL_H_ lbajardsilogic@0: lbajardsilogic@0: #include lbajardsilogic@0: lbajardsilogic@0: #include "Model.h" lbajardsilogic@0: lbajardsilogic@0: /** lbajardsilogic@0: * Base class for models containing dense two-dimensional data (value lbajardsilogic@0: * against time). For example, audio waveform data. lbajardsilogic@0: */ lbajardsilogic@0: lbajardsilogic@0: class DenseTimeValueModel : public Model lbajardsilogic@0: { lbajardsilogic@0: Q_OBJECT lbajardsilogic@0: lbajardsilogic@0: public: lbajardsilogic@0: DenseTimeValueModel(); lbajardsilogic@0: lbajardsilogic@0: /** lbajardsilogic@0: * Return the minimum possible value found in this model type. lbajardsilogic@0: * (That is, the minimum that would be valid, not the minimum lbajardsilogic@0: * actually found in a particular model). lbajardsilogic@0: */ lbajardsilogic@0: virtual float getValueMinimum() const = 0; lbajardsilogic@0: lbajardsilogic@0: /** lbajardsilogic@0: * Return the minimum possible value found in this model type. lbajardsilogic@0: * (That is, the minimum that would be valid, not the minimum lbajardsilogic@0: * actually found in a particular model). lbajardsilogic@0: */ lbajardsilogic@0: virtual float getValueMaximum() const = 0; lbajardsilogic@0: lbajardsilogic@0: /** lbajardsilogic@0: * Return the number of distinct channels for this model. lbajardsilogic@0: */ lbajardsilogic@0: virtual size_t getChannelCount() const = 0; lbajardsilogic@0: lbajardsilogic@0: /** lbajardsilogic@0: * Get the specified set of samples from the given channel of the lbajardsilogic@0: * model in single-precision floating-point format. Return the lbajardsilogic@0: * number of samples actually retrieved. lbajardsilogic@0: * If the channel is given as -1, mix all available channels and lbajardsilogic@0: * return the result. lbajardsilogic@0: */ lbajardsilogic@0: virtual size_t getValues(int channel, size_t start, size_t end, lbajardsilogic@0: float *buffer) const = 0; lbajardsilogic@0: lbajardsilogic@0: /** lbajardsilogic@0: * Get the specified set of samples from the given channel of the lbajardsilogic@0: * model in double-precision floating-point format. Return the lbajardsilogic@0: * number of samples actually retrieved. lbajardsilogic@0: * If the channel is given as -1, mix all available channels and lbajardsilogic@0: * return the result. lbajardsilogic@0: */ lbajardsilogic@0: virtual size_t getValues(int channel, size_t start, size_t end, lbajardsilogic@0: double *buffer) const = 0; lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: #endif