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