svgui  1.9
SliceLayer.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2 
3 /*
4  Sonic Visualiser
5  An audio file viewer and annotation editor.
6  Centre for Digital Music, Queen Mary, University of London.
7  This file copyright 2006 QMUL.
8 
9  This program is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License as
11  published by the Free Software Foundation; either version 2 of the
12  License, or (at your option) any later version. See the file
13  COPYING included with this distribution for more information.
14 */
15 
16 #ifndef _SLICE_LAYER_H_
17 #define _SLICE_LAYER_H_
18 
19 #include "SingleColourLayer.h"
20 
21 #include "base/Window.h"
22 
23 #include "data/model/DenseThreeDimensionalModel.h"
24 
25 #include <QColor>
26 
28 {
29  Q_OBJECT
30 
31 public:
32  SliceLayer();
33  ~SliceLayer();
34 
35 // virtual void setModel(const Model *model);
36 // virtual const Model *getModel() const { return m_model; }
37  virtual const Model *getModel() const { return 0; }
38 
39  void setSliceableModel(const Model *model);
40 
41  virtual void paint(View *v, QPainter &paint, QRect rect) const;
42 
43  virtual QString getFeatureDescription(View *v, QPoint &) const;
44 
45  virtual int getVerticalScaleWidth(View *v, bool, QPainter &) const;
46  virtual void paintVerticalScale(View *v, bool, QPainter &paint, QRect rect) const;
47 
50  }
51 
52  virtual PropertyList getProperties() const;
53  virtual QString getPropertyLabel(const PropertyName &) const;
54  virtual QString getPropertyIconName(const PropertyName &) const;
55  virtual PropertyType getPropertyType(const PropertyName &) const;
56  virtual QString getPropertyGroupName(const PropertyName &) const;
57  virtual int getPropertyRangeAndValue(const PropertyName &,
58  int *min, int *max, int *deflt) const;
59  virtual QString getPropertyValueLabel(const PropertyName &,
60  int value) const;
61  virtual RangeMapper *getNewPropertyRangeMapper(const PropertyName &) const;
62  virtual void setProperty(const PropertyName &, int value);
63  virtual void setProperties(const QXmlAttributes &);
64 
65  virtual bool getValueExtents(float &min, float &max,
66  bool &logarithmic, QString &unit) const;
67 
68  virtual bool hasTimeXAxis() const { return false; }
69 
70  virtual bool isLayerScrollable(const View *) const { return false; }
71 
73 
75 
77 
79 
80  void setFillColourMap(int);
81  int getFillColourMap() const { return m_colourMap; }
82 
85 
88 
89  void setPlotStyle(PlotStyle style);
90  PlotStyle getPlotStyle() const { return m_plotStyle; }
91 
92  void setBinScale(BinScale scale);
93  BinScale getBinScale() const { return m_binScale; }
94 
95  void setThreshold(float);
96  int getThreshold() const { return m_threshold; }
97 
98  void setGain(float gain);
99  float getGain() const;
100 
101  void setNormalize(bool n);
102  bool getNormalize() const;
103 
104  virtual void toXml(QTextStream &stream, QString indent = "",
105  QString extraAttributes = "") const;
106 
107 public slots:
108  void sliceableModelReplaced(const Model *, const Model *);
109  void modelAboutToBeDeleted(Model *);
110 
111 protected:
112  virtual float getXForBin(int bin, int totalBins, float w) const;
113  virtual int getBinForX(float x, int totalBins, float w) const;
114 
115  virtual float getYForValue(float value, const View *v, float &norm) const;
116  virtual float getValueForY(float y, const View *v) const;
117 
118  virtual QString getFeatureDescriptionAux(View *v, QPoint &,
119  bool includeBinDescription,
120  int &minbin, int &maxbin,
121  int &range) const;
122 
123  // This curve may, of course, be flat -- the spectrum uses it for
124  // normalizing the fft results by the fft size (with 1/(fftsize/2)
125  // in each bin).
126  typedef std::vector<float> BiasCurve;
127  virtual void getBiasCurve(BiasCurve &) const { return; }
128 
129  virtual float getThresholdDb() const;
130 
131  virtual int getDefaultColourHint(bool dark, bool &impose);
132 
133  const DenseThreeDimensionalModel *m_sliceableModel;
140  float m_threshold;
142  float m_gain;
143  mutable std::vector<int> m_scalePoints;
144  mutable std::map<const View *, int> m_xorigins;
145  mutable std::map<const View *, int> m_yorigins;
146  mutable std::map<const View *, int> m_heights;
147  mutable int m_currentf0;
148  mutable int m_currentf1;
149  mutable std::vector<float> m_values;
150 };
151 
152 #endif
EnergyScale m_energyScale
Definition: SliceLayer.h:135
BinScale getBinScale() const
Definition: SliceLayer.h:93
virtual QString getPropertyLabel(const PropertyName &) const
Definition: SliceLayer.cpp:565
virtual QString getPropertyIconName(const PropertyName &) const
Definition: SliceLayer.cpp:578
int m_currentf0
Definition: SliceLayer.h:147
virtual QString getFeatureDescriptionAux(View *v, QPoint &, bool includeBinDescription, int &minbin, int &maxbin, int &range) const
Definition: SliceLayer.cpp:102
EnergyScale getEnergyScale() const
Definition: SliceLayer.h:84
virtual float getXForBin(int bin, int totalBins, float w) const
Definition: SliceLayer.cpp:183
void setFillColourMap(int)
Definition: SliceLayer.cpp:798
virtual QString getPropertyValueLabel(const PropertyName &, int value) const
Definition: SliceLayer.cpp:701
virtual PropertyType getPropertyType(const PropertyName &) const
Definition: SliceLayer.cpp:585
virtual float getYForValue(float value, const View *v, float &norm) const
Definition: SliceLayer.cpp:229
float getGain() const
int m_currentf1
Definition: SliceLayer.h:148
float m_initialThreshold
Definition: SliceLayer.h:141
std::map< const View *, int > m_heights
Definition: SliceLayer.h:146
virtual void paintVerticalScale(View *v, bool, QPainter &paint, QRect rect) const
Definition: SliceLayer.cpp:516
virtual bool isLayerScrollable(const View *) const
This should return true if the layer can safely be scrolled automatically by a given view (simply cop...
Definition: SliceLayer.h:70
void setSamplingMode(SamplingMode)
Definition: SliceLayer.cpp:814
std::map< const View *, int > m_xorigins
Definition: SliceLayer.h:144
const DenseThreeDimensionalModel * m_sliceableModel
Definition: SliceLayer.h:133
virtual bool hasTimeXAxis() const
Definition: SliceLayer.h:68
virtual QString getPropertyGroupName(const PropertyName &) const
Definition: SliceLayer.cpp:599
void setThreshold(float)
Definition: SliceLayer.cpp:851
virtual void setProperties(const QXmlAttributes &)
Set the particular properties of a layer (those specific to the subclass) from a set of XML attribute...
Definition: SliceLayer.cpp:909
ColourSignificance
Definition: Layer.h:304
void sliceableModelReplaced(const Model *, const Model *)
Definition: SliceLayer.cpp:74
virtual void setProperty(const PropertyName &, int value)
Definition: SliceLayer.cpp:757
std::vector< int > m_scalePoints
Definition: SliceLayer.h:143
PlotStyle m_plotStyle
Definition: SliceLayer.h:137
virtual int getPropertyRangeAndValue(const PropertyName &, int *min, int *max, int *deflt) const
Definition: SliceLayer.cpp:612
int m_colourMap
Definition: SliceLayer.h:134
BinScale m_binScale
Definition: SliceLayer.h:138
virtual int getDefaultColourHint(bool dark, bool &impose)
Definition: SliceLayer.cpp:875
virtual QString getFeatureDescription(View *v, QPoint &) const
Definition: SliceLayer.cpp:95
void setNormalize(bool n)
Definition: SliceLayer.cpp:843
virtual int getBinForX(float x, int totalBins, float w) const
Definition: SliceLayer.cpp:206
virtual PropertyList getProperties() const
Definition: SliceLayer.cpp:551
void setSliceableModel(const Model *model)
Definition: SliceLayer.cpp:54
virtual ColourSignificance getLayerColourSignificance() const
Implements Layer::getLayerColourSignificance()
Definition: SliceLayer.h:48
virtual const Model * getModel() const
Definition: SliceLayer.h:37
virtual float getValueForY(float y, const View *v) const
Definition: SliceLayer.cpp:279
bool m_normalize
Definition: SliceLayer.h:139
std::vector< float > m_values
Definition: SliceLayer.h:149
virtual float getThresholdDb() const
Definition: SliceLayer.cpp:867
virtual void getBiasCurve(BiasCurve &) const
Definition: SliceLayer.h:127
void setPlotStyle(PlotStyle style)
Definition: SliceLayer.cpp:822
virtual RangeMapper * getNewPropertyRangeMapper(const PropertyName &) const
Definition: SliceLayer.cpp:745
void setBinScale(BinScale scale)
Definition: SliceLayer.cpp:835
PlotStyle getPlotStyle() const
Definition: SliceLayer.h:90
int getFillColourMap() const
Definition: SliceLayer.h:81
float m_threshold
Definition: SliceLayer.h:140
void setGain(float gain)
Definition: SliceLayer.cpp:859
std::vector< float > BiasCurve
Definition: SliceLayer.h:126
View is the base class of widgets that display one or more overlaid views of data against a horizonta...
Definition: View.h:50
void setEnergyScale(EnergyScale)
Definition: SliceLayer.cpp:806
std::map< const View *, int > m_yorigins
Definition: SliceLayer.h:145
SamplingMode m_samplingMode
Definition: SliceLayer.h:136
int getThreshold() const
Definition: SliceLayer.h:96
SamplingMode getSamplingMode() const
Definition: SliceLayer.h:87
virtual bool getValueExtents(float &min, float &max, bool &logarithmic, QString &unit) const
Return the minimum and maximum values for the y axis of the model in this layer, as well as whether t...
Definition: SliceLayer.cpp:945
virtual void paint(View *v, QPainter &paint, QRect rect) const
Paint the given rectangle of this layer onto the given view using the given painter,...
Definition: SliceLayer.cpp:316
float m_gain
Definition: SliceLayer.h:142
virtual int getVerticalScaleWidth(View *v, bool, QPainter &) const
Definition: SliceLayer.cpp:504
void modelAboutToBeDeleted(Model *)
Definition: SliceLayer.cpp:85
bool getNormalize() const
virtual void toXml(QTextStream &stream, QString indent="", QString extraAttributes="") const
Convert the layer's data (though not those of the model it refers to) into XML for file output.
Definition: SliceLayer.cpp:883