annotate layer/Colour3DPlotLayer.h @ 11:2d5005f2b3d9

* Rework handling of layer properties in file I/O -- we now get the individual layers to load and save them rather than doing it via generic property lists in the base class, so as to ensure we read and write meaningful values rather than generic int values requiring conversion.
author Chris Cannam
date Thu, 19 Jan 2006 12:54:38 +0000
parents 37b110168acf
children 0183ebb725ca
rev   line source
Chris@0 1 /* -*- c-basic-offset: 4 -*- vi:set ts=8 sts=4 sw=4: */
Chris@0 2
Chris@0 3 /*
Chris@0 4 A waveform viewer and audio annotation editor.
Chris@5 5 Chris Cannam, Queen Mary University of London, 2005-2006
Chris@0 6
Chris@0 7 This is experimental software. Not for distribution.
Chris@0 8 */
Chris@0 9
Chris@0 10 #ifndef _COLOUR_3D_PLOT_H_
Chris@0 11 #define _COLOUR_3D_PLOT_H_
Chris@0 12
Chris@0 13 #include "base/Layer.h"
Chris@0 14
Chris@0 15 #include "model/DenseThreeDimensionalModel.h"
Chris@0 16
Chris@0 17 class View;
Chris@0 18 class QPainter;
Chris@0 19 class QImage;
Chris@0 20
Chris@0 21 /**
Chris@0 22 * This is a view that displays dense 3-D data (time, some sort of
Chris@0 23 * binned y-axis range, value) as a colour plot with value mapped to
Chris@0 24 * colour range. Its source is a DenseThreeDimensionalModel.
Chris@0 25 *
Chris@0 26 * This was the original implementation for the spectrogram view, but
Chris@0 27 * it was replaced with a more efficient implementation that derived
Chris@0 28 * the spectrogram itself from a DenseTimeValueModel instead of using
Chris@0 29 * a three-dimensional model. This class is retained in case it
Chris@0 30 * becomes useful, but it will probably need some cleaning up if it's
Chris@0 31 * ever actually used.
Chris@0 32 */
Chris@0 33
Chris@0 34 class Colour3DPlotLayer : public Layer
Chris@0 35 {
Chris@0 36 Q_OBJECT
Chris@0 37
Chris@0 38 public:
Chris@0 39 Colour3DPlotLayer(View *w);
Chris@0 40 ~Colour3DPlotLayer();
Chris@0 41
Chris@0 42 virtual const ZoomConstraint *getZoomConstraint() const { return m_model; }
Chris@0 43 virtual const Model *getModel() const { return m_model; }
Chris@0 44 virtual void paint(QPainter &paint, QRect rect) const;
Chris@0 45
Chris@0 46 void setModel(const DenseThreeDimensionalModel *model);
Chris@0 47
Chris@0 48
Chris@0 49 /*
Chris@0 50 virtual PropertyList getProperties() const;
Chris@0 51 virtual PropertyType getPropertyType(const PropertyName &) const;
Chris@0 52 virtual int getPropertyRangeAndValue(const PropertyName &,
Chris@0 53 int *min, int *max) const;
Chris@0 54 virtual QString getPropertyValueLabel(const PropertyName &,
Chris@0 55 int value) const;
Chris@0 56 virtual void setProperty(const PropertyName &, int value);
Chris@0 57 */
Chris@0 58
Chris@0 59 virtual QString getPropertyContainerIconName() const { return "colour3d"; }
Chris@0 60
Chris@11 61 void setProperties(const QXmlAttributes &attributes) { }
Chris@11 62
Chris@0 63 protected slots:
Chris@0 64 void cacheInvalid();
Chris@0 65 void cacheInvalid(size_t startFrame, size_t endFrame);
Chris@0 66
Chris@0 67 protected:
Chris@0 68 const DenseThreeDimensionalModel *m_model; // I do not own this
Chris@0 69
Chris@0 70 mutable QImage *m_cache;
Chris@0 71 };
Chris@0 72
Chris@0 73 #endif