packaging tweaks for OS X
[ardour.git] / gtk2_ardour / axis_view.cc
index 6aec4c62eb8b1733a0f84ab31352a1727373dbb0..43763abcc37166e33f10d2c0520d4f6fc4429dca 100644 (file)
@@ -26,6 +26,7 @@
 #include <list>
 
 #include "pbd/error.h"
+#include "pbd/convert.h"
 
 #include <gtkmm2ext/utils.h>
 #include <gtkmm2ext/selector.h>
@@ -38,6 +39,7 @@
 #include "ardour_ui.h"
 #include "gui_object.h"
 #include "axis_view.h"
+#include "utils.h"
 #include "i18n.h"
 
 using namespace std;
@@ -60,41 +62,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<Gdk::Color>::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
@@ -107,18 +75,15 @@ bool
 AxisView::marked_for_display () const
 {
        string const v = gui_property ("visible");
-       return (v == "" || string_is_affirmative (v));
+       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
        }