Module: Sevgi::Graphics::Mixtures::Duplicate

Defined in:
lib/sevgi/graphics/mixtures/duplicate.rb

Instance Method Summary collapse

Instance Method Details

#Duplicate(dx: nil, dy: nil, parent: nil, &block) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/sevgi/graphics/mixtures/duplicate.rb', line 7

def Duplicate(dx: nil, dy: nil, parent: nil, &block)
  duplicated = dup

  duplicated.Traverse() do |element|
    element.children = element.children.map(&:dup)
    id = (element.attributes = element.attributes.dup).delete(:id)
    element[:"#{ATTRIBUTE_INTERNAL_PREFIX}id"] = id if id
    block&.call(element)
  end

  duplicated.Translate(dx, dy) if dx || dy

  duplicated.Adopt(parent)

  duplicated
end

#DuplicateX(dx, parent: nil, &block) ⇒ Object



24
# File 'lib/sevgi/graphics/mixtures/duplicate.rb', line 24

def DuplicateX(dx, parent: nil, &block) = Duplicate(dx:, dy: 0, parent:, &block)

#DuplicateY(dy, parent: nil, &block) ⇒ Object



26
# File 'lib/sevgi/graphics/mixtures/duplicate.rb', line 26

def DuplicateY(dy, parent: nil, &block) = Duplicate(dx: 0, dy:, parent:, &block)