class RQRCodeSVG::Image

Public Class Methods

new(qr_code) click to toggle source
# File lib/rqrcode_svg/image.rb, line 4
def initialize(qr_code)
  @qr_code = qr_code
  @sequence = Sequence.new(qr_code)
end

Public Instance Methods

render(size) click to toggle source
# File lib/rqrcode_svg/image.rb, line 9
def render(size)
  stream = ""
  block_size = size/@qr_code.module_count.to_f

  stream += doctype
  stream += svg_open(size)

  @sequence.dark_squares_only do |row, column|
    row_x, row_y = to_coord(size, row), to_coord(size, column)
    stream += square(row_x, row_y, block_size)
  end

  stream += svg_close

  stream
end

Private Instance Methods

doctype() click to toggle source
# File lib/rqrcode_svg/image.rb, line 28
def doctype
  %(<?xml version="1.0"?>)
end
square(x, y, size) click to toggle source
# File lib/rqrcode_svg/image.rb, line 44
def square(x, y, size)
  x, y, size = *[x, y, size].map { |v| v.round(1) }
  %(<rect x="#{x}" y="#{y}" width="#{size+0.5}" height="#{size+0.5}" />)
end
svg_close() click to toggle source
# File lib/rqrcode_svg/image.rb, line 36
def svg_close
  %(</svg>)
end
svg_open(size) click to toggle source
# File lib/rqrcode_svg/image.rb, line 32
def svg_open(size)
  %(<svg width="#{size}" height="#{size}" viewPort="0 0 #{size} #{size}" version="1.1" xmlns="http://www.w3.org/2000/svg">)
end
to_coord(size, value) click to toggle source
# File lib/rqrcode_svg/image.rb, line 40
def to_coord(size, value)
  size * value / @qr_code.module_count.to_f
end