]> git.cworth.org Git - acre/blobdiff - acre-test.c
Add another dataset style: ACRE_STYLE_BARS
[acre] / acre-test.c
index bf1a516d83f04d922abb8ef71952cc366d5af269..c0cc8836f83d03697b038df7918464fdb45fb4a8 100644 (file)
@@ -1,4 +1,5 @@
 #include "acre.h"
+#include <math.h>
 
 int
 main (void)
@@ -9,24 +10,75 @@ 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);