summaryrefslogtreecommitdiff
path: root/core/fxcodec/codec/fx_codec_progress.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcodec/codec/fx_codec_progress.cpp')
-rw-r--r--core/fxcodec/codec/fx_codec_progress.cpp92
1 files changed, 53 insertions, 39 deletions
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();