X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Fcharts%2Fpiechart.c;h=d00db1ffd13348bfb318afcc54ece009ac6c8a3c;hb=855eaf1506f0ea76a8bbfb3bbfd456524f4edeca;hp=366e729e7cd16b4811dbbcb42b0a76f9578f7fb2;hpb=76d65a89851d142dc58a34bee3123fcb9acba0c8;p=pspp diff --git a/src/output/charts/piechart.c b/src/output/charts/piechart.c index 366e729e7c..d00db1ffd1 100644 --- a/src/output/charts/piechart.c +++ b/src/output/charts/piechart.c @@ -22,33 +22,45 @@ #include "libpspp/cast.h" #include "libpspp/str.h" +#include "data/variable.h" #include "output/chart-item-provider.h" #include "gl/xalloc.h" +#include "gettext.h" +#define _(msgid) gettext (msgid) +#define N_(msgid) msgid + + /* Creates and returns a chart that will render a piechart with - the given TITLE and the N_SLICES described in SLICES. */ + the of VAR and the N_SLICES described in SLICES. */ struct chart_item * -piechart_create (const char *title, const struct slice *slices, int n_slices) +piechart_create (const struct variable *var, const struct freq *slices, int n_slices) { struct piechart *pie; int i; pie = xmalloc (sizeof *pie); - chart_item_init (&pie->chart_item, &piechart_class, title); + chart_item_init (&pie->chart_item, &piechart_class, var_to_string (var)); pie->slices = xnmalloc (n_slices, sizeof *pie->slices); for (i = 0; i < n_slices; i++) { - const struct slice *src = &slices[i]; + const struct freq *src = &slices[i]; struct slice *dst = &pie->slices[i]; - ds_init_string (&dst->label, &src->label); + ds_init_empty (&dst->label); + + if (var_is_value_missing (var, &src->values[0], MV_ANY)) + ds_assign_cstr (&dst->label, _("*MISSING*")); + else + var_append_value_name (var, &src->values[0], &dst->label); /* Chomp any whitespace from the RHS of the label. Doing this ensures that those labels to the right of the pie, appear right justified. */ ds_rtrim (&dst->label, ss_cstr (" \t")); - dst->magnitude = src->magnitude; + ds_ltrim (&dst->label, ss_cstr (" \t")); + dst->magnitude = src->count; } pie->n_slices = n_slices; return &pie->chart_item;