fputs ("<TBODY VALIGN=\"TOP\">\n", html->file);
const struct table_item_text *title = table_item_get_title (item);
- if (title)
+ const struct table_item_text *layers = table_item_get_layers (item);
+ if (title || layers)
{
fputs (" <CAPTION>", html->file);
- html_put_table_item_text (html, title);
+ if (title)
+ html_put_table_item_text (html, title);
+ if (title && layers)
+ fputs ("<BR>\n", html->file);
+ if (layers)
+ html_put_table_item_text (html, layers);
fputs ("</CAPTION>\n", html->file);
}
/* Write a heading for the table */
write_table_item_text (odt, table_item_get_title (item));
+ write_table_item_text (odt, table_item_get_layers (item));
/* Start table */
xmlTextWriterStartElement (odt->content_wtr, _xml("table:table"));
/* Title. */
add_text_page (p, table_item_get_title (table_item), title_width);
+ /* Layers. */
+ add_text_page (p, table_item_get_layers (table_item), title_width);
+
/* Body. */
render_pager_add_table (p, table_ref (table_item_get_table (table_item)), 0);
output_item_init (&item->output_item, &table_item_class);
item->table = table;
item->title = table_item_text_create (title);
+ item->layers = NULL;
item->caption = table_item_text_create (caption);
return item;
}
item->title = table_item_text_clone (title);
}
+/* Returns ITEM's layers, which will be a null pointer if no layers have been
+ set. */
+const struct table_item_text *
+table_item_get_layers (const struct table_item *item)
+{
+ return item->layers;
+}
+
+/* Sets ITEM's layers to LAYERS, replacing any previous layers. Specify NULL
+ for LAYERS to clear any layers from ITEM. The caller retains ownership of
+ LAYERS.
+
+ This function may only be used on a table_item that is unshared. */
+void
+table_item_set_layers (struct table_item *item,
+ const struct table_item_text *layers)
+{
+ assert (!table_item_is_shared (item));
+ table_item_text_destroy (item->layers);
+ item->layers = table_item_text_clone (layers);
+}
+
/* Returns ITEM's caption, which is a null pointer if no caption has been
set. */
const struct table_item_text *
table_item_destroy (struct output_item *output_item)
{
struct table_item *item = to_table_item (output_item);
- free (item->title);
- free (item->caption);
+ table_item_text_destroy (item->title);
+ table_item_text_destroy (item->layers);
+ table_item_text_destroy (item->caption);
table_unref (item->table);
free (item);
}
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. */
};
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 *,