| Index: core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp
|
| diff --git a/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp b/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp
|
| index a5a91ebc53ba719e09d0a6705c601a5aa9acfced..9096bf938e8d49591bb0a234b3f7ee1439746287 100644
|
| --- a/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp
|
| +++ b/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp
|
| @@ -190,8 +190,10 @@ void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap, FX_INT32 iCompress, IFX_F
|
| }
|
| }
|
| const CFX_DIBitmap* pMaskBitmap = NULL;
|
| + FX_BOOL bDeleteMask = FALSE;
|
| if (pBitmap->HasAlpha()) {
|
| pMaskBitmap = pBitmap->GetAlphaMask();
|
| + bDeleteMask = TRUE;
|
| }
|
| if (!pMaskBitmap && pMask) {
|
| FXDIB_Format maskFormat = pMask->GetFormat();
|
| @@ -204,7 +206,6 @@ void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap, FX_INT32 iCompress, IFX_F
|
| FX_INT32 maskHeight = pMaskBitmap->GetHeight();
|
| FX_LPBYTE mask_buf = NULL;
|
| FX_STRSIZE mask_size;
|
| - FX_BOOL bDeleteMask = TRUE;
|
| CPDF_Dictionary* pMaskDict = new CPDF_Dictionary;
|
| pMaskDict->SetAtName(FX_BSTRC("Type"), FX_BSTRC("XObject"));
|
| pMaskDict->SetAtName(FX_BSTRC("Subtype"), FX_BSTRC("Image"));
|
| @@ -223,24 +224,20 @@ void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap, FX_INT32 iCompress, IFX_F
|
| FXSYS_memcpy32(mask_buf + a * maskWidth, pMaskBitmap->GetScanline(a), maskWidth);
|
| }
|
| }
|
| - if (pMaskDict) {
|
| - pMaskDict->SetAtInteger(FX_BSTRC("Length"), mask_size);
|
| - CPDF_Stream* pMaskStream = NULL;
|
| - if (bUseMatte) {
|
| - int a, r, g, b;
|
| - ArgbDecode(*(pParam->pMatteColor), a, r, g, b);
|
| - CPDF_Array* pMatte = new CPDF_Array;
|
| - pMatte->AddInteger(r);
|
| - pMatte->AddInteger(g);
|
| - pMatte->AddInteger(b);
|
| - pMaskDict->SetAt(FX_BSTRC("Matte"), pMatte);
|
| - }
|
| - pMaskStream = new CPDF_Stream(mask_buf, mask_size, pMaskDict);
|
| - m_pDocument->AddIndirectObject(pMaskStream);
|
| - bDeleteMask = FALSE;
|
| - pDict->SetAtReference(FX_BSTRC("SMask"), m_pDocument, pMaskStream);
|
| + pMaskDict->SetAtInteger(FX_BSTRC("Length"), mask_size);
|
| + if (bUseMatte) {
|
| + int a, r, g, b;
|
| + ArgbDecode(*(pParam->pMatteColor), a, r, g, b);
|
| + CPDF_Array* pMatte = new CPDF_Array;
|
| + pMatte->AddInteger(r);
|
| + pMatte->AddInteger(g);
|
| + pMatte->AddInteger(b);
|
| + pMaskDict->SetAt(FX_BSTRC("Matte"), pMatte);
|
| }
|
| - if (pBitmap->HasAlpha()) {
|
| + CPDF_Stream* pMaskStream = new CPDF_Stream(mask_buf, mask_size, pMaskDict);
|
| + m_pDocument->AddIndirectObject(pMaskStream);
|
| + pDict->SetAtReference(FX_BSTRC("SMask"), m_pDocument, pMaskStream);
|
| + if (bDeleteMask) {
|
| delete pMaskBitmap;
|
| }
|
| }
|
|
|