fix computation of fixed ruler scales done before canvas width is set by allocation...
[ardour.git] / gtk2_ardour / automation_controller.cc
index 212c8e9ade9ad42db5a861c81d5fc0f0430554d0..a80a4742327cf41eadd782287b83b0af455c9af9 100644 (file)
@@ -1,6 +1,6 @@
 /*
     Copyright (C) 2007 Paul Davis
-    Author: Dave Robillard
+    Author: David Robillard
 
     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
 
 #include "pbd/error.h"
 
-#include "ardour/automation_list.h"
-#include "ardour/automation_control.h"
-#include "ardour/event_type_map.h"
 #include "ardour/automatable.h"
-#include "ardour/panner.h"
-#include "ardour/pan_controllable.h"
+#include "ardour/automation_control.h"
 #include "ardour/session.h"
 
 #include "ardour_ui.h"
@@ -76,7 +72,16 @@ AutomationController::create(
                const Evoral::Parameter& param,
                boost::shared_ptr<AutomationControl> ac)
 {
-       Gtk::Adjustment* adjustment = manage (new Gtk::Adjustment (param.normal(), param.min(), param.max()));
+       Gtk::Adjustment* adjustment = manage (
+               new Gtk::Adjustment (
+                       ac->internal_to_interface (param.normal()),
+                       ac->internal_to_interface (param.min()),
+                       ac->internal_to_interface (param.max()),
+                       (param.max() - param.min()) / 100.0,
+                       (param.max() - param.min()) / 10.0
+                       )
+               );
+
         assert (ac);
         assert(ac->parameter() == param);
        return boost::shared_ptr<AutomationController>(new AutomationController(printer, ac, adjustment));
@@ -92,11 +97,11 @@ AutomationController::get_label (double& xpos)
 void
 AutomationController::display_effective_value()
 {
-       double const ui_value = _controllable->user_to_ui (_controllable->get_value());
+       double const interface_value = _controllable->internal_to_interface (_controllable->get_value());
 
-       if (_adjustment->get_value() != ui_value) {
+       if (_adjustment->get_value () != interface_value) {
                _ignore_change = true;
-               _adjustment->set_value (ui_value);
+               _adjustment->set_value (interface_value);
                _ignore_change = false;
        }
 }
@@ -105,7 +110,7 @@ void
 AutomationController::value_adjusted ()
 {
        if (!_ignore_change) {
-               _controllable->set_value (_controllable->ui_to_user (_adjustment->get_value()));
+               _controllable->set_value (_controllable->interface_to_internal (_adjustment->get_value()));
        }
 }
 
@@ -122,7 +127,7 @@ AutomationController::end_touch ()
 
                bool mark = false;
                double when = 0;
-                
+
                if (_controllable->session().transport_rolling()) {
                        mark = true;
                        when = _controllable->session().transport_frame();
@@ -132,23 +137,6 @@ AutomationController::end_touch ()
        }
 }
 
-void
-AutomationController::automation_state_changed ()
-{
-       ENSURE_GUI_THREAD (*this, &AutomationController::automation_state_changed)
-
-       bool x = (_controllable->automation_state() != Off);
-
-       /* start watching automation so that things move */
-
-       _screen_update_connection.disconnect();
-
-       if (x) {
-               _screen_update_connection = ARDOUR_UI::RapidScreenUpdate.connect (
-                               sigc::mem_fun (*this, &AutomationController::display_effective_value));
-       }
-}
-
 void
 AutomationController::value_changed ()
 {