]> git.sesse.net Git - casparcg/blob - common/diagnostics/graph.h
2.0.2: Is now locked, only bug fixes should be added. New features go into 2.1.0.
[casparcg] / common / diagnostics / graph.h
1 /*\r
2 * Copyright (c) 2011 Sveriges Television AB <info@casparcg.com>\r
3 *\r
4 * This file is part of CasparCG (www.casparcg.com).\r
5 *\r
6 * CasparCG is free software: you can redistribute it and/or modify\r
7 * it under the terms of the GNU General Public License as published by\r
8 * the Free Software Foundation, either version 3 of the License, or\r
9 * (at your option) any later version.\r
10 *\r
11 * CasparCG is distributed in the hope that it will be useful,\r
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14 * GNU General Public License for more details.\r
15 *\r
16 * You should have received a copy of the GNU General Public License\r
17 * along with CasparCG. If not, see <http://www.gnu.org/licenses/>.\r
18 *\r
19 * Author: Robert Nagy, ronag89@gmail.com\r
20 */\r
21 \r
22 #pragma once\r
23 \r
24 #include "../memory/safe_ptr.h"\r
25 \r
26 #include <functional>\r
27 #include <string>\r
28 #include <vector>\r
29 #include <map>\r
30 \r
31 #include <boost/range/iterator_range.hpp>\r
32 #include <boost/circular_buffer.hpp>\r
33 \r
34 namespace caspar {\r
35                 \r
36 typedef std::function<std::wstring()> printer;\r
37         \r
38 namespace diagnostics {\r
39         \r
40 struct color\r
41 {\r
42         float red;\r
43         float green;\r
44         float blue;\r
45         float alpha;\r
46         \r
47         color(float r = 0.0f, float g = 0.0f, float b = 0.0f, float a = 1.0f)\r
48                 : red(r)\r
49                 , green(g)\r
50                 , blue(b)\r
51                 , alpha(a){}\r
52 };\r
53 \r
54 class graph\r
55 {\r
56         friend void register_graph(const safe_ptr<graph>& graph);\r
57 public:\r
58         graph();\r
59         void set_text(const std::string& value);\r
60         void set_text(const std::wstring& value);\r
61         void update_value(const std::string& name, double value);\r
62         void set_value(const std::string& name, double value);\r
63         void set_color(const std::string& name, color c);\r
64         void add_tag(const std::string& name);\r
65         void add_guide(const std::string& name, double value);\r
66 private:\r
67         struct implementation;\r
68         std::shared_ptr<implementation> impl_;\r
69 };\r
70 \r
71 void register_graph(const safe_ptr<graph>& graph);\r
72 void show_graphs(bool value);\r
73 \r
74 //namespace v2\r
75 //{\r
76 //      \r
77 //      struct data\r
78 //      {\r
79 //              float value;\r
80 //      };\r
81 //\r
82 //      class line\r
83 //      {\r
84 //      public:\r
85 //              line();\r
86 //              line(const std::wstring& name);\r
87 //              std::wstring print() const;\r
88 //              void update_value(float value);\r
89 //              void set_value(float value);\r
90 //              void set_tag(const std::wstring& tag);\r
91 //\r
92 //              boost::circular_buffer<data>& ticks();\r
93 //      private:\r
94 //              struct implementation;\r
95 //              std::shared_ptr<implementation> impl_;\r
96 //      };\r
97 //      \r
98 //      class graph;\r
99 //\r
100 //\r
101 //      class graph\r
102 //      {\r
103 //      public:\r
104 //              graph(const std::wstring& name);\r
105 //              graph(const printer& parent_printer);\r
106 //\r
107 //              void update_value(const std::wstring& name, float value);\r
108 //              void set_value(const std::wstring& name, float value);\r
109 //\r
110 //              void set_guide(const std::wstring& name, float value);\r
111 //              void set_color(const std::wstring& name, color c);\r
112 //\r
113 //              color get_color() const;\r
114 //              std::map<std::wstring, line>& get_lines();\r
115 //\r
116 //              std::wstring print() const;\r
117 //\r
118 //              safe_ptr<graph> clone() const;\r
119 //      private:\r
120 //              struct implementation;\r
121 //              std::shared_ptr<implementation> impl_;\r
122 //      };\r
123 //      \r
124 //      static safe_ptr<graph> create_graph(const std::wstring& name);\r
125 //      static safe_ptr<graph> create_graph(const printer& parent_printer);\r
126 //      static std::vector<safe_ptr<graph>> get_all_graphs();\r
127 //}\r
128 \r
129 }}