X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Faxis_view.cc;h=5e0a50fdf7d2a2977827cb901fb026a73a71497f;hb=79f2b919211aaf60b0e31bafd162fee7c45f40b8;hp=eb3ef23bc64a05925746f8c824478158e6f94917;hpb=b6f4cdaea27fbf49f924b2684d4c638089314067;p=ardour.git diff --git a/gtk2_ardour/axis_view.cc b/gtk2_ardour/axis_view.cc index eb3ef23bc6..5e0a50fdf7 100644 --- a/gtk2_ardour/axis_view.cc +++ b/gtk2_ardour/axis_view.cc @@ -35,7 +35,10 @@ #include "ardour/utils.h" #include "public_editor.h" +#include "ardour_ui.h" +#include "gui_object.h" #include "axis_view.h" +#include "utils.h" #include "i18n.h" using namespace std; @@ -45,11 +48,10 @@ using namespace ARDOUR; list AxisView::used_colors; -AxisView::AxisView (ARDOUR::Session* sess) +AxisView::AxisView (ARDOUR::Session* sess) : SessionHandlePtr (sess) { _selected = false; - _marked_for_display = false; } AxisView::~AxisView() @@ -59,39 +61,36 @@ AxisView::~AxisView() Gdk::Color AxisView::unique_random_color() { - Gdk::Color newcolor; - - while (1) { - - /* avoid neon/glowing tones by limiting them to the - "inner section" (paler) of a color wheel/circle. - */ - - const int32_t max_saturation = 48000; // 65535 would open up the whole color wheel - - newcolor.set_red (random() % max_saturation); - newcolor.set_blue (random() % max_saturation); - newcolor.set_green (random() % max_saturation); + return ::unique_random_color (used_colors); +} - if (used_colors.size() == 0) { - used_colors.push_back (newcolor); - return newcolor; - } +string +AxisView::gui_property (const string& property_name) const +{ + return gui_object_state().get_string (state_id(), property_name); +} - for (list::iterator i = used_colors.begin(); i != used_colors.end(); ++i) { - Gdk::Color c = *i; - float rdelta, bdelta, gdelta; +bool +AxisView::marked_for_display () const +{ + string const v = gui_property ("visible"); + return (v == "" || string_is_affirmative (v)); +} - rdelta = newcolor.get_red() - c.get_red(); - bdelta = newcolor.get_blue() - c.get_blue(); - gdelta = newcolor.get_green() - c.get_green(); +bool +AxisView::set_marked_for_display (bool yn) +{ + string const v = gui_property ("visible"); + if (v == "" || yn != string_is_affirmative (v)) { + set_gui_property ("visible", yn); + return true; // things changed + } - if (sqrt (rdelta*rdelta + bdelta*bdelta + gdelta*gdelta) > 25.0) { - used_colors.push_back (newcolor); - return newcolor; - } - } + return false; +} - /* XXX need throttle here to make sure we don't spin for ever */ - } +GUIObjectState& +AxisView::gui_object_state() +{ + return *ARDOUR_UI::instance()->gui_object_state; }