def initialize(data, bounds, options)
@css_parser = CssParser::Parser.new if CSS_PARSER_LOADED
@root = REXML::Document.new(data).root
@warnings = []
@options = options
@actual_width, @actual_height = bounds
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