MuteMaster should (a) use a Muteable's own ::muted_by_others_soloing() (b) not try...
[ardour.git] / libs / ardour / ardour / export_channel_configuration.h
index b5b9b65bf7cf7ac40f161979a2b230e5c15d5fdb..4cab886c88d78811343a599ab97b4463f7c58f9a 100644 (file)
 
 #include <list>
 #include <string>
+#include <algorithm>
+
 #include <boost/enable_shared_from_this.hpp>
 
 #include "ardour/export_channel.h"
-#include "ardour/export_status.h"
-#include "ardour/ardour.h"
+#include "ardour/export_pointers.h"
 
 #include "pbd/xml++.h"
 
 namespace ARDOUR
 {
 
-class ExportHandler;
-class AudioPort;
-class ExportChannel;
-class ExportFormatSpecification;
-class ExportFilename;
-class ExportProcessor;
-class ExportTimespan;
 class Session;
 
-class ExportChannelConfiguration : public boost::enable_shared_from_this<ExportChannelConfiguration>
+class LIBARDOUR_API ExportChannelConfiguration : public boost::enable_shared_from_this<ExportChannelConfiguration>
 {
 
   private:
@@ -53,7 +47,7 @@ class ExportChannelConfiguration : public boost::enable_shared_from_this<ExportC
   public:
        bool operator== (ExportChannelConfiguration const & other) const { return channels == other.channels; }
        bool operator!= (ExportChannelConfiguration const & other) const { return channels != other.channels; }
-       
+
        XMLNode & get_state ();
        int set_state (const XMLNode &);
 
@@ -66,12 +60,18 @@ class ExportChannelConfiguration : public boost::enable_shared_from_this<ExportC
        void set_name (std::string name) { _name = name; }
        void set_split (bool value) { split = value; }
 
+       RegionExportChannelFactory::Type region_processing_type() const { return region_type; }
+       void set_region_processing_type(RegionExportChannelFactory::Type type) { region_type = type; }
+
        bool get_split () const { return split; }
        uint32_t get_n_chans () const { return channels.size(); }
 
        void register_channel (ExportChannelPtr channel) { channels.push_back (channel); }
+       void register_channels (ChannelList const & new_channels) {
+               std::copy (new_channels.begin(), new_channels.end(), std::back_inserter(channels));
+       }
        void clear_channels () { channels.clear (); }
-       
+
        /** Returns a list of channel configurations that match the files created.
          * I.e. many configurations if splitting is enabled, one if not. */
        void configurations_for_files (std::list<boost::shared_ptr<ExportChannelConfiguration> > & configs);
@@ -83,6 +83,7 @@ class ExportChannelConfiguration : public boost::enable_shared_from_this<ExportC
        ChannelList     channels;
        bool            split; // Split to mono files
        std::string  _name;
+       RegionExportChannelFactory::Type region_type;
 };
 
 } // namespace ARDOUR