OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #ifndef _FX_CODEC_H_ | 7 #ifndef _FX_CODEC_H_ |
8 #define _FX_CODEC_H_ | 8 #define _FX_CODEC_H_ |
9 #ifndef _FXCRT_EXTENSION_ | 9 #ifndef _FXCRT_EXTENSION_ |
10 #include "../fxcrt/fx_ext.h" | 10 #include "../fxcrt/fx_ext.h" |
11 #endif | 11 #endif |
12 #include "fx_codec_def.h" | 12 #include "fx_codec_def.h" |
13 #include "fx_codec_provider.h" | 13 #include "fx_codec_provider.h" |
14 class CFX_DIBSource; | 14 class CFX_DIBSource; |
15 class ICodec_ScanlineDecoder; | 15 class ICodec_ScanlineDecoder; |
16 class ICodec_BasicModule; | 16 class ICodec_BasicModule; |
17 class ICodec_FaxModule; | 17 class ICodec_FaxModule; |
18 class ICodec_JpegModule; | 18 class ICodec_JpegModule; |
19 class ICodec_JpxModule; | 19 class ICodec_JpxModule; |
20 class ICodec_Jbig2Module; | 20 class ICodec_Jbig2Module; |
21 class ICodec_IccModule; | 21 class ICodec_IccModule; |
22 class ICodec_FlateModule; | 22 class ICodec_FlateModule; |
23 class ICodec_Jbig2Encoder; | 23 class ICodec_Jbig2Encoder; |
24 class ICodec_ScanlineDecoder; | 24 class ICodec_ScanlineDecoder; |
25 class CCodec_ModuleMgr : public CFX_Object | 25 class CCodec_ModuleMgr |
26 { | 26 { |
27 public: | 27 public: |
28 | 28 |
29 static CCodec_ModuleMgr* Create(); | 29 static CCodec_ModuleMgr* Create(); |
30 | 30 |
31 void Destroy(); | 31 void Destroy(); |
32 | 32 |
33 void InitJbig2Decoder(); | 33 void InitJbig2Decoder(); |
34 | 34 |
35 void InitJpxDecoder(); | 35 void InitJpxDecoder(); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 protected: | 73 protected: |
74 ICodec_BasicModule* m_pBasicModule; | 74 ICodec_BasicModule* m_pBasicModule; |
75 ICodec_FaxModule* m_pFaxModule; | 75 ICodec_FaxModule* m_pFaxModule; |
76 ICodec_JpegModule* m_pJpegModule; | 76 ICodec_JpegModule* m_pJpegModule; |
77 ICodec_JpxModule* m_pJpxModule; | 77 ICodec_JpxModule* m_pJpxModule; |
78 ICodec_Jbig2Module* m_pJbig2Module; | 78 ICodec_Jbig2Module* m_pJbig2Module; |
79 ICodec_IccModule* m_pIccModule; | 79 ICodec_IccModule* m_pIccModule; |
80 ICodec_FlateModule* m_pFlateModule; | 80 ICodec_FlateModule* m_pFlateModule; |
81 | 81 |
82 }; | 82 }; |
83 class ICodec_BasicModule : public CFX_Object | 83 class ICodec_BasicModule |
84 { | 84 { |
85 public: | 85 public: |
86 | 86 |
87 virtual ~ICodec_BasicModule() {} | 87 virtual ~ICodec_BasicModule() {} |
88 virtual FX_BOOL RunLengthEncode(const FX_BYTE* src_buf, FX_DWORD src_siz
e, FX_LPBYTE& dest_buf, | 88 virtual FX_BOOL RunLengthEncode(const FX_BYTE* src_buf, FX_DWORD src_siz
e, FX_LPBYTE& dest_buf, |
89 FX_DWORD& dest_size) = 0; | 89 FX_DWORD& dest_size) = 0; |
90 virtual FX_BOOL A85Encode(const FX_BYTE* src_buf, FX_DWORD src_size, FX_
LPBYTE& dest_buf, | 90 virtual FX_BOOL A85Encode(const FX_BYTE* src_buf, FX_DWORD src_size, FX_
LPBYTE& dest_buf, |
91 FX_DWORD& dest_size) = 0; | 91 FX_DWORD& dest_size) = 0; |
92 virtual ICodec_ScanlineDecoder* CreateRunLengthDecoder(FX_LPCBYTE src_bu
f, FX_DWORD src_size, int width, int height, | 92 virtual ICodec_ScanlineDecoder* CreateRunLengthDecoder(FX_LPCBYTE src_bu
f, FX_DWORD src_size, int width, int height, |
93 int nComps, int bpc) = 0; | 93 int nComps, int bpc) = 0; |
94 }; | 94 }; |
95 class ICodec_ScanlineDecoder : public CFX_Object | 95 class ICodec_ScanlineDecoder |
96 { | 96 { |
97 public: | 97 public: |
98 | 98 |
99 virtual ~ICodec_ScanlineDecoder() {} | 99 virtual ~ICodec_ScanlineDecoder() {} |
100 | 100 |
101 virtual FX_DWORD GetSrcOffset() = 0; | 101 virtual FX_DWORD GetSrcOffset() = 0; |
102 | 102 |
103 virtual void DownScale(int dest_width, int dest_height) = 0; | 103 virtual void DownScale(int dest_width, int dest_height) = 0; |
104 | 104 |
105 virtual FX_LPBYTE GetScanline(int line) = 0; | 105 virtual FX_LPBYTE GetScanline(int line) = 0; |
106 | 106 |
107 virtual FX_BOOL SkipToScanline(int line, IFX_Pause* pPause) = 0; | 107 virtual FX_BOOL SkipToScanline(int line, IFX_Pause* pPause) = 0; |
108 | 108 |
109 virtual int GetWidth() = 0; | 109 virtual int GetWidth() = 0; |
110 | 110 |
111 virtual int GetHeight() = 0; | 111 virtual int GetHeight() = 0; |
112 | 112 |
113 virtual int CountComps() = 0; | 113 virtual int CountComps() = 0; |
114 | 114 |
115 virtual int GetBPC() = 0; | 115 virtual int GetBPC() = 0; |
116 | 116 |
117 virtual FX_BOOL IsColorTransformed() = 0; | 117 virtual FX_BOOL IsColorTransformed() = 0; |
118 | 118 |
119 virtual void ClearImageData() = 0; | 119 virtual void ClearImageData() = 0; |
120 }; | 120 }; |
121 class ICodec_FlateModule : public CFX_Object | 121 class ICodec_FlateModule |
122 { | 122 { |
123 public: | 123 public: |
124 | 124 |
125 virtual ~ICodec_FlateModule() {} | 125 virtual ~ICodec_FlateModule() {} |
126 virtual ICodec_ScanlineDecoder* CreateDecoder(FX_LPCBYTE src_buf, FX_DWO
RD src_size, int width, int height, | 126 virtual ICodec_ScanlineDecoder* CreateDecoder(FX_LPCBYTE src_buf, FX_DWO
RD src_size, int width, int height, |
127 int nComps, int bpc, int predictor, int Colors, int BitsPerComponent
, int Columns) = 0; | 127 int nComps, int bpc, int predictor, int Colors, int BitsPerComponent
, int Columns) = 0; |
128 virtual FX_DWORD FlateOrLZWDecode(FX_BOOL bLZW, const FX_BYTE* src_buf, F
X_DWORD src_size, FX_BOOL bEarlyChange, | 128 virtual FX_DWORD FlateOrLZWDecode(FX_BOOL bLZW, const FX_BYTE* src_buf, F
X_DWORD src_size, FX_BOOL bEarlyChange, |
129 int predictor, int Colors, int BitsPerC
omponent, int Columns, | 129 int predictor, int Colors, int BitsPerC
omponent, int Columns, |
130 FX_DWORD estimated_size, FX_LPBYTE& des
t_buf, FX_DWORD& dest_size) = 0; | 130 FX_DWORD estimated_size, FX_LPBYTE& des
t_buf, FX_DWORD& dest_size) = 0; |
131 virtual FX_BOOL Encode(const FX_BYTE* src_buf, FX_DWORD src_size
, | 131 virtual FX_BOOL Encode(const FX_BYTE* src_buf, FX_DWORD src_size
, |
132 int predictor, int Colors, int BitsPerComponent,
int Columns, | 132 int predictor, int Colors, int BitsPerComponent,
int Columns, |
133 FX_LPBYTE& dest_buf, FX_DWORD& dest_size) = 0; | 133 FX_LPBYTE& dest_buf, FX_DWORD& dest_size) = 0; |
134 virtual FX_BOOL Encode(FX_LPCBYTE src_buf, FX_DWORD src_size, FX
_LPBYTE& dest_buf, FX_DWORD& dest_size) = 0; | 134 virtual FX_BOOL Encode(FX_LPCBYTE src_buf, FX_DWORD src_size, FX
_LPBYTE& dest_buf, FX_DWORD& dest_size) = 0; |
135 }; | 135 }; |
136 class ICodec_FaxModule : public CFX_Object | 136 class ICodec_FaxModule |
137 { | 137 { |
138 public: | 138 public: |
139 | 139 |
140 virtual ~ICodec_FaxModule() {} | 140 virtual ~ICodec_FaxModule() {} |
141 | 141 |
142 virtual ICodec_ScanlineDecoder* CreateDecoder(FX_LPCBYTE src_buf, FX_DWO
RD src_size, int width, int height, | 142 virtual ICodec_ScanlineDecoder* CreateDecoder(FX_LPCBYTE src_buf, FX_DWO
RD src_size, int width, int height, |
143 int K, FX_BOOL EndOfLine, FX_BOOL EncodedByteAlign, FX_BOOL BlackIs1
, int Columns, int Rows) = 0; | 143 int K, FX_BOOL EndOfLine, FX_BOOL EncodedByteAlign, FX_BOOL BlackIs1
, int Columns, int Rows) = 0; |
144 | 144 |
145 | 145 |
146 virtual FX_BOOL Encode(FX_LPCBYTE src_buf, int width, int height
, int pitch, | 146 virtual FX_BOOL Encode(FX_LPCBYTE src_buf, int width, int height
, int pitch, |
147 FX_LPBYTE& dest_buf, FX_DWORD& dest_size) = 0; | 147 FX_LPBYTE& dest_buf, FX_DWORD& dest_size) = 0; |
148 }; | 148 }; |
149 class ICodec_JpegModule : public CFX_Object | 149 class ICodec_JpegModule |
150 { | 150 { |
151 public: | 151 public: |
152 | 152 |
153 virtual ~ICodec_JpegModule() {} | 153 virtual ~ICodec_JpegModule() {} |
154 | 154 |
155 virtual void SetPovider(IFX_JpegProvider* pJP) = 0; | 155 virtual void SetPovider(IFX_JpegProvider* pJP) = 0; |
156 | 156 |
157 virtual ICodec_ScanlineDecoder* CreateDecoder(FX_LPCBYTE src_buf, FX_DWO
RD src_size, | 157 virtual ICodec_ScanlineDecoder* CreateDecoder(FX_LPCBYTE src_buf, FX_DWO
RD src_size, |
158 int width, int height, int nComps, FX_BOOL ColorTransform) = 0; | 158 int width, int height, int nComps, FX_BOOL ColorTransform) = 0; |
159 | 159 |
(...skipping 14 matching lines...) Expand all Loading... |
174 | 174 |
175 | 175 |
176 virtual int StartScanline(void* pContext, int down_scale) =
0; | 176 virtual int StartScanline(void* pContext, int down_scale) =
0; |
177 | 177 |
178 | 178 |
179 virtual FX_BOOL ReadScanline(void* pContext, FX_LPBYTE dest_buf)
= 0; | 179 virtual FX_BOOL ReadScanline(void* pContext, FX_LPBYTE dest_buf)
= 0; |
180 | 180 |
181 | 181 |
182 virtual FX_DWORD GetAvailInput(void* pContext, FX_LPBYTE* avail_buf_ptr =
NULL) = 0; | 182 virtual FX_DWORD GetAvailInput(void* pContext, FX_LPBYTE* avail_buf_ptr =
NULL) = 0; |
183 }; | 183 }; |
184 class ICodec_JpxModule : public CFX_Object | 184 class ICodec_JpxModule |
185 { | 185 { |
186 public: | 186 public: |
187 | 187 |
188 virtual ~ICodec_JpxModule() {} | 188 virtual ~ICodec_JpxModule() {} |
189 | 189 |
190 virtual FX_LPVOID CreateDecoder(FX_LPCBYTE src_buf, FX_DWORD src_size, FX_
BOOL useColorSpace = FALSE) = 0; | 190 virtual FX_LPVOID CreateDecoder(FX_LPCBYTE src_buf, FX_DWORD src_size, FX_
BOOL useColorSpace = FALSE) = 0; |
191 | 191 |
192 virtual void GetImageInfo(FX_LPVOID ctx, FX_DWORD& width, FX_
DWORD& height, | 192 virtual void GetImageInfo(FX_LPVOID ctx, FX_DWORD& width, FX_
DWORD& height, |
193 FX_DWORD& codestream_nComps, FX_DWORD& outp
ut_nComps) = 0; | 193 FX_DWORD& codestream_nComps, FX_DWORD& outp
ut_nComps) = 0; |
194 | 194 |
195 virtual FX_BOOL Decode(FX_LPVOID ctx, FX_LPBYTE dest_data, int p
itch, | 195 virtual FX_BOOL Decode(FX_LPVOID ctx, FX_LPBYTE dest_data, int p
itch, |
196 FX_BOOL bTranslateColor, FX_LPBYTE offsets) = 0; | 196 FX_BOOL bTranslateColor, FX_LPBYTE offsets) = 0; |
197 | 197 |
198 virtual void DestroyDecoder(FX_LPVOID ctx) = 0; | 198 virtual void DestroyDecoder(FX_LPVOID ctx) = 0; |
199 }; | 199 }; |
200 class ICodec_Jbig2Module : public CFX_Object | 200 class ICodec_Jbig2Module |
201 { | 201 { |
202 public: | 202 public: |
203 | 203 |
204 virtual ~ICodec_Jbig2Module() {} | 204 virtual ~ICodec_Jbig2Module() {} |
205 | 205 |
206 virtual FX_BOOL Decode(FX_DWORD width, FX_DWORD height, FX_LPCBY
TE src_buf, FX_DWORD src_size, | 206 virtual FX_BOOL Decode(FX_DWORD width, FX_DWORD height, FX_LPCBY
TE src_buf, FX_DWORD src_size, |
207 FX_LPCBYTE global_data, FX_DWORD global_size, FX_
LPBYTE dest_buf, FX_DWORD dest_pitch) = 0; | 207 FX_LPCBYTE global_data, FX_DWORD global_size, FX_
LPBYTE dest_buf, FX_DWORD dest_pitch) = 0; |
208 | 208 |
209 virtual FX_BOOL Decode(IFX_FileRead* file_ptr, FX_DWORD& width,
FX_DWORD& height, | 209 virtual FX_BOOL Decode(IFX_FileRead* file_ptr, FX_DWORD& width,
FX_DWORD& height, |
210 FX_DWORD& pitch, FX_LPBYTE& dest_buf) = 0; | 210 FX_DWORD& pitch, FX_LPBYTE& dest_buf) = 0; |
211 virtual void* CreateJbig2Context() = 0; | 211 virtual void* CreateJbig2Context() = 0; |
212 | 212 |
213 virtual FXCODEC_STATUS StartDecode(void* pJbig2Context, FX_DWOR
D width, FX_DWORD height, FX_LPCBYTE src_buf, FX_DWORD src_size, | 213 virtual FXCODEC_STATUS StartDecode(void* pJbig2Context, FX_DWOR
D width, FX_DWORD height, FX_LPCBYTE src_buf, FX_DWORD src_size, |
214 FX_LPCBYTE global_data, FX_DWORD glo
bal_size, FX_LPBYTE dest_buf, FX_DWORD dest_pitch, IFX_Pause* pPause) = 0; | 214 FX_LPCBYTE global_data, FX_DWORD glo
bal_size, FX_LPBYTE dest_buf, FX_DWORD dest_pitch, IFX_Pause* pPause) = 0; |
215 | 215 |
216 virtual FXCODEC_STATUS StartDecode(void* pJbig2Context, IFX_Fil
eRead* file_ptr, | 216 virtual FXCODEC_STATUS StartDecode(void* pJbig2Context, IFX_Fil
eRead* file_ptr, |
217 FX_DWORD& width, FX_DWORD& height, F
X_DWORD& pitch, FX_LPBYTE& dest_buf, IFX_Pause* pPause) = 0; | 217 FX_DWORD& width, FX_DWORD& height, F
X_DWORD& pitch, FX_LPBYTE& dest_buf, IFX_Pause* pPause) = 0; |
218 virtual FXCODEC_STATUS ContinueDecode(void* pJbig2Content, IFX_
Pause* pPause) = 0; | 218 virtual FXCODEC_STATUS ContinueDecode(void* pJbig2Content, IFX_
Pause* pPause) = 0; |
219 virtual void DestroyJbig2Context(void* pJbig2
Content) = 0; | 219 virtual void DestroyJbig2Context(void* pJbig2
Content) = 0; |
220 }; | 220 }; |
221 class ICodec_Jbig2Encoder : public CFX_Object | 221 class ICodec_Jbig2Encoder |
222 { | 222 { |
223 public: | 223 public: |
224 | 224 |
225 virtual ~ICodec_Jbig2Encoder() {} | 225 virtual ~ICodec_Jbig2Encoder() {} |
226 }; | 226 }; |
227 class ICodec_IccModule : public CFX_Object | 227 class ICodec_IccModule |
228 { | 228 { |
229 public: | 229 public: |
230 typedef enum { | 230 typedef enum { |
231 IccCS_Unknown = 0, | 231 IccCS_Unknown = 0, |
232 IccCS_XYZ, | 232 IccCS_XYZ, |
233 IccCS_Lab, | 233 IccCS_Lab, |
234 IccCS_Luv, | 234 IccCS_Luv, |
235 IccCS_YCbCr, | 235 IccCS_YCbCr, |
236 IccCS_Yxy, | 236 IccCS_Yxy, |
237 IccCS_Hsv, | 237 IccCS_Hsv, |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 | 280 |
281 virtual void Translate(FX_LPVOID pTransform, FX_FLOAT
* pSrcValues, FX_FLOAT* pDestValues) = 0; | 281 virtual void Translate(FX_LPVOID pTransform, FX_FLOAT
* pSrcValues, FX_FLOAT* pDestValues) = 0; |
282 | 282 |
283 virtual void TranslateScanline(FX_LPVOID pTransform,
FX_LPBYTE pDest, FX_LPCBYTE pSrc, int pixels) = 0; | 283 virtual void TranslateScanline(FX_LPVOID pTransform,
FX_LPBYTE pDest, FX_LPCBYTE pSrc, int pixels) = 0; |
284 virtual void SetComponents(FX_DWORD nComponents) = 0; | 284 virtual void SetComponents(FX_DWORD nComponents) = 0; |
285 }; | 285 }; |
286 void AdobeCMYK_to_sRGB(FX_FLOAT c, FX_FLOAT m, FX_FLOAT y, FX_FLOAT k, FX_FLOAT&
R, FX_FLOAT& G, FX_FLOAT& B); | 286 void AdobeCMYK_to_sRGB(FX_FLOAT c, FX_FLOAT m, FX_FLOAT y, FX_FLOAT k, FX_FLOAT&
R, FX_FLOAT& G, FX_FLOAT& B); |
287 void AdobeCMYK_to_sRGB1(FX_BYTE c, FX_BYTE m, FX_BYTE y, FX_BYTE k, FX_BYTE& R,
FX_BYTE& G, FX_BYTE& B); | 287 void AdobeCMYK_to_sRGB1(FX_BYTE c, FX_BYTE m, FX_BYTE y, FX_BYTE k, FX_BYTE& R,
FX_BYTE& G, FX_BYTE& B); |
288 FX_BOOL MD5ComputeID(FX_LPCVOID buf, FX_DWORD dwSize, FX_BYTE ID[16]); | 288 FX_BOOL MD5ComputeID(FX_LPCVOID buf, FX_DWORD dwSize, FX_BYTE ID[16]); |
289 #endif | 289 #endif |
OLD | NEW |