X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fplugin_eq_gui.h;h=384359b4395fabdee1bd5cbbe5809fe2af1b927f;hb=4ecb48b055c9cc2d3eaa36ec9a1ff48291257bd9;hp=cd52ed76826d9e53478668cc7038d8d87711dc83;hpb=a75868c767dc5a74f4b7361a6255972bad7f7c61;p=ardour.git diff --git a/gtk2_ardour/plugin_eq_gui.h b/gtk2_ardour/plugin_eq_gui.h index cd52ed7682..384359b439 100644 --- a/gtk2_ardour/plugin_eq_gui.h +++ b/gtk2_ardour/plugin_eq_gui.h @@ -21,121 +21,135 @@ #ifndef __ardour_plugin_eq_gui_h #define __ardour_plugin_eq_gui_h -#include -#include -#include +#include "pbd/signals.h" + +#include "ardour/buffer_set.h" #include #include #include #include -class FFT; +namespace ARDOUR { + class Plugin; + class PluginInsert; +} + +namespace GTKArdour { + class FFT; +} class PluginEqGui : public Gtk::Table { - public: - PluginEqGui(boost::shared_ptr); - ~PluginEqGui(); - - +public: + PluginEqGui (boost::shared_ptr); + ~PluginEqGui (); - private: - // Setup - void set_buffer_size(uint32_t, uint32_t); - void change_dB_scale(); + void start_listening (); + void stop_listening (); - // Analysis - void run_impulse_analysis(); - void signal_collect_callback(ARDOUR::BufferSet *, ARDOUR::BufferSet *); - float _signal_analysis_running; +private: + // Setup + void set_buffer_size (uint32_t, uint32_t); + void change_dB_scale (); - // Drawing - virtual void on_hide(); - virtual void on_show(); + // Analysis + void run_impulse_analysis (); + void signal_collect_callback (ARDOUR::BufferSet *, ARDOUR::BufferSet *); + float _signal_analysis_running; - void stop_updating(); - void start_updating(); + // Drawing + virtual void on_hide (); + virtual void on_show (); - void resize_analysis_area(Gtk::Allocation&); - void redraw_analysis_area(); + void stop_updating (); + void start_updating (); - void draw_analysis_scales(cairo_t *); - bool expose_analysis_area(GdkEventExpose *); + void resize_analysis_area (Gtk::Allocation&); + void redraw_analysis_area (); - void draw_scales_power(Gtk::Widget *, cairo_t *); - void plot_impulse_amplitude(Gtk::Widget *,cairo_t *); + void draw_analysis_scales (cairo_t *); + bool expose_analysis_area (GdkEventExpose *); - void draw_scales_phase(Gtk::Widget *,cairo_t *); - void plot_impulse_phase(Gtk::Widget *,cairo_t *); + void draw_scales_power (Gtk::Widget *, cairo_t *); + void plot_impulse_amplitude (Gtk::Widget *,cairo_t *); - void plot_signal_amplitude_difference(Gtk::Widget *,cairo_t *); + void draw_scales_phase (Gtk::Widget *,cairo_t *); + void plot_impulse_phase (Gtk::Widget *,cairo_t *); - // Helpers - bool timeout_callback(); - void redraw_scales(); + void plot_signal_amplitude_difference (Gtk::Widget *,cairo_t *); + void update_pointer_info(float, float); + bool analysis_area_mouseover(GdkEventMotion *); + bool analysis_area_mouseexit(GdkEventCrossing *); + bool analysis_area_mousedown(GdkEventButton *); - // Fields: + // Helpers + bool timeout_callback (); + void redraw_scales (); - // analysis parameters - float _samplerate; + // Fields: - float _min_dB; - float _max_dB; - float _step_dB; + // analysis parameters + float _samplerate; + float _min_dB; + float _max_dB; + float _step_dB; - float _log_coeff; - float _log_max; + float _log_coeff; + float _log_max; - nframes_t _buffer_size; - nframes_t _signal_buffer_size; + ARDOUR::framecnt_t _buffer_size; + ARDOUR::framecnt_t _signal_buffer_size; - // buffers - ARDOUR::BufferSet _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 - FFT *_impulse_fft; - FFT *_signal_input_fft; - FFT *_signal_output_fft; - boost::shared_ptr _plugin; - boost::shared_ptr _plugin_insert; + // My objects + GTKArdour::FFT *_impulse_fft; + GTKArdour::FFT *_signal_input_fft; + GTKArdour::FFT *_signal_output_fft; + boost::shared_ptr _plugin; + boost::shared_ptr _plugin_insert; - // gui objects - Gtk::DrawingArea *_analysis_area; - cairo_surface_t *_analysis_scale_surface; + // gui objects + Gtk::DrawingArea *_analysis_area; + cairo_surface_t *_analysis_scale_surface; + Gtk::Label *_pointer_info; + // 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 dBMin; + Gtk::TreeModelColumn dBMax; + Gtk::TreeModelColumn dBStep; + Gtk::TreeModelColumn name; + }; - Gtk::TreeModelColumn dBMin; - Gtk::TreeModelColumn dBMax; - Gtk::TreeModelColumn dBStep; - Gtk::TreeModelColumn name; - }; + dBSelectionColumns dBColumns; - dBSelectionColumns dBColumns; + Gtk::ComboBox *dBScaleCombo; + Glib::RefPtr dBScaleModel; - Gtk::ComboBox *dBScaleCombo; - Glib::RefPtr dBScaleModel; + Gtk::CheckButton *_phase_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; }; #endif