X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Faxis_view.cc;h=7a449843e09055a306e6b9148eb7a9a6e5752c7b;hb=249ee47296fdaf000c2820e9922d8b429020759e;hp=513033e05a59444c0ecc3823031f50f466a50da0;hpb=6dc74f8c871752b05eb7def894bd44e38d76c3f4;p=ardour.git diff --git a/gtk2_ardour/axis_view.cc b/gtk2_ardour/axis_view.cc index 513033e05a..7a449843e0 100644 --- a/gtk2_ardour/axis_view.cc +++ b/gtk2_ardour/axis_view.cc @@ -26,18 +26,17 @@ #include #include "pbd/error.h" +#include "pbd/convert.h" #include #include #include -#include "ardour/session.h" -#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; @@ -60,41 +59,7 @@ 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); - - if (used_colors.size() == 0) { - used_colors.push_back (newcolor); - return newcolor; - } - - for (list::iterator i = used_colors.begin(); i != used_colors.end(); ++i) { - Gdk::Color c = *i; - float rdelta, bdelta, gdelta; - - rdelta = newcolor.get_red() - c.get_red(); - bdelta = newcolor.get_blue() - c.get_blue(); - gdelta = newcolor.get_green() - c.get_green(); - - if (sqrt (rdelta*rdelta + bdelta*bdelta + gdelta*gdelta) > 25.0) { - used_colors.push_back (newcolor); - return newcolor; - } - } - - /* XXX need throttle here to make sure we don't spin for ever */ - } + return ::unique_random_color (used_colors); } string @@ -106,18 +71,16 @@ AxisView::gui_property (const string& property_name) const bool AxisView::marked_for_display () const { - return string_is_affirmative (gui_property ("visible")); + string const v = gui_property ("visible"); + return (v == "" || PBD::string_is_affirmative (v)); } bool AxisView::set_marked_for_display (bool yn) { - if (yn != marked_for_display()) { - if (yn) { - set_gui_property ("visible", true); - } else { - set_gui_property ("visible", false); - } + string const v = gui_property ("visible"); + if (v == "" || yn != PBD::string_is_affirmative (v)) { + set_gui_property ("visible", yn); return true; // things changed }