]> git.sesse.net Git - casparcg/blob - core/renderer/layer.h
ef25788f268864487b97aa45fd3d6239a4caacea
[casparcg] / core / renderer / layer.h
1 #pragma once\r
2 \r
3 #include "../producer/frame_producer.h"\r
4 \r
5 namespace caspar { namespace core { namespace renderer {\r
6 \r
7 enum load_option\r
8 {\r
9         none,\r
10         preview,\r
11         auto_play\r
12 };\r
13                         \r
14 class layer\r
15 {\r
16         layer(const layer& other);\r
17         layer& operator=(const layer& other);\r
18 public:\r
19         layer();\r
20         layer(layer&& other);\r
21         layer& operator=(layer&& other);\r
22 \r
23         void load(const frame_producer_ptr& producer, load_option option = load_option::none);  \r
24         void play();\r
25         void pause();\r
26         void stop();\r
27         void clear();\r
28                 \r
29         frame_producer_ptr active() const;\r
30         frame_producer_ptr background() const;\r
31 \r
32         gpu_frame_ptr get_frame();\r
33 private:\r
34         struct implementation;\r
35         std::shared_ptr<implementation> impl_;\r
36 };\r
37 typedef std::shared_ptr<layer> layer_ptr;\r
38 typedef std::unique_ptr<layer> layer_uptr;\r
39 \r
40 }}}