- chart_write_title (cr, geom, "%s", pie->title);
-
- total_magnitude = 0.0;
- for (i = 0; i < pie->n_slices; i++)
- total_magnitude += pie->slices[i].magnitude;
-
- angle = 0.0;
- for (i = 0; i < pie->n_slices ; ++i )
- {
- const double segment_angle =
- pie->slices[i].magnitude / total_magnitude * 2 * M_PI ;
-
- const double label_x = centre_x -
- radius * sin(angle + segment_angle/2.0);
-
- const double label_y = centre_y +
- radius * cos(angle + segment_angle/2.0);
-
- /* Fill the segment */
- draw_segment (cr,
- centre_x, centre_y, radius,
- angle, segment_angle,
- &data_colour[i % N_CHART_COLOURS]);
-
- /* Now add the labels */
- if ( label_x < centre_x )
- {
- cairo_move_to (cr, label_x, label_y);
- cairo_line_to (cr, left_label, label_y);
- cairo_stroke (cr);
- cairo_move_to (cr, left_label, label_y + 5);
- chart_label (cr, 'l', 'x', geom->font_size,
- ds_cstr (&pie->slices[i].label));
- }