]> git.cworth.org Git - acre/blobdiff - acre.c
Use cairo_clip to trim out any out-of-view data
[acre] / acre.c
diff --git a/acre.c b/acre.c
index e3604dcff6a8de23ed264edc96bbeeaf374ee0fa..290bb1274cbb08d08a4aef9780a3d2e67a8ecf93 100644 (file)
--- a/acre.c
+++ b/acre.c
@@ -848,10 +848,14 @@ _draw_data (acre_t *acre)
     cairo_t *cr = acre->cr;
     unsigned int d, i;
     acre_data_t *data;
-    bool pen_up;
 
     cairo_save (cr);
 
+    cairo_rectangle (cr,
+                    acre->chart.x, acre->chart.y,
+                    acre->chart.width, acre->chart.height);
+    cairo_clip (cr);
+
     cairo_set_source_rgb (cr, 0, 0, 0);
 
     _set_transform_to_data_space (acre);
@@ -864,28 +868,12 @@ _draw_data (acre_t *acre)
                              acre->colors[color].blue);
        data = acre->data[d];
 
-       pen_up = true;
        cairo_new_path (cr);
 
        for (i = 0; i < data->num_points; i++) {
-           if (data->points[i].x >= acre->x_axis.view_min &&
-               data->points[i].x <= acre->x_axis.view_max &&
-               data->points[i].y >= acre->y_axis.view_min &&
-               data->points[i].y <= acre->y_axis.view_max)
-           {
-               if (pen_up)
-                   cairo_move_to (cr,
-                                  data->points[i].x,
-                                  data->points[i].y);
-               else
-                   cairo_line_to (cr,
-                                  data->points[i].x,
-                                  data->points[i].y);
-
-               pen_up = false;
-           } else {
-               pen_up = true;
-           }
+           cairo_line_to (cr,
+                          data->points[i].x,
+                          data->points[i].y);
        }
        cairo_save (cr);
        {