output: Support decimal and mixed alignment,
[pspp] / src / output / table-item.h
index 01e9899b880e9dfe93b961c5ea88cf0f05eed356..b7866a3c9b565f95fe996d62d562c604aab4d14e 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2009 Free Software Foundation, Inc.
+   Copyright (C) 2009, 2011, 2014 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 /* Table items.
 
    A table item is a subclass of an output item (see output-item.h) that
-   contains a table (see table.h) and some formatting properties (currently
-   just a caption). */
+   contains a table (see table.h) and some formatting properties.  Currently
+   the formatting properties are an optional title (a brief description
+   typically displayed above the table) and an optional caption (a more verbose
+   description typically displayed below the table). */
 
-#include <libpspp/compiler.h>
-#include <output/output-item.h>
+#include "libpspp/compiler.h"
+#include "output/output-item.h"
+#include "output/table.h"
+
+/* Title or caption in a table item. */
+struct table_item_text
+  {
+    char *content;
+    const struct footnote **footnotes;
+    size_t n_footnotes;
+    struct area_style *style;
+  };
+
+struct table_item_text *table_item_text_create (const char *);
+struct table_item_text *table_item_text_clone (const struct table_item_text *);
+void table_item_text_destroy (struct table_item_text *);
 
 /* A table item.
 
    of the accessor functions defined below. */
 struct table_item
   {
-    struct output_item output_item; /* Superclass. */
-    struct table *table;        /* The table to be rendered. */
-    char *caption;              /* May be null if there is no caption. */
+    struct output_item output_item;  /* Superclass. */
+    struct table *table;             /* The table to be rendered. */
+    struct table_item_text *title;   /* Null if there is no title. */
+    struct table_item_text *layers;  /* Null if there is no layer info. */
+    struct table_item_text *caption; /* Null if there is no caption. */
   };
 
-struct table_item *table_item_create (struct table *, const char *caption);
+struct table_item *table_item_create (struct table *, const char *title,
+                                      const char *caption);
 
 const struct table *table_item_get_table (const struct table_item *);
 
-const char *table_item_get_caption (const struct table_item *);
-void table_item_set_caption (struct table_item *, const char *);
+const struct table_item_text *table_item_get_title (const struct table_item *);
+void table_item_set_title (struct table_item *,
+                           const struct table_item_text *);
+
+const struct table_item_text *table_item_get_layers (
+  const struct table_item *);
+void table_item_set_layers (struct table_item *,
+                           const struct table_item_text *);
+
+const struct table_item_text *table_item_get_caption (
+  const struct table_item *);
+void table_item_set_caption (struct table_item *,
+                             const struct table_item_text *);
 \f
 /* This boilerplate for table_item, a subclass of output_item, was
    autogenerated by mk-class-boilerplate. */
 
 #include <assert.h>
-#include <libpspp/cast.h>
+#include "libpspp/cast.h"
 
 extern const struct output_item_class table_item_class;