graph: return opaque graph_label_t for each label added
[fio.git] / graph.h
diff --git a/graph.h b/graph.h
index a8390b527dbce440e292129f547b51874e36af80..e7d879d683533ebfea5527ce21b9f2b2dfbfb12f 100644 (file)
--- a/graph.h
+++ b/graph.h
@@ -2,7 +2,9 @@
 #define GRAPH_H
 
 struct graph;
+struct graph_label;
 
+typedef struct graph_label * graph_label_t;
 
 struct graph *graph_new(unsigned int xdim, unsigned int ydim, const char *font);
 /* graph_new() Returns a new graph structure of the given dimensions and font */
@@ -25,7 +27,7 @@ void graph_x_title(struct graph *g, const char *title);
 /* graph_x_title() sets the title of the x axis to the given string */
 void graph_y_title(struct graph *g, const char *title);
 /* graph_y_title() sets the title of the y axis to the given string */
-void graph_add_label(struct graph *g, const char *label);
+graph_label_t graph_add_label(struct graph *g, const char *label);
 /* graph_add_label() adds a new "stream" of data to be graphed.
  * For line charts, each label is a separate line on the graph.
  * For bar charts, each label is a grouping of columns on the x-axis
@@ -47,13 +49,13 @@ void graph_add_label(struct graph *g, const char *label);
  * label.
  */
 
-int graph_add_data(struct graph *g, const char *label, const double value);
+int graph_add_data(struct graph *g, graph_label_t label, const double value);
 /* graph_add_data() is used to add data to the labels of a bar graph */
-int graph_add_xy_data(struct graph *g, const char *label,
-               const double x, const double y);
+int graph_add_xy_data(struct graph *g, graph_label_t label,
+               const double x, const double y, const char *tooltip);
 /* graph_add_xy_data is used to add data to the labels of a line graph */
 
-void graph_set_color(struct graph *g, const char *label,
+void graph_set_color(struct graph *g, graph_label_t label,
                double red, double green, double blue);
 #define INVISIBLE_COLOR (-1.0)
 /* graph_set_color is used to set the color used to plot the data in
@@ -81,5 +83,12 @@ void graph_add_extra_space(struct graph *g, double left_percent, double right_pe
  * so that the data doesn't go to the very edges.
  */
 
+extern int graph_has_tooltips(struct graph *g);
+extern const char *graph_find_tooltip(struct graph *g, int x, int y);
+extern int graph_contains_xy(struct graph *p, int x, int y);
+
+extern void graph_set_base_offset(struct graph *g, unsigned int base_offset);
+extern void graph_set_graph_all_zeroes(struct graph *g, unsigned int set);
+
 #endif