output: Add support for dashed, thick, and thin rules.
[pspp] / src / output / render.h
index 3e9d8a83adaf04f8c89e830e0d63d51ca555225b..5089a3bdd4e19996d4888ed6eba30a5f06e8639e 100644 (file)
@@ -25,9 +25,12 @@ struct table_item;
 
 enum render_line_style
   {
-    RENDER_LINE_NONE,           /* No line. */
-    RENDER_LINE_SINGLE,         /* Single line. */
-    RENDER_LINE_DOUBLE,         /* Double line. */
+    RENDER_LINE_NONE,
+    RENDER_LINE_SINGLE,
+    RENDER_LINE_DASHED,
+    RENDER_LINE_THICK,
+    RENDER_LINE_THIN,
+    RENDER_LINE_DOUBLE,
     RENDER_N_LINES
   };
 
@@ -51,14 +54,6 @@ enum render_line_style
 
    For each of the callback functions, AUX is passed as the 'aux' member of the
    render_params structure.
-
-   The device is expected to transform numerical footnote index numbers into
-   footnote markers.  The existing drivers use str_format_26adic() to transform
-   index 0 to "a", index 1 to "b", and so on.  The FOOTNOTE_IDX supplied to
-   each function is the footnote index number for the first footnote in the
-   cell.  If a cell contains more than one footnote, then the additional
-   footnote indexes increase sequentially, e.g. the second footnote has index
-   FOOTNOTE_IDX + 1.
 */
 struct render_params
   {
@@ -68,12 +63,11 @@ struct render_params
        minimum width required to avoid line breaks other than at new-lines.
        */
     void (*measure_cell_width) (void *aux, const struct table_cell *cell,
-                                int footnote_idx,
                                 int *min_width, int *max_width);
 
     /* Returns the height required to render CELL given a width of WIDTH. */
     int (*measure_cell_height) (void *aux, const struct table_cell *cell,
-                                int footnote_idx, int width);
+                                int width);
 
     /* Given that there is space measuring WIDTH by HEIGHT to render CELL,
        where HEIGHT is insufficient to render the entire height of the cell,
@@ -86,7 +80,7 @@ struct render_params
        Optional.  If NULL, the rendering engine assumes that all breakpoints
        are acceptable. */
     int (*adjust_break) (void *aux, const struct table_cell *cell,
-                         int footnote_idx, int width, int height);
+                         int width, int height);
 
     /* Draws a generalized intersection of lines in the rectangle whose
        top-left corner is (BB[TABLE_HORZ][0], BB[TABLE_VERT][0]) and whose
@@ -106,7 +100,6 @@ struct render_params
        of the cell that lies within CLIP should actually be drawn, although BB
        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. */
@@ -128,6 +121,8 @@ struct render_params
        across two pages.  (Joined cells may always be broken at join
        points.) */
     int min_break[TABLE_N_AXES];
+
+    bool supports_margins;
   };
 
 /* An iterator for breaking render_pages into smaller chunks. */
@@ -145,4 +140,7 @@ void render_pager_draw_region (const struct render_pager *,
 int render_pager_get_size (const struct render_pager *, enum table_axis);
 int render_pager_get_best_breakpoint (const struct render_pager *, int height);
 
+bool render_direction_rtl (void);
+
+
 #endif /* output/render.h */