| 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 |