Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2615)

Unified Diff: core/src/fpdfapi/fpdf_render/fpdf_render.cpp

Issue 1700183002: Remove CFX_PtrList from renderer main loop. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Nits. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « core/src/fpdfapi/fpdf_page/pageint.h ('k') | core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: core/src/fpdfapi/fpdf_render/fpdf_render.cpp
diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render.cpp
index 0023ee92dea26231f811d7731448329a30bef0d2..147de51f4df1a709c5d9cd21d68f7cf919c46de1 100644
--- a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp
+++ b/core/src/fpdfapi/fpdf_render/fpdf_render.cpp
@@ -244,29 +244,24 @@ void CPDF_RenderStatus::RenderObjectList(
CFX_Matrix device2object;
device2object.SetReverse(*pObj2Device);
device2object.TransformRect(clip_rect);
- int index = 0;
- FX_POSITION pos = pObjectHolder->GetPageObjectList()->GetHeadPosition();
- while (pos) {
- index++;
- CPDF_PageObject* pCurObj =
- pObjectHolder->GetPageObjectList()->GetNextObject(pos);
- if (pCurObj == m_pStopObj) {
+
+ for (const auto& pCurObj : *pObjectHolder->GetPageObjectList()) {
+ if (pCurObj.get() == m_pStopObj) {
m_bStopped = TRUE;
return;
}
- if (!pCurObj) {
+ if (!pCurObj)
continue;
- }
- if (!pCurObj || pCurObj->m_Left > clip_rect.right ||
+
+ if (pCurObj->m_Left > clip_rect.right ||
pCurObj->m_Right < clip_rect.left ||
pCurObj->m_Bottom > clip_rect.top ||
pCurObj->m_Top < clip_rect.bottom) {
continue;
}
- RenderSingleObject(pCurObj, pObj2Device);
- if (m_bStopped) {
+ RenderSingleObject(pCurObj.get(), pObj2Device);
+ if (m_bStopped)
return;
- }
}
}
void CPDF_RenderStatus::RenderSingleObject(const CPDF_PageObject* pObj,
@@ -1037,8 +1032,7 @@ CPDF_ProgressiveRenderer::CPDF_ProgressiveRenderer(
m_pDevice(pDevice),
m_pOptions(pOptions),
m_LayerIndex(0),
- m_pCurrentLayer(nullptr),
- m_LastObjectRendered(nullptr) {}
+ m_pCurrentLayer(nullptr) {}
CPDF_ProgressiveRenderer::~CPDF_ProgressiveRenderer() {
if (m_pRenderStatus)
@@ -1062,7 +1056,8 @@ void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) {
return;
}
m_pCurrentLayer = m_pContext->GetLayer(m_LayerIndex);
- m_LastObjectRendered = nullptr;
+ m_LastObjectRendered =
+ m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->end();
m_pRenderStatus.reset(new CPDF_RenderStatus());
m_pRenderStatus->Initialize(
m_pContext, m_pDevice, NULL, NULL, NULL, NULL, m_pOptions,
@@ -1073,19 +1068,18 @@ void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) {
device2object.SetReverse(m_pCurrentLayer->m_Matrix);
device2object.TransformRect(m_ClipRect);
}
- FX_POSITION pos;
- if (m_LastObjectRendered) {
- pos = m_LastObjectRendered;
- m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->GetNextObject(pos);
+ CPDF_PageObjectList::iterator iter;
+ CPDF_PageObjectList::iterator iterEnd =
+ m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->end();
+ if (m_LastObjectRendered != iterEnd) {
+ iter = m_LastObjectRendered;
+ ++iter;
} else {
- pos = m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()
- ->GetHeadPosition();
+ iter = m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->begin();
}
int nObjsToGo = kStepLimit;
- while (pos) {
- CPDF_PageObject* pCurObj =
- m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->GetObjectAt(
- pos);
+ while (iter != iterEnd) {
+ CPDF_PageObject* pCurObj = iter->get();
if (pCurObj && pCurObj->m_Left <= m_ClipRect.right &&
pCurObj->m_Right >= m_ClipRect.left &&
pCurObj->m_Bottom <= m_ClipRect.top &&
@@ -1106,19 +1100,18 @@ void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) {
--nObjsToGo;
}
}
- m_LastObjectRendered = pos;
+ m_LastObjectRendered = iter;
if (nObjsToGo == 0) {
if (pPause && pPause->NeedToPauseNow())
return;
nObjsToGo = kStepLimit;
}
- m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->GetNextObject(pos);
+ ++iter;
}
if (m_pCurrentLayer->m_pObjectHolder->IsParsed()) {
m_pRenderStatus.reset();
m_pDevice->RestoreState();
m_pCurrentLayer = nullptr;
- m_LastObjectRendered = nullptr;
m_LayerIndex++;
if (pPause && pPause->NeedToPauseNow()) {
return;
« no previous file with comments | « core/src/fpdfapi/fpdf_page/pageint.h ('k') | core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698