X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fprocessor_box.h;h=3480fad556bb60f2b915e17d8671c7f7936b7675;hb=b402e12d545e9729578e03ad041a131d8a72f37c;hp=5a6e9a53beac8cd6a2fd83b0cc3ddf3b243b8ad5;hpb=ee4e3e77370b7d28560df392669563795bc18963;p=ardour.git diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h index 5a6e9a53be..3480fad556 100644 --- a/gtk2_ardour/processor_box.h +++ b/gtk2_ardour/processor_box.h @@ -115,7 +115,7 @@ class PluginPinWindowProxy : public WM::ProxyBase ~PluginPinWindowProxy(); Gtk::Window* get (bool create = false); - ARDOUR::SessionHandlePtr* session_handle() { return 0; } + ARDOUR::SessionHandlePtr* session_handle(); private: ProcessorBox* _processor_box; @@ -243,7 +243,7 @@ private: class PluginDisplay : public Gtk::DrawingArea { public: PluginDisplay(boost::shared_ptr, uint32_t max_height = 80); - ~PluginDisplay(); + virtual ~PluginDisplay(); protected: bool on_expose_event (GdkEventExpose *); void on_size_request (Gtk::Requisition* req); @@ -283,28 +283,67 @@ private: class RoutingIcon : public Gtk::DrawingArea { public: - RoutingIcon(); + RoutingIcon(bool inputrouting = true); void set ( const ARDOUR::ChanCount&, const ARDOUR::ChanCount&, + const ARDOUR::ChanCount&, + const ARDOUR::ChanCount&, + const ARDOUR::ChanMapping&, + const ARDOUR::ChanMapping&, + const ARDOUR::ChanMapping&); + void set_fed_by ( const ARDOUR::ChanCount&, const ARDOUR::ChanCount&, const ARDOUR::ChanMapping&, const ARDOUR::ChanMapping&); - void set_feed ( + + void set_feeding ( const ARDOUR::ChanCount&, const ARDOUR::ChanCount&, + const ARDOUR::ChanMapping&, const ARDOUR::ChanMapping&); - void unset_feed () { _feed = false ; } - bool identity () const; + + void set_terminal (bool b); + + void copy_state (const RoutingIcon& other) { + _in = other._in; + _out = other._out; + _sources = other._sources; + _sinks = other._sinks; + _in_map = other._in_map; + _out_map = other._out_map; + _thru_map = other._thru_map; + _f_out = other._f_out; + _f_out_map = other._f_out_map; + _f_thru_map = other._f_thru_map; + _f_sources = other._f_sources; + _i_in = other._i_in; + _i_in_map = other._i_in_map; + _i_thru_map = other._i_thru_map; + _i_sinks = other._i_sinks; + _fed_by = other._fed_by; + _feeding = other._feeding; + } + + void unset_fed_by () { _fed_by = false ; } + void unset_feeding () { _feeding = false ; } + bool in_identity () const; + bool out_identity () const; + bool can_coalesce () const; static double pin_x_pos (uint32_t, double, uint32_t, uint32_t, bool); static void draw_connection (cairo_t*, double, double, double, double, bool, bool dashed = false); - static void draw_gnd (cairo_t*, double, double, bool); + static void draw_gnd (cairo_t*, double, double, double, bool); + static void draw_sidechain (cairo_t*, double, double, double, bool); + static void draw_thru_src (cairo_t*, double, double, double, bool); + static void draw_thru_sink (cairo_t*, double, double, double, bool); private: bool on_expose_event (GdkEventExpose *); - void expose_map (cairo_t*, const double, const double); + void expose_input_map (cairo_t*, const double, const double); + void expose_coalesced_input_map (cairo_t*, const double, const double); + void expose_output_map (cairo_t*, const double, const double); ARDOUR::ChanCount _in; ARDOUR::ChanCount _out; @@ -312,16 +351,26 @@ private: ARDOUR::ChanCount _sinks; ARDOUR::ChanMapping _in_map; ARDOUR::ChanMapping _out_map; + ARDOUR::ChanMapping _thru_map; ARDOUR::ChanCount _f_out; ARDOUR::ChanMapping _f_out_map; + ARDOUR::ChanMapping _f_thru_map; ARDOUR::ChanCount _f_sources; - bool _feed; + ARDOUR::ChanCount _i_in; + ARDOUR::ChanMapping _i_in_map; + ARDOUR::ChanMapping _i_thru_map; + ARDOUR::ChanCount _i_sinks; + bool _fed_by; + bool _feeding; + bool _input; + bool _terminal; }; public: - RoutingIcon routing_icon; PortIcon input_icon; PortIcon output_icon; + RoutingIcon routing_icon; // sits on top of every processor (input routing) + RoutingIcon output_routing_icon; // only used by last processor in the chain protected: PluginDisplay *_plugin_display ; @@ -457,7 +506,6 @@ class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARD void return_io_finished (IOSelector::Result, boost::weak_ptr, IOSelectorWindow*); void choose_insert (); void choose_plugin (); - bool choose_lua (); bool use_plugins (const SelectedPlugins&); bool no_processor_redisplay; @@ -522,7 +570,6 @@ class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARD static void rb_choose_aux (boost::weak_ptr); static void rb_choose_plugin (); static void rb_choose_insert (); - static void rb_choose_lua (); static void rb_choose_send (); static void rb_clear (); static void rb_clear_pre ();