ardour
export_channel_configuration.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2008 Paul Davis
3  Author: Sakari Bergen
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program; if not, write to the Free Software
17  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 
19 */
20 
21 #ifndef __ardour_export_channel_configuration_h__
22 #define __ardour_export_channel_configuration_h__
23 
24 #include <list>
25 #include <string>
26 #include <algorithm>
27 
28 #include <boost/enable_shared_from_this.hpp>
29 
30 #include "ardour/export_channel.h"
31 #include "ardour/export_pointers.h"
32 
33 #include "pbd/xml++.h"
34 
35 namespace ARDOUR
36 {
37 
38 class Session;
39 
41 {
42 
43  private:
44  friend class ExportElementFactory;
46 
47  public:
48  bool operator== (ExportChannelConfiguration const & other) const { return channels == other.channels; }
49  bool operator!= (ExportChannelConfiguration const & other) const { return channels != other.channels; }
50 
51  XMLNode & get_state ();
52  int set_state (const XMLNode &);
53 
54  typedef std::list<ExportChannelPtr> ChannelList;
55 
56  ChannelList const & get_channels () const { return channels; }
57  bool all_channels_have_ports () const;
58 
59  std::string name () const { return _name; }
60  void set_name (std::string name) { _name = name; }
61  void set_split (bool value) { split = value; }
62 
65 
66  bool get_split () const { return split; }
67  uint32_t get_n_chans () const { return channels.size(); }
68 
69  void register_channel (ExportChannelPtr channel) { channels.push_back (channel); }
70  void register_channels (ChannelList const & new_channels) {
71  std::copy (new_channels.begin(), new_channels.end(), std::back_inserter(channels));
72  }
73  void clear_channels () { channels.clear (); }
74 
77  void configurations_for_files (std::list<boost::shared_ptr<ExportChannelConfiguration> > & configs);
78 
79  private:
80 
82 
83  ChannelList channels;
84  bool split; // Split to mono files
85  std::string _name;
87 };
88 
89 } // namespace ARDOUR
90 
91 #endif /* __ardour_export_channel_configuration_h__ */
bool operator!=(shared_ptr< T > const &a, shared_ptr< U > const &b)
Definition: shared_ptr.hpp:360
void set_region_processing_type(RegionExportChannelFactory::Type type)
LIBPBD_API void split(std::string, std::vector< std::string > &, char)
RegionExportChannelFactory::Type region_processing_type() const
void register_channels(ChannelList const &new_channels)
Definition: amp.h:29
#define LIBARDOUR_API
RegionExportChannelFactory::Type region_type
void register_channel(ExportChannelPtr channel)
const char * name
Definition: xml++.h:95
bool operator==(const RouteProcessorSelection &a, const RouteProcessorSelection &b)