class RQRCodeCore::QRBitBuffer
Constants
- PAD0
- PAD1
Attributes
buffer[R]
Public Class Methods
new(version)
click to toggle source
# File lib/rqrcode_core/qrcode/qr_bit_buffer.rb, line 10 def initialize(version) @version = version @buffer = [] @length = 0 end
Public Instance Methods
alphanumeric_encoding_start(length)
click to toggle source
# File lib/rqrcode_core/qrcode/qr_bit_buffer.rb, line 49 def alphanumeric_encoding_start(length) put(QRMODE[:mode_alpha_numk], 4) put(length, QRUtil.get_length_in_bits(QRMODE[:mode_alpha_numk], @version)) end
byte_encoding_start(length)
click to toggle source
# File lib/rqrcode_core/qrcode/qr_bit_buffer.rb, line 44 def byte_encoding_start(length) put(QRMODE[:mode_8bit_byte], 4) put(length, QRUtil.get_length_in_bits(QRMODE[:mode_8bit_byte], @version)) end
end_of_message(max_data_bits)
click to toggle source
# File lib/rqrcode_core/qrcode/qr_bit_buffer.rb, line 72 def end_of_message(max_data_bits) put(0, 4) unless get_length_in_bits + 4 > max_data_bits end
get(index)
click to toggle source
# File lib/rqrcode_core/qrcode/qr_bit_buffer.rb, line 16 def get(index) buf_index = (index / 8).floor ((QRUtil.rszf(@buffer[buf_index], 7 - index % 8)) & 1) == 1 end
get_length_in_bits()
click to toggle source
# File lib/rqrcode_core/qrcode/qr_bit_buffer.rb, line 27 def get_length_in_bits @length end
numeric_encoding_start(length)
click to toggle source
# File lib/rqrcode_core/qrcode/qr_bit_buffer.rb, line 54 def numeric_encoding_start(length) put(QRMODE[:mode_number], 4) put(length, QRUtil.get_length_in_bits(QRMODE[:mode_number], @version)) end
pad_until(prefered_size)
click to toggle source
# File lib/rqrcode_core/qrcode/qr_bit_buffer.rb, line 59 def pad_until(prefered_size) # Align on byte while get_length_in_bits % 8 != 0 put_bit(false) end # Pad with padding code words while get_length_in_bits < prefered_size put(PAD0, 8) put(PAD1, 8) if get_length_in_bits < prefered_size end end
put(num, length)
click to toggle source
# File lib/rqrcode_core/qrcode/qr_bit_buffer.rb, line 21 def put(num, length) (0...length).each do |i| put_bit(((QRUtil.rszf(num, length - i - 1)) & 1) == 1) end end
put_bit(bit)
click to toggle source
# File lib/rqrcode_core/qrcode/qr_bit_buffer.rb, line 31 def put_bit(bit) buf_index = (@length / 8).floor if @buffer.size <= buf_index @buffer << 0 end if bit @buffer[buf_index] |= QRUtil.rszf(0x80, @length % 8) end @length += 1 end