/* Sets the widths of all the columns and heights of all the rows in
table T for driver D. */
static void
-sysfile_info_dim (struct tab_table *t, struct outp_driver *d, void *aux UNUSED)
+sysfile_info_dim (struct tab_rendering *r, void *aux UNUSED)
{
+ const struct tab_table *t = r->table;
static const int max[] = {20, 5, 35, 3, 0};
const int *p;
int i;
for (p = max; *p; p++)
- t->w[p - max] = MIN (tab_natural_width (t, d, p - max),
- *p * d->prop_em_width);
- for (i = 0; i < t->nr; i++)
- t->h[i] = tab_natural_height (t, d, i);
+ r->w[p - max] = MIN (tab_natural_width (r, p - max),
+ *p * r->driver->prop_em_width);
+ for (i = 0; i < tab_nr (t); i++)
+ r->h[i] = tab_natural_height (r, i);
}
/* SYSFILE INFO utility. */
}
casereader_destroy (reader);
- t = tab_create (2, 11, 0);
+ t = tab_create (2, 11);
tab_vline (t, TAL_GAP, 1, 0, 8);
tab_text (t, 0, 0, TAB_LEFT, _("File:"));
tab_text (t, 1, 0, TAB_LEFT, fh_get_file_name (h));
dict_get_encoding(d) ? dict_get_encoding(d) : _("Unknown"));
- tab_dim (t, tab_natural_dimensions, NULL);
+ tab_dim (t, tab_natural_dimensions, NULL, NULL);
tab_submit (t);
- t = tab_create (4, 1 + 2 * dict_get_var_cnt (d), 1);
- tab_dim (t, sysfile_info_dim, NULL);
+ t = tab_create (4, 1 + 2 * dict_get_var_cnt (d));
+ tab_dim (t, sysfile_info_dim, NULL, NULL);
tab_headers (t, 0, 0, 1, 0);
tab_text (t, 0, 0, TAB_LEFT | TAT_TITLE, _("Variable"));
tab_joint_text (t, 1, 0, 2, 0, TAB_LEFT | TAT_TITLE, _("Description"));
}
}
-static int _flags;
+struct variables_dim_aux
+ {
+ int flags;
+ };
/* Sets the widths of all the columns and heights of all the rows in
table T for driver D. */
static void
-variables_dim (struct tab_table *t, struct outp_driver *d, void *aux UNUSED)
+variables_dim (struct tab_rendering *r, void *aux_)
{
- int pc;
- int i;
+ const struct outp_driver *d = r->driver;
+ struct variables_dim_aux *aux = aux_;
- t->w[0] = tab_natural_width (t, d, 0);
- if (_flags & (DF_VALUE_LABELS | DF_VARIABLE_LABELS | DF_MISSING_VALUES
- | DF_AT_ATTRIBUTES | DF_ATTRIBUTES))
+ tab_natural_dimensions (r, NULL);
+ if (aux->flags & (DF_VALUE_LABELS | DF_VARIABLE_LABELS | DF_MISSING_VALUES
+ | DF_AT_ATTRIBUTES | DF_ATTRIBUTES))
{
- t->w[1] = MAX (tab_natural_width (t, d, 1), d->prop_em_width * 5);
- t->w[2] = MAX (tab_natural_width (t, d, 2), d->prop_em_width * 35);
- pc = 3;
+ r->w[1] = MAX (r->w[1], d->prop_em_width * 5);
+ r->w[2] = MAX (r->w[2], d->prop_em_width * 35);
}
- else
- pc = 1;
- if (_flags & DF_DICT_INDEX)
- t->w[pc] = tab_natural_width (t, d, pc);
+}
- for (i = 0; i < t->nr; i++)
- t->h[i] = tab_natural_height (t, d, i);
+static void
+variables_dim_free (void *aux_)
+{
+ struct variables_dim_aux *aux = aux_;
+ free (aux);
}
static void
display_variables (const struct variable **vl, size_t n, int flags)
{
struct tab_table *t;
+ struct variables_dim_aux *aux;
int nc; /* Number of columns. */
int pc; /* `Position column' */
int r; /* Current row. */
size_t i;
- _flags = flags;
-
/* One column for the name,
two columns for general description,
one column for dictionary index. */
if (flags & DF_DICT_INDEX)
nc++;
- t = tab_create (nc, n + 5, 1);
+ t = tab_create (nc, n + 5);
tab_headers (t, 0, 0, 1, 0);
tab_hline (t, TAL_2, 0, nc - 1, 1);
tab_text (t, 0, 0, TAB_LEFT | TAT_TITLE, _("Variable"));
? _("Description") : _("Label")));
if (flags & DF_DICT_INDEX)
tab_text (t, pc, 0, TAB_LEFT | TAT_TITLE, _("Position"));
- tab_dim (t, variables_dim, NULL);
+
+ aux = xmalloc (sizeof *aux);
+ aux->flags = flags;
+ tab_dim (t, variables_dim, variables_dim_free, aux);
r = 1;
for (i = 0; i < n; i++)
if (flags & ~DF_DICT_INDEX)
tab_vline (t, TAL_1, nc - 1, 0, r - 1);
tab_resize (t, -1, r);
- tab_columns (t, TAB_COL_DOWN, 1);
+ tab_columns (t, TAB_COL_DOWN);
tab_submit (t);
}
\f
if (!n_attrs)
return;
- t = tab_create (2, n_attrs + 1, 0);
+ t = tab_create (2, n_attrs + 1);
tab_headers (t, 0, 0, 1, 0);
tab_box (t, TAL_1, TAL_1, -1, TAL_1, 0, 0, tab_nc (t) - 1, tab_nr (t) - 1);
tab_hline (t, TAL_2, 0, 1, 1);
tab_text (t, 0, 0, TAB_LEFT | TAT_TITLE, _("Attribute"));
tab_text (t, 1, 0, TAB_LEFT | TAT_TITLE, _("Value"));
display_attributes (t, set, flags, 0, 1);
- tab_columns (t, TAB_COL_DOWN, 1);
- tab_dim (t, tab_natural_dimensions, NULL);
+ tab_columns (t, TAB_COL_DOWN);
+ tab_dim (t, tab_natural_dimensions, NULL, NULL);
tab_title (t, "Custom data file attributes.");
tab_submit (t);
}
if (sorted)
qsort (vl, nvec, sizeof *vl, compare_vector_ptrs_by_name);
- t = tab_create (4, nrow + 1, 0);
+ t = tab_create (4, nrow + 1);
tab_headers (t, 0, 0, 1, 0);
- tab_columns (t, TAB_COL_DOWN, 1);
- tab_dim (t, tab_natural_dimensions, NULL);
+ tab_columns (t, TAB_COL_DOWN);
+ tab_dim (t, tab_natural_dimensions, NULL, NULL);
tab_box (t, TAL_1, TAL_1, -1, -1, 0, 0, 3, nrow);
tab_box (t, -1, -1, -1, TAL_1, 0, 0, 3, nrow);
tab_hline (t, TAL_2, 0, 3, 1);