1// Copyright 2014 PDFium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7#ifndef CORE_SRC_FPDFAPI_FPDF_PARSER_FILTERS_INT_H_ 8#define CORE_SRC_FPDFAPI_FPDF_PARSER_FILTERS_INT_H_ 9 10class CPDF_DecryptFilter : public CFX_DataFilter 11{ 12public: 13 CPDF_DecryptFilter(CPDF_CryptoHandler* pCryptoHandler, FX_DWORD objnum, FX_DWORD gennum); 14 virtual ~CPDF_DecryptFilter(); 15 virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); 16 virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf); 17 CPDF_CryptoHandler* m_pCryptoHandler; 18 FX_LPVOID m_pContext; 19 FX_DWORD m_ObjNum, m_GenNum; 20}; 21class CPDF_FlateFilter : public CFX_DataFilter 22{ 23public: 24 CPDF_FlateFilter(); 25 virtual ~CPDF_FlateFilter(); 26 virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); 27 virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf) {} 28 void* m_pContext; 29 FX_BYTE m_DestBuffer[FPDF_FILTER_BUFFER_SIZE]; 30}; 31class CPDF_LzwFilter : public CFX_DataFilter 32{ 33public: 34 CPDF_LzwFilter(FX_BOOL bEarlyChange); 35 virtual ~CPDF_LzwFilter() {} 36 virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); 37 virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf) {} 38 FX_BOOL m_bEarlyChange; 39 FX_DWORD m_CodeArray[5021]; 40 FX_DWORD m_nCodes; 41 FX_DWORD m_CodeLen; 42 FX_DWORD m_OldCode; 43 FX_BYTE m_LastChar; 44 FX_DWORD m_nLeftBits, m_LeftBits; 45 FX_BYTE m_DecodeStack[4000]; 46 FX_DWORD m_StackLen; 47 void AddCode(FX_DWORD prefix_code, FX_BYTE append_char); 48 void DecodeString(FX_DWORD code); 49}; 50class CPDF_PredictorFilter : public CFX_DataFilter 51{ 52public: 53 CPDF_PredictorFilter(int predictor, int colors, int bpc, int cols); 54 virtual ~CPDF_PredictorFilter(); 55 virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); 56 virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf) {} 57 FX_BOOL m_bTiff; 58 FX_DWORD m_Pitch, m_Bpp; 59 FX_LPBYTE m_pRefLine, m_pCurLine; 60 FX_DWORD m_iLine, m_LineInSize; 61}; 62class CPDF_AsciiHexFilter : public CFX_DataFilter 63{ 64public: 65 CPDF_AsciiHexFilter(); 66 virtual ~CPDF_AsciiHexFilter() {} 67 virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); 68 virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf) {} 69 int m_State; 70 int m_FirstDigit; 71}; 72class CPDF_Ascii85Filter : public CFX_DataFilter 73{ 74public: 75 CPDF_Ascii85Filter(); 76 virtual ~CPDF_Ascii85Filter() {} 77 virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); 78 virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf) {} 79 int m_State; 80 int m_CharCount; 81 FX_DWORD m_CurDWord; 82}; 83class CPDF_RunLenFilter : public CFX_DataFilter 84{ 85public: 86 CPDF_RunLenFilter(); 87 virtual ~CPDF_RunLenFilter() {} 88 virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); 89 virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf) {} 90 int m_State; 91 FX_DWORD m_Count; 92}; 93class CPDF_JpegFilter : public CFX_DataFilter 94{ 95public: 96 CPDF_JpegFilter(); 97 virtual ~CPDF_JpegFilter(); 98 virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); 99 virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf) {} 100 void* m_pContext; 101 CFX_BinaryBuf m_InputBuf; 102 FX_LPBYTE m_pScanline; 103 int m_Pitch, m_Height, m_Width, m_nComps, m_iLine; 104 FX_BOOL m_bGotHeader; 105}; 106class CPDF_FaxFilter : public CFX_DataFilter 107{ 108public: 109 CPDF_FaxFilter(); 110 virtual ~CPDF_FaxFilter(); 111 FX_BOOL Initialize(int Encoding, int bEndOfLine, int bByteAlign, int bBlack, int nRows, int nColumns); 112 virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); 113 virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf); 114 int m_Encoding, m_bEndOfLine, m_bByteAlign, m_bBlack; 115 int m_nRows, m_nColumns, m_Pitch, m_iRow; 116 FX_LPBYTE m_pScanlineBuf, m_pRefBuf; 117 CFX_BinaryBuf m_InputBuf; 118 int m_InputBitPos; 119 void ProcessData(FX_LPCBYTE src_buf, FX_DWORD src_size, int& bitpos, FX_BOOL bFinish, 120 CFX_BinaryBuf& dest_buf); 121 FX_BOOL ReadLine(FX_LPCBYTE src_buf, int bitsize, int& bitpos); 122}; 123 124#endif // CORE_SRC_FPDFAPI_FPDF_PARSER_FILTERS_INT_H_ 125