psppire-output-view: Render only the visible parts of tables.
[pspp] / src / output / cairo.c
index 147b83e647d2fe7482afe2800ea841ca21d07097..7c6cf925c64ee2418cef9966066729c987637c0a 100644 (file)
@@ -425,6 +425,7 @@ xr_set_cairo (struct xr_driver *xr, cairo_t *cairo)
       for (i = 0; i < TABLE_N_AXES; i++)
         xr->params->min_break[i] = xr->min_break[i];
       xr->params->supports_margins = true;
+      xr->params->rtl = render_direction_rtl ();
     }
 
   cairo_set_source_rgb (xr->cairo, xr->fg.red, xr->fg.green, xr->fg.blue);
@@ -1445,7 +1446,8 @@ static void xr_draw_chart (const struct chart_item *, cairo_t *,
 
 /* Draws onto CR */
 void
-xr_rendering_draw_all (struct xr_rendering *r, cairo_t *cr)
+xr_rendering_draw (struct xr_rendering *r, cairo_t *cr,
+                   int x0, int y0, int x1, int y1)
 {
   if (is_table_item (r->item))
     {
@@ -1453,8 +1455,8 @@ xr_rendering_draw_all (struct xr_rendering *r, cairo_t *cr)
 
       xr_set_cairo (xr, cr);
 
-      render_pager_draw (r->p);
-
+      render_pager_draw_region (r->p, x0 * XR_POINT, y0 * XR_POINT,
+                                (x1 - x0) * XR_POINT, (y1 - y0) * XR_POINT);
     }
   else
     xr_draw_chart (to_chart_item (r->item), cr,