]> git.sesse.net Git - nms/blob - web/ext/flowpusher.h
Add lots of TG06 graph stuff.
[nms] / web / ext / flowpusher.h
1 #ifndef _FLOWPUSHER_H
2 #define _FLOWPUSHER_H 1
3
4 struct flow_element {
5         unsigned x;
6         unsigned long long y1, y2;
7 };
8
9 class FlowPusher
10 {
11 private:
12         std::vector<flow_element> &flow;
13         unsigned min_x, max_x;
14         long long unsigned min_y, max_y;
15         double prev_x;
16         unsigned long long prev_y1, prev_y2;
17         
18 public:
19         FlowPusher(std::vector<flow_element> &flow);
20         void reset(double x, unsigned long long y1, unsigned long long y2);
21         void push(double x, unsigned long long y1, unsigned long long y2);
22         static void find_diff(double x, double &prev_x, unsigned long long y1, unsigned long long prev_y1, unsigned long long y2, unsigned long long prev_y2,
23                 unsigned long long &yf1, unsigned long long &yf2);
24         
25         unsigned get_min_x() { return min_x; }
26         unsigned get_max_x() { return max_x; }
27         unsigned get_min_y() { return min_y; }
28         unsigned get_max_y() { return max_y; }
29 };
30
31 #endif /* !defined(_FLOWPUSHER_H) */