Merged with trunk
[ardour.git] / libs / ardour / playlist_factory.cc
1 #include <ardour/session.h>
2
3 #include <ardour/playlist.h>
4 #include <ardour/audioplaylist.h>
5
6 #include <ardour/region_factory.h>
7 #include <ardour/region.h>
8 #include <ardour/audioregion.h>
9
10 #include "i18n.h"
11
12 using namespace ARDOUR;
13
14 Region*
15 ARDOUR::createRegion (const Region& region, jack_nframes_t start, 
16                       jack_nframes_t length, std::string name, 
17                       layer_t layer, Region::Flag flags)
18 {
19         const AudioRegion* ar;
20         
21         if ((ar = dynamic_cast<const AudioRegion*>(&region)) != 0) {
22                 AudioRegion* ret;
23                 ret = new AudioRegion (*ar, start, length, name, layer, flags);
24                 return ret;
25         } else {
26                 fatal << _("programming error: Playlist::createRegion called with unknown Region type")
27                       << endmsg;
28                 /*NOTREACHED*/
29                 return 0;
30         }
31 }
32
33 Region*
34 ARDOUR::createRegion (const Region& region)
35 {
36         const AudioRegion* ar;
37         
38         if ((ar = dynamic_cast<const AudioRegion*>(&region)) != 0) {
39                 return new AudioRegion (*ar);
40         } else {
41                 fatal << _("programming error: Playlist::createRegion called with unknown Region type")
42                       << endmsg;
43                 /*NOTREACHED*/
44                 return 0;
45         }
46 }
47
48 Region*
49 ARDOUR::createRegion (Session& session, XMLNode& node, bool yn)
50 {
51         return session.XMLRegionFactory (node, yn);
52 }
53         
54 Playlist*
55 Playlist::copyPlaylist (const Playlist& playlist, jack_nframes_t start, jack_nframes_t length,
56                         string name, bool result_is_hidden)
57 {
58         const AudioPlaylist* apl;
59
60         if ((apl = dynamic_cast<const AudioPlaylist*> (&playlist)) != 0) {
61                 return new AudioPlaylist (*apl, start, length, name, result_is_hidden);
62         } else {
63                 fatal << _("programming error: Playlist::copyPlaylist called with unknown Playlist type")
64                       << endmsg;
65                 /*NOTREACHED*/
66                 return 0;
67         }
68 }