module Charts::Legend
Public Instance Methods
draw_labels()
click to toggle source
# File lib/charts/legend.rb, line 2 def draw_labels return if options[:labels].nil? || labels.empty? label_row_length_sum = 0 label_row = 1 labels.each_with_index do |label, index| x = outer_margin + label_row_length_sum y = height - outer_margin - label_total_height + label_row * (label_height + label_margin) label_row_length_sum += label.length * 10 + label_height + 2 * label_margin if label_row_length_sum > inner_width label_row_length_sum = 0 label_row += 1 end renderer.rect x, y, label_height, label_height, fill: colors[index], stroke: colors[index] label_x = x + label_height + label_margin label_y = y + label_height - renderer.font_size / 3 renderer.text label, label_x, label_y, text_anchor: 'start', class: 'label' end end
label_rows()
click to toggle source
# File lib/charts/legend.rb, line 26 def label_rows return 0 if options[:labels].nil? || labels.empty? avg_character_width = 10 ((labels.join.length * avg_character_width + 2 * labels.count * label_margin) / inner_width.to_f).ceil end
label_total_height()
click to toggle source
# File lib/charts/legend.rb, line 21 def label_total_height return 0 if options[:labels].nil? || labels.empty? label_rows * (label_height + label_margin) end