X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fstereo_panner.h;h=ba9823214691c920157ae789d69cf27e0894d0c6;hb=ca6ee56347ede03d87c1b3bdbdec52458fd25662;hp=f4652ca4756355b3460c5a89bffd073d2b17898c;hpb=1ff30dcecb7df24125bb53fbcf0129fe5f1803a0;p=ardour.git diff --git a/gtk2_ardour/stereo_panner.h b/gtk2_ardour/stereo_panner.h index f4652ca475..ba98232146 100644 --- a/gtk2_ardour/stereo_panner.h +++ b/gtk2_ardour/stereo_panner.h @@ -21,34 +21,89 @@ #define __gtk_ardour_stereo_panner_h__ #include "pbd/signals.h" +#include "gtkmm2ext/binding_proxy.h" +#include "panner_interface.h" -#include -#include +namespace ARDOUR { + class PannerShell; +} namespace PBD { class Controllable; } -class StereoPanner : public Gtk::DrawingArea +namespace ARDOUR { + class Panner; +} + +class StereoPanner : public PannerInterface { public: - StereoPanner (boost::shared_ptr pos, boost::shared_ptr width); + StereoPanner (boost::shared_ptr); ~StereoPanner (); + boost::shared_ptr get_position_controllable() const { return position_control; } + boost::shared_ptr get_width_controllable() const { return width_control; } + + sigc::signal StartPositionGesture; + sigc::signal StopPositionGesture; + sigc::signal StartWidthGesture; + sigc::signal StopWidthGesture; + protected: bool on_expose_event (GdkEventExpose*); bool on_button_press_event (GdkEventButton*); bool on_button_release_event (GdkEventButton*); bool on_motion_notify_event (GdkEventMotion*); + bool on_scroll_event (GdkEventScroll*); + bool on_key_press_event (GdkEventKey*); private: + PannerEditor* editor (); + boost::shared_ptr _panner_shell; + boost::shared_ptr position_control; boost::shared_ptr width_control; - PBD::ScopedConnectionList connections; - bool dragging; + PBD::ScopedConnectionList panvalue_connections; + PBD::ScopedConnectionList panshell_connections; bool dragging_position; + bool dragging_left; + bool dragging_right; int drag_start_x; int last_drag_x; + double accumulated_delta; + bool detented; + + BindingProxy position_binder; + BindingProxy width_binder; + + void set_tooltip (); + + struct ColorScheme { + uint32_t outline; + uint32_t fill; + uint32_t text; + uint32_t background; + uint32_t rule; + }; + + enum State { + Normal, + Mono, + Inverted + }; + + bool _dragging; + + static Pango::AttrList panner_font_attributes; + static bool have_font; + + static ColorScheme colors[3]; + static void set_colors (); + static bool have_colors; + void color_handler (); + void bypass_handler (); + void pannable_handler (); }; #endif /* __gtk_ardour_stereo_panner_h__ */