Mercurial > hg > svcore
diff data/model/DenseThreeDimensionalModel.h @ 500:83eae5239db6
* Permit viewing (though not editing) colour 3d plot layer data in
the spreadsheet data viewer dialog
* Add somewhat simplistic RDF export for layers
* Fix display of peak frequencies in spectrum layer
* Fix (I hope) sizing of plugin parameter dialog
author | Chris Cannam |
---|---|
date | Tue, 02 Dec 2008 17:17:25 +0000 |
parents | 1405f4a2caf3 |
children | 55ad231c9db7 |
line wrap: on
line diff
--- a/data/model/DenseThreeDimensionalModel.h Fri Nov 28 15:45:20 2008 +0000 +++ b/data/model/DenseThreeDimensionalModel.h Tue Dec 02 17:17:25 2008 +0000 @@ -17,12 +17,15 @@ #define _DENSE_THREE_DIMENSIONAL_MODEL_H_ #include "Model.h" +#include "TabularModel.h" #include "base/ZoomConstraint.h" +#include "base/RealTime.h" #include <QMutex> #include <vector> -class DenseThreeDimensionalModel : public Model +class DenseThreeDimensionalModel : public Model, + public TabularModel { Q_OBJECT @@ -108,6 +111,54 @@ virtual int getCompletion() const = 0; + /* + TabularModel methods. + This class is non-editable -- subclasses may be editable. + Row and column are transposed for the tabular view (which is + "on its side"). + */ + + virtual int getRowCount() const { return getWidth(); } + virtual int getColumnCount() const { return getHeight() + 2; } + + virtual QString getHeading(int column) const + { + switch (column) { + case 0: return tr("Time"); + case 1: return tr("Frame"); + default: return getBinName(column - 2); + } + } + + virtual QVariant getData(int row, int column, int role) const + { + switch (column) { + case 0: { + RealTime rt = RealTime::frame2RealTime(row * getResolution(), + getSampleRate()); + return rt.toText().c_str(); + } + case 1: + return int(row * getResolution()); + default: + return getValueAt(row, column - 2); + } + } + + virtual bool isColumnTimeValue(int col) const { + return col < 2; + } + virtual SortType getSortType(int col) const { + return SortNumeric; + } + + virtual long getFrameForRow(int row) const { + return row * getSampleRate(); + } + virtual int getRowForFrame(long frame) const { + return frame / getSampleRate(); + } + protected: DenseThreeDimensionalModel() { } };