// Copyright 2014 PDFium Authors. All rights reserved. // 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 class CPDF_DecryptFilter : public CFX_DataFilter { public: CPDF_DecryptFilter(CPDF_CryptoHandler* pCryptoHandler, FX_DWORD objnum, FX_DWORD gennum); virtual ~CPDF_DecryptFilter(); virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf); CPDF_CryptoHandler* m_pCryptoHandler; FX_LPVOID m_pContext; FX_DWORD m_ObjNum, m_GenNum; }; class CPDF_FlateFilter : public CFX_DataFilter { public: CPDF_FlateFilter(); virtual ~CPDF_FlateFilter(); virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf) {} void* m_pContext; FX_BYTE m_DestBuffer[FPDF_FILTER_BUFFER_SIZE]; }; class CPDF_LzwFilter : public CFX_DataFilter { public: CPDF_LzwFilter(FX_BOOL bEarlyChange); virtual ~CPDF_LzwFilter() {} virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf) {} FX_BOOL m_bEarlyChange; FX_DWORD m_CodeArray[5021]; FX_DWORD m_nCodes; FX_DWORD m_CodeLen; FX_DWORD m_OldCode; FX_BYTE m_LastChar; FX_DWORD m_nLeftBits, m_LeftBits; FX_BYTE m_DecodeStack[4000]; FX_DWORD m_StackLen; void AddCode(FX_DWORD prefix_code, FX_BYTE append_char); void DecodeString(FX_DWORD code); }; class CPDF_PredictorFilter : public CFX_DataFilter { public: CPDF_PredictorFilter(int predictor, int colors, int bpc, int cols); virtual ~CPDF_PredictorFilter(); virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf) {} FX_BOOL m_bTiff; FX_DWORD m_Pitch, m_Bpp; FX_LPBYTE m_pRefLine, m_pCurLine; FX_DWORD m_iLine, m_LineInSize; }; class CPDF_AsciiHexFilter : public CFX_DataFilter { public: CPDF_AsciiHexFilter(); virtual ~CPDF_AsciiHexFilter() {} virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf) {} int m_State; int m_FirstDigit; }; class CPDF_Ascii85Filter : public CFX_DataFilter { public: CPDF_Ascii85Filter(); virtual ~CPDF_Ascii85Filter() {} virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf) {} int m_State; int m_CharCount; FX_DWORD m_CurDWord; }; class CPDF_RunLenFilter : public CFX_DataFilter { public: CPDF_RunLenFilter(); virtual ~CPDF_RunLenFilter() {} virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf) {} int m_State; FX_DWORD m_Count; }; class CPDF_JpegFilter : public CFX_DataFilter { public: CPDF_JpegFilter(); virtual ~CPDF_JpegFilter(); virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf) {} void* m_pContext; CFX_BinaryBuf m_InputBuf; FX_LPBYTE m_pScanline; int m_Pitch, m_Height, m_Width, m_nComps, m_iLine; FX_BOOL m_bGotHeader; }; class CPDF_FaxFilter : public CFX_DataFilter { public: CPDF_FaxFilter(); virtual ~CPDF_FaxFilter(); FX_BOOL Initialize(int Encoding, int bEndOfLine, int bByteAlign, int bBlack, int nRows, int nColumns); virtual void v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf); virtual void v_FilterFinish(CFX_BinaryBuf& dest_buf); int m_Encoding, m_bEndOfLine, m_bByteAlign, m_bBlack; int m_nRows, m_nColumns, m_Pitch, m_iRow; FX_LPBYTE m_pScanlineBuf, m_pRefBuf; CFX_BinaryBuf m_InputBuf; int m_InputBitPos; void ProcessData(FX_LPCBYTE src_buf, FX_DWORD src_size, int& bitpos, FX_BOOL bFinish, CFX_BinaryBuf& dest_buf); FX_BOOL ReadLine(FX_LPCBYTE src_buf, int bitsize, int& bitpos); };