def to_canvas(opts={})
with_options opts do
canvas = PNG::Canvas.new(full_width, full_height, PNG::Color::White)
if barcode.two_dimensional?
x, y = margin, margin
booleans.reverse_each do |line|
line.each do |bar|
if bar
x.upto(x+(xdim-1)) do |xx|
y.upto y+(ydim-1) do |yy|
canvas[xx,yy] = PNG::Color::Black
end
end
end
x += xdim
end
y += ydim
x = margin
end
else
x, y = margin, margin
booleans.each do |bar|
if bar
x.upto(x+(xdim-1)) do |xx|
y.upto y+(height-1) do |yy|
canvas[xx,yy] = PNG::Color::Black
end
end
end
x += xdim
end
end
canvas
end
end