X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Fcharts%2Fpiechart.c;h=97910010c69101d16c21f607cc13a369aad0f3b7;hb=62120c1a218f5172d69357073297a1004ec9ee52;hp=15d69664bb8bf9ef4fc662ffea010f288486dfce;hpb=f5c108becd49d78f4898cab11352291f5689d24e;p=pspp-builds.git diff --git a/src/output/charts/piechart.c b/src/output/charts/piechart.c index 15d69664..97910010 100644 --- a/src/output/charts/piechart.c +++ b/src/output/charts/piechart.c @@ -1,27 +1,25 @@ -/* PSPP - draws pie charts of sample statistics +/* PSPP - a program for statistical analysis. + Copyright (C) 2004, 2009 Free Software Foundation, Inc. -Copyright (C) 2004 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 + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -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 the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301, USA. */ + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ #include #include #include +#include #include #include @@ -35,14 +33,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA #include "minmax.h" - -/* Pie charts of course need to know Pi :) */ -#ifndef M_PI -#define M_PI ( 22.0 / 7.0 ) -#endif - - - /* Draw a single slice of the pie */ static void draw_segment(struct chart *ch, @@ -58,7 +48,7 @@ void piechart_plot(const char *title, const struct slice *slices, int n_slices) { int i; - double total_magnetude=0; + double total_magnitude=0; struct chart *ch = chart_create(); @@ -76,18 +66,19 @@ piechart_plot(const char *title, const struct slice *slices, int n_slices) 1.0 / 4.0 * (ch->data_right - ch->data_left) ); + double angle; + - chart_write_title(ch, title); + chart_write_title(ch, "%s", title); for (i = 0 ; i < n_slices ; ++i ) - total_magnetude += slices[i].magnetude; + total_magnitude += slices[i].magnitude; + angle = 0.0; for (i = 0 ; i < n_slices ; ++i ) { - static double angle=0.0; - const double segment_angle = - slices[i].magnetude / total_magnetude * 2 * M_PI ; + slices[i].magnitude / total_magnitude * 2 * M_PI ; const double label_x = centre_x - radius * sin(angle + segment_angle/2.0); @@ -99,7 +90,7 @@ piechart_plot(const char *title, const struct slice *slices, int n_slices) draw_segment(ch, centre_x, centre_y, radius, angle, segment_angle, - data_colour[i]); + data_colour[i % N_CHART_COLOURS]); /* Now add the labels */ if ( label_x < centre_x ) @@ -107,7 +98,7 @@ piechart_plot(const char *title, const struct slice *slices, int n_slices) pl_line_r(ch->lp, label_x, label_y, left_label, label_y ); pl_moverel_r(ch->lp,0,5); - pl_alabel_r(ch->lp,0,0,slices[i].label); + pl_alabel_r (ch->lp, 0, 0, ds_cstr (&slices[i].label)); } else { @@ -116,7 +107,7 @@ piechart_plot(const char *title, const struct slice *slices, int n_slices) right_label, label_y ); pl_moverel_r(ch->lp,0,5); - pl_alabel_r(ch->lp,'r',0,slices[i].label); + pl_alabel_r (ch->lp, 'r', 0, ds_cstr (&slices[i].label)); } angle += segment_angle;