| 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 0ea941a1e6be4e2184728a2db12b60888477af02..0023ee92dea26231f811d7731448329a30bef0d2 100644
|
| --- a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp
|
| +++ b/core/src/fpdfapi/fpdf_render/fpdf_render.cpp
|
| @@ -237,17 +237,19 @@ FX_BOOL CPDF_RenderStatus::Initialize(CPDF_RenderContext* pContext,
|
| m_Transparency = transparency;
|
| return TRUE;
|
| }
|
| -void CPDF_RenderStatus::RenderObjectList(const CPDF_PageObjectList* pObjs,
|
| - const CFX_Matrix* pObj2Device) {
|
| +void CPDF_RenderStatus::RenderObjectList(
|
| + const CPDF_PageObjectHolder* pObjectHolder,
|
| + const CFX_Matrix* pObj2Device) {
|
| CFX_FloatRect clip_rect = m_pDevice->GetClipBox();
|
| CFX_Matrix device2object;
|
| device2object.SetReverse(*pObj2Device);
|
| device2object.TransformRect(clip_rect);
|
| int index = 0;
|
| - FX_POSITION pos = pObjs->GetFirstObjectPosition();
|
| + FX_POSITION pos = pObjectHolder->GetPageObjectList()->GetHeadPosition();
|
| while (pos) {
|
| index++;
|
| - CPDF_PageObject* pCurObj = pObjs->GetNextObject(pos);
|
| + CPDF_PageObject* pCurObj =
|
| + pObjectHolder->GetPageObjectList()->GetNextObject(pos);
|
| if (pCurObj == m_pStopObj) {
|
| m_bStopped = TRUE;
|
| return;
|
| @@ -971,10 +973,10 @@ CPDF_RenderContext::CPDF_RenderContext(CPDF_Document* pDoc,
|
|
|
| CPDF_RenderContext::~CPDF_RenderContext() {}
|
|
|
| -void CPDF_RenderContext::AppendLayer(CPDF_PageObjectList* pObjs,
|
| +void CPDF_RenderContext::AppendLayer(CPDF_PageObjectHolder* pObjectHolder,
|
| const CFX_Matrix* pObject2Device) {
|
| Layer* pLayer = m_Layers.AddSpace();
|
| - pLayer->m_pObjectList = pObjs;
|
| + pLayer->m_pObjectHolder = pObjectHolder;
|
| if (pObject2Device) {
|
| pLayer->m_Matrix = *pObject2Device;
|
| } else {
|
| @@ -999,9 +1001,9 @@ void CPDF_RenderContext::Render(CFX_RenderDevice* pDevice,
|
| FinalMatrix.Concat(*pLastMatrix);
|
| CPDF_RenderStatus status;
|
| status.Initialize(this, pDevice, pLastMatrix, pStopObj, NULL, NULL,
|
| - pOptions, pLayer->m_pObjectList->m_Transparency, FALSE,
|
| - NULL);
|
| - status.RenderObjectList(pLayer->m_pObjectList, &FinalMatrix);
|
| + pOptions, pLayer->m_pObjectHolder->m_Transparency,
|
| + FALSE, NULL);
|
| + status.RenderObjectList(pLayer->m_pObjectHolder, &FinalMatrix);
|
| if (status.m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) {
|
| m_pPageCache->CacheOptimization(status.m_Options.m_dwLimitCacheSize);
|
| }
|
| @@ -1012,8 +1014,8 @@ void CPDF_RenderContext::Render(CFX_RenderDevice* pDevice,
|
| } else {
|
| CPDF_RenderStatus status;
|
| status.Initialize(this, pDevice, NULL, pStopObj, NULL, NULL, pOptions,
|
| - pLayer->m_pObjectList->m_Transparency, FALSE, NULL);
|
| - status.RenderObjectList(pLayer->m_pObjectList, &pLayer->m_Matrix);
|
| + pLayer->m_pObjectHolder->m_Transparency, FALSE, NULL);
|
| + status.RenderObjectList(pLayer->m_pObjectHolder, &pLayer->m_Matrix);
|
| if (status.m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) {
|
| m_pPageCache->CacheOptimization(status.m_Options.m_dwLimitCacheSize);
|
| }
|
| @@ -1064,7 +1066,7 @@ void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) {
|
| m_pRenderStatus.reset(new CPDF_RenderStatus());
|
| m_pRenderStatus->Initialize(
|
| m_pContext, m_pDevice, NULL, NULL, NULL, NULL, m_pOptions,
|
| - m_pCurrentLayer->m_pObjectList->m_Transparency, FALSE, NULL);
|
| + m_pCurrentLayer->m_pObjectHolder->m_Transparency, FALSE, NULL);
|
| m_pDevice->SaveState();
|
| m_ClipRect = m_pDevice->GetClipBox();
|
| CFX_Matrix device2object;
|
| @@ -1074,14 +1076,16 @@ void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) {
|
| FX_POSITION pos;
|
| if (m_LastObjectRendered) {
|
| pos = m_LastObjectRendered;
|
| - m_pCurrentLayer->m_pObjectList->GetNextObject(pos);
|
| + m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->GetNextObject(pos);
|
| } else {
|
| - pos = m_pCurrentLayer->m_pObjectList->GetFirstObjectPosition();
|
| + pos = m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()
|
| + ->GetHeadPosition();
|
| }
|
| int nObjsToGo = kStepLimit;
|
| while (pos) {
|
| CPDF_PageObject* pCurObj =
|
| - m_pCurrentLayer->m_pObjectList->GetObjectAt(pos);
|
| + m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->GetObjectAt(
|
| + pos);
|
| if (pCurObj && pCurObj->m_Left <= m_ClipRect.right &&
|
| pCurObj->m_Right >= m_ClipRect.left &&
|
| pCurObj->m_Bottom <= m_ClipRect.top &&
|
| @@ -1108,9 +1112,9 @@ void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) {
|
| return;
|
| nObjsToGo = kStepLimit;
|
| }
|
| - m_pCurrentLayer->m_pObjectList->GetNextObject(pos);
|
| + m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->GetNextObject(pos);
|
| }
|
| - if (m_pCurrentLayer->m_pObjectList->IsParsed()) {
|
| + if (m_pCurrentLayer->m_pObjectHolder->IsParsed()) {
|
| m_pRenderStatus.reset();
|
| m_pDevice->RestoreState();
|
| m_pCurrentLayer = nullptr;
|
| @@ -1120,8 +1124,8 @@ void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) {
|
| return;
|
| }
|
| } else {
|
| - m_pCurrentLayer->m_pObjectList->ContinueParse(pPause);
|
| - if (!m_pCurrentLayer->m_pObjectList->IsParsed())
|
| + m_pCurrentLayer->m_pObjectHolder->ContinueParse(pPause);
|
| + if (!m_pCurrentLayer->m_pObjectHolder->IsParsed())
|
| return;
|
| }
|
| }
|
|
|