LibCompress: Rename LZWDecoder => LzwDecompressor

This is more idiomatic for LibCompress' decoders.
This commit is contained in:
Lucas CHOLLET 2024-05-13 10:28:01 -04:00 committed by Andrew Kaster
commit 70a3f1f02b
Notes: sideshowbarker 2024-07-17 16:23:55 +09:00
4 changed files with 15 additions and 15 deletions

View file

@ -18,12 +18,12 @@
namespace Compress {
template<InputBitStream InputStream>
class LZWDecoder {
class LzwDecompressor {
private:
static constexpr int max_code_size = 12;
public:
explicit LZWDecoder(MaybeOwned<InputStream> lzw_stream, u8 min_code_size, i32 offset_for_size_change = 0)
explicit LzwDecompressor(MaybeOwned<InputStream> lzw_stream, u8 min_code_size, i32 offset_for_size_change = 0)
: m_bit_stream(move(lzw_stream))
, m_code_size(min_code_size)
, m_original_code_size(min_code_size)
@ -34,32 +34,32 @@ public:
init_code_table();
}
static ErrorOr<ByteBuffer> decode_all(ReadonlyBytes bytes, u8 initial_code_size, i32 offset_for_size_change = 0)
static ErrorOr<ByteBuffer> decompress_all(ReadonlyBytes bytes, u8 initial_code_size, i32 offset_for_size_change = 0)
{
auto memory_stream = make<FixedMemoryStream>(bytes);
auto lzw_stream = make<InputStream>(MaybeOwned<Stream>(move(memory_stream)));
Compress::LZWDecoder lzw_decoder { MaybeOwned<InputStream> { move(lzw_stream) }, initial_code_size, offset_for_size_change };
LzwDecompressor lzw_decompressor { MaybeOwned<InputStream> { move(lzw_stream) }, initial_code_size, offset_for_size_change };
ByteBuffer decoded;
ByteBuffer decompressed;
u16 const clear_code = lzw_decoder.add_control_code();
u16 const end_of_data_code = lzw_decoder.add_control_code();
u16 const clear_code = lzw_decompressor.add_control_code();
u16 const end_of_data_code = lzw_decompressor.add_control_code();
while (true) {
auto const code = TRY(lzw_decoder.next_code());
auto const code = TRY(lzw_decompressor.next_code());
if (code == clear_code) {
lzw_decoder.reset();
lzw_decompressor.reset();
continue;
}
if (code == end_of_data_code)
break;
TRY(decoded.try_append(lzw_decoder.get_output()));
TRY(decompressed.try_append(lzw_decompressor.get_output()));
}
return decoded;
return decompressed;
}
u16 add_control_code()

View file

@ -184,7 +184,7 @@ static ErrorOr<void> decode_frame(GIFLoadingContext& context, size_t frame_index
if (image->lzw_min_code_size > 8)
return Error::from_string_literal("LZW minimum code size is greater than 8");
auto decoded_stream = TRY(Compress::LZWDecoder<LittleEndianInputBitStream>::decode_all(image->lzw_encoded_bytes, image->lzw_min_code_size));
auto decoded_stream = TRY(Compress::LzwDecompressor<LittleEndianInputBitStream>::decompress_all(image->lzw_encoded_bytes, image->lzw_min_code_size));
auto const& color_map = image->use_global_color_map ? context.logical_screen.color_map : image->color_map;

View file

@ -490,9 +490,9 @@ private:
// Fortunately, as the first byte of a LZW stream is a constant we can guess the endianess
// and deduce the version from it. The first code is 0x100 (9-bits).
if (encoded_bytes[0] == 0x00)
decoded_bytes = TRY(Compress::LZWDecoder<LittleEndianInputBitStream>::decode_all(encoded_bytes, 8, 0));
decoded_bytes = TRY(Compress::LzwDecompressor<LittleEndianInputBitStream>::decompress_all(encoded_bytes, 8, 0));
else
decoded_bytes = TRY(Compress::LZWDecoder<BigEndianInputBitStream>::decode_all(encoded_bytes, 8, -1));
decoded_bytes = TRY(Compress::LzwDecompressor<BigEndianInputBitStream>::decompress_all(encoded_bytes, 8, -1));
return decoded_bytes;
};

View file

@ -262,7 +262,7 @@ PDFErrorOr<ByteBuffer> Filter::decode_lzw(ReadonlyBytes bytes, RefPtr<DictObject
if (decode_parms && decode_parms->contains(CommonNames::EarlyChange))
early_change = decode_parms->get_value(CommonNames::EarlyChange).get<int>();
auto decoded = TRY(Compress::LZWDecoder<BigEndianInputBitStream>::decode_all(bytes, 8, -early_change));
auto decoded = TRY(Compress::LzwDecompressor<BigEndianInputBitStream>::decompress_all(bytes, 8, -early_change));
return handle_lzw_and_flate_parameters(move(decoded), decode_parms);
}