X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=acre.h;h=9611da3d8d15a8b7c4cf00d4bfd07f564b5e574a;hb=f38364b3004fb77dd8ebd6c6a37c66873f37e2b2;hp=0c602c18547cfe919234a81d45b1b2f7a739937d;hpb=8f4c1fdd2b59b651574100aa9f1c3dbce119a612;p=acre diff --git a/acre.h b/acre.h index 0c602c1..9611da3 100644 --- a/acre.h +++ b/acre.h @@ -42,8 +42,55 @@ acre_set_x_axis_label (acre_t *acre, const char *label); void acre_set_y_axis_label (acre_t *acre, const char *label); +/* Get the range of data values in the X dimension. */ +void +acre_get_x_axis_data_range (acre_t *acre, double *x_min, double *x_max); + +/* Get the range of the currently viewable X axis. */ +void +acre_get_x_axis_range (acre_t *acre, double *x_min, double *x_max); + +/* Set the range of the currently viewable X axis. */ +void +acre_set_x_axis_range (acre_t *acre, double x_min, double x_max); + +/* Set the X axis viewable range to be sized automatically. + * + * If both X and Y axes are sized automatically, then the X range will + * be set to the full range of data in the X dimension. + * + * But if the Y axis has been set to a limited viewable range, (with + * acre_set_y_axis_range), then the X axis will be set to the + * corresponding X range of data that lies within that set Y range. */ +void +acre_set_x_axis_range_auto (acre_t *acre); + +/* Get the range of data values in the Y dimnension. */ +void +acre_get_y_axis_data_range (acre_t *acre, double *y_min, double *y_max); + +/* Get the range of the currently viewable Y axis. */ +void +acre_get_y_axis_range (acre_t *acre, double *y_min, double *y_max); + +/* Set the range of the currently viewable Y axis. */ +void +acre_set_y_axis_range (acre_t *acre, double y_min, double y_max); + +/* Set the Y axis viewable range to be sized automatically. + * + * If both X and Y axes are sized automatically, then the Y range will + * be set to the full range of data in the Y dimension. + * + * But if the X axis has been set to a limited viewable range, (with + * acre_set_x_axis_range), then the Y axis will be set to the + * corresponding Y range of data that lies within that set X range. */ +void +acre_set_y_axis_range_auto (acre_t *acre); + /* Add a dataset to the plot. The plot assumes ownership of the - * dataset so it is not necessary to call acre_data_destroy on it. */ + * dataset so it is not necessary to call acre_data_destroy on it. + */ void acre_add_data (acre_t *acre, acre_data_t *data); @@ -65,6 +112,27 @@ acre_data_create (void); void acre_data_destroy (acre_data_t *data); +/* The style to be used for rendering data sets. */ +typedef enum +{ + /* A simple line graph connection each (X,Y) pair in order. */ + ACRE_STYLE_LINE, + + /* A timeline. + * + * Each (X,Y) pair specifies the (start,stop) time of a + * timeline bar. + * + * The acre_data_add_point_2d_named function is particularly + * useful to provide a name for each timeline bar. + */ + ACRE_STYLE_TIMELINE +} acre_style_t; + +/* Set the rendering style for this dataset. */ +void +acre_data_set_style (acre_data_t *data, acre_style_t style); + /* Set the label for this dataset (to appear in the plot's key). */ void acre_data_set_name (acre_data_t *data, const char *name); @@ -73,4 +141,9 @@ acre_data_set_name (acre_data_t *data, const char *name); void acre_data_add_point_2d (acre_data_t *data, double x, double y); +/* Add a datapoint with a name to the given dataset. */ +void +acre_data_add_point_2d_named (acre_data_t *data, double x, double y, + const char *name); + #endif /* ACRE_H */