fix visual focus indication in IOSelector; import pays attention to audio file embedd...
[ardour.git] / libs / ardour / ardour / panner.h
index 0cb0c3dfaad79a6e1ce1bb4483a4368bcd31b2b7..32d512c2534e2c3c350d37019c2aeab52c6d1a8b 100644 (file)
@@ -83,18 +83,18 @@ class StreamPanner : public sigc::trackable, public Stateful
 
        virtual Curve& automation() = 0;
 
-       virtual int load (istream&, string path, uint32_t&) = 0;
-
-       virtual int save (ostream&) const = 0;
-
        sigc::signal<void> Changed;      /* for position */
        sigc::signal<void> StateChanged; /* for mute */
 
        int set_state (const XMLNode&);
        virtual XMLNode& state (bool full_state) = 0;
-
+       
        Panner & get_parent() { return parent; }
        
+       /* old school automation loading */
+
+       virtual int load (istream&, string path, uint32_t&) = 0;
+
   protected:
        friend class Panner;
        Panner& parent;
@@ -143,8 +143,6 @@ class BaseStereoPanner : public StreamPanner
 
        void distribute (Sample* src, Sample** obufs, gain_t gain_coeff, nframes_t nframes);
 
-       int load (istream&, string path, uint32_t&);
-       int save (ostream&) const;
        void snapshot (nframes_t now);
        void transport_stopped (nframes_t frame);
        void set_automation_state (AutoState);
@@ -152,6 +150,10 @@ class BaseStereoPanner : public StreamPanner
 
        Curve& automation() { return _automation; }
 
+       /* old school automation loading */
+
+       int load (istream&, string path, uint32_t&);
+
   protected:
        float left;
        float right;
@@ -205,10 +207,7 @@ class Multi2dPanner : public StreamPanner
 
        void distribute (Sample* src, Sample** obufs, gain_t gain_coeff, nframes_t nframes);
        void distribute_automated (Sample* src, Sample** obufs, 
-                            nframes_t start, nframes_t end, nframes_t nframes, pan_t** buffers);
-
-       int load (istream&, string path, uint32_t&);
-       int save (ostream&) const;
+                                  nframes_t start, nframes_t end, nframes_t nframes, pan_t** buffers);
 
        static StreamPanner* factory (Panner&);
        static string name;
@@ -217,6 +216,10 @@ class Multi2dPanner : public StreamPanner
        XMLNode& get_state (void);
        int set_state (const XMLNode&);
 
+       /* old school automation loading */
+
+       int load (istream&, string path, uint32_t&);
+
   private:
        Curve _automation;
        void update ();
@@ -239,8 +242,6 @@ class Panner : public std::vector<StreamPanner*>, public Stateful, public sigc::
        Panner (string name, Session&);
        virtual ~Panner ();
 
-       void set_name (string);
-
        bool bypassed() const { return _bypassed; }
        void set_bypassed (bool yn);
 
@@ -260,9 +261,6 @@ class Panner : public std::vector<StreamPanner*>, public Stateful, public sigc::
        AutoStyle automation_style() const;
        bool touching() const;
 
-       int load ();
-       int save () const;
-
        XMLNode& get_state (void);
        XMLNode& state (bool full);
        int      set_state (const XMLNode&);
@@ -299,10 +297,13 @@ class Panner : public std::vector<StreamPanner*>, public Stateful, public sigc::
        void set_position (float x, StreamPanner& orig);
        void set_position (float x, float y, StreamPanner& orig);
        void set_position (float x, float y, float z, StreamPanner& orig);
-       
+
+       /* old school automation */
+
+       int load ();
+
   private:
 
-       string            automation_path;
        Session&         _session;
        uint32_t     current_outs;
        bool             _linked;
@@ -310,6 +311,11 @@ class Panner : public std::vector<StreamPanner*>, public Stateful, public sigc::
        LinkDirection    _link_direction;
 
        static float current_automation_version_number;
+
+       /* old school automation handling */
+
+       std::string automation_path;
+       void set_name (std::string);
 };
 
 } // namespace ARDOUR