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., 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA. */
-#include <config.h>
+#include "config.h"
#include "chart.h"
#include <float.h>
#include <assert.h>
#include <stdio.h>
#include "str.h"
#include "value-labels.h"
+#include "misc.h"
/* Pie charts of course need to know Pi :) */
#endif
-#define min(A,B) ((A>B)?B:A)
-
/* Draw a single slice of the pie */
static void
int i;
double total_magnetude=0;
- struct chart ch;
-
- chart_initialise(&ch);
+ struct chart *ch = chart_create();
- const double left_label = ch.data_left +
- (ch.data_right - ch.data_left)/10.0;
+ const double left_label = ch->data_left +
+ (ch->data_right - ch->data_left)/10.0;
- const double right_label = ch.data_right -
- (ch.data_right - ch.data_left)/10.0;
+ const double right_label = ch->data_right -
+ (ch->data_right - ch->data_left)/10.0;
- const double centre_x = (ch.data_right + ch.data_left ) / 2.0 ;
- const double centre_y = (ch.data_top + ch.data_bottom ) / 2.0 ;
+ const double centre_x = (ch->data_right + ch->data_left ) / 2.0 ;
+ const double centre_y = (ch->data_top + ch->data_bottom ) / 2.0 ;
const double radius = min(
- 5.0 / 12.0 * (ch.data_top - ch.data_bottom),
- 1.0 / 4.0 * (ch.data_right - ch.data_left)
+ 5.0 / 12.0 * (ch->data_top - ch->data_bottom),
+ 1.0 / 4.0 * (ch->data_right - ch->data_left)
);
- chart_write_title(&ch, title);
+ chart_write_title(ch, title);
for (i = 0 ; i < n_slices ; ++i )
total_magnetude += slices[i].magnetude;
radius * cos(angle + segment_angle/2.0);
/* Fill the segment */
- draw_segment(&ch,
+ draw_segment(ch,
centre_x, centre_y, radius,
angle, segment_angle,
data_colour[i]);
/* Now add the labels */
if ( label_x < centre_x )
{
- pl_line_r(ch.lp, label_x, label_y,
+ 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_moverel_r(ch->lp,0,5);
+ pl_alabel_r(ch->lp,0,0,slices[i].label);
}
else
{
- pl_line_r(ch.lp,
+ pl_line_r(ch->lp,
label_x, label_y,
right_label, label_y
);
- pl_moverel_r(ch.lp,0,5);
- pl_alabel_r(ch.lp,'r',0,slices[i].label);
+ pl_moverel_r(ch->lp,0,5);
+ pl_alabel_r(ch->lp,'r',0,slices[i].label);
}
angle += segment_angle;
}
/* Draw an outline to the pie */
- pl_filltype_r(ch.lp,0);
- pl_fcircle_r (ch.lp, centre_x, centre_y, radius);
+ pl_filltype_r(ch->lp,0);
+ pl_fcircle_r (ch->lp, centre_x, centre_y, radius);
- chart_finalise(&ch);
+ chart_submit(ch);
}
static void
pl_restorestate_r(ch->lp);
}
+