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