Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(313)

Side by Side Diff: webrtc/tools/event_log_visualizer/plot_base.h

Issue 2965593002: Move webrtc/{tools => rtc_tools} (Closed)
Patch Set: Adding back root changes Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10 #ifndef WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_PLOT_BASE_H_
11 #define WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_PLOT_BASE_H_
12
13 #include <memory>
14 #include <string>
15 #include <utility>
16 #include <vector>
17
18 namespace webrtc {
19 namespace plotting {
20
21 enum PlotStyle {
22 LINE_GRAPH,
23 LINE_DOT_GRAPH,
24 BAR_GRAPH,
25 LINE_STEP_GRAPH,
26 DOT_GRAPH
27 };
28
29 struct TimeSeriesPoint {
30 TimeSeriesPoint(float x, float y) : x(x), y(y) {}
31 float x;
32 float y;
33 };
34
35 struct TimeSeries {
36 TimeSeries() = default;
37 TimeSeries(const char* label, PlotStyle style) : label(label), style(style) {}
38 TimeSeries(const std::string& label, PlotStyle style)
39 : label(label), style(style) {}
40 TimeSeries(TimeSeries&& other)
41 : label(std::move(other.label)),
42 style(other.style),
43 points(std::move(other.points)) {}
44 TimeSeries& operator=(TimeSeries&& other) {
45 label = std::move(other.label);
46 style = other.style;
47 points = std::move(other.points);
48 return *this;
49 }
50
51 std::string label;
52 PlotStyle style;
53 std::vector<TimeSeriesPoint> points;
54 };
55
56 // A container that represents a general graph, with axes, title and one or
57 // more data series. A subclass should define the output format by overriding
58 // the Draw() method.
59 class Plot {
60 public:
61 virtual ~Plot() {}
62
63 // Overloaded to draw the plot.
64 virtual void Draw() = 0;
65
66 // Sets the lower x-axis limit to min_value (if left_margin == 0).
67 // Sets the upper x-axis limit to max_value (if right_margin == 0).
68 // The margins are measured as fractions of the interval
69 // (max_value - min_value) and are added to either side of the plot.
70 void SetXAxis(float min_value,
71 float max_value,
72 std::string label,
73 float left_margin = 0,
74 float right_margin = 0);
75
76 // Sets the lower and upper x-axis limits based on min_value and max_value,
77 // but modified such that all points in the data series can be represented
78 // on the x-axis. The margins are measured as fractions of the range of
79 // x-values and are added to either side of the plot.
80 void SetSuggestedXAxis(float min_value,
81 float max_value,
82 std::string label,
83 float left_margin = 0,
84 float right_margin = 0);
85
86 // Sets the lower y-axis limit to min_value (if bottom_margin == 0).
87 // Sets the upper y-axis limit to max_value (if top_margin == 0).
88 // The margins are measured as fractions of the interval
89 // (max_value - min_value) and are added to either side of the plot.
90 void SetYAxis(float min_value,
91 float max_value,
92 std::string label,
93 float bottom_margin = 0,
94 float top_margin = 0);
95
96 // Sets the lower and upper y-axis limits based on min_value and max_value,
97 // but modified such that all points in the data series can be represented
98 // on the y-axis. The margins are measured as fractions of the range of
99 // y-values and are added to either side of the plot.
100 void SetSuggestedYAxis(float min_value,
101 float max_value,
102 std::string label,
103 float bottom_margin = 0,
104 float top_margin = 0);
105
106 // Sets the title of the plot.
107 void SetTitle(std::string title);
108
109 // Add a new TimeSeries to the plot.
110 void AppendTimeSeries(TimeSeries&& time_series);
111
112 // Add a new TimeSeries to the plot if the series contains contains data.
113 // Otherwise, the call has no effect and the timeseries is destroyed.
114 void AppendTimeSeriesIfNotEmpty(TimeSeries&& time_series);
115
116 protected:
117 float xaxis_min_;
118 float xaxis_max_;
119 std::string xaxis_label_;
120 float yaxis_min_;
121 float yaxis_max_;
122 std::string yaxis_label_;
123 std::string title_;
124 std::vector<TimeSeries> series_list_;
125 };
126
127 class PlotCollection {
128 public:
129 virtual ~PlotCollection() {}
130 virtual void Draw() = 0;
131 virtual Plot* AppendNewPlot() = 0;
132
133 protected:
134 std::vector<std::unique_ptr<Plot> > plots_;
135 };
136
137 } // namespace plotting
138 } // namespace webrtc
139
140 #endif // WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_PLOT_BASE_H_
OLDNEW
« no previous file with comments | « webrtc/tools/event_log_visualizer/main.cc ('k') | webrtc/tools/event_log_visualizer/plot_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698