# File lib/sparklines.rb, line 572
  def bullet
    height = @options[:height].to_f
    @graph_width       = @options.has_key?(:width) ? @options[:width].to_f : 100.0
    good_color         = @options.has_key?(:good_color) ? @options[:good_color] : '#eeeeee'
    satisfactory_color = @options.has_key?(:satisfactory_color) ? @options[:satisfactory_color] : '#bbbbbb'
    bad_color          = @options.has_key?(:bad_color) ? @options[:bad_color] : '#999999'
    bullet_color       = @options.has_key?(:bullet_color) ? @options[:bullet_color] : 'black'
    @thickness = height/3.0

    create_canvas(@graph_width, height, good_color)

    @value = @norm_data
    @good_value = @options[:good].to_f

    @graph_height = @options[:height]

    qualitative_range_colors = [satisfactory_color, bad_color]
    [:satisfactory, :bad].each_with_index do |indicator, index|
      next unless @options.has_key?(indicator)
      @draw = @draw.fill(qualitative_range_colors[index])
      indicator_width_x  = @graph_width * (@options[indicator].to_f / @good_value)
      @draw = @draw.rectangle(0, 0, indicator_width_x.to_i, @graph_height)
    end

    if @options.has_key?(:target)
      @draw = @draw.fill(bullet_color)
      target_x = @graph_width * (@options[:target].to_f / @good_value)
      half_thickness = (@thickness / 2.0).to_i
      bar_width = 1.0
      @draw = @draw.rectangle(target_x.to_i, half_thickness, (target_x + bar_width).to_i, @thickness * 2 + half_thickness)
    end

    # Value
    @draw = @draw.fill(bullet_color)
    @draw = @draw.rectangle(0, @thickness.to_i, @graph_width * (@data.first.to_f / @good_value), (@thickness * 2.0).to_i)

    @draw.draw(@canvas)
    @canvas
  end