change AxisView color API to be virtual and implement per-type variants
authorPaul Davis <paul@linuxaudiosystems.com>
Sun, 5 Jun 2016 19:39:22 +0000 (15:39 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Sun, 5 Jun 2016 20:33:01 +0000 (16:33 -0400)
13 files changed:
gtk2_ardour/automation_time_axis.cc
gtk2_ardour/automation_time_axis.h
gtk2_ardour/axis_view.h
gtk2_ardour/meter_strip.cc
gtk2_ardour/meter_strip.h
gtk2_ardour/mixer_strip.cc
gtk2_ardour/mixer_strip.h
gtk2_ardour/route_time_axis.cc
gtk2_ardour/route_time_axis.h
gtk2_ardour/vca_master_strip.cc
gtk2_ardour/vca_master_strip.h
gtk2_ardour/vca_time_axis.cc
gtk2_ardour/vca_time_axis.h

index 8d661df58bab8326e6521c5585275473d5d3e21a..3262898d13e14aa0f1c080a0a95965070eb79576 100644 (file)
@@ -1050,3 +1050,9 @@ AutomationTimeAxisView::stripable () const
 {
        return _route;
 }
+
+Gdk::Color
+AutomationTimeAxisView::color () const
+{
+       return gdk_color_from_rgb (_route->presentation_info().color());
+}
index 893c0d6f1e1d1bab192195ac67ac35aa98e1f552..d073890061453c0c6ce7a5858b291847162a02c6 100644 (file)
@@ -72,6 +72,7 @@ class AutomationTimeAxisView : public TimeAxisView {
        virtual void set_height (uint32_t, TrackHeightMode m = OnlySelf);
        void set_samples_per_pixel (double);
        std::string name() const { return _name; }
+       Gdk::Color color () const;
 
        boost::shared_ptr<ARDOUR::Stripable> stripable() const;
        ARDOUR::PresentationInfo const & presentation_info () const;
index 3f7e8236c50fc6e84dc87b40a71e4b63e79f5cec..75a5f7d42186cfd882320b6b9fc621bf791d7714 100644 (file)
@@ -43,15 +43,13 @@ namespace ARDOUR {
  * AxisView defines the abstract base class for time-axis trackviews and routes.
  *
  */
-class AxisView : public virtual Selectable, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr
+class AxisView : public virtual Selectable, public virtual PBD::ScopedConnectionList, public virtual ARDOUR::SessionHandlePtr
 {
   public:
-       /** @return the track's own color */
-       Gdk::Color color () const { return _color; }
-
        ARDOUR::Session* session() const { return _session; }
 
        virtual std::string name() const = 0;
+       virtual Gdk::Color color() const = 0;
 
        sigc::signal<void> Hiding;
 
index c8992ee0b25ba7fa20941aa6fcb38ce069b073ea..596906c5e86efe4441d7e9c2cb4b17628a76348a 100644 (file)
@@ -967,3 +967,15 @@ MeterStrip::set_meter_type_multi (int what, RouteGroup* group, MeterType type)
                        break;
        }
 }
+
+string
+MeterStrip::name () const
+{
+       return _route->name();
+}
+
+Gdk::Color
+MeterStrip::color () const
+{
+       return RouteUI::route_color ();
+}
index dfeb406976232548f1aa1fe988a3d20f04cf2cf3..fc9b61edb1876d22f102d0cec692f1aaf0c57d00 100644 (file)
@@ -43,13 +43,16 @@ namespace Gtk {
        class Style;
 }
 
-class MeterStrip : public Gtk::VBox, public RouteUI
+class MeterStrip : public Gtk::VBox, public AxisView, public RouteUI
 {
   public:
        MeterStrip (ARDOUR::Session*, boost::shared_ptr<ARDOUR::Route>);
        MeterStrip (int, ARDOUR::MeterType);
        ~MeterStrip ();
 
+       std::string name() const;
+       Gdk::Color color () const;
+
        void set_session (ARDOUR::Session* s);
        void fast_update ();
        boost::shared_ptr<ARDOUR::Route> route() { return _route; }
index 83cb318cd5a6bb95bf33deaa47eee9bffda15e4a..ebbf078b3cf96bb2e8dc8926cd92c033e51c532a 100644 (file)
@@ -450,6 +450,15 @@ MixerStrip::mixer_strip_leave_event (GdkEventCrossing *ev)
        return false;
 }
 
+string
+MixerStrip::name() const
+{
+       if (_route) {
+               return _route->name();
+       }
+       return string();
+}
+
 void
 MixerStrip::set_route (boost::shared_ptr<Route> rt)
 {
@@ -2616,6 +2625,13 @@ MixerStrip::update_track_number_visibility ()
                number_label.hide ();
        }
 }
+
+Gdk::Color
+MixerStrip::color () const
+{
+       return route_color ();
+}
+
 bool
 MixerStrip::marked_for_display () const
 {
index 2ce32ef83bf4ac7b0e7f159ded39927281eacfcd..d2e2236941a62db75cb13635251626aff12d9f1a 100644 (file)
@@ -47,6 +47,7 @@
 
 #include "pbd/fastlog.h"
 
+#include "axis_view.h"
 #include "ardour_knob.h"
 #include "route_ui.h"
 #include "gain_meter.h"
@@ -74,13 +75,15 @@ class MotionController;
 class RouteGroupMenu;
 class ArdourWindow;
 
-class MixerStrip : public RouteUI, public Gtk::EventBox
+class MixerStrip : public AxisView, public RouteUI, public Gtk::EventBox
 {
   public:
        MixerStrip (Mixer_UI&, ARDOUR::Session*, boost::shared_ptr<ARDOUR::Route>, bool in_mixer = true);
        MixerStrip (Mixer_UI&, ARDOUR::Session*, bool in_mixer = true);
        ~MixerStrip ();
 
+       std::string name()  const;
+       Gdk::Color color () const;
        bool marked_for_display () const;
        bool set_marked_for_display (bool);
 
index 1586a71c976c8765ff44e5e35d9cd31c0c062c5e..faf57129050d850f9ad97f1f90e8ce36341b2e25 100644 (file)
@@ -342,6 +342,15 @@ RouteTimeAxisView::~RouteTimeAxisView ()
        CatchDeletion (this);
 }
 
+string
+RouteTimeAxisView::name() const
+{
+       if (_route) {
+               return _route->name();
+       }
+       return string();
+}
+
 void
 RouteTimeAxisView::post_construct ()
 {
@@ -2932,6 +2941,12 @@ RouteTimeAxisView::stripable () const
        return _route;
 }
 
+Gdk::Color
+RouteTimeAxisView::color () const
+{
+       return route_color ();
+}
+
 bool
 RouteTimeAxisView::marked_for_display () const
 {
index 9956aa6f3fe13c37af5cfc80f600e4fc5b8bc324..e24bd638a6cfe282afaeb1b06e0c25ee6cacaa0c 100644 (file)
@@ -78,6 +78,11 @@ public:
        RouteTimeAxisView (PublicEditor&, ARDOUR::Session*, ArdourCanvas::Canvas& canvas);
        virtual ~RouteTimeAxisView ();
 
+       std::string name()  const;
+       Gdk::Color color () const;
+       bool marked_for_display () const;
+       bool set_marked_for_display (bool);
+
        void set_route (boost::shared_ptr<ARDOUR::Route>);
 
        boost::shared_ptr<ARDOUR::Stripable> stripable() const;
@@ -134,7 +139,6 @@ public:
        boost::shared_ptr<AutomationTimeAxisView> automation_child(Evoral::Parameter param);
        virtual Gtk::CheckMenuItem* automation_child_menu_item (Evoral::Parameter);
 
-       std::string         name() const;
        StreamView*         view() const { return _view; }
        ARDOUR::RouteGroup* route_group() const;
        boost::shared_ptr<ARDOUR::Playlist> playlist() const;
index 087e5621975d54f4fc5a3d8602743e999cdb0083..b0eaea9a70de730feb672910ad1acfcf700f1235 100644 (file)
@@ -548,3 +548,9 @@ VCAMasterStrip::drop_button_press ()
 {
        drop_all_slaves ();
 }
+
+Gdk::Color
+VCAMasterStrip::color () const
+{
+       return gdk_color_from_rgb (_vca->presentation_info().color ());
+}
index dc223d237a85c84ce57c3de5a9cc18f50223e3f1..711ee7171a811b159ffeed85b080566077753353 100644 (file)
@@ -42,11 +42,13 @@ class VCAMasterStrip : public AxisView, public Gtk::EventBox
        ~VCAMasterStrip ();
 
        std::string name() const;
+       Gdk::Color color () const;
        std::string state_id() const { return "VCAMasterStrip"; }
        boost::shared_ptr<ARDOUR::VCA> vca() const { return _vca; }
 
        static PBD::Signal1<void,VCAMasterStrip*> CatchDeletion;
 
+
      private:
        boost::shared_ptr<ARDOUR::VCA> _vca;
        GainMeter    gain_meter;
index 4f5777e7c4299600384eb873aa8aed83da637ee3..a9d6725007420f18a8834336aa2668bfa8bb2c2b 100644 (file)
@@ -288,3 +288,9 @@ VCATimeAxisView::stripable () const
 {
        return _vca;
 }
+
+Gdk::Color
+VCATimeAxisView::color () const
+{
+       return gdk_color_from_rgb (_vca->presentation_info().color ());
+}
index 4acd5d361920b38c8d98aec325de6d9b060ab15e..e14c2fe3fec34c3038f38424423f2780ec9cd6b4 100644 (file)
@@ -46,6 +46,7 @@ class VCATimeAxisView : public TimeAxisView
        boost::shared_ptr<ARDOUR::VCA> vca() const { return _vca; }
 
        std::string name() const;
+       Gdk::Color color () const;
        std::string state_id() const;
 
        bool selectable() const { return false; }