| // Copyright 2016 The PDFium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
 |  | 
 | #ifndef CORE_FXCODEC_FLATE_FLATEMODULE_H_ | 
 | #define CORE_FXCODEC_FLATE_FLATEMODULE_H_ | 
 |  | 
 | #include <stdint.h> | 
 |  | 
 | #include <memory> | 
 |  | 
 | #include "core/fxcodec/data_and_bytes_consumed.h" | 
 | #include "core/fxcrt/data_vector.h" | 
 | #include "core/fxcrt/span.h" | 
 |  | 
 | namespace fxcodec { | 
 |  | 
 | class ScanlineDecoder; | 
 |  | 
 | class FlateModule { | 
 |  public: | 
 |   static std::unique_ptr<ScanlineDecoder> CreateDecoder( | 
 |       pdfium::span<const uint8_t> src_span, | 
 |       int width, | 
 |       int height, | 
 |       int nComps, | 
 |       int bpc, | 
 |       int predictor, | 
 |       int Colors, | 
 |       int BitsPerComponent, | 
 |       int Columns); | 
 |  | 
 |   static DataAndBytesConsumed FlateOrLZWDecode( | 
 |       bool bLZW, | 
 |       pdfium::span<const uint8_t> src_span, | 
 |       bool bEarlyChange, | 
 |       int predictor, | 
 |       int Colors, | 
 |       int BitsPerComponent, | 
 |       int Columns, | 
 |       uint32_t estimated_size); | 
 |  | 
 |   static DataVector<uint8_t> Encode(pdfium::span<const uint8_t> src_span); | 
 |  | 
 |   FlateModule() = delete; | 
 |   FlateModule(const FlateModule&) = delete; | 
 |   FlateModule& operator=(const FlateModule&) = delete; | 
 | }; | 
 |  | 
 | }  // namespace fxcodec | 
 |  | 
 | using FlateModule = fxcodec::FlateModule; | 
 |  | 
 | #endif  // CORE_FXCODEC_FLATE_FLATEMODULE_H_ |