Class: ZIMG::JPEG::BitEnumerator

Inherits:
Object
  • Object
show all
Defined in:
lib/zimg/jpeg/decoder.rb

Instance Method Summary collapse

Constructor Details

#initialize(data, offset: 0) ⇒ BitEnumerator

Returns a new instance of BitEnumerator.



136
137
138
139
140
# File 'lib/zimg/jpeg/decoder.rb', line 136

def initialize(data, offset: 0)
  @data = data
  @offset = offset
  @eof = false
end

Instance Method Details

#bytes_leftObject



164
165
166
# File 'lib/zimg/jpeg/decoder.rb', line 164

def bytes_left
  @data.size - @offset
end

#eof?Boolean

Returns:

  • (Boolean)


147
148
149
# File 'lib/zimg/jpeg/decoder.rb', line 147

def eof?
  @eof
end

#nextObject



142
143
144
145
# File 'lib/zimg/jpeg/decoder.rb', line 142

def next
  @bio ||= _create_enumerator(@data, @offset)
  @bio.next
end

#peek_byte(add = 0) ⇒ Object



151
152
153
# File 'lib/zimg/jpeg/decoder.rb', line 151

def peek_byte(add = 0)
  @data[@offset + add]
end

#peek_bytes(n) ⇒ Object



155
156
157
# File 'lib/zimg/jpeg/decoder.rb', line 155

def peek_bytes(n)
  @data[@offset, n]
end

#receive(length) ⇒ Object



172
173
174
175
176
177
178
179
180
181
182
# File 'lib/zimg/jpeg/decoder.rb', line 172

def receive(length)
  @bio ||= _create_enumerator(@data, @offset)
  r = 0
  length.times do
    bit = @bio.next
    # return unless bit

    r = (r << 1) | bit
  end
  r
end

#receive_extend(length) ⇒ Object



184
185
186
187
188
189
# File 'lib/zimg/jpeg/decoder.rb', line 184

def receive_extend(length)
  n = receive(length)
  return n if n >= (1 << (length - 1))

  n + (-1 << length) + 1
end

#reset!Object



168
169
170
# File 'lib/zimg/jpeg/decoder.rb', line 168

def reset!
  @bio = nil
end

#skip_bytes(n) ⇒ Object



159
160
161
162
# File 'lib/zimg/jpeg/decoder.rb', line 159

def skip_bytes(n)
  @offset += n
  @bio = nil
end