graph.h revision 7175d91deff20b1408450c231b2b445ea28f7f29
1af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameron#ifndef GRAPH_H
2af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameron#define GRAPH_H
3af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameron
4af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameronstruct graph;
5af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameron
6cae0872709f690086f896f7327e136c7db7ba567Stephen M. Cameron#define INVISIBLE_COLOR (-1.0)
7cae0872709f690086f896f7327e136c7db7ba567Stephen M. Cameron
8f3e8440f75f98ced28cdd19ba785718e734cf7c5Jens Axboestruct graph *graph_new(unsigned int xdim, unsigned int ydim, const char *font);
93ea48b883bcac5ad0c119205805b741af45427e3Stephen M. Cameronvoid graph_set_size(struct graph *g, unsigned int xdim, unsigned int ydim);
10af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameronvoid bar_graph_draw(struct graph *g, cairo_t *cr);
11af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameronvoid line_graph_draw(struct graph *g, cairo_t *cr);
12af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameronvoid line_graph_set_data_count_limit(struct graph *g, int per_label_limit);
13af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameronvoid graph_title(struct graph *g, const char *title);
14af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameronvoid graph_x_title(struct graph *g, const char *title);
15af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameronvoid graph_y_title(struct graph *g, const char *title);
16af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameronvoid graph_add_label(struct graph *g, const char *label);
1709ad20ff60eb8c11edf407c4060062dae187f5e7Stephen M. Cameronint graph_add_data(struct graph *g, const char *label, const double value);
1809ad20ff60eb8c11edf407c4060062dae187f5e7Stephen M. Cameronint graph_add_xy_data(struct graph *g, const char *label,
19af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameron		const double x, const double y);
20af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameronvoid graph_set_color(struct graph *g, const char *label,
21af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameron		double red, double green, double blue);
22af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameronvoid graph_free(struct graph *bg);
23af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameron
247175d91deff20b1408450c231b2b445ea28f7f29Stephen M. Camerontypedef void (*graph_axis_unit_change_callback)(struct graph *g, int power_of_ten);
257175d91deff20b1408450c231b2b445ea28f7f29Stephen M. Cameronvoid graph_x_axis_unit_change_notify(struct graph *g, graph_axis_unit_change_callback f);
267175d91deff20b1408450c231b2b445ea28f7f29Stephen M. Cameronvoid graph_y_axis_unit_change_notify(struct graph *g, graph_axis_unit_change_callback f);
27af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameron
28af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameron#endif
29af58ef32b7398d791168af54aa4aab0b23192f90Stephen M. Cameron
30