| OLD | NEW |
| (Empty) |
| 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_INCLUDE_FXCODEC_FX_CODEC_H_ | |
| 8 #define CORE_INCLUDE_FXCODEC_FX_CODEC_H_ | |
| 9 | |
| 10 #include <map> | |
| 11 #include <memory> | |
| 12 #include <vector> | |
| 13 | |
| 14 #include "core/fxcrt/include/fx_basic.h" | |
| 15 #include "core/fxcrt/include/fx_coordinates.h" // For FX_RECT. | |
| 16 #include "core/include/fxcodec/fx_codec_def.h" | |
| 17 | |
| 18 class CFX_DIBSource; | |
| 19 class CJPX_Decoder; | |
| 20 class CPDF_ColorSpace; | |
| 21 class CPDF_StreamAcc; | |
| 22 class ICodec_BasicModule; | |
| 23 class ICodec_FaxModule; | |
| 24 class ICodec_FlateModule; | |
| 25 class ICodec_IccModule; | |
| 26 class ICodec_Jbig2Encoder; | |
| 27 class ICodec_Jbig2Module; | |
| 28 class ICodec_JpegModule; | |
| 29 class ICodec_JpxModule; | |
| 30 class ICodec_ScanlineDecoder; | |
| 31 | |
| 32 #ifdef PDF_ENABLE_XFA | |
| 33 class ICodec_BmpModule; | |
| 34 class ICodec_GifModule; | |
| 35 class ICodec_PngModule; | |
| 36 class ICodec_ProgressiveDecoder; | |
| 37 class ICodec_TiffModule; | |
| 38 #endif // PDF_ENABLE_XFA | |
| 39 | |
| 40 #ifdef PDF_ENABLE_XFA | |
| 41 class CFX_DIBAttribute { | |
| 42 public: | |
| 43 CFX_DIBAttribute(); | |
| 44 ~CFX_DIBAttribute(); | |
| 45 | |
| 46 int32_t m_nXDPI; | |
| 47 int32_t m_nYDPI; | |
| 48 FX_FLOAT m_fAspectRatio; | |
| 49 uint16_t m_wDPIUnit; | |
| 50 CFX_ByteString m_strAuthor; | |
| 51 uint8_t m_strTime[20]; | |
| 52 int32_t m_nGifLeft; | |
| 53 int32_t m_nGifTop; | |
| 54 uint32_t* m_pGifLocalPalette; | |
| 55 uint32_t m_nGifLocalPalNum; | |
| 56 int32_t m_nBmpCompressType; | |
| 57 std::map<uint32_t, void*> m_Exif; | |
| 58 }; | |
| 59 #endif // PDF_ENABLE_XFA | |
| 60 | |
| 61 class CCodec_ModuleMgr { | |
| 62 public: | |
| 63 CCodec_ModuleMgr(); | |
| 64 | |
| 65 ICodec_BasicModule* GetBasicModule() const { return m_pBasicModule.get(); } | |
| 66 ICodec_FaxModule* GetFaxModule() const { return m_pFaxModule.get(); } | |
| 67 ICodec_JpegModule* GetJpegModule() const { return m_pJpegModule.get(); } | |
| 68 ICodec_JpxModule* GetJpxModule() const { return m_pJpxModule.get(); } | |
| 69 ICodec_Jbig2Module* GetJbig2Module() const { return m_pJbig2Module.get(); } | |
| 70 ICodec_IccModule* GetIccModule() const { return m_pIccModule.get(); } | |
| 71 ICodec_FlateModule* GetFlateModule() const { return m_pFlateModule.get(); } | |
| 72 | |
| 73 #ifdef PDF_ENABLE_XFA | |
| 74 ICodec_ProgressiveDecoder* CreateProgressiveDecoder(); | |
| 75 ICodec_PngModule* GetPngModule() const { return m_pPngModule.get(); } | |
| 76 ICodec_GifModule* GetGifModule() const { return m_pGifModule.get(); } | |
| 77 ICodec_BmpModule* GetBmpModule() const { return m_pBmpModule.get(); } | |
| 78 ICodec_TiffModule* GetTiffModule() const { return m_pTiffModule.get(); } | |
| 79 #endif // PDF_ENABLE_XFA | |
| 80 | |
| 81 protected: | |
| 82 std::unique_ptr<ICodec_BasicModule> m_pBasicModule; | |
| 83 std::unique_ptr<ICodec_FaxModule> m_pFaxModule; | |
| 84 std::unique_ptr<ICodec_JpegModule> m_pJpegModule; | |
| 85 std::unique_ptr<ICodec_JpxModule> m_pJpxModule; | |
| 86 std::unique_ptr<ICodec_Jbig2Module> m_pJbig2Module; | |
| 87 std::unique_ptr<ICodec_IccModule> m_pIccModule; | |
| 88 #ifdef PDF_ENABLE_XFA | |
| 89 std::unique_ptr<ICodec_PngModule> m_pPngModule; | |
| 90 std::unique_ptr<ICodec_GifModule> m_pGifModule; | |
| 91 std::unique_ptr<ICodec_BmpModule> m_pBmpModule; | |
| 92 std::unique_ptr<ICodec_TiffModule> m_pTiffModule; | |
| 93 #endif // PDF_ENABLE_XFA | |
| 94 std::unique_ptr<ICodec_FlateModule> m_pFlateModule; | |
| 95 }; | |
| 96 class ICodec_BasicModule { | |
| 97 public: | |
| 98 virtual ~ICodec_BasicModule() {} | |
| 99 virtual FX_BOOL RunLengthEncode(const uint8_t* src_buf, | |
| 100 uint32_t src_size, | |
| 101 uint8_t*& dest_buf, | |
| 102 uint32_t& dest_size) = 0; | |
| 103 virtual FX_BOOL A85Encode(const uint8_t* src_buf, | |
| 104 uint32_t src_size, | |
| 105 uint8_t*& dest_buf, | |
| 106 uint32_t& dest_size) = 0; | |
| 107 virtual ICodec_ScanlineDecoder* CreateRunLengthDecoder(const uint8_t* src_buf, | |
| 108 uint32_t src_size, | |
| 109 int width, | |
| 110 int height, | |
| 111 int nComps, | |
| 112 int bpc) = 0; | |
| 113 }; | |
| 114 | |
| 115 class ICodec_ScanlineDecoder { | |
| 116 public: | |
| 117 virtual ~ICodec_ScanlineDecoder() {} | |
| 118 | |
| 119 virtual uint32_t GetSrcOffset() = 0; | |
| 120 | |
| 121 virtual const uint8_t* GetScanline(int line) = 0; | |
| 122 | |
| 123 virtual FX_BOOL SkipToScanline(int line, IFX_Pause* pPause) = 0; | |
| 124 | |
| 125 virtual int GetWidth() = 0; | |
| 126 | |
| 127 virtual int GetHeight() = 0; | |
| 128 | |
| 129 virtual int CountComps() = 0; | |
| 130 | |
| 131 virtual int GetBPC() = 0; | |
| 132 }; | |
| 133 | |
| 134 class ICodec_FlateModule { | |
| 135 public: | |
| 136 virtual ~ICodec_FlateModule() {} | |
| 137 virtual ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, | |
| 138 uint32_t src_size, | |
| 139 int width, | |
| 140 int height, | |
| 141 int nComps, | |
| 142 int bpc, | |
| 143 int predictor, | |
| 144 int Colors, | |
| 145 int BitsPerComponent, | |
| 146 int Columns) = 0; | |
| 147 virtual uint32_t FlateOrLZWDecode(FX_BOOL bLZW, | |
| 148 const uint8_t* src_buf, | |
| 149 uint32_t src_size, | |
| 150 FX_BOOL bEarlyChange, | |
| 151 int predictor, | |
| 152 int Colors, | |
| 153 int BitsPerComponent, | |
| 154 int Columns, | |
| 155 uint32_t estimated_size, | |
| 156 uint8_t*& dest_buf, | |
| 157 uint32_t& dest_size) = 0; | |
| 158 virtual FX_BOOL Encode(const uint8_t* src_buf, | |
| 159 uint32_t src_size, | |
| 160 int predictor, | |
| 161 int Colors, | |
| 162 int BitsPerComponent, | |
| 163 int Columns, | |
| 164 uint8_t*& dest_buf, | |
| 165 uint32_t& dest_size) = 0; | |
| 166 virtual FX_BOOL Encode(const uint8_t* src_buf, | |
| 167 uint32_t src_size, | |
| 168 uint8_t*& dest_buf, | |
| 169 uint32_t& dest_size) = 0; | |
| 170 }; | |
| 171 class ICodec_FaxModule { | |
| 172 public: | |
| 173 virtual ~ICodec_FaxModule() {} | |
| 174 | |
| 175 virtual ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, | |
| 176 uint32_t src_size, | |
| 177 int width, | |
| 178 int height, | |
| 179 int K, | |
| 180 FX_BOOL EndOfLine, | |
| 181 FX_BOOL EncodedByteAlign, | |
| 182 FX_BOOL BlackIs1, | |
| 183 int Columns, | |
| 184 int Rows) = 0; | |
| 185 | |
| 186 virtual FX_BOOL Encode(const uint8_t* src_buf, | |
| 187 int width, | |
| 188 int height, | |
| 189 int pitch, | |
| 190 uint8_t*& dest_buf, | |
| 191 uint32_t& dest_size) = 0; | |
| 192 }; | |
| 193 class ICodec_JpegModule { | |
| 194 public: | |
| 195 virtual ~ICodec_JpegModule() {} | |
| 196 | |
| 197 virtual ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, | |
| 198 uint32_t src_size, | |
| 199 int width, | |
| 200 int height, | |
| 201 int nComps, | |
| 202 FX_BOOL ColorTransform) = 0; | |
| 203 | |
| 204 virtual FX_BOOL LoadInfo(const uint8_t* src_buf, | |
| 205 uint32_t src_size, | |
| 206 int& width, | |
| 207 int& height, | |
| 208 int& num_components, | |
| 209 int& bits_per_components, | |
| 210 FX_BOOL& color_transform, | |
| 211 uint8_t** icc_buf_ptr = NULL, | |
| 212 uint32_t* icc_length = NULL) = 0; | |
| 213 | |
| 214 virtual FX_BOOL Encode(const class CFX_DIBSource* pSource, | |
| 215 uint8_t*& dest_buf, | |
| 216 FX_STRSIZE& dest_size, | |
| 217 int quality = 75, | |
| 218 const uint8_t* icc_buf = NULL, | |
| 219 uint32_t icc_length = 0) = 0; | |
| 220 | |
| 221 virtual void* Start() = 0; | |
| 222 | |
| 223 virtual void Finish(void* pContext) = 0; | |
| 224 | |
| 225 virtual void Input(void* pContext, | |
| 226 const uint8_t* src_buf, | |
| 227 uint32_t src_size) = 0; | |
| 228 | |
| 229 #ifdef PDF_ENABLE_XFA | |
| 230 virtual int ReadHeader(void* pContext, | |
| 231 int* width, | |
| 232 int* height, | |
| 233 int* nComps, | |
| 234 CFX_DIBAttribute* pAttribute) = 0; | |
| 235 #else // PDF_ENABLE_XFA | |
| 236 virtual int ReadHeader(void* pContext, | |
| 237 int* width, | |
| 238 int* height, | |
| 239 int* nComps) = 0; | |
| 240 #endif // PDF_ENABLE_XFA | |
| 241 | |
| 242 virtual int StartScanline(void* pContext, int down_scale) = 0; | |
| 243 | |
| 244 virtual FX_BOOL ReadScanline(void* pContext, uint8_t* dest_buf) = 0; | |
| 245 | |
| 246 virtual uint32_t GetAvailInput(void* pContext, | |
| 247 uint8_t** avail_buf_ptr = NULL) = 0; | |
| 248 }; | |
| 249 | |
| 250 class ICodec_JpxModule { | |
| 251 public: | |
| 252 virtual ~ICodec_JpxModule() {} | |
| 253 | |
| 254 virtual CJPX_Decoder* CreateDecoder(const uint8_t* src_buf, | |
| 255 uint32_t src_size, | |
| 256 CPDF_ColorSpace* cs) = 0; | |
| 257 | |
| 258 virtual void GetImageInfo(CJPX_Decoder* pDecoder, | |
| 259 uint32_t* width, | |
| 260 uint32_t* height, | |
| 261 uint32_t* components) = 0; | |
| 262 | |
| 263 virtual bool Decode(CJPX_Decoder* pDecoder, | |
| 264 uint8_t* dest_data, | |
| 265 int pitch, | |
| 266 const std::vector<uint8_t>& offsets) = 0; | |
| 267 | |
| 268 virtual void DestroyDecoder(CJPX_Decoder* pDecoder) = 0; | |
| 269 }; | |
| 270 #ifdef PDF_ENABLE_XFA | |
| 271 class ICodec_PngModule { | |
| 272 public: | |
| 273 virtual ~ICodec_PngModule() {} | |
| 274 | |
| 275 virtual void* Start(void* pModule) = 0; | |
| 276 | |
| 277 virtual void Finish(void* pContext) = 0; | |
| 278 | |
| 279 virtual FX_BOOL Input(void* pContext, | |
| 280 const uint8_t* src_buf, | |
| 281 uint32_t src_size, | |
| 282 CFX_DIBAttribute* pAttribute) = 0; | |
| 283 | |
| 284 FX_BOOL (*ReadHeaderCallback)(void* pModule, | |
| 285 int width, | |
| 286 int height, | |
| 287 int bpc, | |
| 288 int pass, | |
| 289 int* color_type, | |
| 290 double* gamma); | |
| 291 | |
| 292 FX_BOOL (*AskScanlineBufCallback)(void* pModule, int line, uint8_t*& src_buf); | |
| 293 | |
| 294 void (*FillScanlineBufCompletedCallback)(void* pModule, int pass, int line); | |
| 295 }; | |
| 296 class ICodec_GifModule { | |
| 297 public: | |
| 298 virtual ~ICodec_GifModule() {} | |
| 299 | |
| 300 virtual void* Start(void* pModule) = 0; | |
| 301 | |
| 302 virtual void Finish(void* pContext) = 0; | |
| 303 | |
| 304 virtual uint32_t GetAvailInput(void* pContext, | |
| 305 uint8_t** avail_buf_ptr = NULL) = 0; | |
| 306 | |
| 307 virtual void Input(void* pContext, | |
| 308 const uint8_t* src_buf, | |
| 309 uint32_t src_size) = 0; | |
| 310 | |
| 311 virtual int32_t ReadHeader(void* pContext, | |
| 312 int* width, | |
| 313 int* height, | |
| 314 int* pal_num, | |
| 315 void** pal_pp, | |
| 316 int* bg_index, | |
| 317 CFX_DIBAttribute* pAttribute) = 0; | |
| 318 | |
| 319 virtual int32_t LoadFrameInfo(void* pContext, int* frame_num) = 0; | |
| 320 | |
| 321 void (*RecordCurrentPositionCallback)(void* pModule, uint32_t& cur_pos); | |
| 322 | |
| 323 uint8_t* (*AskLocalPaletteBufCallback)(void* pModule, | |
| 324 int32_t frame_num, | |
| 325 int32_t pal_size); | |
| 326 | |
| 327 virtual int32_t LoadFrame(void* pContext, | |
| 328 int frame_num, | |
| 329 CFX_DIBAttribute* pAttribute) = 0; | |
| 330 | |
| 331 FX_BOOL (*InputRecordPositionBufCallback)(void* pModule, | |
| 332 uint32_t rcd_pos, | |
| 333 const FX_RECT& img_rc, | |
| 334 int32_t pal_num, | |
| 335 void* pal_ptr, | |
| 336 int32_t delay_time, | |
| 337 FX_BOOL user_input, | |
| 338 int32_t trans_index, | |
| 339 int32_t disposal_method, | |
| 340 FX_BOOL interlace); | |
| 341 | |
| 342 void (*ReadScanlineCallback)(void* pModule, | |
| 343 int32_t row_num, | |
| 344 uint8_t* row_buf); | |
| 345 }; | |
| 346 class ICodec_BmpModule { | |
| 347 public: | |
| 348 virtual ~ICodec_BmpModule() {} | |
| 349 | |
| 350 virtual void* Start(void* pModule) = 0; | |
| 351 | |
| 352 virtual void Finish(void* pContext) = 0; | |
| 353 | |
| 354 virtual uint32_t GetAvailInput(void* pContext, | |
| 355 uint8_t** avail_buf_ptr = NULL) = 0; | |
| 356 | |
| 357 virtual void Input(void* pContext, | |
| 358 const uint8_t* src_buf, | |
| 359 uint32_t src_size) = 0; | |
| 360 | |
| 361 virtual int32_t ReadHeader(void* pContext, | |
| 362 int32_t* width, | |
| 363 int32_t* height, | |
| 364 FX_BOOL* tb_flag, | |
| 365 int32_t* components, | |
| 366 int* pal_num, | |
| 367 uint32_t** pal_pp, | |
| 368 CFX_DIBAttribute* pAttribute) = 0; | |
| 369 | |
| 370 virtual int32_t LoadImage(void* pContext) = 0; | |
| 371 | |
| 372 FX_BOOL (*InputImagePositionBufCallback)(void* pModule, uint32_t rcd_pos); | |
| 373 | |
| 374 void (*ReadScanlineCallback)(void* pModule, | |
| 375 int32_t row_num, | |
| 376 uint8_t* row_buf); | |
| 377 }; | |
| 378 class ICodec_TiffModule { | |
| 379 public: | |
| 380 virtual ~ICodec_TiffModule() {} | |
| 381 | |
| 382 virtual void* CreateDecoder(IFX_FileRead* file_ptr) = 0; | |
| 383 | |
| 384 virtual void GetFrames(void* ctx, int32_t& frames) = 0; | |
| 385 | |
| 386 virtual FX_BOOL LoadFrameInfo(void* ctx, | |
| 387 int32_t frame, | |
| 388 uint32_t& width, | |
| 389 uint32_t& height, | |
| 390 uint32_t& comps, | |
| 391 uint32_t& bpc, | |
| 392 CFX_DIBAttribute* pAttribute) = 0; | |
| 393 | |
| 394 virtual FX_BOOL Decode(void* ctx, class CFX_DIBitmap* pDIBitmap) = 0; | |
| 395 | |
| 396 virtual void DestroyDecoder(void* ctx) = 0; | |
| 397 }; | |
| 398 #endif | |
| 399 | |
| 400 class ICodec_Jbig2Module { | |
| 401 public: | |
| 402 virtual ~ICodec_Jbig2Module() {} | |
| 403 | |
| 404 virtual void* CreateJbig2Context() = 0; | |
| 405 | |
| 406 virtual FXCODEC_STATUS StartDecode(void* pJbig2Context, | |
| 407 CFX_PrivateData* pPrivateData, | |
| 408 uint32_t width, | |
| 409 uint32_t height, | |
| 410 CPDF_StreamAcc* src_stream, | |
| 411 CPDF_StreamAcc* global_stream, | |
| 412 uint8_t* dest_buf, | |
| 413 uint32_t dest_pitch, | |
| 414 IFX_Pause* pPause) = 0; | |
| 415 | |
| 416 virtual FXCODEC_STATUS ContinueDecode(void* pJbig2Content, | |
| 417 IFX_Pause* pPause) = 0; | |
| 418 virtual void DestroyJbig2Context(void* pJbig2Content) = 0; | |
| 419 }; | |
| 420 #ifdef PDF_ENABLE_XFA | |
| 421 class ICodec_ProgressiveDecoder { | |
| 422 public: | |
| 423 virtual ~ICodec_ProgressiveDecoder() {} | |
| 424 | |
| 425 virtual FXCODEC_STATUS LoadImageInfo(IFX_FileRead* pFile, | |
| 426 FXCODEC_IMAGE_TYPE imageType, | |
| 427 CFX_DIBAttribute* pAttribute) = 0; | |
| 428 | |
| 429 virtual FXCODEC_IMAGE_TYPE GetType() const = 0; | |
| 430 virtual int32_t GetWidth() const = 0; | |
| 431 virtual int32_t GetHeight() const = 0; | |
| 432 virtual int32_t GetNumComponents() const = 0; | |
| 433 virtual int32_t GetBPC() const = 0; | |
| 434 | |
| 435 virtual void SetClipBox(FX_RECT* clip) = 0; | |
| 436 | |
| 437 virtual FXCODEC_STATUS GetFrames(int32_t& frames, | |
| 438 IFX_Pause* pPause = NULL) = 0; | |
| 439 | |
| 440 virtual FXCODEC_STATUS StartDecode(class CFX_DIBitmap* pDIBitmap, | |
| 441 int32_t start_x, | |
| 442 int32_t start_y, | |
| 443 int32_t size_x, | |
| 444 int32_t size_y, | |
| 445 int32_t frames = 0, | |
| 446 FX_BOOL bInterpol = TRUE) = 0; | |
| 447 | |
| 448 virtual FXCODEC_STATUS ContinueDecode(IFX_Pause* pPause = NULL) = 0; | |
| 449 }; | |
| 450 #endif // PDF_ENABLE_XFA | |
| 451 class ICodec_Jbig2Encoder { | |
| 452 public: | |
| 453 virtual ~ICodec_Jbig2Encoder() {} | |
| 454 }; | |
| 455 | |
| 456 class ICodec_IccModule { | |
| 457 public: | |
| 458 enum IccCS { | |
| 459 IccCS_Unknown = 0, | |
| 460 IccCS_XYZ, | |
| 461 IccCS_Lab, | |
| 462 IccCS_Luv, | |
| 463 IccCS_YCbCr, | |
| 464 IccCS_Yxy, | |
| 465 IccCS_Hsv, | |
| 466 IccCS_Hls, | |
| 467 IccCS_Gray, | |
| 468 IccCS_Rgb, | |
| 469 IccCS_Cmyk, | |
| 470 IccCS_Cmy | |
| 471 }; | |
| 472 | |
| 473 struct IccParam { | |
| 474 uint32_t Version; | |
| 475 IccCS ColorSpace; | |
| 476 uint32_t dwProfileType; | |
| 477 uint32_t dwFormat; | |
| 478 uint8_t* pProfileData; | |
| 479 uint32_t dwProfileSize; | |
| 480 double Gamma; | |
| 481 }; | |
| 482 | |
| 483 virtual ~ICodec_IccModule() {} | |
| 484 | |
| 485 virtual IccCS GetProfileCS(const uint8_t* pProfileData, | |
| 486 unsigned int dwProfileSize) = 0; | |
| 487 | |
| 488 virtual IccCS GetProfileCS(IFX_FileRead* pFile) = 0; | |
| 489 | |
| 490 virtual void* CreateTransform( | |
| 491 ICodec_IccModule::IccParam* pInputParam, | |
| 492 ICodec_IccModule::IccParam* pOutputParam, | |
| 493 ICodec_IccModule::IccParam* pProofParam = NULL, | |
| 494 uint32_t dwIntent = Icc_INTENT_PERCEPTUAL, | |
| 495 uint32_t dwFlag = Icc_FLAGS_DEFAULT, | |
| 496 uint32_t dwPrfIntent = Icc_INTENT_ABSOLUTE_COLORIMETRIC, | |
| 497 uint32_t dwPrfFlag = Icc_FLAGS_SOFTPROOFING) = 0; | |
| 498 | |
| 499 virtual void* CreateTransform_sRGB( | |
| 500 const uint8_t* pProfileData, | |
| 501 uint32_t dwProfileSize, | |
| 502 uint32_t& nComponents, | |
| 503 int32_t intent = 0, | |
| 504 uint32_t dwSrcFormat = Icc_FORMAT_DEFAULT) = 0; | |
| 505 | |
| 506 virtual void* CreateTransform_CMYK( | |
| 507 const uint8_t* pSrcProfileData, | |
| 508 uint32_t dwSrcProfileSize, | |
| 509 uint32_t& nSrcComponents, | |
| 510 const uint8_t* pDstProfileData, | |
| 511 uint32_t dwDstProfileSize, | |
| 512 int32_t intent = 0, | |
| 513 uint32_t dwSrcFormat = Icc_FORMAT_DEFAULT, | |
| 514 uint32_t dwDstFormat = Icc_FORMAT_DEFAULT) = 0; | |
| 515 | |
| 516 virtual void DestroyTransform(void* pTransform) = 0; | |
| 517 | |
| 518 virtual void Translate(void* pTransform, | |
| 519 FX_FLOAT* pSrcValues, | |
| 520 FX_FLOAT* pDestValues) = 0; | |
| 521 | |
| 522 virtual void TranslateScanline(void* pTransform, | |
| 523 uint8_t* pDest, | |
| 524 const uint8_t* pSrc, | |
| 525 int pixels) = 0; | |
| 526 virtual void SetComponents(uint32_t nComponents) = 0; | |
| 527 }; | |
| 528 | |
| 529 void ReverseRGB(uint8_t* pDestBuf, const uint8_t* pSrcBuf, int pixels); | |
| 530 void sRGB_to_AdobeCMYK(FX_FLOAT R, | |
| 531 FX_FLOAT G, | |
| 532 FX_FLOAT B, | |
| 533 FX_FLOAT& c, | |
| 534 FX_FLOAT& m, | |
| 535 FX_FLOAT& y, | |
| 536 FX_FLOAT& k); | |
| 537 void AdobeCMYK_to_sRGB(FX_FLOAT c, | |
| 538 FX_FLOAT m, | |
| 539 FX_FLOAT y, | |
| 540 FX_FLOAT k, | |
| 541 FX_FLOAT& R, | |
| 542 FX_FLOAT& G, | |
| 543 FX_FLOAT& B); | |
| 544 void AdobeCMYK_to_sRGB1(uint8_t c, | |
| 545 uint8_t m, | |
| 546 uint8_t y, | |
| 547 uint8_t k, | |
| 548 uint8_t& R, | |
| 549 uint8_t& G, | |
| 550 uint8_t& B); | |
| 551 FX_BOOL MD5ComputeID(const void* buf, uint32_t dwSize, uint8_t ID[16]); | |
| 552 void FaxG4Decode(const uint8_t* src_buf, | |
| 553 uint32_t src_size, | |
| 554 int* pbitpos, | |
| 555 uint8_t* dest_buf, | |
| 556 int width, | |
| 557 int height, | |
| 558 int pitch); | |
| 559 | |
| 560 #endif // CORE_INCLUDE_FXCODEC_FX_CODEC_H_ | |
| OLD | NEW |