Convert all line endings to LF.
[pdfium.git] / core / src / fpdfapi / fpdf_parser / filters_int.h
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 class CPDF_DecryptFilter : public CFX_DataFilter
8 {
9 public:
10     CPDF_DecryptFilter(CPDF_CryptoHandler* pCryptoHandler, FX_DWORD objnum, FX_DWORD gennum);
11     virtual ~CPDF_DecryptFilter();
12     virtual     void    v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf);
13     virtual void        v_FilterFinish(CFX_BinaryBuf& dest_buf);
14     CPDF_CryptoHandler* m_pCryptoHandler;
15     FX_LPVOID           m_pContext;
16     FX_DWORD            m_ObjNum, m_GenNum;
17 };
18 class CPDF_FlateFilter : public CFX_DataFilter
19 {
20 public:
21     CPDF_FlateFilter();
22     virtual ~CPDF_FlateFilter();
23     virtual     void    v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf);
24     virtual void        v_FilterFinish(CFX_BinaryBuf& dest_buf) {}
25     void*                       m_pContext;
26     FX_BYTE                     m_DestBuffer[FPDF_FILTER_BUFFER_SIZE];
27 };
28 class CPDF_LzwFilter : public CFX_DataFilter
29 {
30 public:
31     CPDF_LzwFilter(FX_BOOL bEarlyChange);
32     virtual ~CPDF_LzwFilter() {}
33     virtual     void    v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf);
34     virtual void        v_FilterFinish(CFX_BinaryBuf& dest_buf) {}
35     FX_BOOL                     m_bEarlyChange;
36     FX_DWORD            m_CodeArray[5021];
37     FX_DWORD            m_nCodes;
38     FX_DWORD            m_CodeLen;
39     FX_DWORD            m_OldCode;
40     FX_BYTE                     m_LastChar;
41     FX_DWORD            m_nLeftBits, m_LeftBits;
42     FX_BYTE                     m_DecodeStack[4000];
43     FX_DWORD            m_StackLen;
44     void                        AddCode(FX_DWORD prefix_code, FX_BYTE append_char);
45     void                        DecodeString(FX_DWORD code);
46 };
47 class CPDF_PredictorFilter : public CFX_DataFilter
48 {
49 public:
50     CPDF_PredictorFilter(int predictor, int colors, int bpc, int cols);
51     virtual ~CPDF_PredictorFilter();
52     virtual     void    v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf);
53     virtual void        v_FilterFinish(CFX_BinaryBuf& dest_buf) {}
54     FX_BOOL                     m_bTiff;
55     FX_DWORD            m_Pitch, m_Bpp;
56     FX_LPBYTE           m_pRefLine, m_pCurLine;
57     FX_DWORD            m_iLine, m_LineInSize;
58 };
59 class CPDF_AsciiHexFilter : public CFX_DataFilter
60 {
61 public:
62     CPDF_AsciiHexFilter();
63     virtual ~CPDF_AsciiHexFilter() {}
64     virtual     void    v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf);
65     virtual void        v_FilterFinish(CFX_BinaryBuf& dest_buf) {}
66     int                         m_State;
67     int                         m_FirstDigit;
68 };
69 class CPDF_Ascii85Filter : public CFX_DataFilter
70 {
71 public:
72     CPDF_Ascii85Filter();
73     virtual ~CPDF_Ascii85Filter() {}
74     virtual     void    v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf);
75     virtual void        v_FilterFinish(CFX_BinaryBuf& dest_buf) {}
76     int                         m_State;
77     int                         m_CharCount;
78     FX_DWORD            m_CurDWord;
79 };
80 class CPDF_RunLenFilter : public CFX_DataFilter
81 {
82 public:
83     CPDF_RunLenFilter();
84     virtual ~CPDF_RunLenFilter() {}
85     virtual     void    v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf);
86     virtual void        v_FilterFinish(CFX_BinaryBuf& dest_buf) {}
87     int                         m_State;
88     FX_DWORD            m_Count;
89 };
90 class CPDF_JpegFilter : public CFX_DataFilter
91 {
92 public:
93     CPDF_JpegFilter();
94     virtual ~CPDF_JpegFilter();
95     virtual     void    v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf);
96     virtual void        v_FilterFinish(CFX_BinaryBuf& dest_buf) {}
97     void*                       m_pContext;
98     CFX_BinaryBuf       m_InputBuf;
99     FX_LPBYTE           m_pScanline;
100     int                         m_Pitch, m_Height, m_Width, m_nComps, m_iLine;
101     FX_BOOL                     m_bGotHeader;
102 };
103 class CPDF_FaxFilter : public CFX_DataFilter
104 {
105 public:
106     CPDF_FaxFilter();
107     virtual ~CPDF_FaxFilter();
108     FX_BOOL                     Initialize(int Encoding, int bEndOfLine, int bByteAlign, int bBlack, int nRows, int nColumns);
109     virtual     void    v_FilterIn(FX_LPCBYTE src_buf, FX_DWORD src_size, CFX_BinaryBuf& dest_buf);
110     virtual void        v_FilterFinish(CFX_BinaryBuf& dest_buf);
111     int                         m_Encoding, m_bEndOfLine, m_bByteAlign, m_bBlack;
112     int                         m_nRows, m_nColumns, m_Pitch, m_iRow;
113     FX_LPBYTE           m_pScanlineBuf, m_pRefBuf;
114     CFX_BinaryBuf       m_InputBuf;
115     int                         m_InputBitPos;
116     void                        ProcessData(FX_LPCBYTE src_buf, FX_DWORD src_size, int& bitpos, FX_BOOL bFinish,
117                                 CFX_BinaryBuf& dest_buf);
118     FX_BOOL                     ReadLine(FX_LPCBYTE src_buf, int bitsize, int& bitpos);
119 };