forward port of 7539 from 2.x
[ardour.git] / gtk2_ardour / panner.cc
index 80b401acfec0516722bcf58d5b34e6580639c64d..145ef020e3fc1deeecda716ecd1c22e24d208be5 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2000-2007 Paul Davis 
+    Copyright (C) 2000-2007 Paul Davis
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -52,13 +52,13 @@ PannerBar::expose (GdkEventExpose* ev)
        GdkPoint points[3];
 
        // left
-       
+
        points[0].x = 0;
        points[0].y = 0;
 
        points[1].x = triangle_size;
        points[1].y = 0;
-       
+
        points[2].x = 0;
        points[2].y = triangle_size;
 
@@ -71,11 +71,11 @@ PannerBar::expose (GdkEventExpose* ev)
 
        points[1].x = (darea.get_width()/2 + triangle_size);
        points[1].y = 0;
-       
+
        points[2].x = darea.get_width()/2;
        points[2].y = triangle_size - 1;
 
-       gdk_draw_polygon (win->gobj(), gc->gobj(), true, points, 3); 
+       gdk_draw_polygon (win->gobj(), gc->gobj(), true, points, 3);
 
        // right
 
@@ -84,7 +84,7 @@ PannerBar::expose (GdkEventExpose* ev)
 
        points[1].x = darea.get_width();
        points[1].y = 0;
-       
+
        points[2].x = darea.get_width();
        points[2].y = triangle_size;
 
@@ -164,32 +164,10 @@ bool
 PannerBar::entry_output ()
 {
        Entry* e = dynamic_cast<Entry*> (&spinner);
-       e->set_text (value_as_string (spinner.get_adjustment()->get_value()));
+       e->set_text (ARDOUR::Panner::value_as_string (spinner.get_adjustment()->get_value()));
        return true;
 }
 
-string
-PannerBar::value_as_string (double v) const
-{
-       if (ARDOUR::Panner::equivalent (v, 0.5)) {
-               return _("C");
-       } else if (ARDOUR::Panner::equivalent (v, 0)) {
-               return _("L");
-       } else if (ARDOUR::Panner::equivalent (v, 1)) {
-               return _("R");
-       } else if (v < 0.5) {
-               std::stringstream s;
-               s << fixed << setprecision (0) << _("L") << ((0.5 - v) * 200) << "%";
-               return s.str();
-       } else if (v > 0.5) {
-               std::stringstream s;
-               s << fixed << setprecision (0) << _("R") << ((v -0.5) * 200) << "%";
-               return s.str ();
-       }
-
-       return "";
-}
-
 std::string
 PannerBar::get_label (int& x)
 {
@@ -198,7 +176,7 @@ PannerBar::get_label (int& x)
        if (ARDOUR::Panner::equivalent (value, 0.5)) {
 
                /* centre: only display text during a drag */
-               
+
                if (!grabbed) {
                        return "";
                }
@@ -206,19 +184,19 @@ PannerBar::get_label (int& x)
        } else {
 
                /* non-centre: display text on the side of the panner which has more space */
-               
+
                Glib::RefPtr<Pango::Context> p = get_pango_context ();
                Glib::RefPtr<Pango::Layout> l = Pango::Layout::create (p);
-               l->set_text (value_as_string (value));
+               l->set_text (ARDOUR::Panner::value_as_string (value));
 
                Pango::Rectangle const ext = l->get_ink_extents ();
-               
+
                if (value < 0.5) {
                        x = (darea.get_width() - 4 - ext.get_width() / Pango::SCALE);
                } else {
                        x = 4;
                }
        }
-       
-       return value_as_string (value);
+
+       return ARDOUR::Panner::value_as_string (value);
 }