#ifndef __ardour_region_factory_h__ #define __ardour_region_factory_h__ #include #include class XMLNode; namespace ARDOUR { class Session; class RegionFactory { public: /** This is emitted only when a new id is assigned. Therefore, in a pure Region copy, it will not be emitted. It must be emitted by derived classes, not Region itself, to permit dynamic_cast<> to be used to infer the type of Region. */ static sigc::signal > CheckNewRegion; static boost::shared_ptr create (boost::shared_ptr, jack_nframes_t start, jack_nframes_t length, std::string name, layer_t = 0, Region::Flag flags = Region::DefaultFlags, bool announce = true); static boost::shared_ptr create (boost::shared_ptr, jack_nframes_t start, jack_nframes_t length, std::string name, layer_t = 0, Region::Flag flags = Region::DefaultFlags, bool announce = true); static boost::shared_ptr create (boost::shared_ptr, jack_nframes_t start, jack_nframes_t length, const string& name, layer_t = 0, Region::Flag flags = Region::DefaultFlags, bool announce = true); static boost::shared_ptr create (SourceList &, jack_nframes_t start, jack_nframes_t length, const string& name, layer_t = 0, Region::Flag flags = Region::DefaultFlags, bool announce = true); static boost::shared_ptr create (boost::shared_ptr); static boost::shared_ptr create (Session&, XMLNode&, bool); static boost::shared_ptr create (SourceList &, const XMLNode&); }; } #endif /* __ardour_region_factory_h__ */