def render_to_cairo_context(context, options={})
if context.respond_to?(:have_current_point?) and
context.have_current_point?
current_x, current_y = context.current_point
else
current_x = x(options) || margin(options)
current_y = y(options) || margin(options)
end
_xdim = xdim(options)
_height = height(options)
original_current_x = current_x
context.save do
context.set_source_color(:black)
context.fill do
if barcode.two_dimensional?
boolean_groups.each do |groups|
groups.each do |bar,amount|
current_width = _xdim * amount
if bar
context.rectangle(current_x, current_y, current_width, _xdim)
end
current_x += current_width
end
current_x = original_current_x
current_y += _xdim
end
else
boolean_groups.each do |bar,amount|
current_width = _xdim * amount
if bar
context.rectangle(current_x, current_y, current_width, _height)
end
current_x += current_width
end
end
end
end
context
end