class SvgDrawer::Circle

Public Class Methods

new(center, radius, params = {}) click to toggle source
Calls superclass method SvgDrawer::Base::new
# File lib/svg_drawer/circle.rb, line 14
def initialize(center, radius, params = {})
  @center = center
  @radius = radius
  super(params)
end

Public Instance Methods

height() click to toggle source
# File lib/svg_drawer/circle.rb, line 26
def height
  param(:overflow) ?
    param(:height, calc_height) :
    [param(:height, 0), calc_height].max
end
incomplete() click to toggle source
# File lib/svg_drawer/circle.rb, line 32
def incomplete
  false
end
max_x() click to toggle source
# File lib/svg_drawer/circle.rb, line 40
def max_x
  @max_x ||= @center.first + @radius
end
max_y() click to toggle source
# File lib/svg_drawer/circle.rb, line 48
def max_y
  @max_y ||= @center.last + @radius
end
min_x() click to toggle source
# File lib/svg_drawer/circle.rb, line 36
def min_x
  @min_x ||= @center.first - @radius
end
min_y() click to toggle source
# File lib/svg_drawer/circle.rb, line 44
def min_y
  @min_y ||= @center.last - @radius
end
width() click to toggle source
# File lib/svg_drawer/circle.rb, line 20
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/circle.rb, line 54
def _draw(parent)
  size = param(:scale_size) ? param(:size) : param(:size) / scale
  style = {}

  # need symbol keys due to a bug in Rasem::SVGTag#write_styles
  style[:fill] = param(:fill)
  style[:stroke] = param(:stroke)
  style[:'stroke-width'] = size

  Utils::RasemWrapper.group(parent, class: 'circle') do |circle_group|
    poly = circle_group.circle(@center.first, @center.last, @radius, style: style.dup)
    poly.translate(translate_x, translate_y).scale(scale, scale)
  end
end
calc_height() click to toggle source
# File lib/svg_drawer/circle.rb, line 73
def calc_height
  calc_height_unscaled * scale
end
calc_height_unscaled() click to toggle source
# File lib/svg_drawer/circle.rb, line 81
def calc_height_unscaled
  max_y - min_y
end
calc_width() click to toggle source
# File lib/svg_drawer/circle.rb, line 69
def calc_width
  calc_width_unscaled * scale
end
calc_width_unscaled() click to toggle source
# File lib/svg_drawer/circle.rb, line 77
def calc_width_unscaled
  max_x - min_x
end
height_unscaled() click to toggle source
# File lib/svg_drawer/circle.rb, line 91
def height_unscaled
  param(:overflow) ?
    param(:height, calc_height_unscaled) :
    [param(:height, 0), calc_height_unscaled].max
end
scale() click to toggle source
# File lib/svg_drawer/circle.rb, line 97
def scale
  [scale_x, scale_y].min * param(:scale)
end
scale_x() click to toggle source
# File lib/svg_drawer/circle.rb, line 101
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/circle.rb, line 108
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/circle.rb, line 115
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/circle.rb, line 127
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/circle.rb, line 85
def width_unscaled
  param(:overflow) ?
    param(:width, calc_width_unscaled) :
    [param(:width, 0), calc_width_unscaled].max
end