fix incorrect accumulation of export video options each time the dialog is used
[ardour.git] / gtk2_ardour / plugin_eq_gui.h
index 24ffd456562a3760401655851f3f1fdb38130140..6ea463f3343807648fae95ab23eedeeb74afa24d 100644 (file)
 #ifndef __ardour_plugin_eq_gui_h
 #define __ardour_plugin_eq_gui_h
 
+#include "pbd/signals.h"
+
 #include "ardour/buffer_set.h"
-#include "ardour/plugin_insert.h"
-#include "ardour/plugin.h"
 
 #include <gtkmm/table.h>
 #include <gtkmm/drawingarea.h>
 #include <gtkmm/combobox.h>
 #include <gtkmm/liststore.h>
 
-class FFT;
+namespace ARDOUR {
+       class Plugin;
+       class PluginInsert;
+}
+
+namespace GTKArdour {
+       class FFT;
+}
 
 class PluginEqGui : public Gtk::Table
 {
-       public:
-               PluginEqGui(boost::shared_ptr<ARDOUR::PluginInsert>);
-               ~PluginEqGui();
-
+public:
+       PluginEqGui (boost::shared_ptr<ARDOUR::PluginInsert>);
+       ~PluginEqGui ();
 
+       void start_listening ();
+       void stop_listening ();
 
-       private:
-               // Setup
-               void set_buffer_size(uint32_t, uint32_t);
-               void change_dB_scale();
+private:
+       // Setup
+       void set_buffer_size (uint32_t, uint32_t);
+       void change_dB_scale ();
 
-               // Analysis
-               void run_impulse_analysis();
-               void signal_collect_callback(ARDOUR::BufferSet *, ARDOUR::BufferSet *);
-               float _signal_analysis_running;
+       // Analysis
+       void run_impulse_analysis ();
+       void signal_collect_callback (ARDOUR::BufferSet *, ARDOUR::BufferSet *);
+       float _signal_analysis_running;
 
-               // Drawing
-               virtual void on_hide();
-               virtual void on_show();
+       // Drawing
+       virtual void on_hide ();
+       virtual void on_show ();
 
-               void stop_updating();
-               void start_updating();
+       void stop_updating ();
+       void start_updating ();
 
-               void resize_analysis_area(Gtk::Allocation&);
-               void redraw_analysis_area();
+       void resize_analysis_area (Gtk::Allocation&);
+       void redraw_analysis_area ();
 
-               void draw_analysis_scales(cairo_t *);
-               bool expose_analysis_area(GdkEventExpose *);
+       void draw_analysis_scales (cairo_t *);
+       bool expose_analysis_area (GdkEventExpose *);
 
-               void draw_scales_power(Gtk::Widget *, cairo_t *);
-               void plot_impulse_amplitude(Gtk::Widget *,cairo_t *);
+       void draw_scales_power (Gtk::Widget *, cairo_t *);
+       void plot_impulse_amplitude (Gtk::Widget *,cairo_t *);
 
-               void draw_scales_phase(Gtk::Widget *,cairo_t *);
-               void plot_impulse_phase(Gtk::Widget *,cairo_t *);
+       void draw_scales_phase (Gtk::Widget *,cairo_t *);
+       void plot_impulse_phase (Gtk::Widget *,cairo_t *);
 
-               void plot_signal_amplitude_difference(Gtk::Widget *,cairo_t *);
+       void plot_signal_amplitude_difference (Gtk::Widget *,cairo_t *);
 
-               // Helpers
-               bool timeout_callback();
-               void redraw_scales();
+       void update_pointer_info(float);
+       bool analysis_area_mouseover(GdkEventMotion *);
+       bool analysis_area_mouseexit(GdkEventCrossing *);
 
+       // Helpers
+       bool timeout_callback ();
+       void redraw_scales ();
 
-               // Fields:
+       // Fields:
 
-               // analysis parameters
-               float _samplerate;
+       // analysis parameters
+       float _samplerate;
 
-               float _min_dB;
-               float _max_dB;
-               float _step_dB;
+       float _min_dB;
+       float _max_dB;
+       float _step_dB;
 
+       float _log_coeff;
+       float _log_max;
 
-               float _log_coeff;
-               float _log_max;
+       ARDOUR::samplecnt_t _buffer_size;
+       ARDOUR::samplecnt_t _signal_buffer_size;
 
-               ARDOUR::framecnt_t _buffer_size;
-               ARDOUR::framecnt_t _signal_buffer_size;
+       // buffers
+       ARDOUR::BufferSet _bufferset;
+       ARDOUR::BufferSet _collect_bufferset;
 
-               // buffers
-               ARDOUR::BufferSet _bufferset;
-               ARDOUR::BufferSet _collect_bufferset;
 
+       // dimensions
+       float _analysis_width;
+       float _analysis_height;
 
-               // dimensions
-               float _analysis_width;
-               float _analysis_height;
+       // My objects
+       GTKArdour::FFT *_impulse_fft;
+       GTKArdour::FFT *_signal_input_fft;
+       GTKArdour::FFT *_signal_output_fft;
+       boost::shared_ptr<ARDOUR::Plugin> _plugin;
+       boost::shared_ptr<ARDOUR::PluginInsert> _plugin_insert;
 
-               // My objects
-               FFT *_impulse_fft;
-               FFT *_signal_input_fft;
-               FFT *_signal_output_fft;
-               boost::shared_ptr<ARDOUR::Plugin> _plugin;
-               boost::shared_ptr<ARDOUR::PluginInsert> _plugin_insert;
+       // gui objects
+       Gtk::DrawingArea *_analysis_area;
+       cairo_surface_t *_analysis_scale_surface;
+       Gtk::Label *_pointer_info;
+       int _pointer_in_area_xpos;
+       int _pointer_in_area_freq;
 
-               // gui objects
-               Gtk::DrawingArea *_analysis_area;
-               cairo_surface_t *_analysis_scale_surface;
-
-
-               // dB scale selection:
-               class dBSelectionColumns : public Gtk::TreeModel::ColumnRecord
-               {
-                 public:
-                       dBSelectionColumns()
-                               { add(dBMin); add(dBMax); add(dBStep); add(name); }
+       // dB scale selection:
+       class dBSelectionColumns : public Gtk::TreeModel::ColumnRecord
+       {
+       public:
+               dBSelectionColumns()
+               { add(dBMin); add(dBMax); add(dBStep); add(name); }
 
-                       Gtk::TreeModelColumn<float> dBMin;
-                       Gtk::TreeModelColumn<float> dBMax;
-                       Gtk::TreeModelColumn<float> dBStep;
-                       Gtk::TreeModelColumn<std::string> name;
-               };
+               Gtk::TreeModelColumn<float> dBMin;
+               Gtk::TreeModelColumn<float> dBMax;
+               Gtk::TreeModelColumn<float> dBStep;
+               Gtk::TreeModelColumn<std::string> name;
+       };
 
-               dBSelectionColumns dBColumns;
+       dBSelectionColumns dBColumns;
 
-               Gtk::ComboBox *dBScaleCombo;
-               Glib::RefPtr<Gtk::ListStore> dBScaleModel;
+       Gtk::ComboBox *dBScaleCombo;
+       Glib::RefPtr<Gtk::ListStore> dBScaleModel;
 
-               Gtk::CheckButton *_phase_button;
+       Gtk::CheckButton *_signal_button;
+       Gtk::CheckButton *_phase_button;
 
-               // signals and connections
-               sigc::connection _update_connection;
-               sigc::connection _window_unmap_connection;
-               sigc::connection _window_map_connection;
+       // signals and connections
+       sigc::connection _update_connection;
+       sigc::connection _window_unmap_connection;
+       sigc::connection _window_map_connection;
 
-               PBD::ScopedConnection analysis_connection;
+       PBD::ScopedConnection analysis_connection;
 };
 
 #endif