subtables work
[pspp] / src / output / driver-provider.h
index bfeaca83687c534911c0eeffa5ecdec2acd5cf44..1f3f726949575adf2905086f125bf44cac2f6d53 100644 (file)
 #include "output/driver.h"
 
 struct output_item;
+struct output_iterator;
 struct string_map;
 struct file_handle;
+struct page_setup;
 
 /* A configured output driver. */
 struct output_driver
@@ -43,6 +45,8 @@ void output_driver_destroy (struct output_driver *);
 
 const char *output_driver_get_name (const struct output_driver *);
 
+char *output_driver_substitute_heading_vars (const char *, int page_number);
+
 /* One kind of output driver.
 
    Output driver implementations must not call msg() to report errors.  This
@@ -63,6 +67,10 @@ struct output_driver_class
     void (*submit) (struct output_driver *driver,
                     const struct output_item *item);
 
+    /* Changes DRIVER's output page setup to PS, if possible.  This may be NUL
+       if the driver doesn't support page setup. */
+    void (*setup) (struct output_driver *driver, const struct page_setup *ps);
+
     /* Ensures that any output items passed to the 'submit' function for DRIVER
        have actually been displayed.
 
@@ -71,8 +79,17 @@ struct output_driver_class
        it doesn't make sense for DRIVER to be used this way, then this function
        need not do anything. */
     void (*flush) (struct output_driver *driver);
-  };
 
+    /* Ordinarily, the core driver code will skip passing hidden output items
+       to 'submit'.  If this member is true, the core driver hands them to the
+       driver to let it handle them itself. */
+    bool handles_show;
+
+    /* Ordinarily, the core driver code will flatten groups of output items
+       before passing them to 'submit'.  If this member is true, the core
+       driver code leaves them in place for the driver to handle. */
+    bool handles_groups;
+  };
 
 /* An abstract way for the output subsystem to create an output driver. */
 struct output_driver_factory
@@ -103,6 +120,4 @@ struct output_driver_factory
                                      struct string_map *options);
   };
 
-char *output_get_text_from_markup (const char *markup);
-
 #endif /* output/driver-provider.h */