1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 15:57:45 +00:00

LibCompress: Rename Compress::Zlib to Compress::ZlibDecompressor

Because that's what it is, even if it mainly relies on
`DeflateDecompressor` to do the heavy lifting.
This commit is contained in:
Tim Schumacher 2022-12-26 15:51:51 +01:00 committed by Sam Atkins
parent edd004fe90
commit 23a9d62f39
6 changed files with 14 additions and 14 deletions

View file

@ -20,7 +20,7 @@ TEST_CASE(zlib_decompress_simple)
const u8 uncompressed[] = "This is a simple text file :)"; const u8 uncompressed[] = "This is a simple text file :)";
auto const decompressed = Compress::Zlib::decompress_all(compressed); auto const decompressed = Compress::ZlibDecompressor::decompress_all(compressed);
EXPECT(decompressed.value().bytes() == (ReadonlyBytes { uncompressed, sizeof(uncompressed) - 1 })); EXPECT(decompressed.value().bytes() == (ReadonlyBytes { uncompressed, sizeof(uncompressed) - 1 }));
} }

View file

@ -15,7 +15,7 @@ namespace Compress {
constexpr static size_t Adler32Size = sizeof(u32); constexpr static size_t Adler32Size = sizeof(u32);
Optional<Zlib> Zlib::try_create(ReadonlyBytes data) Optional<ZlibDecompressor> ZlibDecompressor::try_create(ReadonlyBytes data)
{ {
if (data.size() < (sizeof(ZlibHeader) + Adler32Size)) if (data.size() < (sizeof(ZlibHeader) + Adler32Size))
return {}; return {};
@ -31,18 +31,18 @@ Optional<Zlib> Zlib::try_create(ReadonlyBytes data)
if (header.as_u16 % 31 != 0) if (header.as_u16 % 31 != 0)
return {}; // error correction code doesn't match return {}; // error correction code doesn't match
Zlib zlib { header, data }; ZlibDecompressor zlib { header, data };
zlib.m_data_bytes = data.slice(2, data.size() - sizeof(ZlibHeader) - Adler32Size); zlib.m_data_bytes = data.slice(2, data.size() - sizeof(ZlibHeader) - Adler32Size);
return zlib; return zlib;
} }
Zlib::Zlib(ZlibHeader header, ReadonlyBytes data) ZlibDecompressor::ZlibDecompressor(ZlibHeader header, ReadonlyBytes data)
: m_header(header) : m_header(header)
, m_input_data(data) , m_input_data(data)
{ {
} }
Optional<ByteBuffer> Zlib::decompress() Optional<ByteBuffer> ZlibDecompressor::decompress()
{ {
auto buffer_or_error = DeflateDecompressor::decompress_all(m_data_bytes); auto buffer_or_error = DeflateDecompressor::decompress_all(m_data_bytes);
if (buffer_or_error.is_error()) if (buffer_or_error.is_error())
@ -50,7 +50,7 @@ Optional<ByteBuffer> Zlib::decompress()
return buffer_or_error.release_value(); return buffer_or_error.release_value();
} }
Optional<ByteBuffer> Zlib::decompress_all(ReadonlyBytes bytes) Optional<ByteBuffer> ZlibDecompressor::decompress_all(ReadonlyBytes bytes)
{ {
auto zlib = try_create(bytes); auto zlib = try_create(bytes);
if (!zlib.has_value()) if (!zlib.has_value())
@ -58,7 +58,7 @@ Optional<ByteBuffer> Zlib::decompress_all(ReadonlyBytes bytes)
return zlib->decompress(); return zlib->decompress();
} }
u32 Zlib::checksum() u32 ZlibDecompressor::checksum()
{ {
if (!m_checksum) { if (!m_checksum) {
auto bytes = m_input_data.slice_from_end(Adler32Size); auto bytes = m_input_data.slice_from_end(Adler32Size);

View file

@ -42,16 +42,16 @@ struct ZlibHeader {
}; };
static_assert(sizeof(ZlibHeader) == sizeof(u16)); static_assert(sizeof(ZlibHeader) == sizeof(u16));
class Zlib { class ZlibDecompressor {
public: public:
Optional<ByteBuffer> decompress(); Optional<ByteBuffer> decompress();
u32 checksum(); u32 checksum();
static Optional<Zlib> try_create(ReadonlyBytes data); static Optional<ZlibDecompressor> try_create(ReadonlyBytes data);
static Optional<ByteBuffer> decompress_all(ReadonlyBytes); static Optional<ByteBuffer> decompress_all(ReadonlyBytes);
private: private:
Zlib(ZlibHeader, ReadonlyBytes data); ZlibDecompressor(ZlibHeader, ReadonlyBytes data);
ZlibHeader m_header; ZlibHeader m_header;

View file

@ -120,7 +120,7 @@ ErrorOr<NonnullRefPtr<Font>> Font::try_load_from_externally_owned_memory(Readonl
if (font_buffer_offset + orig_length > font_buffer.size()) if (font_buffer_offset + orig_length > font_buffer.size())
return Error::from_string_literal("Uncompressed WOFF table too big"); return Error::from_string_literal("Uncompressed WOFF table too big");
if (comp_length < orig_length) { if (comp_length < orig_length) {
auto decompressed = Compress::Zlib::decompress_all(buffer.slice(offset, comp_length)); auto decompressed = Compress::ZlibDecompressor::decompress_all(buffer.slice(offset, comp_length));
if (!decompressed.has_value()) if (!decompressed.has_value())
return Error::from_string_literal("Could not decompress WOFF table"); return Error::from_string_literal("Could not decompress WOFF table");
if (orig_length != decompressed->size()) if (orig_length != decompressed->size())

View file

@ -706,7 +706,7 @@ static ErrorOr<void> decode_png_bitmap(PNGLoadingContext& context)
if (context.color_type == PNG::ColorType::IndexedColor && context.palette_data.is_empty()) if (context.color_type == PNG::ColorType::IndexedColor && context.palette_data.is_empty())
return Error::from_string_literal("PNGImageDecoderPlugin: Didn't see a PLTE chunk for a palletized image, or it was empty."); return Error::from_string_literal("PNGImageDecoderPlugin: Didn't see a PLTE chunk for a palletized image, or it was empty.");
auto result = Compress::Zlib::decompress_all(context.compressed_data.span()); auto result = Compress::ZlibDecompressor::decompress_all(context.compressed_data.span());
if (!result.has_value()) { if (!result.has_value()) {
context.state = PNGLoadingContext::State::Error; context.state = PNGLoadingContext::State::Error;
return Error::from_string_literal("PNGImageDecoderPlugin: Decompression failed"); return Error::from_string_literal("PNGImageDecoderPlugin: Decompression failed");

View file

@ -51,12 +51,12 @@ static ErrorOr<ByteBuffer> handle_content_encoding(ByteBuffer const& buf, Deprec
// Even though the content encoding is "deflate", it's actually deflate with the zlib wrapper. // Even though the content encoding is "deflate", it's actually deflate with the zlib wrapper.
// https://tools.ietf.org/html/rfc7230#section-4.2.2 // https://tools.ietf.org/html/rfc7230#section-4.2.2
auto uncompressed = Compress::Zlib::decompress_all(buf); auto uncompressed = Compress::ZlibDecompressor::decompress_all(buf);
if (!uncompressed.has_value()) { if (!uncompressed.has_value()) {
// From the RFC: // From the RFC:
// "Note: Some non-conformant implementations send the "deflate" // "Note: Some non-conformant implementations send the "deflate"
// compressed data without the zlib wrapper." // compressed data without the zlib wrapper."
dbgln_if(JOB_DEBUG, "Job::handle_content_encoding: Zlib::decompress_all() failed. Trying DeflateDecompressor::decompress_all()"); dbgln_if(JOB_DEBUG, "Job::handle_content_encoding: ZlibDecompressor::decompress_all() failed. Trying DeflateDecompressor::decompress_all()");
uncompressed = TRY(Compress::DeflateDecompressor::decompress_all(buf)); uncompressed = TRY(Compress::DeflateDecompressor::decompress_all(buf));
} }