Change CFX_Matrix* params to CFX_Matrix& in core/fpdfapi/render.
Remove CPDF_ImageRenderer::DrawPatternImage()'s matrix parameter along
the way, since the argument passed is always the same member variable.
Change-Id: Id7f12c1d28fd625271022f6d5e67b05219e333dc
Reviewed-on: https://pdfium-review.googlesource.com/c/47530
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/render/cpdf_devicebuffer.h b/core/fpdfapi/render/cpdf_devicebuffer.h
index 8ccf2b7..00fd5c8 100644
--- a/core/fpdfapi/render/cpdf_devicebuffer.h
+++ b/core/fpdfapi/render/cpdf_devicebuffer.h
@@ -28,7 +28,7 @@
int max_dpi);
void OutputToDevice();
RetainPtr<CFX_DIBitmap> GetBitmap() const { return m_pBitmap; }
- const CFX_Matrix* GetMatrix() const { return &m_Matrix; }
+ const CFX_Matrix& GetMatrix() const { return m_Matrix; }
private:
UnownedPtr<CFX_RenderDevice> m_pDevice;
diff --git a/core/fpdfapi/render/cpdf_imagerenderer.cpp b/core/fpdfapi/render/cpdf_imagerenderer.cpp
index 90e1960..6149cca 100644
--- a/core/fpdfapi/render/cpdf_imagerenderer.cpp
+++ b/core/fpdfapi/render/cpdf_imagerenderer.cpp
@@ -115,7 +115,7 @@
return DrawMaskedImage();
if (m_bPatternColor)
- return DrawPatternImage(m_pObj2Device.Get());
+ return DrawPatternImage();
if (m_BitmapAlpha != 255 || !state.HasRef() || !state.GetFillOP() ||
state.GetOPMode() != 0 || state.GetBlendType() != BlendMode::kNormal ||
@@ -150,7 +150,7 @@
bool CPDF_ImageRenderer::Start(CPDF_RenderStatus* pStatus,
CPDF_ImageObject* pImageObject,
- const CFX_Matrix* pObj2Device,
+ const CFX_Matrix& mtObj2Device,
bool bStdCS,
BlendMode blendType) {
ASSERT(pImageObject);
@@ -158,13 +158,13 @@
m_bStdCS = bStdCS;
m_pImageObject = pImageObject;
m_BlendType = blendType;
- m_pObj2Device = pObj2Device;
+ m_mtObj2Device = mtObj2Device;
const CPDF_Dictionary* pOC = m_pImageObject->GetImage()->GetOC();
if (pOC && GetRenderOptions().GetOCContext() &&
!GetRenderOptions().GetOCContext()->CheckOCGVisible(pOC)) {
return false;
}
- m_ImageMatrix = m_pImageObject->matrix() * *pObj2Device;
+ m_ImageMatrix = m_pImageObject->matrix() * mtObj2Device;
if (StartLoadDIBBase())
return true;
return StartRenderDIBBase();
@@ -174,7 +174,7 @@
const RetainPtr<CFX_DIBBase>& pDIBBase,
FX_ARGB bitmap_argb,
int bitmap_alpha,
- const CFX_Matrix* pImage2Device,
+ const CFX_Matrix& mtImage2Device,
const FXDIB_ResampleOptions& options,
bool bStdCS,
BlendMode blendType) {
@@ -182,7 +182,7 @@
m_pDIBBase = pDIBBase;
m_FillArgb = bitmap_argb;
m_BitmapAlpha = bitmap_alpha;
- m_ImageMatrix = *pImage2Device;
+ m_ImageMatrix = mtImage2Device;
m_ResampleOptions = options;
m_bStdCS = bStdCS;
m_BlendType = blendType;
@@ -211,7 +211,7 @@
CFX_DefaultRenderDevice* pBitmapDevice1,
CFX_DefaultRenderDevice* pBitmapDevice2,
const RetainPtr<CFX_DIBBase>& pDIBBase,
- CFX_Matrix* pNewMatrix,
+ const CFX_Matrix& mtNewMatrix,
const FX_RECT& rect) const {
CPDF_RenderStatus bitmap_render(m_pRenderStatus->GetContext(),
pBitmapDevice2);
@@ -220,7 +220,7 @@
bitmap_render.Initialize(nullptr, nullptr);
CPDF_ImageRenderer image_render;
- if (image_render.Start(&bitmap_render, pDIBBase, 0xffffffff, 255, pNewMatrix,
+ if (image_render.Start(&bitmap_render, pDIBBase, 0xffffffff, 255, mtNewMatrix,
m_ResampleOptions, true, BlendMode::kNormal)) {
image_render.Continue(nullptr);
}
@@ -253,7 +253,7 @@
return m_pRenderStatus->GetRenderOptions();
}
-bool CPDF_ImageRenderer::DrawPatternImage(const CFX_Matrix* pObj2Device) {
+bool CPDF_ImageRenderer::DrawPatternImage() {
if (NotDrawing()) {
m_Result = false;
return false;
@@ -277,7 +277,7 @@
bitmap_render.SetStdCS(true);
bitmap_render.Initialize(nullptr, nullptr);
- CFX_Matrix patternDevice = *pObj2Device;
+ CFX_Matrix patternDevice = m_mtObj2Device;
patternDevice.Translate(static_cast<float>(-rect.left),
static_cast<float>(-rect.top));
if (CPDF_TilingPattern* pTilingPattern = m_pPattern->AsTilingPattern()) {
@@ -295,7 +295,7 @@
return true;
}
bitmap_device2.GetBitmap()->Clear(0);
- CalculateDrawImage(&bitmap_device1, &bitmap_device2, m_pDIBBase, &new_matrix,
+ CalculateDrawImage(&bitmap_device1, &bitmap_device2, m_pDIBBase, new_matrix,
rect);
bitmap_device2.GetBitmap()->ConvertFormat(FXDIB_8bppMask);
bitmap_device1.GetBitmap()->MultiplyAlpha(bitmap_device2.GetBitmap());
@@ -331,7 +331,7 @@
bitmap_render.SetStdCS(true);
bitmap_render.Initialize(nullptr, nullptr);
CPDF_ImageRenderer image_render;
- if (image_render.Start(&bitmap_render, m_pDIBBase, 0, 255, &new_matrix,
+ if (image_render.Start(&bitmap_render, m_pDIBBase, 0, 255, new_matrix,
m_ResampleOptions, true, BlendMode::kNormal)) {
image_render.Continue(nullptr);
}
@@ -346,7 +346,7 @@
bitmap_device2.GetBitmap()->Clear(0);
#endif
CalculateDrawImage(&bitmap_device1, &bitmap_device2, m_Loader.GetMask(),
- &new_matrix, rect);
+ new_matrix, rect);
#ifdef _SKIA_SUPPORT_
m_pRenderStatus->GetRenderDevice()->SetBitsWithMask(
bitmap_device1.GetBitmap(), bitmap_device2.GetBitmap(), rect.left,
diff --git a/core/fpdfapi/render/cpdf_imagerenderer.h b/core/fpdfapi/render/cpdf_imagerenderer.h
index 6befaf9..ed2cf7b 100644
--- a/core/fpdfapi/render/cpdf_imagerenderer.h
+++ b/core/fpdfapi/render/cpdf_imagerenderer.h
@@ -32,7 +32,7 @@
bool Start(CPDF_RenderStatus* pStatus,
CPDF_ImageObject* pImageObject,
- const CFX_Matrix* pObj2Device,
+ const CFX_Matrix& mtObj2Device,
bool bStdCS,
BlendMode blendType);
@@ -40,7 +40,7 @@
const RetainPtr<CFX_DIBBase>& pDIBBase,
FX_ARGB bitmap_argb,
int bitmap_alpha,
- const CFX_Matrix* pImage2Device,
+ const CFX_Matrix& mtImage2Device,
const FXDIB_ResampleOptions& options,
bool bStdCS,
BlendMode blendType);
@@ -54,23 +54,23 @@
bool StartRenderDIBBase();
bool StartLoadDIBBase();
bool DrawMaskedImage();
- bool DrawPatternImage(const CFX_Matrix* pObj2Device);
+ bool DrawPatternImage();
bool NotDrawing() const;
FX_RECT GetDrawRect() const;
CFX_Matrix GetDrawMatrix(const FX_RECT& rect) const;
void CalculateDrawImage(CFX_DefaultRenderDevice* bitmap_device1,
CFX_DefaultRenderDevice* bitmap_device2,
const RetainPtr<CFX_DIBBase>& pDIBBase,
- CFX_Matrix* pNewMatrix,
+ const CFX_Matrix& mtNewMatrix,
const FX_RECT& rect) const;
const CPDF_RenderOptions& GetRenderOptions() const;
void HandleFilters();
UnownedPtr<CPDF_RenderStatus> m_pRenderStatus;
UnownedPtr<CPDF_ImageObject> m_pImageObject;
- UnownedPtr<const CFX_Matrix> m_pObj2Device;
UnownedPtr<CPDF_Pattern> m_pPattern;
RetainPtr<CFX_DIBBase> m_pDIBBase;
+ CFX_Matrix m_mtObj2Device;
CFX_Matrix m_ImageMatrix;
CPDF_ImageLoader m_Loader;
std::unique_ptr<CFX_ImageTransformer> m_pTransformer;
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index 007bd8f..62e8986 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -1109,7 +1109,7 @@
}
m_pImageRenderer = pdfium::MakeUnique<CPDF_ImageRenderer>();
- if (!m_pImageRenderer->Start(this, pObj->AsImage(), &mtObj2Device, false,
+ if (!m_pImageRenderer->Start(this, pObj->AsImage(), mtObj2Device, false,
BlendMode::kNormal)) {
if (!m_pImageRenderer->GetResult())
DrawObjWithBackground(pObj, mtObj2Device);
@@ -1187,7 +1187,7 @@
res)) {
return;
}
- CFX_Matrix matrix = mtObj2Device * (*buffer.GetMatrix());
+ CFX_Matrix matrix = mtObj2Device * buffer.GetMatrix();
const CPDF_Dictionary* pFormResource = nullptr;
const CPDF_FormObject* pFormObj = pObj->AsForm();
if (pFormObj) {
@@ -1197,7 +1197,7 @@
}
CPDF_RenderStatus status(m_pContext.Get(), buffer.GetDevice());
status.SetOptions(m_Options);
- status.SetDeviceMatrix(*buffer.GetMatrix());
+ status.SetDeviceMatrix(buffer.GetMatrix());
status.SetTransparency(m_Transparency);
status.SetDropObjects(m_bDropObjects);
status.SetFormResource(pFormResource);
@@ -1903,7 +1903,7 @@
CFX_Matrix image_matrix = pType3Char->matrix() * matrix;
CPDF_ImageRenderer renderer;
if (renderer.Start(this, pType3Char->GetBitmap(), fill_argb, 255,
- &image_matrix, FXDIB_ResampleOptions(), false,
+ image_matrix, FXDIB_ResampleOptions(), false,
BlendMode::kNormal)) {
renderer.Continue(nullptr);
}
@@ -2007,7 +2007,7 @@
}
void CPDF_RenderStatus::DrawShading(const CPDF_ShadingPattern* pPattern,
- const CFX_Matrix* pMatrix,
+ const CFX_Matrix& mtMatrix,
const FX_RECT& clip_rect,
int alpha,
bool bAlphaMode) {
@@ -2035,17 +2035,17 @@
FX_RECT clip_rect_bbox = clip_rect;
if (pDict->KeyExist("BBox")) {
clip_rect_bbox.Intersect(
- pMatrix->TransformRect(pDict->GetRectFor("BBox")).GetOuterRect());
+ mtMatrix.TransformRect(pDict->GetRectFor("BBox")).GetOuterRect());
}
if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_SHADING &&
m_pDevice->GetDeviceDriver()->DrawShading(
- pPattern, pMatrix, clip_rect_bbox, alpha, bAlphaMode)) {
+ pPattern, &mtMatrix, clip_rect_bbox, alpha, bAlphaMode)) {
return;
}
CPDF_DeviceBuffer buffer;
buffer.Initialize(m_pContext.Get(), m_pDevice, clip_rect_bbox,
m_pCurObj.Get(), 150);
- CFX_Matrix FinalMatrix = *pMatrix * (*buffer.GetMatrix());
+ CFX_Matrix FinalMatrix = mtMatrix * buffer.GetMatrix();
RetainPtr<CFX_DIBitmap> pBitmap = buffer.GetBitmap();
if (!pBitmap->GetBuffer())
return;
@@ -2118,7 +2118,7 @@
int alpha =
FXSYS_round(255 * (bStroke ? pPageObj->m_GeneralState.GetStrokeAlpha()
: pPageObj->m_GeneralState.GetFillAlpha()));
- DrawShading(pattern, &matrix, rect, alpha,
+ DrawShading(pattern, matrix, rect, alpha,
m_Options.ColorModeIs(CPDF_RenderOptions::kAlpha));
}
@@ -2131,7 +2131,7 @@
return;
CFX_Matrix matrix = pShadingObj->matrix() * mtObj2Device;
- DrawShading(pShadingObj->pattern(), &matrix, rect,
+ DrawShading(pShadingObj->pattern(), matrix, rect,
FXSYS_round(255 * pShadingObj->m_GeneralState.GetFillAlpha()),
m_Options.ColorModeIs(CPDF_RenderOptions::kAlpha));
}
@@ -2360,7 +2360,7 @@
bool CPDF_RenderStatus::ProcessImage(CPDF_ImageObject* pImageObj,
const CFX_Matrix& mtObj2Device) {
CPDF_ImageRenderer render;
- if (render.Start(this, pImageObj, &mtObj2Device, m_bStdCS, m_curBlend))
+ if (render.Start(this, pImageObj, mtObj2Device, m_bStdCS, m_curBlend))
render.Continue(nullptr);
return render.GetResult();
}
diff --git a/core/fpdfapi/render/cpdf_renderstatus.h b/core/fpdfapi/render/cpdf_renderstatus.h
index 5d2ffae..228a6a8 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.h
+++ b/core/fpdfapi/render/cpdf_renderstatus.h
@@ -144,7 +144,7 @@
void ProcessShading(const CPDF_ShadingObject* pShadingObj,
const CFX_Matrix& mtObj2Device);
void DrawShading(const CPDF_ShadingPattern* pPattern,
- const CFX_Matrix* pMatrix,
+ const CFX_Matrix& mtMatrix,
const FX_RECT& clip_rect,
int alpha,
bool bAlphaMode);
diff --git a/core/fpdfapi/render/cpdf_scaledrenderbuffer.h b/core/fpdfapi/render/cpdf_scaledrenderbuffer.h
index 14089f3..e809845 100644
--- a/core/fpdfapi/render/cpdf_scaledrenderbuffer.h
+++ b/core/fpdfapi/render/cpdf_scaledrenderbuffer.h
@@ -31,7 +31,7 @@
int max_dpi);
CFX_RenderDevice* GetDevice() const;
- CFX_Matrix* GetMatrix() { return &m_Matrix; }
+ const CFX_Matrix& GetMatrix() const { return m_Matrix; }
void OutputToDevice();
private: