Label logarithmic plugin controls correctly. Should fix #3767.
authorCarl Hetherington <carl@carlh.net>
Sat, 12 Feb 2011 14:10:15 +0000 (14:10 +0000)
committerCarl Hetherington <carl@carlh.net>
Sat, 12 Feb 2011 14:10:15 +0000 (14:10 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@8832 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/ardour/plugin_insert.h
libs/ardour/plugin_insert.cc

index c52e8c2835dcdb8932fabf379313a1ab401aa36d..ea7a081c22e921bc5bf8b08fa03c4a9ce935bfac 100644 (file)
@@ -84,6 +84,10 @@ class PluginInsert : public Processor
                void set_value (double val);
                double get_value (void) const;
                 XMLNode& get_state();
+
+               bool logarithmic () const {
+                       return _logarithmic;
+               }
                 
        private:
                PluginInsert* _plugin;
@@ -113,6 +117,8 @@ class PluginInsert : public Processor
                return _splitting;
        }
 
+        std::string value_as_string (boost::shared_ptr<AutomationControl>) const;
+
        PBD::Signal2<void,BufferSet*, BufferSet*> AnalysisDataGathered;
        /** Emitted when the return value of splitting () has changed */
        PBD::Signal0<void> SplittingChanged;
index 8a5919ab5a40d5c72b6530b1cd83c62d71b61f73..a690cce5ccebdd95adb5542bb8e14266621aad73 100644 (file)
@@ -1164,3 +1164,19 @@ PluginInsert::set_splitting (bool s)
        _splitting = s;
        SplittingChanged (); /* EMIT SIGNAL */
 }
+
+string
+PluginInsert::value_as_string (boost::shared_ptr<AutomationControl> ac) const
+{
+       boost::shared_ptr<PluginControl> pc = boost::dynamic_pointer_cast<PluginControl> (ac);
+       assert (pc);
+
+       stringstream s;
+       if (pc->logarithmic ()) {
+               s << exp (pc->get_value ());
+       } else {
+               s << pc->get_value ();
+       }
+
+       return s.str ();
+}