enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h
[ardour.git] / libs / panners / 1in2out / panner_1in2out.cc
index 00024768e4f8a9c2d7b527f367edaa1e72aa5b18..3dc3b53e2c4097e0998546a14db129d86c08808b 100644 (file)
 
 #include <cmath>
 #include <cerrno>
-#include <fstream>
 #include <cstdlib>
 #include <string>
 #include <cstdio>
 #include <locale.h>
 #include <unistd.h>
 #include <float.h>
-#include <iomanip>
 
 #include <glibmm.h>
 
@@ -51,9 +49,9 @@
 #include "ardour/buffer_set.h"
 #include "ardour/audio_buffer.h"
 #include "ardour/pannable.h"
-#include "ardour/visibility.h"
+#include "ardour/profile.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 #include "panner_1in2out.h"
 
 #include "pbd/mathfix.h"
@@ -64,7 +62,10 @@ using namespace PBD;
 
 static PanPluginDescriptor _descriptor = {
         "Mono to Stereo Panner",
-        1, 2, 
+        "http://ardour.org/plugin/panner_1in2out",
+        "http://ardour.org/plugin/panner_1in2out#ui",
+        1, 2,
+        10000,
         Panner1in2out::factory
 };
 
@@ -73,10 +74,12 @@ extern "C" ARDOURPANNER_API PanPluginDescriptor*  panner_descriptor () { return
 Panner1in2out::Panner1in2out (boost::shared_ptr<Pannable> p)
        : Panner (p)
 {
-        if (!_pannable->has_state()) {
-                _pannable->pan_azimuth_control->set_value (0.5);
+        if (!Profile->get_trx () ) {
+            if (!_pannable->has_state ()) {
+                   _pannable->pan_azimuth_control->set_value (0.5, Controllable::NoGroup);
+            }
         }
-        
+
         update ();
 
         left = desired_left;
@@ -109,7 +112,7 @@ void
 Panner1in2out::set_position (double p)
 {
         if (clamp_position (p)) {
-                _pannable->pan_azimuth_control->set_value (p);
+               _pannable->pan_azimuth_control->set_value (p, Controllable::NoGroup);
         }
 }
 
@@ -128,7 +131,7 @@ Panner1in2out::position_range () const
        return make_pair (0, 1);
 }
 
-double 
+double
 Panner1in2out::position () const
 {
         return _pannable->pan_azimuth_control->get_value ();
@@ -144,7 +147,7 @@ Panner1in2out::distribute_one (AudioBuffer& srcbuf, BufferSet& obufs, gain_t gai
        pan_t pan;
 
        Sample* const src = srcbuf.data();
-        
+
        /* LEFT OUTPUT */
 
        dst = obufs.get_audio(0).data();
@@ -195,7 +198,7 @@ Panner1in2out::distribute_one (AudioBuffer& srcbuf, BufferSet& obufs, gain_t gai
                        /* pan is 1 so we can just copy the input samples straight in */
 
                        mix_buffers_no_gain(dst,src,nframes);
-                        
+
                        /* XXX it would be nice to mark that we wrote into the buffer */
                }
        }
@@ -238,7 +241,7 @@ Panner1in2out::distribute_one (AudioBuffer& srcbuf, BufferSet& obufs, gain_t gai
                        if (pan != 0.0f) {
 
                                /* pan is not 1 but also not 0, so we must do it "properly" */
-                               
+
                                mix_buffers_with_gain(dst,src,nframes,pan);
 
                                /* XXX it would be nice to mark the buffer as written to */
@@ -247,7 +250,7 @@ Panner1in2out::distribute_one (AudioBuffer& srcbuf, BufferSet& obufs, gain_t gai
                } else {
 
                        /* pan is 1 so we can just copy the input samples straight in */
-                       
+
                        mix_buffers_no_gain(dst,src,nframes);
 
                        /* XXX it would be nice to mark the buffer as written to */
@@ -291,10 +294,10 @@ Panner1in2out::distribute_one_automated (AudioBuffer& srcbuf, BufferSet& obufs,
                 /* note that are overwriting buffers, but its OK
                    because we're finished with their old contents
                    (position automation data) and are
-                   replacing it with panning/gain coefficients 
+                   replacing it with panning/gain coefficients
                    that we need to actually process the data.
                 */
-                
+
                 buffers[0][n] = panL * (scale * panL + 1.0f - scale);
                 buffers[1][n] = panR * (scale * panR + 1.0f - scale);
         }
@@ -333,12 +336,14 @@ XMLNode&
 Panner1in2out::get_state ()
 {
        XMLNode& root (Panner::get_state ());
+       root.add_property (X_("uri"), _descriptor.panner_uri);
+       /* this is needed to allow new sessions to load with old Ardour: */
        root.add_property (X_("type"), _descriptor.name);
        return root;
 }
 
 
-std::set<Evoral::Parameter> 
+std::set<Evoral::Parameter>
 Panner1in2out::what_can_be_automated() const
 {
         set<Evoral::Parameter> s;
@@ -357,8 +362,8 @@ Panner1in2out::describe_parameter (Evoral::Parameter p)
         }
 }
 
-string 
-Panner1in2out::value_as_string (boost::shared_ptr<AutomationControl> ac) const
+string
+Panner1in2out::value_as_string (boost::shared_ptr<const AutomationControl> ac) const
 {
         /* DO NOT USE LocaleGuard HERE */
         double val = ac->get_value();
@@ -366,9 +371,9 @@ Panner1in2out::value_as_string (boost::shared_ptr<AutomationControl> ac) const
         switch (ac->parameter().type()) {
         case PanAzimuthAutomation:
                 /* We show the position of the center of the image relative to the left & right.
-                   This is expressed as a pair of percentage values that ranges from (100,0) 
+                   This is expressed as a pair of percentage values that ranges from (100,0)
                    (hard left) through (50,50) (hard center) to (0,100) (hard right).
-                   
+
                    This is pretty wierd, but its the way audio engineers expect it. Just remember that
                    the center of the USA isn't Kansas, its (50LA, 50NY) and it will all make sense.
 
@@ -376,12 +381,12 @@ Panner1in2out::value_as_string (boost::shared_ptr<AutomationControl> ac) const
                   panner GUIs can do their own version of this if they need
                   something less compact.
                 */
-                
+
                 return string_compose (_("L%1R%2"), (int) rint (100.0 * (1.0 - val)),
                                        (int) rint (100.0 * val));
-                
+
         default:
-                return _pannable->value_as_string (ac);
+                return _("unused");
         }
 }