iowatcher: Add possibility to limit seconds from below
[blktrace.git] / iowatcher / plot.h
index fd0fa2a6587931ad9bc8a925e376f8421c1ba957..fb9c63b5fba14790e41214563505e176a58bd173 100644 (file)
@@ -26,6 +26,10 @@ typedef __u32 u32;
 typedef __u16 u16;
 
 
+/* values for the plot direction field */
+#define PLOT_DOWN 0
+#define PLOT_ACROSS 1
+
 struct plot {
        int fd;
 
@@ -48,6 +52,14 @@ struct plot {
        char **legend_lines;
        int legend_index;
        int num_legend_lines;
+       int direction;
+
+       /*
+        * timeline is a vertical line through line graphs that
+        * is used by the movie mode to show where in the graph
+        * our current frame lives
+        */
+       int timeline;
 };
 
 struct graph_line_pair {
@@ -56,8 +68,11 @@ struct graph_line_pair {
 };
 
 struct graph_line_data {
-       /* total number of seconds in this graph */
-       int seconds;
+       /* beginning of an interval displayed by this graph */
+       int min_seconds;
+
+       /* end of an interval displayed by this graph */
+       int max_seconds;
 
        int stop_seconds;
 
@@ -70,6 +85,7 @@ struct graph_line_data {
 };
 
 struct graph_dot_data {
+       u64 min_offset;
        u64 max_offset;
        u64 max_bank;
        u64 max_bank_offset;
@@ -83,8 +99,11 @@ struct graph_dot_data {
        /* in pixels, number of cols in our bitmap */
        int cols;
 
-       /* total number of seconds in this graph */
-       int seconds;
+       /* beginning of an interval displayed by this graph */
+       int min_seconds;
+
+       /* end of an interval displayed by this graph */
+       int max_seconds;
        int stop_seconds;
 
        /* label for the legend */
@@ -106,9 +125,9 @@ struct plot_history {
 
 int svg_io_graph(struct plot *plot, struct graph_dot_data *gdd, char *color);
 int svg_line_graph(struct plot *plot, struct graph_line_data *gld, char *color, int thresh1, int thresh2);
-struct graph_line_data *alloc_line_data(int seconds, int stop_seconds);
+struct graph_line_data *alloc_line_data(int min_seconds, int max_seconds, int stop_seconds);
 void free_line_data(struct graph_line_data *gld);
-struct graph_dot_data *alloc_dot_data(int seconds, u64 max_offset, int stop_seconds);
+struct graph_dot_data *alloc_dot_data(int min_seconds, int max_seconds, u64 min_offset, u64 max_offset, int stop_seconds);
 void free_dot_data(struct graph_dot_data *gdd);
 void set_gdd_bit(struct graph_dot_data *gdd, u64 offset, double bytes, double time);
 void print_gdd(struct graph_dot_data *gdd);