table_from_string (const char *text)
{
struct table *t = table_create (1, 1, 0, 0, 0, 0);
- t->styles[0] = xmalloc (sizeof *t->styles[0]);
+ t->styles[0] = pool_alloc (t->container, sizeof *t->styles[0]);
*t->styles[0] = (struct area_style) {
AREA_STYLE_INITIALIZER__,
.cell_style.halign = TABLE_HALIGN_LEFT,
x1, y1, x2, y2);
struct table_cell *cell = pool_alloc (table->container, sizeof *cell);
- cell->d[TABLE_HORZ][0] = x1;
- cell->d[TABLE_VERT][0] = y1;
- cell->d[TABLE_HORZ][1] = ++x2;
- cell->d[TABLE_VERT][1] = ++y2;
- cell->options = opt;
- cell->footnotes = NULL;
- cell->n_footnotes = 0;
- cell->style = NULL;
+ *cell = (struct table_cell) {
+ .d = { [TABLE_HORZ] = { x1, ++x2 },
+ [TABLE_VERT] = { y1, ++y2 } },
+ .options = opt,
+ };
void **cc = &table->cc[x1 + y1 * table_nc (table)];
unsigned short *ct = &table->ct[x1 + y1 * table_nc (table)];
return cell;
}
+/* Sets the subscripts for column X, row Y in TABLE. */
+void
+table_add_subscripts (struct table *table, int x, int y,
+ char **subscripts, size_t n_subscripts)
+{
+ struct table_cell *cell = get_joined_cell (table, x, y);
+
+ cell->n_subscripts = n_subscripts;
+ cell->subscripts = pool_nalloc (table->container, n_subscripts,
+ sizeof *cell->subscripts);
+ for (size_t i = 0; i < n_subscripts; i++)
+ cell->subscripts[i] = pool_strdup (table->container, subscripts[i]);
+}
+
+/* Sets the superscript for column X, row Y in TABLE. */
+void
+table_add_superscript (struct table *table, int x, int y,
+ const char *superscript)
+{
+ get_joined_cell (table, x, y)->superscript
+ = pool_strdup (table->container, superscript);
+}
+
/* Create a footnote in TABLE with MARKER (e.g. "a") as its marker and CONTENT
as its content. The footnote will be styled as STYLE, which is mandatory.
IDX must uniquely identify the footnote within TABLE.