cell->destructor = NULL;
}
-static struct render_page *
+static struct render_pager *
xr_render_table_item (struct xr_driver *xr, const struct table_item *item,
int *caption_widthp, int *caption_heightp)
{
else
*caption_heightp = 0;
- return render_page_create (xr->params, table_item_get_table (item));
+ return render_pager_create (render_page_create (xr->params,
+ table_item_get_table (item)));
}
static void
const struct table *table = contents->table;
int single_width, double_width;
struct render_params params;
- struct render_page *page;
+ struct render_pager *p;
int r[TABLE_N_AXES][2];
int width, height;
int i;
}
xr->nest++;
- page = render_page_create (¶ms, table);
- width = render_page_get_size (page, H);
- height = render_page_get_size (page, V);
+ p = render_pager_create (render_page_create (¶ms, table));
+ width = render_pager_get_size (p, H);
+ height = render_pager_get_size (p, V);
if (bb[V][0] + height >= bb[V][1])
- *brk = bb[V][0] + render_page_get_best_breakpoint (page, bb[V][1] - bb[V][0]);
+ *brk = bb[V][0] + render_pager_get_best_breakpoint (p, bb[V][1] - bb[V][0]);
/* r = intersect(bb, clip) - bb. */
for (i = 0; i < TABLE_N_AXES; i++)
else if (alignment == TAB_CENTER)
xr->x += (params.size[H] - width) / 2;
xr->y += bb[V][0];
- render_page_draw_region (page, r[H][0], r[V][0],
- r[H][1] - r[H][0], r[V][1] - r[V][0]);
+ render_pager_draw_region (p, r[H][0], r[V][0],
+ r[H][1] - r[H][0], r[V][1] - r[V][0]);
xr->y -= bb[V][0];
xr->x = save_x;
cairo_restore (xr->cairo);
}
- render_page_unref (page);
+ render_pager_destroy (p);
xr->nest--;
if (width > *widthp)
struct output_item *item;
/* Table items. */
- struct render_page *page;
+ struct render_pager *p;
struct xr_driver *xr;
int title_width;
int title_height;
r->item = output_item_ref (item);
r->xr = xr;
xr_set_cairo (xr, cr);
- r->page = xr_render_table_item (xr, to_table_item (item),
- &r->title_width, &r->title_height);
+ r->p = xr_render_table_item (xr, to_table_item (item),
+ &r->title_width, &r->title_height);
}
else if (is_chart_item (item))
{
if (r)
{
output_item_unref (r->item);
- render_page_unref (r->page);
+ render_pager_destroy (r->p);
free (r);
}
}
{
if (is_table_item (r->item))
{
- int w0 = render_page_get_size (r->page, H);
+ int w0 = render_pager_get_size (r->p, H);
int w1 = r->title_width;
*w = MAX (w0, w1) / XR_POINT;
- *h = (render_page_get_size (r->page, V) + r->title_height) / XR_POINT;
+ *h = (render_pager_get_size (r->p, V) + r->title_height) / XR_POINT;
}
else
{
}
xr->y = r->title_height;
- render_page_draw_region (r->page,
- x * XR_POINT, (y * XR_POINT) - r->title_height,
- w * XR_POINT, h * XR_POINT);
+ render_pager_draw_region (r->p,
+ x * XR_POINT, (y * XR_POINT) - r->title_height,
+ w * XR_POINT, h * XR_POINT);
}
else
xr_draw_chart (to_chart_item (r->item), cr,
while (render_pager_has_next (ts->p))
{
- int space = xr->length - xr->y - ts->caption_height;
- struct render_page *slice = render_pager_next (ts->p, space);
+ int caption_height = ts->caption_height;
+ int used;
- if (!slice)
+ xr->y += caption_height;
+ used = render_pager_draw_next (ts->p, xr->length - xr->y);
+ xr->y -= caption_height;
+ if (!used)
{
assert (xr->y > 0);
return true;
}
-
- if (ts->caption_height)
+ else
{
- if (xr->cairo)
- xr_draw_title (xr, table_item_get_caption (ts->table_item),
- xr->width, ts->caption_height);
-
- xr->y += ts->caption_height;
- ts->caption_height = 0;
+ if (ts->caption_height)
+ {
+ if (xr->cairo)
+ xr_draw_title (xr, table_item_get_caption (ts->table_item),
+ xr->width, ts->caption_height);
+ ts->caption_height = 0;
+ }
+ xr->y += caption_height + used;
}
-
- if (xr->cairo)
- render_page_draw (slice);
- xr->y += render_page_get_size (slice, V);
- render_page_unref (slice);
}
return false;
}
xr_render_table (struct xr_driver *xr, const struct table_item *table_item)
{
struct xr_table_state *ts;
- struct render_page *page;
int caption_width;
ts = xmalloc (sizeof *ts);
if (xr->y > 0)
xr->y += xr->char_height;
- page = xr_render_table_item (xr, table_item,
- &caption_width, &ts->caption_height);
+ ts->p = xr_render_table_item (xr, table_item,
+ &caption_width, &ts->caption_height);
xr->params->size[V] = xr->length - ts->caption_height;
- ts->p = render_pager_create (page);
-
return &ts->fsm;
}
\f