output: Cache the script ltr versus rtl direction.
[pspp] / src / output / render.h
index f04eb79005df1b8a5ffc0a66d6b5d2b2b2b95f7d..c10f23716060924897da482dc106128fbd5cdcf3 100644 (file)
@@ -93,13 +93,14 @@ struct render_params
        STYLES[TABLE_VERT][0]: style of line from left of BB to its center.
        STYLES[TABLE_VERT][1]: style of line from right of BB to its center. */
     void (*draw_line) (void *aux, int bb[TABLE_N_AXES][2],
-                       enum render_line_style styles[TABLE_N_AXES][2]);
+                       enum render_line_style styles[TABLE_N_AXES][2],
+                       struct cell_color colors[TABLE_N_AXES][2]);
 
     /* Draws CELL within bounding box BB.  CLIP is the same as BB (the common
        case) or a subregion enclosed by BB.  In the latter case only the part
        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,
+    void (*draw_cell) (void *aux, const struct table_cell *cell, int color_idx,
                        int bb[TABLE_N_AXES][2],
                        int spill[TABLE_N_AXES][2],
                        int clip[TABLE_N_AXES][2]);
@@ -124,7 +125,14 @@ struct render_params
        points.) */
     int min_break[TABLE_N_AXES];
 
+    /* True if the driver supports cell margins.  (If false, the rendering
+       engine will insert a small space betweeen adjacent cells that don't have
+       an intervening rule.)  */
     bool supports_margins;
+
+    /* True if the local language has a right-to-left direction, otherwise
+       false.  (Use render_direction_rtl() to find out.) */
+    bool rtl;
   };
 
 /* An iterator for breaking render_pages into smaller chunks. */