From 5110c4743751145c4ae1934cd1d83bc6c55bb43f Mon Sep 17 00:00:00 2001 From: John Abd-El-Malek Date: Sat, 17 May 2014 22:33:34 -0700 Subject: Initial commit. --- core/src/fpdfapi/fpdf_parser/filters_int.h | 119 +++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 core/src/fpdfapi/fpdf_parser/filters_int.h (limited to 'core/src/fpdfapi/fpdf_parser/filters_int.h') diff --git a/core/src/fpdfapi/fpdf_parser/filters_int.h b/core/src/fpdfapi/fpdf_parser/filters_int.h new file mode 100644 index 0000000000..fa7d7db76e --- /dev/null +++ b/core/src/fpdfapi/fpdf_parser/filters_int.h @@ -0,0 +1,119 @@ +// 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); +}; -- cgit v1.2.3