output: Refactor implementation of charts.
authorBen Pfaff <blp@gnu.org>
Thu, 2 Jul 2009 23:59:08 +0000 (16:59 -0700)
committerBen Pfaff <blp@gnu.org>
Thu, 2 Jul 2009 23:59:08 +0000 (16:59 -0700)
commita2a92dd38cf37e50ccfd56bedd4da21bc56dfe0f
tree57ba50493c35a8da51b7e8e4c46b4c736ee69837
parent9bc7fd4e5d03e4960960d9b16339a680d6f9ae06
output: Refactor implementation of charts.

This commit addresses a weakness of the charts implementation in PSPP, in
that charts can only be sent to a single output device.  This is because
the chart code calls into a single output driver to obtain a libplot
plotting context and then passes that back into the calling code, which
draws on it and passes it back to the output driver.  This commit refactors
the code so that, instead, a chart is an ADT that is reponsible for knowing
how to draw itself on a plotting device.  Then the function for outputting
a chart applies this function to each output device.

This is more complicated than necessary: we could just loop over the set of
output devices and draw a chart on each one in turn.  But this level of
complication is being introduced now so that later we can keep around
charts in memory as long as necessary for the GUI output engine to export
them on user demand.

This commit introduces a couple of regressions:

* libplot is now required, not optional.

* Box-whisker plots are disabled.

This regressions will be fixed by later commits.
21 files changed:
src/language/stats/examine.q
src/language/stats/frequencies.q
src/output/ascii.c
src/output/cairo.c
src/output/chart-provider.h [new file with mode: 0644]
src/output/chart.c
src/output/chart.h
src/output/charts/automake.mk
src/output/charts/cartesian.c
src/output/charts/cartesian.h
src/output/charts/piechart.c
src/output/charts/piechart.h
src/output/charts/plot-chart.c
src/output/charts/plot-chart.h
src/output/charts/plot-hist.c
src/output/charts/plot-hist.h
src/output/html.c
src/output/manager.c
src/output/manager.h
src/output/output.h
src/output/postscript.c