class DoctorNinja::Parsers::BlipFill

Public Class Methods

applicable_to?(node) click to toggle source
# File lib/doctor_ninja/parsers/blip_fill.rb, line 4
def self.applicable_to?(node)
  node.name == "blipFill"
end

Public Instance Methods

parse() click to toggle source
# File lib/doctor_ninja/parsers/blip_fill.rb, line 8
def parse
  @image = Magick::Image.from_blob(@document.relationships[rel_id]).first
  transform
  @context[:canvas].background_image = @image
end

Private Instance Methods

rel_id() click to toggle source
# File lib/doctor_ninja/parsers/blip_fill.rb, line 16
def rel_id
  @node.xpath("./a:blip", "a" => xmlns_a).attribute("embed").value
end
src_rect() click to toggle source
# File lib/doctor_ninja/parsers/blip_fill.rb, line 36
def src_rect
  @node.xpath("./a:srcRect","a" => xmlns_a)[0]
end
transform() click to toggle source
# File lib/doctor_ninja/parsers/blip_fill.rb, line 20
def transform
  return unless src_rect
  h = {
    "l" => src_rect["l"].to_i*@image.columns/100000,
    "t" => src_rect["t"].to_i*@image.rows/100000,
    "r" => src_rect["r"].to_i*@image.columns/100000,
    "b" => src_rect["b"].to_i*@image.rows/100000
  }
  @image = @image.crop(
    h["l"],
    h["t"],
    @image.columns - h["l"]-h["r"] ,
    @image.rows-h["b"]-h["t"]
  )
end
xmlns_a() click to toggle source
# File lib/doctor_ninja/parsers/blip_fill.rb, line 40
def xmlns_a
  @node.namespaces["xmlns:a"]
end