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