Unify CPDF_RenderContext constructor.
Stop peeking into page itself, let caller provide args.
Change-Id: Icfbe0f2272461c809c1cebdb5afd4636cd472002
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/64950
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/render/cpdf_rendercontext.cpp b/core/fpdfapi/render/cpdf_rendercontext.cpp
index 543eb62..e303aab 100644
--- a/core/fpdfapi/render/cpdf_rendercontext.cpp
+++ b/core/fpdfapi/render/cpdf_rendercontext.cpp
@@ -6,7 +6,6 @@
#include "core/fpdfapi/render/cpdf_rendercontext.h"
-#include "core/fpdfapi/page/cpdf_page.h"
#include "core/fpdfapi/page/cpdf_pageobject.h"
#include "core/fpdfapi/page/cpdf_pageobjectholder.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
@@ -21,17 +20,14 @@
#include "core/fxge/dib/cfx_dibitmap.h"
#include "core/fxge/fx_dib.h"
-CPDF_RenderContext::CPDF_RenderContext(CPDF_Page* pPage)
- : m_pDocument(pPage->GetDocument()),
- m_pPageResources(pPage->m_pPageResources.Get()),
- m_pPageCache(
- static_cast<CPDF_PageRenderCache*>(pPage->GetRenderCache())) {}
-
CPDF_RenderContext::CPDF_RenderContext(CPDF_Document* pDoc,
+ CPDF_Dictionary* pPageResources,
CPDF_PageRenderCache* pPageCache)
- : m_pDocument(pDoc), m_pPageResources(nullptr), m_pPageCache(pPageCache) {}
+ : m_pDocument(pDoc),
+ m_pPageResources(pPageResources),
+ m_pPageCache(pPageCache) {}
-CPDF_RenderContext::~CPDF_RenderContext() {}
+CPDF_RenderContext::~CPDF_RenderContext() = default;
void CPDF_RenderContext::GetBackground(const RetainPtr<CFX_DIBitmap>& pBuffer,
const CPDF_PageObject* pObj,
diff --git a/core/fpdfapi/render/cpdf_rendercontext.h b/core/fpdfapi/render/cpdf_rendercontext.h
index 679d11b..d9efbc4 100644
--- a/core/fpdfapi/render/cpdf_rendercontext.h
+++ b/core/fpdfapi/render/cpdf_rendercontext.h
@@ -15,7 +15,6 @@
class CPDF_Dictionary;
class CPDF_Document;
-class CPDF_Page;
class CPDF_PageObject;
class CPDF_PageObjectHolder;
class CPDF_PageRenderCache;
@@ -36,8 +35,9 @@
CFX_Matrix m_Matrix;
};
- explicit CPDF_RenderContext(CPDF_Page* pPage);
- CPDF_RenderContext(CPDF_Document* pDoc, CPDF_PageRenderCache* pPageCache);
+ CPDF_RenderContext(CPDF_Document* pDoc,
+ CPDF_Dictionary* pPageResources,
+ CPDF_PageRenderCache* pPageCache);
~CPDF_RenderContext();
void AppendLayer(CPDF_PageObjectHolder* pObjectHolder,
@@ -66,8 +66,8 @@
protected:
UnownedPtr<CPDF_Document> const m_pDocument;
- RetainPtr<CPDF_Dictionary> m_pPageResources;
- UnownedPtr<CPDF_PageRenderCache> m_pPageCache;
+ RetainPtr<CPDF_Dictionary> const m_pPageResources;
+ UnownedPtr<CPDF_PageRenderCache> const m_pPageCache;
std::vector<Layer> m_Layers;
};
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index b72602a..79d31b9 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -108,7 +108,7 @@
options.GetOptions() = draw_options;
options.GetOptions().bForceHalftone = true;
- CPDF_RenderContext context(pDoc, pCache);
+ CPDF_RenderContext context(pDoc, nullptr, pCache);
context.AppendLayer(pPatternForm, &mtPattern2Bitmap);
context.Render(&bitmap_device, &options, nullptr);
#if defined _SKIA_SUPPORT_PATHS_
diff --git a/core/fpdfdoc/cpdf_annot.cpp b/core/fpdfdoc/cpdf_annot.cpp
index 9142a90..f474074 100644
--- a/core/fpdfdoc/cpdf_annot.cpp
+++ b/core/fpdfdoc/cpdf_annot.cpp
@@ -18,6 +18,7 @@
#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_document.h"
#include "core/fpdfapi/parser/fpdf_parser_utility.h"
+#include "core/fpdfapi/render/cpdf_pagerendercache.h"
#include "core/fpdfapi/render/cpdf_rendercontext.h"
#include "core/fpdfapi/render/cpdf_renderoptions.h"
#include "core/fpdfdoc/cpvt_generateap.h"
@@ -399,7 +400,9 @@
if (!pForm)
return false;
- CPDF_RenderContext context(pPage);
+ CPDF_RenderContext context(
+ pPage->GetDocument(), pPage->m_pPageResources.Get(),
+ static_cast<CPDF_PageRenderCache*>(pPage->GetRenderCache()));
context.AppendLayer(pForm, &matrix);
context.Render(pDevice, pOptions, nullptr);
return true;
diff --git a/fpdfsdk/fpdf_view.cpp b/fpdfsdk/fpdf_view.cpp
index e69d237..194e92f 100644
--- a/fpdfsdk/fpdf_view.cpp
+++ b/fpdfsdk/fpdf_view.cpp
@@ -109,7 +109,10 @@
pContext->m_pDevice->SaveState();
pContext->m_pDevice->SetBaseClip(clipping_rect);
pContext->m_pDevice->SetClip_Rect(clipping_rect);
- pContext->m_pContext = pdfium::MakeUnique<CPDF_RenderContext>(pPage);
+ pContext->m_pContext = pdfium::MakeUnique<CPDF_RenderContext>(
+ pPage->GetDocument(), pPage->m_pPageResources.Get(),
+ static_cast<CPDF_PageRenderCache*>(pPage->GetRenderCache()));
+
pContext->m_pContext->AppendLayer(pPage, &matrix);
if (flags & FPDF_ANNOT) {