fix incorrect accumulation of export video options each time the dialog is used
[ardour.git] / gtk2_ardour / plugin_eq_gui.h
index 5fc0af0fc0d3713ef9d6b9eb2bd696ae8783f580..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
 {
@@ -38,6 +45,9 @@ public:
        PluginEqGui (boost::shared_ptr<ARDOUR::PluginInsert>);
        ~PluginEqGui ();
 
+       void start_listening ();
+       void stop_listening ();
+
 private:
        // Setup
        void set_buffer_size (uint32_t, uint32_t);
@@ -69,70 +79,78 @@ private:
 
        void plot_signal_amplitude_difference (Gtk::Widget *,cairo_t *);
 
+       void update_pointer_info(float);
+       bool analysis_area_mouseover(GdkEventMotion *);
+       bool analysis_area_mouseexit(GdkEventCrossing *);
+
        // Helpers
        bool timeout_callback ();
        void redraw_scales ();
 
        // Fields:
-       
+
        // analysis parameters
        float _samplerate;
-       
+
        float _min_dB;
        float _max_dB;
        float _step_dB;
-       
+
        float _log_coeff;
        float _log_max;
-       
-       ARDOUR::framecnt_t _buffer_size;
-       ARDOUR::framecnt_t _signal_buffer_size;
-       
+
+       ARDOUR::samplecnt_t _buffer_size;
+       ARDOUR::samplecnt_t _signal_buffer_size;
+
        // buffers
        ARDOUR::BufferSet _bufferset;
        ARDOUR::BufferSet _collect_bufferset;
-       
-       
+
+
        // dimensions
        float _analysis_width;
        float _analysis_height;
-       
+
        // My objects
-       FFT *_impulse_fft;
-       FFT *_signal_input_fft;
-       FFT *_signal_output_fft;
+       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;
-       
+
        // 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;
+
        // 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;
        };
-       
+
        dBSelectionColumns dBColumns;
-       
+
        Gtk::ComboBox *dBScaleCombo;
        Glib::RefPtr<Gtk::ListStore> dBScaleModel;
-       
+
+       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;
-       
+
        PBD::ScopedConnection analysis_connection;
 };