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 CORE_INCLUDE_FXCODEC_FX_CODEC_H_ | 7 #ifndef CORE_INCLUDE_FXCODEC_FX_CODEC_H_ |
8 #define CORE_INCLUDE_FXCODEC_FX_CODEC_H_ | 8 #define CORE_INCLUDE_FXCODEC_FX_CODEC_H_ |
9 | 9 |
10 #include "../../../third_party/base/nonstd_unique_ptr.h" | 10 #include "../../../third_party/base/nonstd_unique_ptr.h" |
11 #include "../fxcrt/fx_basic.h" | 11 #include "../fxcrt/fx_basic.h" |
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 | 14 |
15 class CFX_DIBSource; | 15 class CFX_DIBSource; |
16 class ICodec_ScanlineDecoder; | 16 class ICodec_ScanlineDecoder; |
17 class ICodec_BasicModule; | 17 class ICodec_BasicModule; |
18 class ICodec_FaxModule; | 18 class ICodec_FaxModule; |
19 class ICodec_JpegModule; | 19 class ICodec_JpegModule; |
20 class ICodec_JpxModule; | 20 class ICodec_JpxModule; |
21 class ICodec_Jbig2Module; | 21 class ICodec_Jbig2Module; |
22 class ICodec_IccModule; | 22 class ICodec_IccModule; |
23 class ICodec_FlateModule; | 23 class ICodec_FlateModule; |
24 class ICodec_Jbig2Encoder; | 24 class ICodec_Jbig2Encoder; |
25 class ICodec_ScanlineDecoder; | 25 class ICodec_ScanlineDecoder; |
26 | 26 |
27 class CCodec_ModuleMgr | 27 class CCodec_ModuleMgr { |
28 { | 28 public: |
29 public: | 29 CCodec_ModuleMgr(); |
30 CCodec_ModuleMgr(); | 30 ICodec_Jbig2Encoder* CreateJbig2Encoder(); |
31 ICodec_Jbig2Encoder* CreateJbig2Encoder(); | 31 ICodec_BasicModule* GetBasicModule() const { return m_pBasicModule.get(); } |
32 ICodec_BasicModule* GetBasicModule() const { return m_pBasicModule.get(); } | 32 ICodec_FaxModule* GetFaxModule() const { return m_pFaxModule.get(); } |
33 ICodec_FaxModule* GetFaxModule() const { return m_pFaxModule.get(); } | 33 ICodec_JpegModule* GetJpegModule() const { return m_pJpegModule.get(); } |
34 ICodec_JpegModule* GetJpegModule() const { return m_pJpegModule.get(); } | 34 ICodec_JpxModule* GetJpxModule() const { return m_pJpxModule.get(); } |
35 ICodec_JpxModule* GetJpxModule() const { return m_pJpxModule.get(); } | 35 ICodec_Jbig2Module* GetJbig2Module() const { return m_pJbig2Module.get(); } |
36 ICodec_Jbig2Module* GetJbig2Module() const { return m_pJbig2Module.get(); } | 36 ICodec_IccModule* GetIccModule() const { return m_pIccModule.get(); } |
37 ICodec_IccModule* GetIccModule() const { return m_pIccModule.get(); } | 37 ICodec_FlateModule* GetFlateModule() const { return m_pFlateModule.get(); } |
38 ICodec_FlateModule* GetFlateModule() const { return m_pFlateModule.get(); } | 38 |
39 | 39 protected: |
40 protected: | 40 nonstd::unique_ptr<ICodec_BasicModule> m_pBasicModule; |
41 nonstd::unique_ptr<ICodec_BasicModule> m_pBasicModule; | 41 nonstd::unique_ptr<ICodec_FaxModule> m_pFaxModule; |
42 nonstd::unique_ptr<ICodec_FaxModule> m_pFaxModule; | 42 nonstd::unique_ptr<ICodec_JpegModule> m_pJpegModule; |
43 nonstd::unique_ptr<ICodec_JpegModule> m_pJpegModule; | 43 nonstd::unique_ptr<ICodec_JpxModule> m_pJpxModule; |
44 nonstd::unique_ptr<ICodec_JpxModule> m_pJpxModule; | 44 nonstd::unique_ptr<ICodec_Jbig2Module> m_pJbig2Module; |
45 nonstd::unique_ptr<ICodec_Jbig2Module> m_pJbig2Module; | 45 nonstd::unique_ptr<ICodec_IccModule> m_pIccModule; |
46 nonstd::unique_ptr<ICodec_IccModule> m_pIccModule; | 46 nonstd::unique_ptr<ICodec_FlateModule> m_pFlateModule; |
47 nonstd::unique_ptr<ICodec_FlateModule> m_pFlateModule; | 47 }; |
48 }; | 48 class ICodec_BasicModule { |
49 class ICodec_BasicModule | 49 public: |
50 { | 50 virtual ~ICodec_BasicModule() {} |
51 public: | 51 virtual FX_BOOL RunLengthEncode(const uint8_t* src_buf, |
52 | 52 FX_DWORD src_size, |
53 virtual ~ICodec_BasicModule() {} | 53 uint8_t*& dest_buf, |
54 virtual FX_BOOL» RunLengthEncode(const uint8_t* src_buf, FX_DWORD src_siz
e, uint8_t*& dest_buf, | 54 FX_DWORD& dest_size) = 0; |
| 55 virtual FX_BOOL A85Encode(const uint8_t* src_buf, |
| 56 FX_DWORD src_size, |
| 57 uint8_t*& dest_buf, |
| 58 FX_DWORD& dest_size) = 0; |
| 59 virtual ICodec_ScanlineDecoder* CreateRunLengthDecoder(const uint8_t* src_buf, |
| 60 FX_DWORD src_size, |
| 61 int width, |
| 62 int height, |
| 63 int nComps, |
| 64 int bpc) = 0; |
| 65 }; |
| 66 class ICodec_ScanlineDecoder { |
| 67 public: |
| 68 virtual ~ICodec_ScanlineDecoder() {} |
| 69 |
| 70 virtual FX_DWORD GetSrcOffset() = 0; |
| 71 |
| 72 virtual void DownScale(int dest_width, int dest_height) = 0; |
| 73 |
| 74 virtual uint8_t* GetScanline(int line) = 0; |
| 75 |
| 76 virtual FX_BOOL SkipToScanline(int line, IFX_Pause* pPause) = 0; |
| 77 |
| 78 virtual int GetWidth() = 0; |
| 79 |
| 80 virtual int GetHeight() = 0; |
| 81 |
| 82 virtual int CountComps() = 0; |
| 83 |
| 84 virtual int GetBPC() = 0; |
| 85 |
| 86 virtual FX_BOOL IsColorTransformed() = 0; |
| 87 |
| 88 virtual void ClearImageData() = 0; |
| 89 }; |
| 90 class ICodec_FlateModule { |
| 91 public: |
| 92 virtual ~ICodec_FlateModule() {} |
| 93 virtual ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, |
| 94 FX_DWORD src_size, |
| 95 int width, |
| 96 int height, |
| 97 int nComps, |
| 98 int bpc, |
| 99 int predictor, |
| 100 int Colors, |
| 101 int BitsPerComponent, |
| 102 int Columns) = 0; |
| 103 virtual FX_DWORD FlateOrLZWDecode(FX_BOOL bLZW, |
| 104 const uint8_t* src_buf, |
| 105 FX_DWORD src_size, |
| 106 FX_BOOL bEarlyChange, |
| 107 int predictor, |
| 108 int Colors, |
| 109 int BitsPerComponent, |
| 110 int Columns, |
| 111 FX_DWORD estimated_size, |
| 112 uint8_t*& dest_buf, |
55 FX_DWORD& dest_size) = 0; | 113 FX_DWORD& dest_size) = 0; |
56 virtual FX_BOOL A85Encode(const uint8_t* src_buf, FX_DWORD src_size, uin
t8_t*& dest_buf, | 114 virtual FX_BOOL Encode(const uint8_t* src_buf, |
57 FX_DWORD& dest_size) = 0; | 115 FX_DWORD src_size, |
58 virtual ICodec_ScanlineDecoder* CreateRunLengthDecoder(const uint8_t* sr
c_buf, FX_DWORD src_size, int width, int height, | 116 int predictor, |
59 int nComps, int bpc) = 0; | 117 int Colors, |
60 }; | 118 int BitsPerComponent, |
61 class ICodec_ScanlineDecoder | 119 int Columns, |
62 { | 120 uint8_t*& dest_buf, |
63 public: | 121 FX_DWORD& dest_size) = 0; |
64 | 122 virtual FX_BOOL Encode(const uint8_t* src_buf, |
65 virtual ~ICodec_ScanlineDecoder() {} | 123 FX_DWORD src_size, |
66 | 124 uint8_t*& dest_buf, |
67 virtual FX_DWORD GetSrcOffset() = 0; | 125 FX_DWORD& dest_size) = 0; |
68 | 126 }; |
69 virtual void DownScale(int dest_width, int dest_height) = 0; | 127 class ICodec_FaxModule { |
70 | 128 public: |
71 virtual uint8_t* GetScanline(int line) = 0; | 129 virtual ~ICodec_FaxModule() {} |
72 | 130 |
73 virtual FX_BOOL SkipToScanline(int line, IFX_Pause* pPause) = 0; | 131 virtual ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, |
74 | 132 FX_DWORD src_size, |
75 virtual int GetWidth() = 0; | 133 int width, |
76 | 134 int height, |
77 virtual int GetHeight() = 0; | 135 int K, |
78 | 136 FX_BOOL EndOfLine, |
79 virtual int CountComps() = 0; | 137 FX_BOOL EncodedByteAlign, |
80 | 138 FX_BOOL BlackIs1, |
81 virtual int GetBPC() = 0; | 139 int Columns, |
82 | 140 int Rows) = 0; |
83 virtual FX_BOOL IsColorTransformed() = 0; | 141 |
84 | 142 virtual FX_BOOL Encode(const uint8_t* src_buf, |
85 virtual void ClearImageData() = 0; | 143 int width, |
86 }; | 144 int height, |
87 class ICodec_FlateModule | 145 int pitch, |
88 { | 146 uint8_t*& dest_buf, |
89 public: | 147 FX_DWORD& dest_size) = 0; |
90 | 148 }; |
91 virtual ~ICodec_FlateModule() {} | 149 class ICodec_JpegModule { |
92 virtual ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, FX
_DWORD src_size, int width, int height, | 150 public: |
93 int nComps, int bpc, int predictor, int Colors, int BitsPerComponent
, int Columns) = 0; | 151 virtual ~ICodec_JpegModule() {} |
94 virtual FX_DWORD FlateOrLZWDecode(FX_BOOL bLZW, const uint8_t* src_buf, F
X_DWORD src_size, FX_BOOL bEarlyChange, | 152 |
95 int predictor, int Colors, int BitsPerC
omponent, int Columns, | 153 virtual void SetPovider(IFX_JpegProvider* pJP) = 0; |
96 FX_DWORD estimated_size, uint8_t*& dest
_buf, FX_DWORD& dest_size) = 0; | 154 |
97 virtual FX_BOOL Encode(const uint8_t* src_buf, FX_DWORD src_size
, | 155 virtual ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, |
98 int predictor, int Colors, int BitsPerComponent,
int Columns, | 156 FX_DWORD src_size, |
99 uint8_t*& dest_buf, FX_DWORD& dest_size) = 0; | 157 int width, |
100 virtual FX_BOOL Encode(const uint8_t* src_buf, FX_DWORD src_size
, uint8_t*& dest_buf, FX_DWORD& dest_size) = 0; | 158 int height, |
101 }; | 159 int nComps, |
102 class ICodec_FaxModule | 160 FX_BOOL ColorTransform) = 0; |
103 { | 161 |
104 public: | 162 virtual FX_BOOL LoadInfo(const uint8_t* src_buf, |
105 | 163 FX_DWORD src_size, |
106 virtual ~ICodec_FaxModule() {} | 164 int& width, |
107 | 165 int& height, |
108 virtual ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, FX
_DWORD src_size, int width, int height, | 166 int& num_components, |
109 int K, FX_BOOL EndOfLine, FX_BOOL EncodedByteAlign, FX_BOOL BlackIs1
, int Columns, int Rows) = 0; | 167 int& bits_per_components, |
110 | 168 FX_BOOL& color_transform, |
111 | 169 uint8_t** icc_buf_ptr = NULL, |
112 virtual FX_BOOL Encode(const uint8_t* src_buf, int width, int he
ight, int pitch, | 170 FX_DWORD* icc_length = NULL) = 0; |
113 uint8_t*& dest_buf, FX_DWORD& dest_size) = 0; | 171 |
114 }; | 172 virtual FX_BOOL Encode(const class CFX_DIBSource* pSource, |
115 class ICodec_JpegModule | 173 uint8_t*& dest_buf, |
116 { | 174 FX_STRSIZE& dest_size, |
117 public: | 175 int quality = 75, |
118 | 176 const uint8_t* icc_buf = NULL, |
119 virtual ~ICodec_JpegModule() {} | 177 FX_DWORD icc_length = 0) = 0; |
120 | 178 |
121 virtual void SetPovider(IFX_JpegProvider* pJP) = 0; | 179 virtual void* Start() = 0; |
122 | 180 |
123 virtual ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, FX
_DWORD src_size, | 181 virtual void Finish(void* pContext) = 0; |
124 int width, int height, int nComps, FX_BOOL ColorTransform) = 0; | 182 |
125 | 183 virtual void Input(void* pContext, |
126 virtual FX_BOOL LoadInfo(const uint8_t* src_buf, FX_DWORD src_si
ze, int& width, int& height, | 184 const uint8_t* src_buf, |
127 int& num_components, int& bits_per_components,
FX_BOOL& color_transform, | 185 FX_DWORD src_size) = 0; |
128 uint8_t** icc_buf_ptr = NULL, FX_DWORD* icc_len
gth = NULL) = 0; | 186 |
129 | 187 virtual int ReadHeader(void* pContext, |
130 virtual FX_BOOL Encode(const class CFX_DIBSource* pSource, uint8
_t*& dest_buf, FX_STRSIZE& dest_size, int quality = 75, | 188 int* width, |
131 const uint8_t* icc_buf = NULL, FX_DWORD icc_lengt
h = 0) = 0; | 189 int* height, |
132 | 190 int* nComps) = 0; |
133 virtual void* Start() = 0; | 191 |
134 | 192 virtual int StartScanline(void* pContext, int down_scale) = 0; |
135 virtual void Finish(void* pContext) = 0; | 193 |
136 | 194 virtual FX_BOOL ReadScanline(void* pContext, uint8_t* dest_buf) = 0; |
137 virtual void Input(void* pContext, const uint8_t* src_buf, FX
_DWORD src_size) = 0; | 195 |
138 | 196 virtual FX_DWORD GetAvailInput(void* pContext, |
139 virtual int ReadHeader(void* pContext, int* width, int* heig
ht, int* nComps) = 0; | 197 uint8_t** avail_buf_ptr = NULL) = 0; |
140 | 198 }; |
141 | 199 class ICodec_JpxModule { |
142 virtual int StartScanline(void* pContext, int down_scale) =
0; | 200 public: |
143 | 201 virtual ~ICodec_JpxModule() {} |
144 | 202 |
145 virtual FX_BOOL ReadScanline(void* pContext, uint8_t* dest_buf)
= 0; | 203 virtual void* CreateDecoder(const uint8_t* src_buf, |
146 | 204 FX_DWORD src_size, |
147 | 205 FX_BOOL useColorSpace = FALSE) = 0; |
148 virtual FX_DWORD GetAvailInput(void* pContext, uint8_t** avail_buf_ptr =
NULL) = 0; | 206 |
149 }; | 207 virtual void GetImageInfo(void* ctx, |
150 class ICodec_JpxModule | 208 FX_DWORD& width, |
151 { | 209 FX_DWORD& height, |
152 public: | 210 FX_DWORD& codestream_nComps, |
153 | 211 FX_DWORD& output_nComps) = 0; |
154 virtual ~ICodec_JpxModule() {} | 212 |
155 | 213 virtual FX_BOOL Decode(void* ctx, |
156 virtual void* CreateDecoder(const uint8_t* src_buf, FX_DWORD src_size,
FX_BOOL useColorSpace = FALSE) = 0; | 214 uint8_t* dest_data, |
157 | 215 int pitch, |
158 virtual void GetImageInfo(void* ctx, FX_DWORD& width, FX_DWOR
D& height, | 216 FX_BOOL bTranslateColor, |
159 FX_DWORD& codestream_nComps, FX_DWORD& outp
ut_nComps) = 0; | 217 uint8_t* offsets) = 0; |
160 | 218 |
161 virtual FX_BOOL Decode(void* ctx, uint8_t* dest_data, int pitch, | 219 virtual void DestroyDecoder(void* ctx) = 0; |
162 FX_BOOL bTranslateColor, uint8_t* offsets) = 0; | 220 }; |
163 | 221 class ICodec_Jbig2Module { |
164 virtual void DestroyDecoder(void* ctx) = 0; | 222 public: |
165 }; | 223 virtual ~ICodec_Jbig2Module() {} |
166 class ICodec_Jbig2Module | 224 |
167 { | 225 virtual FX_BOOL Decode(FX_DWORD width, |
168 public: | 226 FX_DWORD height, |
169 | 227 const uint8_t* src_buf, |
170 virtual ~ICodec_Jbig2Module() {} | 228 FX_DWORD src_size, |
171 | 229 const uint8_t* global_data, |
172 virtual FX_BOOL Decode(FX_DWORD width, FX_DWORD height, const ui
nt8_t* src_buf, FX_DWORD src_size, | 230 FX_DWORD global_size, |
173 const uint8_t* global_data, FX_DWORD global_size,
uint8_t* dest_buf, FX_DWORD dest_pitch) = 0; | 231 uint8_t* dest_buf, |
174 | 232 FX_DWORD dest_pitch) = 0; |
175 virtual FX_BOOL Decode(IFX_FileRead* file_ptr, FX_DWORD& width,
FX_DWORD& height, | 233 |
176 FX_DWORD& pitch, uint8_t*& dest_buf) = 0; | 234 virtual FX_BOOL Decode(IFX_FileRead* file_ptr, |
177 virtual void* CreateJbig2Context() = 0; | 235 FX_DWORD& width, |
178 | 236 FX_DWORD& height, |
179 virtual FXCODEC_STATUS StartDecode(void* pJbig2Context, FX_DWOR
D width, FX_DWORD height, const uint8_t* src_buf, FX_DWORD src_size, | 237 FX_DWORD& pitch, |
180 const uint8_t* global_data, FX_DWORD
global_size, uint8_t* dest_buf, FX_DWORD dest_pitch, IFX_Pause* pPause) = 0; | 238 uint8_t*& dest_buf) = 0; |
181 | 239 virtual void* CreateJbig2Context() = 0; |
182 virtual FXCODEC_STATUS StartDecode(void* pJbig2Context, IFX_Fil
eRead* file_ptr, | 240 |
183 FX_DWORD& width, FX_DWORD& height, F
X_DWORD& pitch, uint8_t*& dest_buf, IFX_Pause* pPause) = 0; | 241 virtual FXCODEC_STATUS StartDecode(void* pJbig2Context, |
184 virtual FXCODEC_STATUS ContinueDecode(void* pJbig2Content, IFX_
Pause* pPause) = 0; | 242 FX_DWORD width, |
185 virtual void DestroyJbig2Context(void* pJbig2
Content) = 0; | 243 FX_DWORD height, |
186 }; | 244 const uint8_t* src_buf, |
187 class ICodec_Jbig2Encoder | 245 FX_DWORD src_size, |
188 { | 246 const uint8_t* global_data, |
189 public: | 247 FX_DWORD global_size, |
190 | 248 uint8_t* dest_buf, |
191 virtual ~ICodec_Jbig2Encoder() {} | 249 FX_DWORD dest_pitch, |
192 }; | 250 IFX_Pause* pPause) = 0; |
193 class ICodec_IccModule | 251 |
194 { | 252 virtual FXCODEC_STATUS StartDecode(void* pJbig2Context, |
195 public: | 253 IFX_FileRead* file_ptr, |
196 typedef enum { | 254 FX_DWORD& width, |
197 IccCS_Unknown = 0, | 255 FX_DWORD& height, |
198 IccCS_XYZ, | 256 FX_DWORD& pitch, |
199 IccCS_Lab, | 257 uint8_t*& dest_buf, |
200 IccCS_Luv, | 258 IFX_Pause* pPause) = 0; |
201 IccCS_YCbCr, | 259 virtual FXCODEC_STATUS ContinueDecode(void* pJbig2Content, |
202 IccCS_Yxy, | 260 IFX_Pause* pPause) = 0; |
203 IccCS_Hsv, | 261 virtual void DestroyJbig2Context(void* pJbig2Content) = 0; |
204 IccCS_Hls, | 262 }; |
205 IccCS_Gray, | 263 class ICodec_Jbig2Encoder { |
206 IccCS_Rgb, | 264 public: |
207 IccCS_Cmyk, | 265 virtual ~ICodec_Jbig2Encoder() {} |
208 IccCS_Cmy | 266 }; |
209 } IccCS; | 267 class ICodec_IccModule { |
210 typedef struct _IccParam { | 268 public: |
211 FX_DWORD Version; | 269 typedef enum { |
212 IccCS ColorSpace; | 270 IccCS_Unknown = 0, |
213 FX_DWORD dwProfileType; | 271 IccCS_XYZ, |
214 FX_DWORD dwFormat; | 272 IccCS_Lab, |
215 uint8_t* pProfileData; | 273 IccCS_Luv, |
216 FX_DWORD dwProfileSize; | 274 IccCS_YCbCr, |
217 double Gamma; | 275 IccCS_Yxy, |
218 } IccParam; | 276 IccCS_Hsv, |
219 | 277 IccCS_Hls, |
220 virtual ~ICodec_IccModule() {} | 278 IccCS_Gray, |
221 | 279 IccCS_Rgb, |
222 virtual IccCS GetProfileCS(const uint8_t* pProfileData
, unsigned int dwProfileSize) = 0; | 280 IccCS_Cmyk, |
223 | 281 IccCS_Cmy |
224 virtual IccCS GetProfileCS(IFX_FileRead* pFile) = 0; | 282 } IccCS; |
225 | 283 typedef struct _IccParam { |
226 virtual void* CreateTransform(ICodec_IccModule::IccParam* pInputParam, | 284 FX_DWORD Version; |
227 ICodec_IccModule::IccParam* pOutputParam
, | 285 IccCS ColorSpace; |
228 ICodec_IccModule::IccParam* pProofParam
= NULL, | 286 FX_DWORD dwProfileType; |
229 FX_DWORD dwIntent = Icc_INTENT_PERCEPTUA
L, | 287 FX_DWORD dwFormat; |
230 FX_DWORD dwFlag = Icc_FLAGS_DEFAULT, | 288 uint8_t* pProfileData; |
231 FX_DWORD dwPrfIntent = Icc_INTENT_ABSOLU
TE_COLORIMETRIC, | 289 FX_DWORD dwProfileSize; |
232 FX_DWORD dwPrfFlag = Icc_FLAGS_SOFTPROOF
ING | 290 double Gamma; |
233 ) = 0; | 291 } IccParam; |
234 | 292 |
235 | 293 virtual ~ICodec_IccModule() {} |
236 virtual void* CreateTransform_sRGB(const uint8_t* pProfileData, FX_DWO
RD dwProfileSize, int32_t& nComponents, int32_t intent = 0, | 294 |
237 FX_DWORD dwSrcFormat = Icc_FORMAT_DEFAULT) = 0; | 295 virtual IccCS GetProfileCS(const uint8_t* pProfileData, |
238 | 296 unsigned int dwProfileSize) = 0; |
239 virtual void* CreateTransform_CMYK(const uint8_t* pSrcProfileData, FX_
DWORD dwSrcProfileSize, int32_t& nSrcComponents, | 297 |
240 const uint8_t* pDstProfileData, FX_DWORD dwDstProfileSize, int32_t i
ntent = 0, | 298 virtual IccCS GetProfileCS(IFX_FileRead* pFile) = 0; |
241 FX_DWORD dwSrcFormat = Icc_FORMAT_DEFAULT, | 299 |
242 FX_DWORD dwDstFormat = Icc_FORMAT_DEFAULT | 300 virtual void* CreateTransform( |
243 ) = 0; | 301 ICodec_IccModule::IccParam* pInputParam, |
244 | 302 ICodec_IccModule::IccParam* pOutputParam, |
245 virtual void DestroyTransform(void* pTransform) = 0; | 303 ICodec_IccModule::IccParam* pProofParam = NULL, |
246 | 304 FX_DWORD dwIntent = Icc_INTENT_PERCEPTUAL, |
247 virtual void Translate(void* pTransform, FX_FLOAT* pS
rcValues, FX_FLOAT* pDestValues) = 0; | 305 FX_DWORD dwFlag = Icc_FLAGS_DEFAULT, |
248 | 306 FX_DWORD dwPrfIntent = Icc_INTENT_ABSOLUTE_COLORIMETRIC, |
249 virtual void TranslateScanline(void* pTransform, uint
8_t* pDest, const uint8_t* pSrc, int pixels) = 0; | 307 FX_DWORD dwPrfFlag = Icc_FLAGS_SOFTPROOFING) = 0; |
250 virtual void SetComponents(FX_DWORD nComponents) = 0; | 308 |
251 }; | 309 virtual void* CreateTransform_sRGB( |
252 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); | 310 const uint8_t* pProfileData, |
253 void AdobeCMYK_to_sRGB1(uint8_t c, uint8_t m, uint8_t y, uint8_t k, uint8_t& R,
uint8_t& G, uint8_t& B); | 311 FX_DWORD dwProfileSize, |
| 312 int32_t& nComponents, |
| 313 int32_t intent = 0, |
| 314 FX_DWORD dwSrcFormat = Icc_FORMAT_DEFAULT) = 0; |
| 315 |
| 316 virtual void* CreateTransform_CMYK( |
| 317 const uint8_t* pSrcProfileData, |
| 318 FX_DWORD dwSrcProfileSize, |
| 319 int32_t& nSrcComponents, |
| 320 const uint8_t* pDstProfileData, |
| 321 FX_DWORD dwDstProfileSize, |
| 322 int32_t intent = 0, |
| 323 FX_DWORD dwSrcFormat = Icc_FORMAT_DEFAULT, |
| 324 FX_DWORD dwDstFormat = Icc_FORMAT_DEFAULT) = 0; |
| 325 |
| 326 virtual void DestroyTransform(void* pTransform) = 0; |
| 327 |
| 328 virtual void Translate(void* pTransform, |
| 329 FX_FLOAT* pSrcValues, |
| 330 FX_FLOAT* pDestValues) = 0; |
| 331 |
| 332 virtual void TranslateScanline(void* pTransform, |
| 333 uint8_t* pDest, |
| 334 const uint8_t* pSrc, |
| 335 int pixels) = 0; |
| 336 virtual void SetComponents(FX_DWORD nComponents) = 0; |
| 337 }; |
| 338 void AdobeCMYK_to_sRGB(FX_FLOAT c, |
| 339 FX_FLOAT m, |
| 340 FX_FLOAT y, |
| 341 FX_FLOAT k, |
| 342 FX_FLOAT& R, |
| 343 FX_FLOAT& G, |
| 344 FX_FLOAT& B); |
| 345 void AdobeCMYK_to_sRGB1(uint8_t c, |
| 346 uint8_t m, |
| 347 uint8_t y, |
| 348 uint8_t k, |
| 349 uint8_t& R, |
| 350 uint8_t& G, |
| 351 uint8_t& B); |
254 FX_BOOL MD5ComputeID(const void* buf, FX_DWORD dwSize, uint8_t ID[16]); | 352 FX_BOOL MD5ComputeID(const void* buf, FX_DWORD dwSize, uint8_t ID[16]); |
255 | 353 |
256 #endif // CORE_INCLUDE_FXCODEC_FX_CODEC_H_ | 354 #endif // CORE_INCLUDE_FXCODEC_FX_CODEC_H_ |
OLD | NEW |