X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Fcharts%2Fnp-plot-cairo.c;h=ae866831f65d62ee34795d64048fb554d1bf6bee;hb=ff79bb95e5c3de40d359a60214ece51db8561d3e;hp=a9186527b81d442954d03e9c735181806b05ade2;hpb=d0b91eae59319ab2756d0d43b9cb15eb9cd3c234;p=pspp diff --git a/src/output/charts/np-plot-cairo.c b/src/output/charts/np-plot-cairo.c index a9186527b8..ae866831f6 100644 --- a/src/output/charts/np-plot-cairo.c +++ b/src/output/charts/np-plot-cairo.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009, 2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,31 +16,34 @@ #include -#include +#include "output/charts/np-plot.h" -#include -#include -#include -#include +#include "data/case.h" +#include "data/casereader.h" +#include "math/np.h" +#include "output/cairo-chart.h" #include "gettext.h" #define _(msgid) gettext (msgid) static void -np_plot_chart_draw (const struct chart_item *chart_item, cairo_t *cr, +np_plot_chart_draw (const struct chart *chart, cairo_t *cr, struct xrchart_geometry *geom) { - const struct np_plot_chart *npp = to_np_plot_chart (chart_item); + const struct np_plot_chart *npp = to_np_plot_chart (chart); struct casereader *data; struct ccase *c; - xrchart_write_title (cr, geom, _("Normal Q-Q Plot of %s"), npp->label); + xrchart_write_title (cr, geom, _("Normal Q-Q Plot of %s"), chart->title); xrchart_write_xlabel (cr, geom, _("Observed Value")); xrchart_write_ylabel (cr, geom, _("Expected Normal")); - xrchart_write_xscale (cr, geom, + if (! xrchart_write_xscale (cr, geom, npp->x_lower - npp->slack, - npp->x_upper + npp->slack, 5); - xrchart_write_yscale (cr, geom, npp->y_first, npp->y_last, 5); + npp->x_upper + npp->slack)) + return; + + if (! xrchart_write_yscale (cr, geom, npp->y_first, npp->y_last)) + return; data = casereader_clone (npp->data); for (; (c = casereader_read (data)) != NULL; case_unref (c)) @@ -54,19 +57,20 @@ np_plot_chart_draw (const struct chart_item *chart_item, cairo_t *cr, } static void -dnp_plot_chart_draw (const struct chart_item *chart_item, cairo_t *cr, +dnp_plot_chart_draw (const struct chart *chart, cairo_t *cr, struct xrchart_geometry *geom) { - const struct np_plot_chart *dnpp = to_np_plot_chart (chart_item); + const struct np_plot_chart *dnpp = to_np_plot_chart (chart); struct casereader *data; struct ccase *c; - xrchart_write_title (cr, geom, _("Detrended Normal Q-Q Plot of %s"), - dnpp->label); + xrchart_write_title (cr, geom, _("Detrended Normal Q-Q Plot of %s"), chart->title); xrchart_write_xlabel (cr, geom, _("Observed Value")); xrchart_write_ylabel (cr, geom, _("Dev from Normal")); - xrchart_write_xscale (cr, geom, dnpp->y_min, dnpp->y_max, 5); - xrchart_write_yscale (cr, geom, dnpp->dns_min, dnpp->dns_max, 5); + if (! xrchart_write_xscale (cr, geom, dnpp->y_min, dnpp->y_max)) + return; + if (! xrchart_write_yscale (cr, geom, dnpp->dns_min, dnpp->dns_max)) + return; data = casereader_clone (dnpp->data); for (; (c = casereader_read (data)) != NULL; case_unref (c)) @@ -78,13 +82,13 @@ dnp_plot_chart_draw (const struct chart_item *chart_item, cairo_t *cr, } void -xrchart_draw_np_plot (const struct chart_item *chart_item, cairo_t *cr, +xrchart_draw_np_plot (const struct chart *chart, cairo_t *cr, struct xrchart_geometry *geom) { - const struct np_plot_chart *npp = to_np_plot_chart (chart_item); + const struct np_plot_chart *npp = to_np_plot_chart (chart); if (npp->detrended) - dnp_plot_chart_draw (chart_item, cr, geom); + dnp_plot_chart_draw (chart, cr, geom); else - np_plot_chart_draw (chart_item, cr, geom); + np_plot_chart_draw (chart, cr, geom); }