- should used to determine the layout of the cell. */
- void (*draw_cell) (void *aux, const struct table_cell *cell,
- int footnote_idx,
- int bb[TABLE_N_AXES][2], int clip[TABLE_N_AXES][2]);
-
- /* Auxiliary data passed to each of the above functions. */
- void *aux;
-
- /* Page size to try to fit the rendering into. Some tables will, of
- course, overflow this size. */
- int size[TABLE_N_AXES];
-
- /* Nominal size of a character in the most common font:
- font_size[TABLE_HORZ]: Em width.
- font_size[TABLE_VERT]: Line spacing. */
- int font_size[TABLE_N_AXES];
-
- /* Width of different kinds of lines. */
- int line_widths[TABLE_N_AXES][RENDER_N_LINES];
-
- /* Minimum cell width or height before allowing the cell to be broken
- across two pages. (Joined cells may always be broken at join
- points.) */
- int min_break[TABLE_N_AXES];
+ should used to determine the layout of the cell.
+
+ The text in the cell needs to be vertically offset VALIGN_OFFSET units
+ from the top of the bounding box. This handles vertical alignment with
+ the cell. (The caller doesn't just reduce the bounding box size because
+ that would prevent the implementation from filling the entire cell with
+ the background color.) The implementation must handle horizontal
+ alignment itself. */
+ void (*draw_cell) (void *aux, const struct table_cell *cell, int color_idx,
+ int bb[TABLE_N_AXES][2], int valign_offset,
+ int spill[TABLE_N_AXES][2],
+ int clip[TABLE_N_AXES][2]);
+
+ /* Scales all output by FACTOR, e.g. a FACTOR of 0.5 would cause everything
+ subsequent to be drawn half-size. FACTOR will be greater than 0 and
+ less than or equal to 1.
+
+ Optional. If NULL, the rendering engine won't try to scale output. */
+ void (*scale) (void *aux, double factor);