]> git.sesse.net Git - casparcg/blob - core/frame/gpu_frame.h
2.0.0.2:
[casparcg] / core / frame / gpu_frame.h
1 #pragma once\r
2 \r
3 #include "frame_format.h"\r
4 \r
5 #include <memory>\r
6 \r
7 #include <boost/noncopyable.hpp>\r
8 \r
9 #include <Glee.h>\r
10 \r
11 #include <boost/tuple/tuple.hpp>\r
12 \r
13 namespace caspar { namespace core {\r
14         \r
15 struct rectangle\r
16 {\r
17         rectangle(double left, double top, double right, double bottom)\r
18                 : left(left), top(top), right(right), bottom(bottom)\r
19         {}\r
20         double left;\r
21         double top;\r
22         double right;\r
23         double bottom;\r
24 };\r
25 \r
26 class gpu_frame : boost::noncopyable\r
27 {\r
28 public:\r
29         virtual ~gpu_frame(){}\r
30                         \r
31         virtual unsigned char* data();\r
32         virtual size_t size() const;\r
33         virtual size_t width() const;\r
34         virtual size_t height() const;\r
35                                 \r
36         virtual const std::vector<short>& audio_data() const;   \r
37         virtual std::vector<short>& audio_data();\r
38 \r
39         virtual double alpha() const;\r
40         virtual void alpha(double value);\r
41 \r
42         virtual double x() const;\r
43         virtual double y() const;\r
44         virtual void translate(double x, double y);\r
45         virtual void texcoords(const rectangle& texcoords);\r
46 \r
47         virtual void mode(video_mode mode);\r
48         virtual video_mode mode() const;\r
49 \r
50         static std::shared_ptr<gpu_frame> null()\r
51         {\r
52                 static auto my_null_frame = std::shared_ptr<gpu_frame>(new gpu_frame(0,0));\r
53                 return my_null_frame;\r
54         }\r
55                 \r
56 protected:\r
57         gpu_frame(size_t width, size_t height);\r
58 \r
59         friend class gpu_frame_processor;\r
60         \r
61         virtual void begin_write();\r
62         virtual void end_write();\r
63         virtual void begin_read();\r
64         virtual void end_read();\r
65         virtual void draw();\r
66         virtual void reset();\r
67 \r
68 private:\r
69         struct implementation;\r
70         std::shared_ptr<implementation> impl_;\r
71 };\r
72 typedef std::shared_ptr<gpu_frame> gpu_frame_ptr;\r
73         \r
74 }}