1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-01-19 09:39:48 +00:00
Pixelorama/addons/gdgifexporter/gif-lzw/lsbbitpacker.gd

32 lines
587 B
GDScript3
Raw Normal View History

extends Reference
class LSB_LZWBitPacker:
var bit_index: int = 0
2020-08-08 21:16:03 +00:00
var stream: int = 0
var chunks: PoolByteArray = PoolByteArray([])
func put_byte():
2020-08-08 21:16:03 +00:00
chunks.append(stream & 0xff)
bit_index -= 8
stream >>= 8
func write_bits(value: int, bits_count: int) -> void:
2020-08-08 21:16:03 +00:00
value &= (1 << bits_count) - 1
value <<= bit_index
stream |= value
bit_index += bits_count
while bit_index >= 8:
self.put_byte()
func pack() -> PoolByteArray:
if bit_index != 0:
self.put_byte()
return chunks
func reset() -> void:
bit_index = 0
2020-08-08 21:16:03 +00:00
stream = 0
chunks = PoolByteArray([])