hist = freq_tab_to_hist (ft,v);
- histogram_plot_n (hist, var_to_string(v),
+ histogram_plot (hist, var_to_string(v),
vf->tab.valid_cases,
d[frq_mean],
d[frq_stddev],
\f
/* Frequency table display. */
+struct full_dim_aux
+ {
+ bool show_labels;
+ };
+
/* Sets the widths of all the columns and heights of all the rows in
table T for driver D. */
static void
-full_dim (struct tab_table *t, struct outp_driver *d, void *aux UNUSED)
+full_dim (struct tab_rendering *r, void *aux_)
{
- int i = 0;
- int columns = 5;
+ const struct outp_driver *d = r->driver;
+ const struct tab_table *t = r->table;
+ const struct full_dim_aux *aux = aux_;
+ int i;
- if (cmd.labels == FRQ_LABELS)
+ for (i = 0; i < t->nc; i++)
{
- t->w[0] = MIN (tab_natural_width (t, d, 0), d->prop_em_width * 15);
- i = 1;
- columns ++;
+ r->w[i] = tab_natural_width (r, i);
+ if (aux->show_labels && i == 0)
+ r->w[i] = MIN (r->w[i], d->prop_em_width * 15);
+ else
+ r->w[i] = MAX (r->w[i], d->prop_em_width * 8);
}
- for (;i < columns; i++)
- t->w[i] = MAX (tab_natural_width (t, d, i), d->prop_em_width * 8);
-
for (i = 0; i < t->nr; i++)
- t->h[i] = d->font_height;
+ r->h[i] = d->font_height;
+}
+
+static void
+full_dim_free (void *aux_)
+{
+ struct full_dim_aux *aux = aux_;
+ free (aux);
}
/* Displays a full frequency table for variable V. */
const bool lab = (cmd.labels == FRQ_LABELS);
+ struct full_dim_aux *aux;
+
vf = get_var_freqs (v);
ft = &vf->tab;
n_categories = ft->n_valid + ft->n_missing;
t = tab_create (5 + lab, n_categories + 3, 0);
tab_headers (t, 0, 0, 2, 0);
- tab_dim (t, full_dim, NULL);
+
+ aux = xmalloc (sizeof *aux);
+ aux->show_labels = lab;
+ tab_dim (t, full_dim, full_dim_free, aux);
if (lab)
tab_text (t, 0, 1, TAB_CENTER | TAT_TITLE, _("Value Label"));
/* Sets the widths of all the columns and heights of all the rows in
table T for driver D. */
static void
-condensed_dim (struct tab_table *t, struct outp_driver *d, void *aux UNUSED)
+condensed_dim (struct tab_rendering *r, void *aux UNUSED)
{
- int cum_w = MAX (outp_string_width (d, _("Cum"), OUTP_PROPORTIONAL),
- MAX (outp_string_width (d, _("Cum"), OUTP_PROPORTIONAL),
- outp_string_width (d, "000", OUTP_PROPORTIONAL)));
+ struct outp_driver *d = r->driver;
+ const struct tab_table *t = r->table;
+
+ int cum_width = outp_string_width (d, _("Cum"), OUTP_PROPORTIONAL);
+ int zeros_width = outp_string_width (d, "000", OUTP_PROPORTIONAL);
+ int max_width = MAX (cum_width, zeros_width);
int i;
for (i = 0; i < 2; i++)
- t->w[i] = MAX (tab_natural_width (t, d, i), d->prop_em_width * 8);
+ {
+ r->w[i] = tab_natural_width (r, i);
+ r->w[i] = MAX (r->w[i], d->prop_em_width * 8);
+ }
for (i = 2; i < 4; i++)
- t->w[i] = cum_w;
+ r->w[i] = max_width;
for (i = 0; i < t->nr; i++)
- t->h[i] = d->font_height;
+ r->h[i] = d->font_height;
}
/* Display condensed frequency table for variable V. */
tab_text (t, 2, 1, TAB_CENTER | TAT_TITLE, _("Pct"));
tab_text (t, 3, 0, TAB_CENTER | TAT_TITLE, _("Cum"));
tab_text (t, 3, 1, TAB_CENTER | TAT_TITLE, _("Pct"));
- tab_dim (t, condensed_dim, NULL);
+ tab_dim (t, condensed_dim, NULL, NULL);
r = 2;
for (f = ft->valid; f < ft->missing; f++)
calc_stats (v, stat_value);
t = tab_create (3, n_stats + n_percentiles + 2, 0);
- tab_dim (t, tab_natural_dimensions, NULL);
+ tab_dim (t, tab_natural_dimensions, NULL, NULL);
tab_box (t, TAL_1, TAL_1, -1, -1 , 0 , 0 , 2, tab_nr(t) - 1) ;