Class: QRCode::Encoder::BitBuffer
- Inherits:
-
Object
- Object
- QRCode::Encoder::BitBuffer
- Defined in:
- lib/qrcode/encoder/bit_buffer.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) ⇒ BitBuffer
constructor
A new instance of BitBuffer.
- #numeric_encoding_start(length) ⇒ Object
- #pad_until(prefered_size) ⇒ Object
- #put(num, length) ⇒ Object
- #put_bit(bit) ⇒ Object
Constructor Details
#initialize(version) ⇒ BitBuffer
Returns a new instance of BitBuffer.
23 24 25 26 27 |
# File 'lib/qrcode/encoder/bit_buffer.rb', line 23 def initialize(version) @version = version @buffer = [] @length = 0 end |
Instance Attribute Details
#buffer ⇒ Object (readonly)
Returns the value of attribute buffer.
18 19 20 |
# File 'lib/qrcode/encoder/bit_buffer.rb', line 18 def buffer @buffer end |
Instance Method Details
#alphanumeric_encoding_start(length) ⇒ Object
62 63 64 65 |
# File 'lib/qrcode/encoder/bit_buffer.rb', line 62 def alphanumeric_encoding_start(length) put(MODE[:mode_alpha_numk], 4) put(length, Encoder::Util.get_length_in_bits(MODE[:mode_alpha_numk], @version)) end |
#byte_encoding_start(length) ⇒ Object
57 58 59 60 |
# File 'lib/qrcode/encoder/bit_buffer.rb', line 57 def byte_encoding_start(length) put(MODE[:mode_8bit_byte], 4) put(length, Encoder::Util.get_length_in_bits(MODE[:mode_8bit_byte], @version)) end |
#end_of_message(max_data_bits) ⇒ Object
85 86 87 |
# File 'lib/qrcode/encoder/bit_buffer.rb', line 85 def (max_data_bits) put(0, 4) unless get_length_in_bits + 4 > max_data_bits end |
#get(index) ⇒ Object
29 30 31 32 |
# File 'lib/qrcode/encoder/bit_buffer.rb', line 29 def get(index) byte_index = (index / 8).floor (Encoder::Util.rszf(@buffer[byte_index], 7 - index % 8) & 1) == 1 end |
#get_length_in_bits ⇒ Object
40 41 42 |
# File 'lib/qrcode/encoder/bit_buffer.rb', line 40 def get_length_in_bits @length end |
#numeric_encoding_start(length) ⇒ Object
67 68 69 70 |
# File 'lib/qrcode/encoder/bit_buffer.rb', line 67 def numeric_encoding_start(length) put(MODE[:mode_number], 4) put(length, Encoder::Util.get_length_in_bits(MODE[:mode_number], @version)) end |
#pad_until(prefered_size) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/qrcode/encoder/bit_buffer.rb', line 72 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 |