class SvgDrawer::Multipolyline
Public Class Methods
new(strokes, params = {})
click to toggle source
Calls superclass method
SvgDrawer::Base::new
# File lib/svg_drawer/multipolyline.rb, line 20 def initialize(strokes, params = {}) super(params) @polylines = strokes.map { |stroke| Polyline.new(stroke, child_params) } end
Public Instance Methods
height()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 31 def height param(:overflow) ? param(:height, calc_height) : [param(:height, 0), calc_height].max end
incomplete()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 37 def incomplete @polylines.none? ? self : @polylines.find(&:incomplete) end
width()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 25 def width param(:overflow) ? param(:width, calc_width) : [param(:width, 0), calc_width].max end
Private Instance Methods
_draw(parent)
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 43 def _draw(parent) unless param(:scale_size) @polylines.each { |p| p.update_params!(size: param(:size) / scale) } end Utils::RasemWrapper.group(parent, class: 'multi_polyline') do |mpoly_group| # Need a sub-group to prevent parents from overwriting translate() grouped = Utils::RasemWrapper.group(mpoly_group) do |g| @polylines.each { |p| p.draw(g, debug: @debug) } end grouped.translate(translate_x, translate_y).scale(scale, scale) end end
calc_height()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 78 def calc_height calc_height_unscaled * scale end
calc_height_unscaled()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 86 def calc_height_unscaled max_y - min_y end
calc_width()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 74 def calc_width calc_width_unscaled * scale end
calc_width_unscaled()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 82 def calc_width_unscaled max_x - min_x end
height_unscaled()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 96 def height_unscaled param(:overflow) ? param(:height, calc_height_unscaled) : [param(:height, 0), calc_height_unscaled].max end
max_x()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 62 def max_x @max_x ||= @polylines.max_by(&:max_x).max_x end
max_y()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 70 def max_y @max_y ||= @polylines.max_by(&:max_y).max_y end
min_x()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 58 def min_x @min_x ||= @polylines.min_by(&:min_x).min_x end
min_y()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 66 def min_y @min_y ||= @polylines.min_by(&:min_y).min_y end
scale()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 102 def scale [scale_x, scale_y].min * param(:scale) end
scale_x()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 106 def scale_x return 1 unless param(:width) && (param(:expand) || param(:shrink)) scale = param(:width).to_d / calc_width_unscaled return 1 if (scale > 1 && !param(:expand)) || (scale < 1 && !param(:shrink)) scale end
scale_y()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 113 def scale_y return 1 unless param(:height) && (param(:expand) || param(:shrink)) scale = param(:height).to_d / calc_height_unscaled return 1 if (scale > 1 && !param(:expand)) || (scale < 1 && !param(:shrink)) scale end
translate_x()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 120 def translate_x width_diff = (width - calc_width) case param(:x_reposition) when 'left' then -min_x * scale when 'center' then -min_x * scale + width_diff / 2 when 'right' then -min_x * scale + width_diff when 'none' then 0 else raise "Bad x_reposition: #{param(:x_reposition)}. Valid are: [left, right, center, none]" end end
translate_y()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 132 def translate_y height_diff = height - calc_height case param(:y_reposition) when 'top' then -min_y * scale when 'middle' then -min_y * scale + height_diff / 2 when 'bottom' then -min_y * scale + height_diff when 'none' then 0 else raise "Bad y_reposition: #{param(:y_reposition)}. Valid are: [top, bottom, middle, none]" end end
width_unscaled()
click to toggle source
# File lib/svg_drawer/multipolyline.rb, line 90 def width_unscaled param(:overflow) ? param(:width, calc_width_unscaled) : [param(:width, 0), calc_width_unscaled].max end