No need to rebuild pieces when only crop or ratio changes.
[dcpomatic.git] / src / wx / audio_plot.h
index 565997f7e3490ec9736af183f38647bb350c560b..094f8e1b0124527e4b27794d53c4f1a3c14e832b 100644 (file)
 #include <vector>
 #include <boost/shared_ptr.hpp>
 #include <wx/wx.h>
-
-class AudioAnalysis;
+#include "lib/util.h"
+#include "lib/audio_analysis.h"
 
 class AudioPlot : public wxPanel
 {
 public:
-       AudioPlot (wxWindow *, boost::shared_ptr<AudioAnalysis>, int);
+       AudioPlot (wxWindow *);
+
+       void set_analysis (boost::shared_ptr<AudioAnalysis>);
+       void set_channel_visible (int c, bool v);
+       void set_type_visible (int t, bool v);
+       void set_gain (float);
+       void set_smoothing (int);
+       void set_message (wxString);
+
+       static const int max_smoothing;
 
 private:
-       void paint (wxPaintEvent &);
+       void paint ();
 
        boost::shared_ptr<AudioAnalysis> _analysis;
-       int _channel;
+       bool _channel_visible[MAX_AUDIO_CHANNELS];
+       bool _type_visible[AudioPoint::COUNT];
+       /** gain to apply in dB */
+       float _gain;
+       int _smoothing;
+       std::vector<wxColour> _colours;
+
+       void plot_peak (wxGraphicsPath &, int) const;
+       void plot_rms (wxGraphicsPath &, int) const;
+       float y_for_linear (float) const;
+
+       double _db_label_width;
+       int _height;
+       int _y_origin;
+       float _x_scale;
+       float _y_scale;
+
+       wxString _message;
+
+       static const int _minimum;
 };