Sha256: fd1685aba4381e15e93d4ea2487760d4e2ce6c8428c0c188c059adc6769567f0
Contents?: true
Size: 1.12 KB
Versions: 2
Compression:
Stored size: 1.12 KB
Contents
module Prawn::SVG class Gradients def initialize(document) @document = document @gradients_by_id = {} end def [](id) id &&= id.strip return unless id && id != '' if element = @gradients_by_id[id] element elsif raw_element = find_raw_gradient_element_by_id(id) create_gradient_element(raw_element) end end def []=(id, gradient) @gradients_by_id[id] = gradient end private def find_raw_gradient_element_by_id(id) raw_element = find_raw_element_by_id(id) raw_element if gradient_element?(raw_element) end def create_gradient_element(raw_element) Elements::Gradient.new(@document, raw_element, [], new_state).tap(&:process) end def find_raw_element_by_id(id) REXML::XPath.match(@document.root, %(//*[@id="#{id.gsub('"', '\"')}"])).first end def gradient_element?(raw_element) Elements::TAG_CLASS_MAPPING[raw_element.name.to_sym] == Elements::Gradient end def new_state State.new.tap do |state| state.viewport_sizing = @document.sizing end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
prawn-svg-0.34.0 | lib/prawn/svg/gradients.rb |
prawn-svg-0.33.0 | lib/prawn/svg/gradients.rb |