draw (Gruff::Pie)

    # File lib/gruff/pie.rb, line 27
      def draw
        @hide_line_markers = true

        super

        return unless @has_data

        diameter = @graph_height
        radius = ([@graph_width, @graph_height].min / 2.0) * 0.8
        top_x = @graph_left + (@graph_width - diameter) / 2.0
        center_x = @graph_left + (@graph_width / 2.0)
        center_y = @graph_top + (@graph_height / 2.0) - 10 # Move graph up a bit
        total_sum = sums_for_pie()
        prev_degrees = @zero_degree

        # Use full data since we can easily calculate percentages
        data = (@sort ? @data.sort{ |a, b| a[DATA_VALUES_INDEX].first <=> b[DATA_VALUES_INDEX].first } : @data)
        data.each do |data_row|
          if data_row[DATA_VALUES_INDEX].first > 0
            @d = @d.stroke data_row[DATA_COLOR_INDEX]
            @d = @d.fill 'transparent'
            @d.stroke_width(radius) # stroke width should be equal to radius. we'll draw centered on (radius / 2)

            current_degrees = (data_row[DATA_VALUES_INDEX].first / total_sum) * 360.0

            # ellipse will draw the the stroke centered on the first two parameters offset by the second two.
            # therefore, in order to draw a circle of the proper diameter we must center the stroke at
            # half the radius for both x and y
            @d = @d.ellipse(center_x, center_y,
                      radius / 2.0, radius / 2.0,
                      prev_degrees, prev_degrees + current_degrees + 0.5) # <= +0.5 'fudge factor' gets rid of the ugly gaps

            half_angle = prev_degrees + ((prev_degrees + current_degrees) - prev_degrees) / 2

            # Following line is commented to allow display of the percentiles
            # bug appeared between r90 and r92
            # unless @hide_line_markers then
              # End the string with %% to escape the single %.
              # RMagick must use sprintf with the string and % has special significance.
              label_string = ((data_row[DATA_VALUES_INDEX].first / total_sum) *
                              100.0).round.to_s + '%%'
              @d = draw_label(center_x,center_y, half_angle,
                              radius + (radius * TEXT_OFFSET_PERCENTAGE),
                              label_string)
            # end

            prev_degrees += current_degrees
          end
        end

        # TODO debug a circle where the text is drawn...

        @d.draw(@base_image)
      end