| Index: core/fpdfapi/fpdf_page/cpdf_image.cpp
|
| diff --git a/core/fpdfapi/fpdf_page/cpdf_image.cpp b/core/fpdfapi/fpdf_page/cpdf_image.cpp
|
| index d9e7d774be526695c9904c961a85cace523b64af..7b114841be773dee29dd2878b01093c72f24276f 100644
|
| --- a/core/fpdfapi/fpdf_page/cpdf_image.cpp
|
| +++ b/core/fpdfapi/fpdf_page/cpdf_image.cpp
|
| @@ -153,11 +153,7 @@ void CPDF_Image::SetJpegImage(IFX_FileRead* pFile) {
|
| m_pStream->InitStreamFromFile(pFile, pDict);
|
| }
|
|
|
| -void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap,
|
| - int32_t iCompress,
|
| - IFX_FileWrite* pFileWrite,
|
| - IFX_FileRead* pFileRead,
|
| - const CFX_DIBitmap* pMask) {
|
| +void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap, int32_t iCompress) {
|
| int32_t BitmapWidth = pBitmap->GetWidth();
|
| int32_t BitmapHeight = pBitmap->GetHeight();
|
| if (BitmapWidth < 1 || BitmapHeight < 1) {
|
| @@ -262,12 +258,6 @@ void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap,
|
| pMaskBitmap = pBitmap->GetAlphaMask();
|
| bDeleteMask = TRUE;
|
| }
|
| - if (!pMaskBitmap && pMask) {
|
| - FXDIB_Format maskFormat = pMask->GetFormat();
|
| - if (maskFormat == FXDIB_1bppMask || maskFormat == FXDIB_8bppMask) {
|
| - pMaskBitmap = pMask;
|
| - }
|
| - }
|
| if (pMaskBitmap) {
|
| int32_t maskWidth = pMaskBitmap->GetWidth();
|
| int32_t maskHeight = pMaskBitmap->GetHeight();
|
| @@ -300,7 +290,6 @@ void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap,
|
| delete pMaskBitmap;
|
| }
|
| }
|
| - FX_BOOL bStream = pFileWrite && pFileRead;
|
| if (opType == 0) {
|
| if (iCompress & PDF_IMAGE_LOSSLESS_COMPRESS) {
|
| } else {
|
| @@ -309,7 +298,7 @@ void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap,
|
| CFX_DIBitmap* pNewBitmap = new CFX_DIBitmap();
|
| pNewBitmap->Copy(pBitmap);
|
| pNewBitmap->ConvertFormat(FXDIB_Rgb);
|
| - SetImage(pNewBitmap, iCompress, pFileWrite, pFileRead);
|
| + SetImage(pNewBitmap, iCompress);
|
| if (pDict) {
|
| pDict->Release();
|
| pDict = NULL;
|
| @@ -321,35 +310,20 @@ void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap,
|
| return;
|
| }
|
| }
|
| - if (bStream) {
|
| - pFileWrite->WriteBlock(dest_buf, dest_size);
|
| - FX_Free(dest_buf);
|
| - dest_buf = NULL;
|
| - }
|
| } else if (opType == 1) {
|
| - if (!bStream) {
|
| - dest_buf = FX_Alloc2D(uint8_t, dest_pitch, BitmapHeight);
|
| - dest_size =
|
| - dest_pitch * BitmapHeight; // Safe since checked alloc returned.
|
| - }
|
| + dest_buf = FX_Alloc2D(uint8_t, dest_pitch, BitmapHeight);
|
| + dest_size = dest_pitch * BitmapHeight; // Safe as checked alloc returned.
|
| +
|
| uint8_t* pDest = dest_buf;
|
| for (int32_t i = 0; i < BitmapHeight; i++) {
|
| - if (!bStream) {
|
| - FXSYS_memcpy(pDest, src_buf, dest_pitch);
|
| - pDest += dest_pitch;
|
| - } else {
|
| - pFileWrite->WriteBlock(src_buf, dest_pitch);
|
| - }
|
| + FXSYS_memcpy(pDest, src_buf, dest_pitch);
|
| + pDest += dest_pitch;
|
| src_buf += src_pitch;
|
| }
|
| } else if (opType == 2) {
|
| - if (!bStream) {
|
| - dest_buf = FX_Alloc2D(uint8_t, dest_pitch, BitmapHeight);
|
| - dest_size =
|
| - dest_pitch * BitmapHeight; // Safe since checked alloc returned.
|
| - } else {
|
| - dest_buf = FX_Alloc(uint8_t, dest_pitch);
|
| - }
|
| + dest_buf = FX_Alloc2D(uint8_t, dest_pitch, BitmapHeight);
|
| + dest_size = dest_pitch * BitmapHeight; // Safe as checked alloc returned.
|
| +
|
| uint8_t* pDest = dest_buf;
|
| int32_t src_offset = 0;
|
| int32_t dest_offset = 0;
|
| @@ -363,28 +337,15 @@ void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap,
|
| dest_offset += 3;
|
| src_offset += bpp == 24 ? 3 : 4;
|
| }
|
| - if (bStream) {
|
| - pFileWrite->WriteBlock(pDest, dest_pitch);
|
| - pDest = dest_buf;
|
| - } else {
|
| - pDest += dest_pitch;
|
| - }
|
| +
|
| + pDest += dest_pitch;
|
| dest_offset = 0;
|
| }
|
| - if (bStream) {
|
| - FX_Free(dest_buf);
|
| - dest_buf = NULL;
|
| - }
|
| }
|
| if (!m_pStream) {
|
| m_pStream = new CPDF_Stream(NULL, 0, NULL);
|
| }
|
| - if (!bStream) {
|
| - m_pStream->InitStream(dest_buf, dest_size, pDict);
|
| - } else {
|
| - pFileWrite->Flush();
|
| - m_pStream->InitStreamFromFile(pFileRead, pDict);
|
| - }
|
| + m_pStream->InitStream(dest_buf, dest_size, pDict);
|
| m_bIsMask = pBitmap->IsAlphaMask();
|
| m_Width = BitmapWidth;
|
| m_Height = BitmapHeight;
|
|
|