mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-01-19 01:29:49 +00:00
f3bce3857a
Add exporting in a separate thread and a progress bar Remove background color option from gif export
39 lines
743 B
GDScript
39 lines
743 B
GDScript
extends Node
|
|
|
|
|
|
class LSB_LZWBitPacker:
|
|
var bit_index: int = 0
|
|
var byte: int = 0
|
|
|
|
var chunks: PoolByteArray = PoolByteArray([])
|
|
|
|
func get_bit(value: int, index: int) -> int:
|
|
return (value >> index) & 1
|
|
|
|
func set_bit(value: int, index: int) -> int:
|
|
return value | (1 << index)
|
|
|
|
func put_byte():
|
|
chunks.append(byte)
|
|
bit_index = 0
|
|
byte = 0
|
|
|
|
func write_bits(value: int, bits_count: int) -> void:
|
|
for i in range(bits_count):
|
|
if self.get_bit(value, i) == 1:
|
|
byte = self.set_bit(byte, bit_index)
|
|
|
|
bit_index += 1
|
|
if bit_index == 8:
|
|
self.put_byte()
|
|
|
|
func pack() -> PoolByteArray:
|
|
if bit_index != 0:
|
|
self.put_byte()
|
|
return chunks
|
|
|
|
func reset() -> void:
|
|
bit_index = 0
|
|
byte = 0
|
|
chunks = PoolByteArray([])
|