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;
};