X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=acre-test.c;h=c0cc8836f83d03697b038df7918464fdb45fb4a8;hb=fdff840db02a5d403e1423b070fd43cbbc52a07c;hp=31192b9f44632eb19fd5c0f9e0fc8d45c14a472e;hpb=13e92bb945fc8cb1e25079402ae9a8aa50044489;p=acre diff --git a/acre-test.c b/acre-test.c index 31192b9..c0cc883 100644 --- a/acre-test.c +++ b/acre-test.c @@ -1,4 +1,5 @@ #include "acre.h" +#include 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);