X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fplugin_eq_gui.h;h=6ea463f3343807648fae95ab23eedeeb74afa24d;hb=474d68c05132291fd8eb200006e7e63aebefdc8d;hp=163da38478bd1df3f82ad2f6a2f6546b095a0b0e;hpb=aae367b63c9b619db1e40f27dc334c6987219481;p=ardour.git diff --git a/gtk2_ardour/plugin_eq_gui.h b/gtk2_ardour/plugin_eq_gui.h index 163da38478..6ea463f334 100644 --- a/gtk2_ardour/plugin_eq_gui.h +++ b/gtk2_ardour/plugin_eq_gui.h @@ -21,124 +21,137 @@ #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 #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 (); + 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; - nframes_t _buffer_size; - nframes_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 _plugin; + boost::shared_ptr _plugin_insert; - // My objects - FFT *_impulse_fft; - FFT *_signal_input_fft; - 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; + 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 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 *_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