]> git.sesse.net Git - casparcg/blob - core/producer/layer.h
2.0.0.2: - Refactored frame layer tagging.
[casparcg] / core / producer / layer.h
1 #pragma once\r
2 \r
3 #include <common/memory/safe_ptr.h>\r
4 \r
5 #include <boost/noncopyable.hpp>\r
6 \r
7 #include <memory>\r
8 #include <numeric>\r
9 \r
10 namespace caspar { namespace core {\r
11 \r
12 class frame_producer;\r
13 class basic_frame;\r
14 \r
15 class layer //: boost::noncopyable\r
16 {\r
17 public:\r
18         layer(); // nothrow\r
19         layer(layer&& other); // nothrow\r
20         layer& operator=(layer&& other); // nothrow\r
21         layer(const layer&);\r
22         layer& operator=(const layer&);\r
23 \r
24         void swap(layer& other); // nothrow \r
25                 \r
26         void load(const safe_ptr<frame_producer>& producer, bool preview); // nothrow\r
27         void play(); // nothrow\r
28         void pause(); // nothrow\r
29         void stop(); // nothrow\r
30 \r
31         safe_ptr<frame_producer> foreground() const; // nothrow\r
32         safe_ptr<frame_producer> background() const; // nothrow\r
33 \r
34         safe_ptr<basic_frame> receive(); // nothrow\r
35 private:\r
36         struct implementation;\r
37         std::shared_ptr<implementation> impl_;\r
38 };\r
39 \r
40 }}