annotate layer/SliceLayer.h @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents 0387f53242b2
children
rev   line source
lbajardsilogic@0 1
lbajardsilogic@0 2 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
lbajardsilogic@0 3
lbajardsilogic@0 4 /*
lbajardsilogic@0 5 Sonic Visualiser
lbajardsilogic@0 6 An audio file viewer and annotation editor.
lbajardsilogic@0 7 Centre for Digital Music, Queen Mary, University of London.
lbajardsilogic@0 8 This file copyright 2006 QMUL.
lbajardsilogic@0 9
lbajardsilogic@0 10 This program is free software; you can redistribute it and/or
lbajardsilogic@0 11 modify it under the terms of the GNU General Public License as
lbajardsilogic@0 12 published by the Free Software Foundation; either version 2 of the
lbajardsilogic@0 13 License, or (at your option) any later version. See the file
lbajardsilogic@0 14 COPYING included with this distribution for more information.
lbajardsilogic@0 15 */
lbajardsilogic@0 16
lbajardsilogic@0 17 #ifndef _SLICE_LAYER_H_
lbajardsilogic@0 18 #define _SLICE_LAYER_H_
lbajardsilogic@0 19
lbajardsilogic@0 20 #include "Layer.h"
lbajardsilogic@0 21
lbajardsilogic@0 22 #include "base/Window.h"
lbajardsilogic@0 23
lbajardsilogic@0 24 #include "data/model/DenseThreeDimensionalModel.h"
lbajardsilogic@0 25
lbajardsilogic@0 26 #include <QColor>
lbajardsilogic@0 27
lbajardsilogic@0 28 class SliceLayer : public Layer
lbajardsilogic@0 29 {
lbajardsilogic@0 30 Q_OBJECT
lbajardsilogic@0 31
lbajardsilogic@0 32 public:
lbajardsilogic@0 33 SliceLayer();
lbajardsilogic@0 34 ~SliceLayer();
lbajardsilogic@0 35
lbajardsilogic@0 36 // virtual void setModel(const Model *model);
lbajardsilogic@0 37 // virtual const Model *getModel() const { return m_model; }
lbajardsilogic@0 38 virtual const Model *getModel() const { return 0; }
lbajardsilogic@0 39
lbajardsilogic@0 40 void setSliceableModel(const Model *model);
lbajardsilogic@0 41
lbajardsilogic@0 42 virtual void paint(View *v, QPainter &paint, QRect rect) const;
lbajardsilogic@0 43
lbajardsilogic@0 44 virtual QString getFeatureDescription(View *v, QPoint &) const;
lbajardsilogic@0 45
lbajardsilogic@0 46 virtual int getVerticalScaleWidth(View *v, QPainter &) const;
lbajardsilogic@0 47 virtual void paintVerticalScale(View *v, QPainter &paint, QRect rect) const;
lbajardsilogic@0 48
lbajardsilogic@0 49 virtual PropertyList getProperties() const;
lbajardsilogic@0 50 virtual QString getPropertyLabel(const PropertyName &) const;
lbajardsilogic@0 51 virtual PropertyType getPropertyType(const PropertyName &) const;
lbajardsilogic@0 52 virtual QString getPropertyGroupName(const PropertyName &) const;
lbajardsilogic@0 53 virtual int getPropertyRangeAndValue(const PropertyName &,
lbajardsilogic@0 54 int *min, int *max, int *deflt) const;
lbajardsilogic@0 55 virtual QString getPropertyValueLabel(const PropertyName &,
lbajardsilogic@0 56 int value) const;
lbajardsilogic@0 57 virtual RangeMapper *getNewPropertyRangeMapper(const PropertyName &) const;
lbajardsilogic@0 58 virtual void setProperty(const PropertyName &, int value);
lbajardsilogic@0 59 virtual void setProperties(const QXmlAttributes &);
lbajardsilogic@0 60
lbajardsilogic@0 61 virtual bool getValueExtents(float &min, float &max,
lbajardsilogic@0 62 bool &logarithmic, QString &unit) const;
lbajardsilogic@0 63
lbajardsilogic@0 64 virtual bool hasTimeXAxis() const { return false; }
lbajardsilogic@0 65
lbajardsilogic@0 66 virtual bool isLayerScrollable(const View *) const { return false; }
lbajardsilogic@0 67
lbajardsilogic@0 68 enum EnergyScale { LinearScale, MeterScale, dBScale };
lbajardsilogic@0 69
lbajardsilogic@0 70 enum SamplingMode { NearestSample, SampleMean, SamplePeak };
lbajardsilogic@0 71
lbajardsilogic@0 72 enum PlotStyle { PlotLines, PlotSteps, PlotBlocks, PlotFilledBlocks };
lbajardsilogic@0 73
lbajardsilogic@0 74 enum BinScale { LinearBins, LogBins, InvertedLogBins };
lbajardsilogic@0 75
benoitrigolleau@61 76 virtual void setBaseColour(QColor);
benoitrigolleau@61 77 virtual QColor getBaseColour() const { return m_colour; }
lbajardsilogic@0 78
lbajardsilogic@0 79 void setFillColourMap(int);
lbajardsilogic@0 80 int getFillColourMap() const { return m_colourMap; }
lbajardsilogic@0 81
lbajardsilogic@0 82 void setEnergyScale(EnergyScale);
lbajardsilogic@0 83 EnergyScale getEnergyScale() const { return m_energyScale; }
lbajardsilogic@0 84
lbajardsilogic@0 85 void setSamplingMode(SamplingMode);
lbajardsilogic@0 86 SamplingMode getSamplingMode() const { return m_samplingMode; }
lbajardsilogic@0 87
lbajardsilogic@0 88 void setPlotStyle(PlotStyle style);
lbajardsilogic@0 89 PlotStyle getPlotStyle() const { return m_plotStyle; }
lbajardsilogic@0 90
lbajardsilogic@0 91 void setBinScale(BinScale scale);
lbajardsilogic@0 92 BinScale getBinScale() const { return m_binScale; }
lbajardsilogic@0 93
lbajardsilogic@0 94 void setGain(float gain);
lbajardsilogic@0 95 float getGain() const;
lbajardsilogic@0 96
lbajardsilogic@0 97 void setNormalize(bool n);
lbajardsilogic@0 98 bool getNormalize() const;
lbajardsilogic@0 99
lbajardsilogic@0 100 virtual QString toXmlString(QString indent = "",
lbajardsilogic@0 101 QString extraAttributes = "") const;
lbajardsilogic@0 102
lbajardsilogic@0 103 public slots:
lbajardsilogic@0 104 void sliceableModelReplaced(const Model *, const Model *);
lbajardsilogic@0 105 void modelAboutToBeDeleted(Model *);
lbajardsilogic@0 106
lbajardsilogic@0 107 protected:
lbajardsilogic@0 108 float getXForBin(int bin, int totalBins, float w) const;
lbajardsilogic@0 109 int getBinForX(float x, int totalBins, float w) const;
lbajardsilogic@0 110
lbajardsilogic@0 111 virtual QString getFeatureDescription(View *v, QPoint &,
lbajardsilogic@0 112 bool includeBinDescription,
lbajardsilogic@0 113 int &minbin, int &maxbin,
lbajardsilogic@0 114 int &range) const;
lbajardsilogic@0 115
lbajardsilogic@0 116 const DenseThreeDimensionalModel *m_sliceableModel;
lbajardsilogic@0 117 QColor m_colour;
lbajardsilogic@0 118 int m_colourMap;
lbajardsilogic@0 119 EnergyScale m_energyScale;
lbajardsilogic@0 120 SamplingMode m_samplingMode;
lbajardsilogic@0 121 PlotStyle m_plotStyle;
lbajardsilogic@0 122 BinScale m_binScale;
lbajardsilogic@0 123 bool m_normalize;
lbajardsilogic@0 124 bool m_bias;
lbajardsilogic@0 125 float m_gain;
lbajardsilogic@0 126 mutable std::vector<int> m_scalePoints;
lbajardsilogic@0 127 mutable std::map<View *, int> m_xorigins;
lbajardsilogic@0 128 mutable size_t m_currentf0;
lbajardsilogic@0 129 mutable size_t m_currentf1;
lbajardsilogic@0 130 mutable std::vector<float> m_values;
lbajardsilogic@0 131 };
lbajardsilogic@0 132
lbajardsilogic@0 133 #endif