subtables work
[pspp] / src / output / driver-provider.h
index c44a2e303bed8238a9fa89b1ff856503fd57b396..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
@@ -65,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.
 
@@ -73,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
@@ -105,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 */