]> git.cworth.org Git - acre/blobdiff - acre.h
acre-x: Fix zooming so that zoom-in and zoom-out use the same amounts
[acre] / acre.h
diff --git a/acre.h b/acre.h
index 89079ff3908bce3219a43cfba33719ff9777f60c..6bad89aa88555127137ef45a8494484f527972be 100644 (file)
--- 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);
 
@@ -53,7 +100,7 @@ acre_add_data (acre_t *acre, acre_data_t *data);
  * etc.)
  */
 void
-acre_draw (acre_t *acre, cairo_t *cr, double width, double height);
+acre_draw (acre_t *acre, cairo_t *cr, int width, int height);
 
 /* Create a new dataset---a collection of (x, y) datapoints. A single
  * plot can contain multiple datasets, (see acre_add_data). */
@@ -65,6 +112,16 @@ acre_data_create (void);
 void
 acre_data_destroy (acre_data_t *data);
 
+/* The style to be used for rendering data sets. */
+typedef enum
+{
+       ACRE_STYLE_LINE
+} 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 +130,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 */