Class: QrCodeMaker::QRBitBuffer
- Inherits:
-
Object
- Object
- QrCodeMaker::QRBitBuffer
- Defined in:
- lib/qr_code_maker/encoder.rb
Constant Summary collapse
- PAD0 =
0xEC- PAD1 =
0x11
Instance Attribute Summary collapse
-
#buffer ⇒ Object
readonly
Returns the value of attribute buffer.
Instance Method Summary collapse
- #alphanumeric_encoding_start(length) ⇒ Object
- #byte_encoding_start(length) ⇒ Object
- #end_of_message(max_data_bits) ⇒ Object
- #get(index) ⇒ Object
- #get_length_in_bits ⇒ Object
-
#initialize(version) ⇒ QRBitBuffer
constructor
A new instance of QRBitBuffer.
- #numeric_encoding_start(length) ⇒ Object
- #pad_until(prefered_size) ⇒ Object
- #put(num, length) ⇒ Object
- #put_bit(bit) ⇒ Object
Constructor Details
#initialize(version) ⇒ QRBitBuffer
Returns a new instance of QRBitBuffer.
452 453 454 455 456 |
# File 'lib/qr_code_maker/encoder.rb', line 452 def initialize(version) @version = version @buffer = [] @length = 0 end |
Instance Attribute Details
#buffer ⇒ Object (readonly)
Returns the value of attribute buffer.
447 448 449 |
# File 'lib/qr_code_maker/encoder.rb', line 447 def buffer @buffer end |
Instance Method Details
#alphanumeric_encoding_start(length) ⇒ Object
491 492 493 494 |
# File 'lib/qr_code_maker/encoder.rb', line 491 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) ⇒ Object
486 487 488 489 |
# File 'lib/qr_code_maker/encoder.rb', line 486 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) ⇒ Object
512 513 514 |
# File 'lib/qr_code_maker/encoder.rb', line 512 def (max_data_bits) put(0, 4) unless get_length_in_bits + 4 > max_data_bits end |
#get(index) ⇒ Object
458 459 460 461 |
# File 'lib/qr_code_maker/encoder.rb', line 458 def get(index) buf_index = (index / 8).floor (QRUtil.rszf(@buffer[buf_index], 7 - index % 8) & 1) == 1 end |
#get_length_in_bits ⇒ Object
469 470 471 |
# File 'lib/qr_code_maker/encoder.rb', line 469 def get_length_in_bits @length end |
#numeric_encoding_start(length) ⇒ Object
496 497 498 499 |
# File 'lib/qr_code_maker/encoder.rb', line 496 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) ⇒ Object
501 502 503 504 505 506 507 508 509 510 |
# File 'lib/qr_code_maker/encoder.rb', line 501 def pad_until(prefered_size) while get_length_in_bits % 8 != 0 put_bit(false) end while get_length_in_bits < prefered_size put(PAD0, 8) put(PAD1, 8) if get_length_in_bits < prefered_size end end |