/* * Copyright (c) 2021, Matthew Olsson * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace PDF { class Filter { public: static PDFErrorOr decode(ReadonlyBytes bytes, DeprecatedFlyString const& encoding_type, RefPtr decode_parms); private: static PDFErrorOr decode_ascii_hex(ReadonlyBytes bytes); static PDFErrorOr decode_ascii85(ReadonlyBytes bytes); static PDFErrorOr decode_png_prediction(Bytes bytes, size_t bytes_per_row, size_t bytes_per_pixel); static PDFErrorOr decode_tiff_prediction(Bytes bytes, int columns, int colors, int bits_per_component); static PDFErrorOr decode_lzw(ReadonlyBytes bytes, RefPtr decode_parms); static PDFErrorOr decode_flate(ReadonlyBytes bytes, RefPtr decode_parms); static PDFErrorOr decode_run_length(ReadonlyBytes bytes); static PDFErrorOr decode_ccitt(ReadonlyBytes bytes, RefPtr decode_parms); static PDFErrorOr decode_jbig2(ReadonlyBytes bytes); static PDFErrorOr decode_dct(ReadonlyBytes bytes); static PDFErrorOr decode_jpx(ReadonlyBytes bytes); static PDFErrorOr decode_crypt(ReadonlyBytes bytes); static PDFErrorOr handle_lzw_and_flate_parameters(ByteBuffer buffer, RefPtr decode_parms); }; }