Sha256: 342315db86d4d12ab377ee1a435a9d6773f84c6dbe5b7dd5127858f509a57692

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

module Asciidoctor
module Prawn
module Images
  class << self
    def extended base
      base.class.__send__ :alias_method, :_initial_image, :image
    end
  end

  # Dispatch to suitable image method in Prawn based on file extension.
  def image file, opts = {}
    # FIXME handle case when SVG is a File or IO object
    if ::String === file && (file.downcase.end_with? '.svg')
      opts[:fallback_font_name] ||= default_svg_font if respond_to? :default_svg_font
      svg (::IO.read file), opts
    else
      _initial_image file, opts
    end
  end

  # Retrieve the intrinsic image dimensions for the specified path.
  #
  # Returns a Hash containing :width and :height keys that map to the image's
  # intrinsic width and height values (in pixels)
  def intrinsic_image_dimensions path
    if path.end_with? '.svg'
      img_obj = ::Prawn::Svg::Interface.new ::IO.read(path), self, {}
      img_size = img_obj.document.sizing
      { width: img_size.output_width, height: img_size.output_height }
    else
      # NOTE build_image_object caches image data previously loaded
      _, img_size = ::File.open(path, 'rb') {|fd| build_image_object fd }
      { width: img_size.width, height: img_size.height }
    end
  end
end

::Prawn::Document.extensions << Images
end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
asciidoctor-pdf-1.5.0.alpha.15 lib/asciidoctor-pdf/prawn_ext/images.rb
asciidoctor-pdf-1.5.0.alpha.14 lib/asciidoctor-pdf/prawn_ext/images.rb