3 #include <common/memory/safe_ptr.h>
\r
4 #include <common/utility/printable.h>
\r
6 #include <boost/noncopyable.hpp>
\r
8 #include <tbb/atomic.h>
\r
12 namespace caspar { namespace core {
\r
14 class frame_producer;
\r
17 class layer : boost::noncopyable
\r
20 layer(int index, const printer& parent_printer = nullptr); // nothrow
\r
22 layer(layer&& other); // nothrow
\r
23 layer& operator=(layer&& other); // nothrow
\r
25 void swap(layer& other); // nothrow
\r
27 void load(const safe_ptr<frame_producer>& producer, bool play_on_load = false); // nothrow
\r
28 void preview(const safe_ptr<frame_producer>& producer); // nothrow
\r
29 void play(); // nothrow
\r
30 void pause(); // nothrow
\r
31 void stop(); // nothrow
\r
32 void clear(); // nothrow
\r
34 safe_ptr<frame_producer> foreground() const; // nothrow
\r
35 safe_ptr<frame_producer> background() const; // nothrow
\r
37 safe_ptr<draw_frame> receive(); // nothrow
\r
39 std::wstring print() const;
\r
41 struct implementation;
\r
42 tbb::atomic<implementation*> impl_;
\r