From 4b5bd4ca46fe00a473682bf21927a0d67ac1a3a4 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 16 May 2011 15:49:26 +0000 Subject: refactor playlist sources to allow for MIDI and upcoming work on save/restore git-svn-id: svn://localhost/ardour2/branches/3.0@9521 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ardour/audio_playlist_source.h | 15 ++++---- libs/ardour/ardour/playlist_source.h | 55 ++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 libs/ardour/ardour/playlist_source.h (limited to 'libs/ardour/ardour') diff --git a/libs/ardour/ardour/audio_playlist_source.h b/libs/ardour/ardour/audio_playlist_source.h index d6047de1fc..3514a06407 100644 --- a/libs/ardour/ardour/audio_playlist_source.h +++ b/libs/ardour/ardour/audio_playlist_source.h @@ -26,16 +26,17 @@ #include "ardour/ardour.h" #include "ardour/audiosource.h" +#include "ardour/playlist_source.h" namespace ARDOUR { class AudioPlaylist; -class AudioPlaylistSource : public AudioSource { +class AudioPlaylistSource : public AudioSource, public PlaylistSource { public: virtual ~AudioPlaylistSource (); - - bool empty() const; + + bool empty() const; std::string peak_path (std::string audio_path); uint32_t n_channels() const; bool clamped_at_unity () const { return false; } @@ -56,15 +57,15 @@ class AudioPlaylistSource : public AudioSource { friend class SourceFactory; AudioPlaylistSource (Session&, const std::string& name, boost::shared_ptr, uint32_t chn, - frameoffset_t begin, framecnt_t len, bool copy, Source::Flag flags); + frameoffset_t begin, framecnt_t len, Source::Flag flags); AudioPlaylistSource (Session&, const XMLNode&); private: - boost::shared_ptr _playlist; - frameoffset_t _playlist_offset; - framecnt_t _playlist_length; uint32_t _playlist_channel; std::string _peak_path; + + int set_state (const XMLNode&, int version, bool with_descendants); + }; } /* namespace */ diff --git a/libs/ardour/ardour/playlist_source.h b/libs/ardour/ardour/playlist_source.h new file mode 100644 index 0000000000..8732870ec0 --- /dev/null +++ b/libs/ardour/ardour/playlist_source.h @@ -0,0 +1,55 @@ +/* + Copyright (C) 2011 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifndef __ardour_playlist_source_h__ +#define __ardour_playlist_source_h__ + +#include + +#include + +#include "ardour/ardour.h" +#include "ardour/source.h" + +namespace ARDOUR { + +class Playlist; + +class PlaylistSource : virtual public Source { + public: + virtual ~PlaylistSource (); + + int set_state (const XMLNode&, int version); + + protected: + boost::shared_ptr _playlist; + frameoffset_t _playlist_offset; + framecnt_t _playlist_length; + + PlaylistSource (Session&, const std::string& name, boost::shared_ptr, DataType, + frameoffset_t begin, framecnt_t len, Source::Flag flags); + PlaylistSource (Session&, const XMLNode&); + + void add_state (XMLNode&); + +}; + +} /* namespace */ + +#endif /* __ardour_playlist_source_h__ */ -- cgit v1.2.3