Encapsulate CPDF_RenderContext::m_ObjectHolder and m_Matrix Bug: pdfium:1680 Change-Id: I8dd51a2045a7afdfd0b528268c22ef52dc25afc8 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/80052 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/render/cpdf_progressiverenderer.cpp b/core/fpdfapi/render/cpdf_progressiverenderer.cpp index 5e94df8..43e4075 100644 --- a/core/fpdfapi/render/cpdf_progressiverenderer.cpp +++ b/core/fpdfapi/render/cpdf_progressiverenderer.cpp
@@ -46,26 +46,26 @@ return; } m_pCurrentLayer = m_pContext->GetLayer(m_LayerIndex); - m_LastObjectRendered = m_pCurrentLayer->m_pObjectHolder->end(); + m_LastObjectRendered = m_pCurrentLayer->GetObjectHolder()->end(); m_pRenderStatus = std::make_unique<CPDF_RenderStatus>(m_pContext.Get(), m_pDevice.Get()); if (m_pOptions) m_pRenderStatus->SetOptions(*m_pOptions); m_pRenderStatus->SetTransparency( - m_pCurrentLayer->m_pObjectHolder->GetTransparency()); + m_pCurrentLayer->GetObjectHolder()->GetTransparency()); m_pRenderStatus->Initialize(nullptr, nullptr); m_pDevice->SaveState(); - m_ClipRect = m_pCurrentLayer->m_Matrix.GetInverse().TransformRect( + m_ClipRect = m_pCurrentLayer->GetMatrix().GetInverse().TransformRect( CFX_FloatRect(m_pDevice->GetClipBox())); } CPDF_PageObjectHolder::const_iterator iter; CPDF_PageObjectHolder::const_iterator iterEnd = - m_pCurrentLayer->m_pObjectHolder->end(); + m_pCurrentLayer->GetObjectHolder()->end(); if (m_LastObjectRendered != iterEnd) { iter = m_LastObjectRendered; ++iter; } else { - iter = m_pCurrentLayer->m_pObjectHolder->begin(); + iter = m_pCurrentLayer->GetObjectHolder()->begin(); } int nObjsToGo = kStepLimit; bool is_mask = false; @@ -80,13 +80,13 @@ if (m_pDevice->GetDeviceType() == DeviceType::kPrinter) { m_LastObjectRendered = iter; m_pRenderStatus->ProcessClipPath(pCurObj->m_ClipPath, - m_pCurrentLayer->m_Matrix); + m_pCurrentLayer->GetMatrix()); return; } is_mask = true; } if (m_pRenderStatus->ContinueSingleObject( - pCurObj, m_pCurrentLayer->m_Matrix, pPause)) { + pCurObj, m_pCurrentLayer->GetMatrix(), pPause)) { return; } if (pCurObj->IsImage() && m_pRenderStatus->GetRenderOptions() @@ -110,7 +110,7 @@ if (is_mask && iter != iterEnd) return; } - if (m_pCurrentLayer->m_pObjectHolder->GetParseState() == + if (m_pCurrentLayer->GetObjectHolder()->GetParseState() == CPDF_PageObjectHolder::ParseState::kParsed) { m_pRenderStatus.reset(); m_pDevice->RestoreState(false); @@ -121,8 +121,8 @@ } else if (is_mask) { return; } else { - m_pCurrentLayer->m_pObjectHolder->ContinueParse(pPause); - if (m_pCurrentLayer->m_pObjectHolder->GetParseState() != + m_pCurrentLayer->GetObjectHolder()->ContinueParse(pPause); + if (m_pCurrentLayer->GetObjectHolder()->GetParseState() != CPDF_PageObjectHolder::ParseState::kParsed) { return; }
diff --git a/core/fpdfapi/render/cpdf_rendercontext.cpp b/core/fpdfapi/render/cpdf_rendercontext.cpp index 2367c96..14facbd 100644 --- a/core/fpdfapi/render/cpdf_rendercontext.cpp +++ b/core/fpdfapi/render/cpdf_rendercontext.cpp
@@ -62,14 +62,14 @@ if (pOptions) status.SetOptions(*pOptions); status.SetStopObject(pStopObj); - status.SetTransparency(layer.m_pObjectHolder->GetTransparency()); - CFX_Matrix final_matrix = layer.m_Matrix; + status.SetTransparency(layer.GetObjectHolder()->GetTransparency()); + CFX_Matrix final_matrix = layer.GetMatrix(); if (pLastMatrix) { final_matrix *= *pLastMatrix; status.SetDeviceMatrix(*pLastMatrix); } status.Initialize(nullptr, nullptr); - status.RenderObjectList(layer.m_pObjectHolder.Get(), final_matrix); + status.RenderObjectList(layer.GetObjectHolder(), final_matrix); if (status.GetRenderOptions().GetOptions().bLimitedImageCache) { m_pPageCache->CacheOptimization( status.GetRenderOptions().GetCacheSizeLimit());
diff --git a/core/fpdfapi/render/cpdf_rendercontext.h b/core/fpdfapi/render/cpdf_rendercontext.h index ec99c58..66e2323 100644 --- a/core/fpdfapi/render/cpdf_rendercontext.h +++ b/core/fpdfapi/render/cpdf_rendercontext.h
@@ -31,6 +31,13 @@ Layer(const Layer& that); ~Layer(); + CPDF_PageObjectHolder* GetObjectHolder() { return m_pObjectHolder.Get(); } + const CPDF_PageObjectHolder* GetObjectHolder() const { + return m_pObjectHolder.Get(); + } + const CFX_Matrix& GetMatrix() const { return m_Matrix; } + + private: UnownedPtr<CPDF_PageObjectHolder> const m_pObjectHolder; const CFX_Matrix m_Matrix; };