diff options
-rw-r--r-- | BUILD.gn | 20 | ||||
-rw-r--r-- | core/fxcodec/codec/ccodec_progressivedecoder.h | 34 | ||||
-rw-r--r-- | core/fxcodec/codec/fx_codec.cpp | 13 | ||||
-rw-r--r-- | core/fxcodec/codec/fx_codec_progress.cpp | 92 | ||||
-rw-r--r-- | core/fxcodec/fx_codec.h | 20 | ||||
-rw-r--r-- | core/fxcodec/fx_codec_def.h | 2 | ||||
-rw-r--r-- | testing/libfuzzer/BUILD.gn | 16 | ||||
-rw-r--r-- | testing/libfuzzer/xfa_codec_fuzzer.h | 7 | ||||
-rw-r--r-- | xfa/fxfa/cxfa_ffwidget.cpp | 2 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_node.cpp | 20 |
10 files changed, 146 insertions, 80 deletions
@@ -780,17 +780,21 @@ jumbo_static_library("fxcodec") { if (pdf_enable_xfa) { sources += [ - "core/fxcodec/bmp/cfx_bmpcontext.cpp", - "core/fxcodec/bmp/cfx_bmpcontext.h", - "core/fxcodec/bmp/cfx_bmpdecompressor.cpp", - "core/fxcodec/bmp/cfx_bmpdecompressor.h", - "core/fxcodec/bmp/fx_bmp.cpp", - "core/fxcodec/bmp/fx_bmp.h", - "core/fxcodec/codec/ccodec_bmpmodule.cpp", - "core/fxcodec/codec/ccodec_bmpmodule.h", "core/fxcodec/codec/ccodec_progressivedecoder.h", "core/fxcodec/codec/fx_codec_progress.cpp", ] + if (pdf_enable_xfa_bmp) { + sources += [ + "core/fxcodec/bmp/cfx_bmpcontext.cpp", + "core/fxcodec/bmp/cfx_bmpcontext.h", + "core/fxcodec/bmp/cfx_bmpdecompressor.cpp", + "core/fxcodec/bmp/cfx_bmpdecompressor.h", + "core/fxcodec/bmp/fx_bmp.cpp", + "core/fxcodec/bmp/fx_bmp.h", + "core/fxcodec/codec/ccodec_bmpmodule.cpp", + "core/fxcodec/codec/ccodec_bmpmodule.h", + ] + } if (pdf_enable_xfa_gif) { sources += [ "core/fxcodec/codec/ccodec_gifmodule.cpp", diff --git a/core/fxcodec/codec/ccodec_progressivedecoder.h b/core/fxcodec/codec/ccodec_progressivedecoder.h index 07716a80ae..4eeb59d559 100644 --- a/core/fxcodec/codec/ccodec_progressivedecoder.h +++ b/core/fxcodec/codec/ccodec_progressivedecoder.h @@ -11,7 +11,6 @@ #include <utility> #include <vector> -#include "core/fxcodec/codec/ccodec_bmpmodule.h" #include "core/fxcodec/codec/ccodec_jpegmodule.h" #include "core/fxcodec/fx_codec_def.h" #include "core/fxcrt/fx_system.h" @@ -20,9 +19,13 @@ #include "core/fxge/dib/cfx_dibitmap.h" #include "core/fxge/fx_dib.h" +#ifdef PDF_ENABLE_XFA_BMP +#include "core/fxcodec/codec/ccodec_bmpmodule.h" +#endif // PDF_ENABLE_XFA_BMP + #ifdef PDF_ENABLE_XFA_GIF #include "core/fxcodec/codec/ccodec_gifmodule.h" -#endif // PDF_ENABLE_XFA_gif +#endif // PDF_ENABLE_XFA_GIF #ifdef PDF_ENABLE_XFA_PNG #include "core/fxcodec/codec/ccodec_pngmodule.h" @@ -38,14 +41,17 @@ class IFX_SeekableReadStream; class CCodec_Dummy {}; // Placeholder to work around C++ syntax issues -class CCodec_ProgressiveDecoder : public CCodec_BmpModule::Delegate, +class CCodec_ProgressiveDecoder : +#ifdef PDF_ENABLE_XFA_BMP + public CCodec_BmpModule::Delegate, +#endif // PDF_ENABLE_XFA_BMP #ifdef PDF_ENABLE_XFA_GIF - public CCodec_GifModule::Delegate, + public CCodec_GifModule::Delegate, #endif // PDF_ENABLE_XFA_GIF #ifdef PDF_ENABLE_XFA_PNG - public CCodec_PngModule::Delegate, + public CCodec_PngModule::Delegate, #endif // PDF_ENABLE_XFA_PNG - public CCodec_Dummy { + public CCodec_Dummy { public: enum FXCodec_Format { FXCodec_Invalid = 0, @@ -166,17 +172,21 @@ class CCodec_ProgressiveDecoder : public CCodec_BmpModule::Delegate, void GifReadScanline(int32_t row_num, uint8_t* row_buf) override; #endif // PDF_ENABLE_XFA_GIF +#ifdef PDF_ENABLE_XFA_BMP // CCodec_BmpModule::Delegate bool BmpInputImagePositionBuf(uint32_t rcd_pos) override; void BmpReadScanline(uint32_t row_num, const std::vector<uint8_t>& row_buf) override; +#endif // PDF_ENABLE_XFA_BMP private: +#ifdef PDF_ENABLE_XFA_BMP bool BmpReadMoreData(CCodec_BmpModule* pBmpModule, FXCODEC_STATUS& err_status); bool BmpDetectImageType(CFX_DIBAttribute* pAttribute, uint32_t size); FXCODEC_STATUS BmpStartDecode(const RetainPtr<CFX_DIBitmap>& pDIBitmap); FXCODEC_STATUS BmpContinueDecode(); +#endif // PDF_ENABLE_XFA_BMP #ifdef PDF_ENABLE_XFA_GIF bool GifReadMoreData(CCodec_GifModule* pGifModule, @@ -234,14 +244,16 @@ class CCodec_ProgressiveDecoder : public CCodec_BmpModule::Delegate, RetainPtr<IFX_SeekableReadStream> m_pFile; RetainPtr<CFX_DIBitmap> m_pDeviceBitmap; UnownedPtr<CCodec_ModuleMgr> m_pCodecMgr; +#ifdef PDF_ENABLE_XFA_BMP + std::unique_ptr<CCodec_BmpModule::Context> m_pBmpContext; +#endif // PDF_ENABLE_XFA_BMP +#ifdef PDF_ENABLE_XFA_GIF + std::unique_ptr<CCodec_GifModule::Context> m_pGifContext; +#endif // PDF_ENABLE_XFA_GIF std::unique_ptr<CCodec_JpegModule::Context> m_pJpegContext; #ifdef PDF_ENABLE_XFA_PNG std::unique_ptr<CCodec_PngModule::Context> m_pPngContext; #endif // PDF_ENABLE_XFA_PNG -#ifdef PDF_ENABLE_XFA_GIF - std::unique_ptr<CCodec_GifModule::Context> m_pGifContext; -#endif // PDF_ENABLE_XFA_GIF - std::unique_ptr<CCodec_BmpModule::Context> m_pBmpContext; #ifdef PDF_ENABLE_XFA_TIFF std::unique_ptr<CCodec_TiffModule::Context> m_pTiffContext; #endif // PDF_ENABLE_XFA_TIFF @@ -279,7 +291,9 @@ class CCodec_ProgressiveDecoder : public CCodec_BmpModule::Delegate, FX_RECT m_GifFrameRect; bool m_InvalidateGifBuffer; #endif // PDF_ENABLE_XFA_GIF +#ifdef PDF_ENABLE_XFA_BMP bool m_BmpIsTopBottom; +#endif // PDF_ENABLE_XFA_BMP FXCODEC_STATUS m_status; }; diff --git a/core/fxcodec/codec/fx_codec.cpp b/core/fxcodec/codec/fx_codec.cpp index e58da052aa..d81e8f756c 100644 --- a/core/fxcodec/codec/fx_codec.cpp +++ b/core/fxcodec/codec/fx_codec.cpp @@ -1510,17 +1510,20 @@ bool CCodec_BasicModule::A85Encode(const uint8_t* src_buf, #ifdef PDF_ENABLE_XFA CFX_DIBAttribute::CFX_DIBAttribute() - : m_nXDPI(-1), - m_nYDPI(-1), - m_fAspectRatio(-1.0f), - m_wDPIUnit(0), + : +#ifdef PDF_ENABLE_XFA_BMP + m_nBmpCompressType(0), +#endif // PDF_ENABLE_BMP #ifdef PDF_ENABLE_XFA_GIF m_nGifLeft(0), m_nGifTop(0), m_pGifLocalPalette(nullptr), m_nGifLocalPalNum(0), #endif // PDF_ENABLE_XFA_GIF - m_nBmpCompressType(0) { + m_nXDPI(-1), + m_nYDPI(-1), + m_fAspectRatio(-1.0f), + m_wDPIUnit(0) { } CFX_DIBAttribute::~CFX_DIBAttribute() { diff --git a/core/fxcodec/codec/fx_codec_progress.cpp b/core/fxcodec/codec/fx_codec_progress.cpp index 1d6bc708db..e45dff6682 100644 --- a/core/fxcodec/codec/fx_codec_progress.cpp +++ b/core/fxcodec/codec/fx_codec_progress.cpp @@ -283,7 +283,9 @@ CCodec_ProgressiveDecoder::CCodec_ProgressiveDecoder( m_GifFrameRect = FX_RECT(0, 0, 0, 0); m_InvalidateGifBuffer = true; #endif // PDF_ENABLE_XFA_GIF +#ifdef PDF_ENABLE_XFA_BMP m_BmpIsTopBottom = false; +#endif // PDF_ENABLE_XFA_BMP } CCodec_ProgressiveDecoder::~CCodec_ProgressiveDecoder() { @@ -613,6 +615,7 @@ void CCodec_ProgressiveDecoder::GifReadScanline(int32_t row_num, } #endif // PDF_ENABLE_XFA_GIF +#ifdef PDF_ENABLE_XFA_BMP bool CCodec_ProgressiveDecoder::BmpInputImagePositionBuf(uint32_t rcd_pos) { m_offSet = rcd_pos; FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; @@ -926,6 +929,7 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::BmpContinueDecode() { return m_status; } } +#endif // PDF_ENABLE_XFA_BMP #ifdef PDF_ENABLE_XFA_GIF bool CCodec_ProgressiveDecoder::GifReadMoreData(CCodec_GifModule* pGifModule, @@ -1733,18 +1737,20 @@ bool CCodec_ProgressiveDecoder::DetectImageType(FXCODEC_IMAGE_TYPE imageType, memset(m_pSrcBuf, 0, size); m_SrcSize = size; switch (imageType) { +#ifdef PDF_ENABLE_XFA_BMP case FXCODEC_IMAGE_BMP: return BmpDetectImageType(pAttribute, size); +#endif // PDF_ENABLE_XFA_BMP +#ifdef PDF_ENABLE_XFA_GIF + case FXCODEC_IMAGE_GIF: + return GifDetectImageType(pAttribute, size); +#endif // PDF_ENABLE_XFA_GIF case FXCODEC_IMAGE_JPG: return JpegDetectImageType(pAttribute, size); #ifdef PDF_ENABLE_XFA_PNG case FXCODEC_IMAGE_PNG: return PngDetectImageType(pAttribute, size); #endif // PDF_ENABLE_XFA_PNG -#ifdef PDF_ENABLE_XFA_GIF - case FXCODEC_IMAGE_GIF: - return GifDetectImageType(pAttribute, size); -#endif // PDF_ENABLE_XFA_GIF #ifdef PDF_ENABLE_XFA_TIFF case FXCODEC_IMAGE_TIFF: return TiffDetectImageType(pAttribute, size); @@ -1794,9 +1800,9 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::LoadImageInfo( if (bSkipImageTypeCheck) return m_status; - for (int type = FXCODEC_IMAGE_BMP; type < FXCODEC_IMAGE_MAX; type++) { - if (DetectImageType((FXCODEC_IMAGE_TYPE)type, pAttribute)) { - m_imagType = (FXCODEC_IMAGE_TYPE)type; + for (int type = FXCODEC_IMAGE_UNKNOWN + 1; type < FXCODEC_IMAGE_MAX; type++) { + if (DetectImageType(static_cast<FXCODEC_IMAGE_TYPE>(type), pAttribute)) { + m_imagType = static_cast<FXCODEC_IMAGE_TYPE>(type); m_status = FXCODEC_STATUS_FRAME_READY; return m_status; } @@ -2065,6 +2071,7 @@ void CCodec_ProgressiveDecoder::ReSampleScanline( dest_scan += dest_bytes_per_pixel - 3; } break; case 12: { +#ifdef PDF_ENABLE_XFA_BMP if (m_pBmpContext) { int dest_r = 0; int dest_g = 0; @@ -2082,26 +2089,27 @@ void CCodec_ProgressiveDecoder::ReSampleScanline( *dest_scan++ = (uint8_t)((dest_g) >> 16); *dest_scan++ = (uint8_t)((dest_r) >> 16); *dest_scan++ = 0xFF; - } else { - int dest_a = 0; - int dest_r = 0; - int dest_g = 0; - int dest_b = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - unsigned long argb = m_pSrcPalette[src_scan[j]]; - dest_a += pixel_weight * (uint8_t)(argb >> 24); - dest_r += pixel_weight * (uint8_t)(argb >> 16); - dest_g += pixel_weight * (uint8_t)(argb >> 8); - dest_b += pixel_weight * (uint8_t)argb; - } - *dest_scan++ = (uint8_t)((dest_b) >> 16); - *dest_scan++ = (uint8_t)((dest_g) >> 16); - *dest_scan++ = (uint8_t)((dest_r) >> 16); - *dest_scan++ = (uint8_t)((dest_a) >> 16); + break; + } +#endif // PDF_ENABLE_XFA_BMP + int dest_a = 0; + int dest_r = 0; + int dest_g = 0; + int dest_b = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + unsigned long argb = m_pSrcPalette[src_scan[j]]; + dest_a += pixel_weight * (uint8_t)(argb >> 24); + dest_r += pixel_weight * (uint8_t)(argb >> 16); + dest_g += pixel_weight * (uint8_t)(argb >> 8); + dest_b += pixel_weight * (uint8_t)argb; } + *dest_scan++ = (uint8_t)((dest_b) >> 16); + *dest_scan++ = (uint8_t)((dest_g) >> 16); + *dest_scan++ = (uint8_t)((dest_r) >> 16); + *dest_scan++ = (uint8_t)((dest_a) >> 16); } break; case 9: { uint32_t dest_b = 0; @@ -2306,8 +2314,10 @@ std::pair<FXCODEC_STATUS, size_t> CCodec_ProgressiveDecoder::GetFrames() { } switch (m_imagType) { - case FXCODEC_IMAGE_JPG: +#ifdef PDF_ENABLE_XFA_BMP case FXCODEC_IMAGE_BMP: +#endif // PDF_ENABLE_XFA_BMP + case FXCODEC_IMAGE_JPG: #ifdef PDF_ENABLE_XFA_PNG case FXCODEC_IMAGE_PNG: #endif // PDF_ENABLE_XFA_PNG @@ -2405,18 +2415,20 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::StartDecode( return FXCODEC_STATUS_ERR_PARAMS; } switch (m_imagType) { +#ifdef PDF_ENABLE_XFA_BMP + case FXCODEC_IMAGE_BMP: + return BmpStartDecode(pDIBitmap); +#endif // PDF_ENABLE_XFA_BMP +#ifdef PDF_ENABLE_XFA_GIF + case FXCODEC_IMAGE_GIF: + return GifStartDecode(pDIBitmap); +#endif // PDF_ENABLE_XFA_GIF case FXCODEC_IMAGE_JPG: return JpegStartDecode(pDIBitmap); #ifdef PDF_ENABLE_XFA_PNG case FXCODEC_IMAGE_PNG: return PngStartDecode(pDIBitmap); #endif // PDF_ENABLE_XFA_PNG -#ifdef PDF_ENABLE_XFA_GIF - case FXCODEC_IMAGE_GIF: - return GifStartDecode(pDIBitmap); -#endif // PDF_ENABLE_XFA_GIF - case FXCODEC_IMAGE_BMP: - return BmpStartDecode(pDIBitmap); #ifdef PDF_ENABLE_XFA_TIFF case FXCODEC_IMAGE_TIFF: m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; @@ -2432,18 +2444,20 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::ContinueDecode() { return FXCODEC_STATUS_ERROR; switch (m_imagType) { +#ifdef PDF_ENABLE_XFA_BMP + case FXCODEC_IMAGE_BMP: + return BmpContinueDecode(); +#endif // PDF_ENABLE_XFA_BMP +#ifdef PDF_ENABLE_XFA_GIF + case FXCODEC_IMAGE_GIF: + return GifContinueDecode(); +#endif // PDF_ENABLE_XFA_GIF case FXCODEC_IMAGE_JPG: return JpegContinueDecode(); #ifdef PDF_ENABLE_XFA_PNG case FXCODEC_IMAGE_PNG: return PngContinueDecode(); #endif // PDF_ENABLE_XFA_PNG -#ifdef PDF_ENABLE_XFA_GIF - case FXCODEC_IMAGE_GIF: - return GifContinueDecode(); -#endif // PDF_ENABLE_XFA_GIF - case FXCODEC_IMAGE_BMP: - return BmpContinueDecode(); #ifdef PDF_ENABLE_XFA_TIFF case FXCODEC_IMAGE_TIFF: return TiffContinueDecode(); diff --git a/core/fxcodec/fx_codec.h b/core/fxcodec/fx_codec.h index b5e8d8ad39..91d9f2fb32 100644 --- a/core/fxcodec/fx_codec.h +++ b/core/fxcodec/fx_codec.h @@ -19,7 +19,9 @@ #include "core/fxcrt/fx_string.h" #ifdef PDF_ENABLE_XFA +#ifdef PDF_ENABLE_XFA_BMP #include "core/fxcodec/codec/ccodec_bmpmodule.h" +#endif // PDF_ENABLE_XFA_BMP #ifdef PDF_ENABLE_XFA_GIF #include "core/fxcodec/codec/ccodec_gifmodule.h" @@ -54,17 +56,20 @@ class CFX_DIBAttribute { CFX_DIBAttribute(); ~CFX_DIBAttribute(); - int32_t m_nXDPI; - int32_t m_nYDPI; - float m_fAspectRatio; - uint16_t m_wDPIUnit; +#ifdef PDF_ENABLE_XFA_BMP + int32_t m_nBmpCompressType; +#endif // PDF_ENABLE_XFA_BMP #ifdef PDF_ENABLE_XFA_GIF int32_t m_nGifLeft; int32_t m_nGifTop; uint32_t* m_pGifLocalPalette; uint32_t m_nGifLocalPalNum; #endif // PDF_ENABLE_XFA_GIF - int32_t m_nBmpCompressType; + + int32_t m_nXDPI; + int32_t m_nYDPI; + float m_fAspectRatio; + uint16_t m_wDPIUnit; std::map<uint32_t, void*> m_Exif; }; #endif // PDF_ENABLE_XFA @@ -84,10 +89,13 @@ class CCodec_ModuleMgr { #ifdef PDF_ENABLE_XFA std::unique_ptr<CCodec_ProgressiveDecoder> CreateProgressiveDecoder(); + +#ifdef PDF_ENABLE_XFA_BMP CCodec_BmpModule* GetBmpModule() const { return m_pBmpModule.get(); } void SetBmpModule(std::unique_ptr<CCodec_BmpModule> module) { m_pBmpModule = std::move(module); } +#endif // PDF_ENABLE_XFA_BMP #ifdef PDF_ENABLE_XFA_GIF CCodec_GifModule* GetGifModule() const { return m_pGifModule.get(); } @@ -120,7 +128,9 @@ class CCodec_ModuleMgr { std::unique_ptr<CCodec_IccModule> m_pIccModule; #ifdef PDF_ENABLE_XFA +#ifdef PDF_ENABLE_XFA_BMP std::unique_ptr<CCodec_BmpModule> m_pBmpModule; +#endif // PDF_ENABLE_XFA_BMP #ifdef PDF_ENABLE_XFA_GIF std::unique_ptr<CCodec_GifModule> m_pGifModule; diff --git a/core/fxcodec/fx_codec_def.h b/core/fxcodec/fx_codec_def.h index f7d6916aa5..154fe967ee 100644 --- a/core/fxcodec/fx_codec_def.h +++ b/core/fxcodec/fx_codec_def.h @@ -26,7 +26,9 @@ enum FXCODEC_STATUS { #ifdef PDF_ENABLE_XFA enum FXCODEC_IMAGE_TYPE { FXCODEC_IMAGE_UNKNOWN = 0, +#ifdef PDF_ENABLE_XFA_BMP FXCODEC_IMAGE_BMP, +#endif // PDF_ENABLE_XFA_BMP FXCODEC_IMAGE_JPG, #ifdef PDF_ENABLE_XFA_PNG FXCODEC_IMAGE_PNG, diff --git a/testing/libfuzzer/BUILD.gn b/testing/libfuzzer/BUILD.gn index 1d17d3d4e7..2b2c19389b 100644 --- a/testing/libfuzzer/BUILD.gn +++ b/testing/libfuzzer/BUILD.gn @@ -39,12 +39,14 @@ group("libfuzzer") { if (pdf_enable_xfa) { deps += [ ":pdf_cfx_barcode_fuzzer", - ":pdf_codec_bmp_fuzzer", ":pdf_codec_jpeg_fuzzer", ":pdf_css_fuzzer", ":pdf_fm2js_fuzzer", ":pdf_formcalc_fuzzer", ] + if (pdf_enable_xfa_bmp) { + deps += [ ":pdf_codec_bmp_fuzzer" ] + } if (pdf_enable_xfa_gif) { deps += [ ":pdf_codec_gif_fuzzer", @@ -85,11 +87,13 @@ if (pdf_enable_xfa) { ] } - pdfium_fuzzer("pdf_codec_bmp_fuzzer") { - sources = [ - "pdf_codec_bmp_fuzzer.cc", - "xfa_codec_fuzzer.h", - ] + if (pdf_enable_xfa_bmp) { + pdfium_fuzzer("pdf_codec_bmp_fuzzer") { + sources = [ + "pdf_codec_bmp_fuzzer.cc", + "xfa_codec_fuzzer.h", + ] + } } if (pdf_enable_xfa_gif) { diff --git a/testing/libfuzzer/xfa_codec_fuzzer.h b/testing/libfuzzer/xfa_codec_fuzzer.h index 483177e232..bcc3a5c7fe 100644 --- a/testing/libfuzzer/xfa_codec_fuzzer.h +++ b/testing/libfuzzer/xfa_codec_fuzzer.h @@ -7,13 +7,16 @@ #include <memory> -#include "core/fxcodec/codec/ccodec_bmpmodule.h" #include "core/fxcodec/codec/ccodec_progressivedecoder.h" #include "core/fxcodec/fx_codec.h" #include "core/fxge/dib/cfx_dibitmap.h" #include "testing/fx_string_testhelpers.h" #include "third_party/base/ptr_util.h" +#ifdef PDF_ENABLE_XFA_BMP +#include "core/fxcodec/codec/ccodec_bmpmodule.h" +#endif // PDF_ENABLE_XFA_BMP + #ifdef PDF_ENABLE_XFA_GIF #include "core/fxcodec/codec/ccodec_gifmodule.h" #endif // PDF_ENABLE_XFA_GIF @@ -34,7 +37,9 @@ class XFACodecFuzzer { public: static int Fuzz(const uint8_t* data, size_t size, FXCODEC_IMAGE_TYPE type) { auto mgr = pdfium::MakeUnique<CCodec_ModuleMgr>(); +#ifdef PDF_ENABLE_XFA_BMP mgr->SetBmpModule(pdfium::MakeUnique<CCodec_BmpModule>()); +#endif // PDF_ENABLE_XFA_BMP #ifdef PDF_ENABLE_XFA_GIF mgr->SetGifModule(pdfium::MakeUnique<CCodec_GifModule>()); #endif // PDF_ENABLE_XFA_GIF diff --git a/xfa/fxfa/cxfa_ffwidget.cpp b/xfa/fxfa/cxfa_ffwidget.cpp index 3c5a3411a7..c9bb072cb9 100644 --- a/xfa/fxfa/cxfa_ffwidget.cpp +++ b/xfa/fxfa/cxfa_ffwidget.cpp @@ -40,7 +40,9 @@ FXDIB_Format XFA_GetDIBFormat(FXCODEC_IMAGE_TYPE type, int32_t iBitsPerComponent) { FXDIB_Format dibFormat = FXDIB_Argb; switch (type) { +#ifdef PDF_ENABLE_XFA_BMP case FXCODEC_IMAGE_BMP: +#endif // PDF_ENABLE_XFA_BMP case FXCODEC_IMAGE_JPG: #ifdef PDF_ENABLE_XFA_TIFF case FXCODEC_IMAGE_TIFF: diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp index f178bd92a9..af3ad63f72 100644 --- a/xfa/fxfa/parser/cxfa_node.cpp +++ b/xfa/fxfa/parser/cxfa_node.cpp @@ -163,22 +163,30 @@ int32_t XFA_Base64Decode(const char* pStr, uint8_t* pOutBuffer) { FXCODEC_IMAGE_TYPE XFA_GetImageType(const WideString& wsType) { WideString wsContentType(wsType); wsContentType.MakeLower(); + +#ifdef PDF_ENABLE_XFA_BMP + if (wsContentType == L"image/bmp") + return FXCODEC_IMAGE_BMP; +#endif // PDF_ENABLE_XFA_BMP + +#ifdef PDF_ENABLE_XFA_GIF + if (wsContentType == L"image/gif") + return FXCODEC_IMAGE_GIF; +#endif // PDF_ENABLE_XFA_GIF + if (wsContentType == L"image/jpg") return FXCODEC_IMAGE_JPG; + #ifdef PDF_ENABLE_XFA_PNG if (wsContentType == L"image/png") return FXCODEC_IMAGE_PNG; #endif // PDF_ENABLE_XFA_PNG -#ifdef PDF_ENABLE_XFA_GIF - if (wsContentType == L"image/gif") - return FXCODEC_IMAGE_GIF; -#endif // PDF_ENABLE_XFA_GIF - if (wsContentType == L"image/bmp") - return FXCODEC_IMAGE_BMP; + #ifdef PDF_ENABLE_XFA_TIFF if (wsContentType == L"image/tif") return FXCODEC_IMAGE_TIFF; #endif // PDF_ENABLE_XFA_TIFF + return FXCODEC_IMAGE_UNKNOWN; } |