Module: Sevgi::Graphics::Mixtures::Duplicate
- Defined in:
- lib/sevgi/graphics/mixtures/duplicate.rb
Overview
DSL helpers for duplicating elements and their subtrees.
Instance Method Summary collapse
-
#Duplicate(dx: nil, dy: nil, parent: nil, &block) ⇒ Sevgi::Graphics::Element
Duplicates an element subtree and optionally translates it.
-
#DuplicateX(dx, parent: nil, &block) ⇒ Sevgi::Graphics::Element
Duplicates an element subtree along the x-axis.
-
#DuplicateY(dy, parent: nil, &block) ⇒ Sevgi::Graphics::Element
Duplicates an element subtree along the y-axis.
Instance Method Details
#Duplicate(dx: nil, dy: nil, parent: nil, &block) ⇒ Sevgi::Graphics::Element
Duplicates an element subtree and optionally translates it.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/sevgi/graphics/mixtures/duplicate.rb', line 13 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) ⇒ Sevgi::Graphics::Element
Duplicates an element subtree along the x-axis.
34 |
# File 'lib/sevgi/graphics/mixtures/duplicate.rb', line 34 def DuplicateX(dx, parent: nil, &block) = Duplicate(dx:, dy: 0, parent:, &block) |
#DuplicateY(dy, parent: nil, &block) ⇒ Sevgi::Graphics::Element
Duplicates an element subtree along the y-axis.
40 |
# File 'lib/sevgi/graphics/mixtures/duplicate.rb', line 40 def DuplicateY(dy, parent: nil, &block) = Duplicate(dx: 0, dy:, parent:, &block) |