diff options
Diffstat (limited to 'core/fpdfapi/render/cpdf_dibsource.cpp')
-rw-r--r-- | core/fpdfapi/render/cpdf_dibsource.cpp | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/core/fpdfapi/render/cpdf_dibsource.cpp b/core/fpdfapi/render/cpdf_dibsource.cpp index f3703dd23a..899a783c47 100644 --- a/core/fpdfapi/render/cpdf_dibsource.cpp +++ b/core/fpdfapi/render/cpdf_dibsource.cpp @@ -8,7 +8,6 @@ #include <algorithm> #include <memory> -#include <utility> #include <vector> #include "core/fpdfapi/cpdf_modulemgr.h" @@ -127,11 +126,12 @@ CPDF_DIBSource::CPDF_DIBSource() CPDF_DIBSource::~CPDF_DIBSource() { FX_Free(m_pMaskedLine); FX_Free(m_pLineBuf); - m_pCachedBitmap.Reset(); // TODO(tsepez): determine if required early here. + m_pCachedBitmap.reset(); FX_Free(m_pCompData); CPDF_ColorSpace* pCS = m_pColorSpace; - if (pCS && m_pDocument) + if (pCS && m_pDocument) { m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray()); + } } bool CPDF_DIBSource::Load(CPDF_Document* pDoc, const CPDF_Stream* pStream) { @@ -332,7 +332,7 @@ int CPDF_DIBSource::ContinueLoadDIBSource(IFX_Pause* pPause) { m_pStreamAcc.get(), m_pGlobalStream.get(), m_pCachedBitmap->GetBuffer(), m_pCachedBitmap->GetPitch(), pPause); if (ret < 0) { - m_pCachedBitmap.Reset(); + m_pCachedBitmap.reset(); m_pGlobalStream.reset(); m_pJbig2Context.reset(); return 0; @@ -355,7 +355,7 @@ int CPDF_DIBSource::ContinueLoadDIBSource(IFX_Pause* pPause) { } ret = pJbig2Module->ContinueDecode(m_pJbig2Context.get(), pPause); if (ret < 0) { - m_pCachedBitmap.Reset(); + m_pCachedBitmap.reset(); m_pGlobalStream.reset(); m_pJbig2Context.reset(); return 0; @@ -507,10 +507,10 @@ int CPDF_DIBSource::CreateDecoder() { return m_pCachedBitmap ? 1 : 0; } if (decoder == "JBIG2Decode") { - m_pCachedBitmap = pdfium::MakeRetain<CFX_DIBitmap>(); + m_pCachedBitmap = pdfium::MakeUnique<CFX_DIBitmap>(); if (!m_pCachedBitmap->Create( m_Width, m_Height, m_bImageMask ? FXDIB_1bppMask : FXDIB_1bppRgb)) { - m_pCachedBitmap.Reset(); + m_pCachedBitmap.reset(); return 0; } m_Status = 1; @@ -656,9 +656,9 @@ void CPDF_DIBSource::LoadJpxBitmap() { format = FXDIB_Rgb; } - m_pCachedBitmap = pdfium::MakeRetain<CFX_DIBitmap>(); + m_pCachedBitmap = pdfium::MakeUnique<CFX_DIBitmap>(); if (!m_pCachedBitmap->Create(width, height, format)) { - m_pCachedBitmap.Reset(); + m_pCachedBitmap.reset(); return; } m_pCachedBitmap->Clear(0xFFFFFFFF); @@ -671,7 +671,7 @@ void CPDF_DIBSource::LoadJpxBitmap() { } if (!pJpxModule->Decode(context->decoder(), m_pCachedBitmap->GetBuffer(), m_pCachedBitmap->GetPitch(), output_offsets)) { - m_pCachedBitmap.Reset(); + m_pCachedBitmap.reset(); return; } if (m_pColorSpace && m_pColorSpace->GetFamily() == PDFCS_INDEXED && @@ -713,29 +713,32 @@ int CPDF_DIBSource::StratLoadMask() { } int CPDF_DIBSource::ContinueLoadMaskDIB(IFX_Pause* pPause) { - if (!m_pMask) + if (!m_pMask) { return 1; - + } int ret = m_pMask->ContinueLoadDIBSource(pPause); - if (ret == 2) + if (ret == 2) { return ret; - - if (m_pColorSpace && m_bStdCS) + } + if (m_pColorSpace && m_bStdCS) { m_pColorSpace->EnableStdConversion(false); - + } if (!ret) { - m_pMask.Reset(); + delete m_pMask; + m_pMask = nullptr; return ret; } return 1; } -CFX_RetainPtr<CPDF_DIBSource> CPDF_DIBSource::DetachMask() { - return std::move(m_pMask); +CPDF_DIBSource* CPDF_DIBSource::DetachMask() { + CPDF_DIBSource* pDIBSource = m_pMask; + m_pMask = nullptr; + return pDIBSource; } int CPDF_DIBSource::StartLoadMaskDIB() { - m_pMask = pdfium::MakeRetain<CPDF_DIBSource>(); + m_pMask = new CPDF_DIBSource; int ret = m_pMask->StartLoadDIBSource(m_pDocument, m_pMaskStream, false, nullptr, nullptr, true); if (ret == 2) { @@ -744,7 +747,8 @@ int CPDF_DIBSource::StartLoadMaskDIB() { return 2; } if (!ret) { - m_pMask.Reset(); + delete m_pMask; + m_pMask = nullptr; return 1; } return 1; |