render: Fold caption drawing into rendering engine.
[pspp] / src / output / render.h
index f2ded79d6c117432cb68a788be0f299084c33ddd..14f87b50c1bf404cdbeeb1b8db49eecc8580038a 100644 (file)
@@ -21,7 +21,7 @@
 #include <stddef.h>
 #include "output/table-provider.h"
 
-struct table;
+struct table_item;
 
 enum render_line_style
   {
@@ -98,41 +98,20 @@ struct render_params
     int min_break[TABLE_N_AXES];
   };
 \f
-/* A "page" of content that is ready to be rendered.
-
-   A page's size is not limited to the size passed in as part of render_params.
-   Use render_break (see below) to break a too-big render_page into smaller
-   render_pages that will fit in the available space. */
-struct render_page *render_page_create (const struct render_params *,
-                                        const struct table *);
-
-struct render_page *render_page_ref (const struct render_page *);
-void render_page_unref (struct render_page *);
-
-int render_page_get_size (const struct render_page *, enum table_axis);
-void render_page_draw (const struct render_page *);
-void render_page_draw_region (const struct render_page *,
-                              int x, int y, int w, int h);
-
-int render_page_get_best_breakpoint (const struct render_page *, int height);
 \f
 /* An iterator for breaking render_pages into smaller chunks. */
-struct render_break
-  {
-    struct render_page *page;   /* Page being broken up. */
-    enum table_axis axis;       /* Axis along which 'page' is being broken. */
-    int z;                      /* Next cell along 'axis'. */
-    int pixel;                  /* Pixel offset within cell 'z' (usually 0). */
-    int hw;                     /* Width of headers of 'page' along 'axis'. */
-  };
+struct render_pager *render_pager_create (const struct render_params *,
+                                          const struct table_item *);
+void render_pager_destroy (struct render_pager *);
+
+bool render_pager_has_next (const struct render_pager *);
+int render_pager_draw_next (struct render_pager *, int space);
 
-void render_break_init (struct render_break *, struct render_page *,
-                        enum table_axis);
-void render_break_init_empty (struct render_break *);
-void render_break_destroy (struct render_break *);
+void render_pager_draw (const struct render_pager *);
+void render_pager_draw_region (const struct render_pager *,
+                               int x, int y, int w, int h);
 
-bool render_break_has_next (const struct render_break *);
-int render_break_next_size (const struct render_break *);
-struct render_page *render_break_next (struct render_break *, int size);
+int render_pager_get_size (const struct render_pager *, enum table_axis);
+int render_pager_get_best_breakpoint (const struct render_pager *, int height);
 
 #endif /* output/render.h */