Module: Gruff::Mini::Legend
Instance Attribute Summary collapse
-
#hide_mini_legend ⇒ Object
Returns the value of attribute hide_mini_legend.
Instance Method Summary collapse
-
#draw_vertical_legend ⇒ Object
Draw the legend beneath the existing graph.
-
#expand_canvas_for_vertical_legend ⇒ Object
The canvas needs to be bigger so we can put the legend beneath it.
-
#truncate_legend_label(label) ⇒ Object
Shorten long labels so they will fit on the canvas.
Instance Attribute Details
#hide_mini_legend ⇒ Object
Returns the value of attribute hide_mini_legend.
5 6 7 |
# File 'lib/gruff/mini/legend.rb', line 5 def hide_mini_legend @hide_mini_legend end |
Instance Method Details
#draw_vertical_legend ⇒ Object
Draw the legend beneath the existing graph.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/gruff/mini/legend.rb', line 21 def draw_vertical_legend return if @hide_mini_legend @legend_labels = @data.collect {|item| item[Gruff::Base::DATA_LABEL_INDEX] } legend_square_width = 40.0 # small square with color of this item legend_square_margin = 10.0 @legend_left_margin = 100.0 legend_top_margin = 40.0 # May fix legend drawing problem at small sizes @d.font = @font if @font @d.pointsize = @legend_font_size current_x_offset = @legend_left_margin current_y_offset = @original_rows + legend_top_margin debug { @d.line 0.0, current_y_offset, @raw_columns, current_y_offset } @legend_labels.each_with_index do |legend_label, index| # Draw label @d.fill = @font_color @d.font = @font if @font @d.pointsize = scale_fontsize(@legend_font_size) @d.stroke = 'transparent' @d.font_weight = Magick::NormalWeight @d.gravity = Magick::WestGravity @d = @d.annotate_scaled( @base_image, @raw_columns, 1.0, current_x_offset + (legend_square_width * 1.7), current_y_offset, truncate_legend_label(legend_label), @scale) # Now draw box with color of this dataset @d = @d.stroke 'transparent' @d = @d.fill @data[index][Gruff::Base::DATA_COLOR_INDEX] @d = @d.rectangle(current_x_offset, current_y_offset - legend_square_width / 2.0, current_x_offset + legend_square_width, current_y_offset + legend_square_width / 2.0) current_y_offset += calculate_caps_height(@legend_font_size) * 1.7 end @color_index = 0 end |
#expand_canvas_for_vertical_legend ⇒ Object
The canvas needs to be bigger so we can put the legend beneath it.
10 11 12 13 14 15 16 |
# File 'lib/gruff/mini/legend.rb', line 10 def return if @hide_mini_legend @original_rows = @raw_rows @rows += @data.length * calculate_caps_height(scale_fontsize(@legend_font_size)) * 1.7 render_background end |
#truncate_legend_label(label) ⇒ Object
Shorten long labels so they will fit on the canvas.
Department of Hu...
72 73 74 75 76 77 78 |
# File 'lib/gruff/mini/legend.rb', line 72 def truncate_legend_label(label) truncated_label = label.to_s while calculate_width(scale_fontsize(@legend_font_size), truncated_label) > (@columns - @legend_left_margin - @right_margin) && (truncated_label.length > 1) truncated_label = truncated_label[0..truncated_label.length-2] end truncated_label + (truncated_label.length < label.to_s.length ? "..." : '') end |