From 0d86f765b8361b7f9f3a5fcc659de2f52c806bd0 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Fri, 25 May 2018 21:17:49 +0000 Subject: Add proper const/non-const versions of CPDF_Dictionary::GetStreamFor(). BUG=pdfium:234 Change-Id: Ia3e758bbe5c445c3856f5215e900e02a16b4d7d7 Reviewed-on: https://pdfium-review.googlesource.com/32910 Commit-Queue: Lei Zhang Reviewed-by: dsinclair --- core/fpdfapi/render/cpdf_dibsource.cpp | 36 ++++++++++++++++--------------- core/fpdfapi/render/cpdf_dibsource.h | 2 +- core/fpdfapi/render/cpdf_renderstatus.cpp | 4 ++-- core/fpdfapi/render/cpdf_renderstatus.h | 2 +- 4 files changed, 23 insertions(+), 21 deletions(-) (limited to 'core/fpdfapi/render') diff --git a/core/fpdfapi/render/cpdf_dibsource.cpp b/core/fpdfapi/render/cpdf_dibsource.cpp index 3732edaed4..b2ebc74279 100644 --- a/core/fpdfapi/render/cpdf_dibsource.cpp +++ b/core/fpdfapi/render/cpdf_dibsource.cpp @@ -297,7 +297,7 @@ CPDF_DIBSource::LoadState CPDF_DIBSource::ContinueLoadDIBSource( if (!m_pJbig2Context) { m_pJbig2Context = pdfium::MakeUnique(); if (m_pStreamAcc->GetImageParam()) { - CPDF_Stream* pGlobals = + const CPDF_Stream* pGlobals = m_pStreamAcc->GetImageParam()->GetStreamFor("JBIG2Globals"); if (pGlobals) { m_pGlobalStream = pdfium::MakeRetain(pGlobals); @@ -653,24 +653,26 @@ RetainPtr CPDF_DIBSource::LoadJpxBitmap() { CPDF_DIBSource::LoadState CPDF_DIBSource::StartLoadMask() { m_MatteColor = 0XFFFFFFFF; m_pMaskStream = m_pDict->GetStreamFor("SMask"); - if (m_pMaskStream) { - CPDF_Array* pMatte = m_pMaskStream->GetDict()->GetArrayFor("Matte"); - if (pMatte && m_pColorSpace && m_Family != PDFCS_PATTERN && - m_pColorSpace->CountComponents() <= m_nComponents) { - float R, G, B; - std::vector colors(m_nComponents); - for (uint32_t i = 0; i < m_nComponents; i++) - colors[i] = pMatte->GetFloatAt(i); - - m_pColorSpace->GetRGB(colors.data(), &R, &G, &B); - m_MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255), - FXSYS_round(B * 255)); - } - return StartLoadMaskDIB(); + if (!m_pMaskStream) { + m_pMaskStream = ToStream(m_pDict->GetDirectObjectFor("Mask")); + return m_pMaskStream ? StartLoadMaskDIB() : LoadState::kSuccess; } - m_pMaskStream = ToStream(m_pDict->GetDirectObjectFor("Mask")); - return m_pMaskStream ? StartLoadMaskDIB() : LoadState::kSuccess; + CPDF_Array* pMatte = m_pMaskStream->GetDict()->GetArrayFor("Matte"); + if (pMatte && m_pColorSpace && m_Family != PDFCS_PATTERN && + m_pColorSpace->CountComponents() <= m_nComponents) { + std::vector colors(m_nComponents); + for (uint32_t i = 0; i < m_nComponents; i++) + colors[i] = pMatte->GetFloatAt(i); + + float R; + float G; + float B; + m_pColorSpace->GetRGB(colors.data(), &R, &G, &B); + m_MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255), + FXSYS_round(B * 255)); + } + return StartLoadMaskDIB(); } CPDF_DIBSource::LoadState CPDF_DIBSource::ContinueLoadMaskDIB( diff --git a/core/fpdfapi/render/cpdf_dibsource.h b/core/fpdfapi/render/cpdf_dibsource.h index 50d9c6ef9c..fc390c2f6f 100644 --- a/core/fpdfapi/render/cpdf_dibsource.h +++ b/core/fpdfapi/render/cpdf_dibsource.h @@ -156,7 +156,7 @@ class CPDF_DIBSource : public CFX_DIBSource { // Must come after |m_pCachedBitmap|. std::unique_ptr m_pJbig2Context; - UnownedPtr m_pMaskStream; + UnownedPtr m_pMaskStream; LoadState m_Status = LoadState::kFail; }; diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp index 89cddbaa25..8c3c8796e4 100644 --- a/core/fpdfapi/render/cpdf_renderstatus.cpp +++ b/core/fpdfapi/render/cpdf_renderstatus.cpp @@ -1467,7 +1467,7 @@ bool CPDF_RenderStatus::ProcessTransparency(CPDF_PageObject* pPageObj, if (blend_type == FXDIB_BLEND_UNSUPPORTED) return true; - const CPDF_Dictionary* pSMaskDict = + CPDF_Dictionary* pSMaskDict = ToDictionary(pPageObj->m_GeneralState.GetSoftMask()); if (pSMaskDict) { if (pPageObj->IsImage() && @@ -2525,7 +2525,7 @@ void CPDF_RenderStatus::CompositeDIBitmap( } RetainPtr CPDF_RenderStatus::LoadSMask( - const CPDF_Dictionary* pSMaskDict, + CPDF_Dictionary* pSMaskDict, FX_RECT* pClipRect, const CFX_Matrix* pMatrix) { if (!pSMaskDict) diff --git a/core/fpdfapi/render/cpdf_renderstatus.h b/core/fpdfapi/render/cpdf_renderstatus.h index 19d613c02e..7dee8142c4 100644 --- a/core/fpdfapi/render/cpdf_renderstatus.h +++ b/core/fpdfapi/render/cpdf_renderstatus.h @@ -149,7 +149,7 @@ class CPDF_RenderStatus { bool bBackAlphaRequired, int* left, int* top); - RetainPtr LoadSMask(const CPDF_Dictionary* pSMaskDict, + RetainPtr LoadSMask(CPDF_Dictionary* pSMaskDict, FX_RECT* pClipRect, const CFX_Matrix* pMatrix); // Optionally write the colorspace family value into |pCSFamily|. -- cgit v1.2.3