#include "acre.h"
+#include <math.h>
int
main (void)
cairo_surface_t *surface;
acre_t *acre;
- acre_data_t *data;
+ acre_data_t *data0, *data1, *data2;
- surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 800, 600);
+ surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1600, 1200);
cr = cairo_create (surface);
acre = acre_create ();
- acre_set_title (acre, "Acre Test Plot");
acre_set_x_axis_label (acre, "X axis");
acre_set_y_axis_label (acre, "Y axis");
- data = acre_data_create ();
+ data0 = acre_data_create ();
+ data1 = acre_data_create ();
+ data2 = acre_data_create ();
- acre_data_set_name (data, "Acre test data");
+ acre_data_set_name (data0, "Data 0");
+ acre_data_set_name (data1, "Data 1");
+ acre_data_set_name (data2, "Data 2");
- for (i = 0; i < 100; i++)
- acre_data_add_point_2d (data, i, 100 - (i/4.0)*(i/4.0));
+ for (i = 0; i <= 100; i++) {
+ acre_data_add_point_2d (data0, i, 0 - (i/3.0)*(i/3.0));
+ }
- acre_add_data (acre, data);
+ for (i = 0; i < 100; i++) {
+ double t = 1.0 - (i / 100.0);
+ acre_data_add_point_2d (data1, i, -1000 * (1.0 - t*t*t));
+ }
+
+ for (i = 0; i <= 1000; i++) {
+ double t, x, y;
+ t = i/10.0 - 50;
+ x = t + 50;
+ if (t == 0.0)
+ y = -200;
+ else
+ y = -1200 + 1000 * sin(t) / t;
+ acre_data_add_point_2d (data2, x, y);
+ }
+
+ acre_add_data (acre, data0);
+ acre_add_data (acre, data1);
+ acre_add_data (acre, data2);
+
+ /* Draw a full-data-range graph in upper-left. */
+ acre_set_title (acre, "All the data");
+
+ acre_draw (acre, cr, 800, 600);
+
+ /* Zoom in on X and draw at lower-left. */
+ cairo_translate (cr, 0, 600);
+
+ acre_set_title (acre, "Zoom X, auto-size Y");
+ acre_set_x_axis_range (acre, 40, 60);
+
+ acre_draw (acre, cr, 800, 600);
+
+ /* Zoom in on Y and draw at upper-right. */
+ cairo_translate (cr, 800, -600);
+
+ acre_set_title (acre, "Zoom Y, auto-size X");
+ acre_set_x_axis_range_auto (acre);
+ acre_set_y_axis_range (acre, -250, 0);
+
+ acre_draw (acre, cr, 800, 600);
+
+ /* Zoom out on X and Y lower-right. */
+ cairo_translate (cr, 0, 600);
+
+ acre_set_title (acre, "Zoom out X and Y");
+ acre_set_x_axis_range (acre, -50, 150);
+ acre_set_y_axis_range (acre, -1500, 500);
acre_draw (acre, cr, 800, 600);