]> git.sesse.net Git - casparcg/blob - common/diagnostics/graph.h
2.0.0.2: graph - Changed interface.
[casparcg] / common / diagnostics / graph.h
1 #pragma once\r
2 \r
3 #include "../memory/safe_ptr.h"\r
4 \r
5 #include "../utility/printer.h"\r
6 \r
7 #include <string>\r
8 #include <vector>\r
9 #include <map>\r
10 \r
11 #include <boost/range/iterator_range.hpp>\r
12 #include <boost/circular_buffer.hpp>\r
13 \r
14 namespace caspar { namespace diagnostics {\r
15         \r
16 struct color\r
17 {\r
18         float red;\r
19         float green;\r
20         float blue;\r
21         float alpha;\r
22         \r
23         color(float r = 0.0f, float g = 0.0f, float b = 0.0f, float a = 1.0f)\r
24                 : red(r)\r
25                 , green(g)\r
26                 , blue(b)\r
27                 , alpha(a){}\r
28 };\r
29 \r
30 class graph\r
31 {\r
32         friend safe_ptr<graph> create_graph(const std::string& name);\r
33         friend safe_ptr<graph> create_graph(const printer& parent_printer);\r
34         graph(const std::string& name);\r
35         graph(const printer& parent_printer);\r
36 public:\r
37         void update_value(const std::string& name, float value);\r
38         void set_value(const std::string& name, float value);\r
39         void set_color(const std::string& name, color c);\r
40         void add_tag(const std::string& name);\r
41         void add_guide(const std::string& name, float value);\r
42 private:\r
43         struct implementation;\r
44         std::shared_ptr<implementation> impl_;\r
45 };\r
46 \r
47 safe_ptr<graph> create_graph(const std::string& name);\r
48 safe_ptr<graph> create_graph(const printer& parent_printer);\r
49         \r
50 //namespace v2\r
51 //{\r
52 //      \r
53 //      struct data\r
54 //      {\r
55 //              float value;\r
56 //      };\r
57 //\r
58 //      class line\r
59 //      {\r
60 //      public:\r
61 //              line();\r
62 //              line(const std::wstring& name);\r
63 //              std::wstring print() const;\r
64 //              void update_value(float value);\r
65 //              void set_value(float value);\r
66 //              void set_tag(const std::wstring& tag);\r
67 //\r
68 //              boost::circular_buffer<data>& ticks();\r
69 //      private:\r
70 //              struct implementation;\r
71 //              std::shared_ptr<implementation> impl_;\r
72 //      };\r
73 //      \r
74 //      class graph;\r
75 //\r
76 //\r
77 //      class graph\r
78 //      {\r
79 //      public:\r
80 //              graph(const std::wstring& name);\r
81 //              graph(const printer& parent_printer);\r
82 //\r
83 //              void update_value(const std::wstring& name, float value);\r
84 //              void set_value(const std::wstring& name, float value);\r
85 //\r
86 //              void set_guide(const std::wstring& name, float value);\r
87 //              void set_color(const std::wstring& name, color c);\r
88 //\r
89 //              color get_color() const;\r
90 //              std::map<std::wstring, line>& get_lines();\r
91 //\r
92 //              std::wstring print() const;\r
93 //\r
94 //              safe_ptr<graph> clone() const;\r
95 //      private:\r
96 //              struct implementation;\r
97 //              std::shared_ptr<implementation> impl_;\r
98 //      };\r
99 //      \r
100 //      static safe_ptr<graph> create_graph(const std::wstring& name);\r
101 //      static safe_ptr<graph> create_graph(const printer& parent_printer);\r
102 //      static std::vector<safe_ptr<graph>> get_all_graphs();\r
103 //}\r
104 \r
105 }}