10 cairo_surface_t *surface;
13 acre_data_t *data0, *data1, *data2;
15 surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1600, 1200);
16 cr = cairo_create (surface);
18 acre = acre_create ();
19 acre_set_x_axis_label (acre, "X axis");
20 acre_set_y_axis_label (acre, "Y axis");
22 data0 = acre_data_create ();
23 data1 = acre_data_create ();
24 data2 = acre_data_create ();
26 acre_data_set_name (data0, "Data 0");
27 acre_data_set_name (data1, "Data 1");
28 acre_data_set_name (data2, "Data 2");
30 for (i = 0; i <= 100; i++) {
31 acre_data_add_point_2d (data0, i, 0 - (i/3.0)*(i/3.0));
34 for (i = 0; i < 100; i++) {
35 double t = 1.0 - (i / 100.0);
36 acre_data_add_point_2d (data1, i, -1000 * (1.0 - t*t*t));
39 for (i = 0; i <= 1000; i++) {
46 y = -1200 + 1000 * sin(t) / t;
47 acre_data_add_point_2d (data2, x, y);
50 acre_add_data (acre, data0);
51 acre_add_data (acre, data1);
52 acre_add_data (acre, data2);
54 /* Draw a full-data-range graph in upper-left. */
55 acre_set_title (acre, "All the data");
57 acre_draw (acre, cr, 800, 600);
59 /* Zoom in on X and draw at lower-left. */
60 cairo_translate (cr, 0, 600);
62 acre_set_title (acre, "Zoom X, auto-size Y");
63 acre_set_x_axis_range (acre, 40, 60);
65 acre_draw (acre, cr, 800, 600);
67 /* Zoom in on Y and draw at upper-right. */
68 cairo_translate (cr, 800, -600);
70 acre_set_title (acre, "Zoom Y, auto-size X");
71 acre_set_x_axis_range_auto (acre);
72 acre_set_y_axis_range (acre, -250, 0);
74 acre_draw (acre, cr, 800, 600);
76 /* Zoom out on X and Y lower-right. */
77 cairo_translate (cr, 0, 600);
79 acre_set_title (acre, "Zoom out X and Y");
80 acre_set_x_axis_range (acre, -50, 150);
81 acre_set_y_axis_range (acre, -1500, 500);
83 acre_draw (acre, cr, 800, 600);
89 cairo_surface_write_to_png (surface, "acre-test.png");
91 cairo_surface_destroy (surface);