Parent

Included Modules

Prawn::Svg::Document

Attributes

actual_height[R]
actual_width[R]
cache_images[R]
css_parser[R]
elements_by_id[R]
height[R]
root[R]
scale[RW]

The scaling factor, as determined by the :width or :height options.

warnings[R]

An Array of warnings that occurred while parsing the SVG data.

width[R]
x_offset[R]
y_offset[R]

Public Class Methods

new(data, bounds, options) click to toggle source
# File lib/prawn/svg/document.rb, line 24
def initialize(data, bounds, options)
  @css_parser = CssParser::Parser.new if CSS_PARSER_LOADED

  @root = REXML::Document.new(data).root
  @warnings = []
  @options = options
  @elements_by_id = {}
  @cache_images = options[:cache_images]
  @actual_width, @actual_height = bounds # set this first so % width/heights can be used

  if vb = @root.attributes['viewBox']
    x1, y1, x2, y2 = vb.strip.split(/\s+/)
    @x_offset, @y_offset = [x1.to_f, y1.to_f]
    @actual_width, @actual_height = [x2.to_f - x1.to_f, y2.to_f - y1.to_f]
  else
    @x_offset, @y_offset = [0, 0]
    @actual_width = points(@root.attributes['width'] || DEFAULT_WIDTH, :x)
    @actual_height = points(@root.attributes['height'] || DEFAULT_HEIGHT, :y)
  end

  if @options[:width]
    @width = @options[:width]
    @scale = @options[:width] / @actual_width.to_f
  elsif @options[:height]
    @height = @options[:height]
    @scale = @options[:height] / @actual_height.to_f
  else
    @scale = 1
  end

  @width ||= @actual_width * @scale
  @height ||= @actual_height * @scale
end

Public Instance Methods

distance(value, axis = nil) click to toggle source
# File lib/prawn/svg/document.rb, line 66
def distance(value, axis = nil)
  value && (points(value, axis) * scale)
end
points(value, axis = nil) click to toggle source
# File lib/prawn/svg/document.rb, line 70
def points(value, axis = nil)
  if value.is_a?(String)
    if match = value.match(/\d(cm|dm|ft|in|m|mm|yd)$/)
      send("#{match[1]}2pt", value.to_f)
    elsif value[-1..-1] == "%"
      value.to_f * (axis == :y ? @actual_height : @actual_width) / 100.0
    else
      value.to_f
    end
  else
    value.to_f
  end
end
x(value) click to toggle source
# File lib/prawn/svg/document.rb, line 58
def x(value)
  (points(value, :x) - @x_offset) * scale
end
y(value) click to toggle source
# File lib/prawn/svg/document.rb, line 62
def y(value)
  (@actual_height - (points(value, :y) - @y_offset)) * scale
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.