Pass CPDF_RenderStatus to CPDF_ImageRenderer constructor.
Then mark member as const.
Change-Id: I54f9d4bd7f41b1e1fe4a334b8e128c1b29065b85
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/95610
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/render/cpdf_imagerenderer.cpp b/core/fpdfapi/render/cpdf_imagerenderer.cpp
index c89e8d8..5cc1a4d 100644
--- a/core/fpdfapi/render/cpdf_imagerenderer.cpp
+++ b/core/fpdfapi/render/cpdf_imagerenderer.cpp
@@ -57,7 +57,8 @@
} // namespace
-CPDF_ImageRenderer::CPDF_ImageRenderer() = default;
+CPDF_ImageRenderer::CPDF_ImageRenderer(CPDF_RenderStatus* pStatus)
+ : m_pRenderStatus(pStatus) {}
CPDF_ImageRenderer::~CPDF_ImageRenderer() = default;
@@ -161,13 +162,11 @@
return StartDIBBase();
}
-bool CPDF_ImageRenderer::Start(CPDF_RenderStatus* pStatus,
- CPDF_ImageObject* pImageObject,
+bool CPDF_ImageRenderer::Start(CPDF_ImageObject* pImageObject,
const CFX_Matrix& mtObj2Device,
bool bStdCS,
BlendMode blendType) {
DCHECK(pImageObject);
- m_pRenderStatus = pStatus;
m_bStdCS = bStdCS;
m_pImageObject = pImageObject;
m_BlendType = blendType;
@@ -183,13 +182,11 @@
return StartRenderDIBBase();
}
-bool CPDF_ImageRenderer::Start(CPDF_RenderStatus* pStatus,
- const RetainPtr<CFX_DIBBase>& pDIBBase,
+bool CPDF_ImageRenderer::Start(const RetainPtr<CFX_DIBBase>& pDIBBase,
FX_ARGB bitmap_argb,
const CFX_Matrix& mtImage2Device,
const FXDIB_ResampleOptions& options,
bool bStdCS) {
- m_pRenderStatus = pStatus;
m_pDIBBase = pDIBBase;
m_FillArgb = bitmap_argb;
m_BitmapAlpha = 255;
@@ -230,9 +227,9 @@
bitmap_render.SetStdCS(true);
bitmap_render.Initialize(nullptr, nullptr);
- CPDF_ImageRenderer image_render;
- if (image_render.Start(&bitmap_render, pDIBBase, 0xffffffff, mtNewMatrix,
- m_ResampleOptions, true)) {
+ CPDF_ImageRenderer image_render(&bitmap_render);
+ if (image_render.Start(pDIBBase, 0xffffffff, mtNewMatrix, m_ResampleOptions,
+ true)) {
image_render.Continue(nullptr);
}
if (m_Loader.MatteColor() == 0xffffffff)
@@ -345,9 +342,8 @@
bitmap_render.SetDropObjects(m_pRenderStatus->GetDropObjects());
bitmap_render.SetStdCS(true);
bitmap_render.Initialize(nullptr, nullptr);
- CPDF_ImageRenderer image_render;
- if (image_render.Start(&bitmap_render, m_pDIBBase, 0, new_matrix,
- m_ResampleOptions, true)) {
+ CPDF_ImageRenderer image_render(&bitmap_render);
+ if (image_render.Start(m_pDIBBase, 0, new_matrix, m_ResampleOptions, true)) {
image_render.Continue(nullptr);
}
CFX_DefaultRenderDevice bitmap_device2;
diff --git a/core/fpdfapi/render/cpdf_imagerenderer.h b/core/fpdfapi/render/cpdf_imagerenderer.h
index faf842c..084bed7 100644
--- a/core/fpdfapi/render/cpdf_imagerenderer.h
+++ b/core/fpdfapi/render/cpdf_imagerenderer.h
@@ -27,17 +27,15 @@
class CPDF_ImageRenderer {
public:
- CPDF_ImageRenderer();
+ explicit CPDF_ImageRenderer(CPDF_RenderStatus* pStatus);
~CPDF_ImageRenderer();
- bool Start(CPDF_RenderStatus* pStatus,
- CPDF_ImageObject* pImageObject,
+ bool Start(CPDF_ImageObject* pImageObject,
const CFX_Matrix& mtObj2Device,
bool bStdCS,
BlendMode blendType);
- bool Start(CPDF_RenderStatus* pStatus,
- const RetainPtr<CFX_DIBBase>& pDIBBase,
+ bool Start(const RetainPtr<CFX_DIBBase>& pDIBBase,
FX_ARGB bitmap_argb,
const CFX_Matrix& mtImage2Device,
const FXDIB_ResampleOptions& options,
@@ -80,7 +78,7 @@
int* width,
int* height) const;
- UnownedPtr<CPDF_RenderStatus> m_pRenderStatus;
+ UnownedPtr<CPDF_RenderStatus> const m_pRenderStatus;
UnownedPtr<CPDF_ImageObject> m_pImageObject;
RetainPtr<CPDF_Pattern> m_pPattern;
RetainPtr<CFX_DIBBase> m_pDIBBase;
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index dacea1a..6c3b541 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -278,8 +278,8 @@
return false;
}
- m_pImageRenderer = std::make_unique<CPDF_ImageRenderer>();
- if (!m_pImageRenderer->Start(this, pObj->AsImage(), mtObj2Device, false,
+ m_pImageRenderer = std::make_unique<CPDF_ImageRenderer>(this);
+ if (!m_pImageRenderer->Start(pObj->AsImage(), mtObj2Device, false,
BlendMode::kNormal)) {
if (!m_pImageRenderer->GetResult())
DrawObjWithBackground(pObj, mtObj2Device);
@@ -1014,9 +1014,9 @@
} else if (pType3Char->GetBitmap()) {
if (m_bPrint) {
CFX_Matrix image_matrix = pType3Char->matrix() * matrix;
- CPDF_ImageRenderer renderer;
- if (renderer.Start(this, pType3Char->GetBitmap(), fill_argb,
- image_matrix, FXDIB_ResampleOptions(), false)) {
+ CPDF_ImageRenderer renderer(this);
+ if (renderer.Start(pType3Char->GetBitmap(), fill_argb, image_matrix,
+ FXDIB_ResampleOptions(), false)) {
renderer.Continue(nullptr);
}
if (!renderer.GetResult())
@@ -1240,8 +1240,8 @@
bool CPDF_RenderStatus::ProcessImage(CPDF_ImageObject* pImageObj,
const CFX_Matrix& mtObj2Device) {
- CPDF_ImageRenderer render;
- if (render.Start(this, pImageObj, mtObj2Device, m_bStdCS, m_curBlend))
+ CPDF_ImageRenderer render(this);
+ if (render.Start(pImageObj, mtObj2Device, m_bStdCS, m_curBlend))
render.Continue(nullptr);
return render.GetResult();
}
diff --git a/fpdfsdk/fpdf_editimg.cpp b/fpdfsdk/fpdf_editimg.cpp
index 863451f..87189eb 100644
--- a/fpdfsdk/fpdf_editimg.cpp
+++ b/fpdfsdk/fpdf_editimg.cpp
@@ -237,7 +237,7 @@
CFX_DefaultRenderDevice device;
device.Attach(result_bitmap);
CPDF_RenderStatus status(&context, &device);
- CPDF_ImageRenderer renderer;
+ CPDF_ImageRenderer renderer(&status);
// Need to first flip the image, as expected by |renderer|.
CFX_Matrix render_matrix(1, 0, 0, -1, 0, output_height);
@@ -246,7 +246,7 @@
render_matrix.Translate(-image_matrix.e, image_matrix.f);
// Do the actual rendering.
- bool should_continue = renderer.Start(&status, image, render_matrix,
+ bool should_continue = renderer.Start(image, render_matrix,
/*bStdCS=*/false, BlendMode::kNormal);
while (should_continue)
should_continue = renderer.Continue(/*pPause=*/nullptr);