| Index: core/src/fxcodec/codec/fx_codec_jpeg.cpp
|
| diff --git a/core/src/fxcodec/codec/fx_codec_jpeg.cpp b/core/src/fxcodec/codec/fx_codec_jpeg.cpp
|
| index 4fdbb8ed293b8f29d10db1035d98ee42b651e01a..66e762eaa1c152b650593d315cc977a5d591aef5 100644
|
| --- a/core/src/fxcodec/codec/fx_codec_jpeg.cpp
|
| +++ b/core/src/fxcodec/codec/fx_codec_jpeg.cpp
|
| @@ -224,6 +224,19 @@ static void _JpegEncode(const CFX_DIBSource* pSource,
|
| FX_Free(line_buf);
|
| dest_size = dest_buf_length - (FX_STRSIZE)dest.free_in_buffer;
|
| }
|
| +#ifdef PDF_ENABLE_XFA
|
| +static void _JpegLoadAttribute(struct jpeg_decompress_struct* pInfo,
|
| + CFX_DIBAttribute* pAttribute) {
|
| + if (pInfo == NULL || pAttribute == NULL) {
|
| + return;
|
| + }
|
| + if (pAttribute) {
|
| + pAttribute->m_nXDPI = pInfo->X_density;
|
| + pAttribute->m_nYDPI = pInfo->Y_density;
|
| + pAttribute->m_wDPIUnit = pInfo->density_unit;
|
| + }
|
| +}
|
| +#endif
|
| static FX_BOOL _JpegLoadInfo(const uint8_t* src_buf,
|
| FX_DWORD src_size,
|
| int& width,
|
| @@ -657,9 +670,19 @@ void CCodec_JpegModule::Input(void* pContext,
|
| int CCodec_JpegModule::ReadHeader(void* pContext,
|
| int* width,
|
| int* height,
|
| +#ifndef PDF_ENABLE_XFA
|
| int* nComps) {
|
| +#else
|
| + int* nComps,
|
| + CFX_DIBAttribute* pAttribute) {
|
| +#endif
|
| if (m_pExtProvider) {
|
| +#ifndef PDF_ENABLE_XFA
|
| return m_pExtProvider->ReadHeader(pContext, width, height, nComps);
|
| +#else
|
| + return m_pExtProvider->ReadHeader(pContext, width, height, nComps,
|
| + pAttribute);
|
| +#endif
|
| }
|
| FXJPEG_Context* p = (FXJPEG_Context*)pContext;
|
| if (setjmp(p->m_JumpMark) == -1) {
|
| @@ -675,6 +698,9 @@ int CCodec_JpegModule::ReadHeader(void* pContext,
|
| *width = p->m_Info.image_width;
|
| *height = p->m_Info.image_height;
|
| *nComps = p->m_Info.num_components;
|
| +#ifdef PDF_ENABLE_XFA
|
| + _JpegLoadAttribute(&p->m_Info, pAttribute);
|
| +#endif
|
| return 0;
|
| }
|
| int CCodec_JpegModule::StartScanline(void* pContext, int down_scale) {
|
|
|