module Dieses::Geometry

Constants

Error

Public Class Methods

bounding_box_of(*elements) click to toggle source
# File lib/dieses/geometry/element.rb, line 56
def bounding_box_of(*elements)
  bboxes = elements.map(&:bbox)

  minimum = bboxes.map(&:minimum).min
  maximum = bboxes.map(&:maximum).max

  Element::BoundingBox.new minimum, maximum
end
centered(elements, rect) click to toggle source
# File lib/dieses/geometry/element.rb, line 41
def centered(elements, rect)
  bbox = bounding_box_of(*elements)

  x = (rect.width  - bbox.maximum.x + bbox.minimum.x) / 2
  y = (rect.height - bbox.maximum.y + bbox.minimum.y) / 2

  elements.map { |element| element.translate(x: x, y: y).attr(**element.attributes.dup) }
end
to_svg(elements, rect = Undefined, prefix: EMPTY_STRING) click to toggle source
# File lib/dieses/geometry/element.rb, line 50
def to_svg(elements, rect = Undefined, prefix: EMPTY_STRING)
  (Undefined.equal?(rect) ? elements : centered(elements, rect)).map do |element|
    "#{prefix}#{element.to_svg}"
  end.join.chomp
end