From b5c6f06a99144e0bd81ddafb6f19aab7217123b1 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 3 May 2017 17:36:35 +0200 Subject: [PATCH] Move RouteGroup color into libardour. This allows to change it from scripts and surfaces and consolidates code. --- libs/ardour/ardour/route_group.h | 11 +++++++++++ libs/ardour/route_group.cc | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/libs/ardour/ardour/route_group.h b/libs/ardour/ardour/route_group.h index c75202f986..34f70857a2 100644 --- a/libs/ardour/ardour/route_group.h +++ b/libs/ardour/ardour/route_group.h @@ -150,6 +150,15 @@ public: bool has_control_master() const; bool slaved () const; + uint32_t rgba () const { return _rgba; } + + /** set route-group color and notify UI about change */ + void set_rgba (uint32_t); + + /* directly set color only, used to convert old 5.x gui-object-state + * to libardour color */ + void migrate_rgba (uint32_t color) { _rgba = color; } + private: boost::shared_ptr routes; boost::shared_ptr subgroup_bus; @@ -179,6 +188,8 @@ private: void post_set (PBD::PropertyChange const &); void push_to_groups (); + + uint32_t _rgba; }; } /* namespace */ diff --git a/libs/ardour/route_group.cc b/libs/ardour/route_group.cc index 9bbbd90776..c41a890a02 100644 --- a/libs/ardour/route_group.cc +++ b/libs/ardour/route_group.cc @@ -109,6 +109,7 @@ RouteGroup::RouteGroup (Session& s, const string &n) , _rec_enable_group (new ControlGroup (RecEnableAutomation)) , _gain_group (new GainControlGroup ()) , _monitoring_group (new ControlGroup (MonitoringAutomation)) + , _rgba (0) { _xml_node_name = X_("RouteGroup"); @@ -234,6 +235,22 @@ RouteGroup::remove (boost::shared_ptr r) return -1; } +void +RouteGroup::set_rgba (uint32_t color) { + _rgba = color; + + PBD::PropertyChange change; + change.add (Properties::color); + PropertyChanged (change); + + if (!is_color ()) { + return; + } + + for (RouteList::const_iterator i = routes->begin(); i != routes->end(); ++i) { + (*i)->presentation_info().PropertyChanged (Properties::color); + } +} XMLNode& RouteGroup::get_state () @@ -241,6 +258,7 @@ RouteGroup::get_state () XMLNode *node = new XMLNode ("RouteGroup"); node->set_property ("id", id()); + node->set_property ("rgba", _rgba); add_properties (*node); @@ -266,6 +284,7 @@ RouteGroup::set_state (const XMLNode& node, int version) set_id (node); set_values (node); + node.get_property ("rgba", _rgba); std::string routes; if (node.get_property ("routes", routes)) { -- 2.30.2