Pass retained arguments to still more ctors/setters.
This pattern should apply whenever the object in question is
itself holding a retained reference to the argument.
Affected classes are CPDF_Colorspace, CPDF_GeneralState,
CPDF_MeshStream, CPDF_ShadingObject, CPDF_FlateEncoder,
CPDF_RenderContext, CPDF_RenderStatus, and CPVT_FontMap.
Change-Id: Ibd812a096b8eb6288df4119c83ee236ab906b787
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/98711
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_allstates.cpp b/core/fpdfapi/page/cpdf_allstates.cpp
index 04a43a2..f17d3b6 100644
--- a/core/fpdfapi/page/cpdf_allstates.cpp
+++ b/core/fpdfapi/page/cpdf_allstates.cpp
@@ -138,7 +138,7 @@
}
[[fallthrough]];
case FXBSTR_ID('B', 'G', '2', 0):
- m_GeneralState.SetBG(pObject.Get());
+ m_GeneralState.SetBG(std::move(pObject));
break;
case FXBSTR_ID('U', 'C', 'R', 0):
if (pGS->KeyExist("UCR2")) {
@@ -146,10 +146,10 @@
}
[[fallthrough]];
case FXBSTR_ID('U', 'C', 'R', '2'):
- m_GeneralState.SetUCR(pObject.Get());
+ m_GeneralState.SetUCR(std::move(pObject));
break;
case FXBSTR_ID('H', 'T', 0, 0):
- m_GeneralState.SetHT(pObject.Get());
+ m_GeneralState.SetHT(std::move(pObject));
break;
case FXBSTR_ID('F', 'L', 0, 0):
m_GeneralState.SetFlatness(pObject->GetNumber());
diff --git a/core/fpdfapi/page/cpdf_colorspace.h b/core/fpdfapi/page/cpdf_colorspace.h
index b528e69..6fa8d19 100644
--- a/core/fpdfapi/page/cpdf_colorspace.h
+++ b/core/fpdfapi/page/cpdf_colorspace.h
@@ -12,6 +12,7 @@
#include <array>
#include <set>
+#include <utility>
#include <vector>
#include "core/fpdfapi/page/cpdf_pattern.h"
@@ -41,9 +42,9 @@
return {m_Comps.data(), m_Comps.size()};
}
- CPDF_Pattern* GetPattern() const { return m_pRetainedPattern.Get(); }
- void SetPattern(const RetainPtr<CPDF_Pattern>& pPattern) {
- m_pRetainedPattern = pPattern;
+ RetainPtr<CPDF_Pattern> GetPattern() const { return m_pRetainedPattern; }
+ void SetPattern(RetainPtr<CPDF_Pattern> pPattern) {
+ m_pRetainedPattern = std::move(pPattern);
}
private:
diff --git a/core/fpdfapi/page/cpdf_contentmarks.cpp b/core/fpdfapi/page/cpdf_contentmarks.cpp
index c9fe287..73715f0 100644
--- a/core/fpdfapi/page/cpdf_contentmarks.cpp
+++ b/core/fpdfapi/page/cpdf_contentmarks.cpp
@@ -146,7 +146,7 @@
const ByteString& property_name) {
auto pItem = pdfium::MakeRetain<CPDF_ContentMarkItem>(name);
pItem->SetPropertiesHolder(std::move(pDict), property_name);
- m_Marks.push_back(pItem);
+ m_Marks.push_back(std::move(pItem));
}
bool CPDF_ContentMarks::MarkData::RemoveMark(CPDF_ContentMarkItem* pMarkItem) {
diff --git a/core/fpdfapi/page/cpdf_generalstate.cpp b/core/fpdfapi/page/cpdf_generalstate.cpp
index c418462..7002eba 100644
--- a/core/fpdfapi/page/cpdf_generalstate.cpp
+++ b/core/fpdfapi/page/cpdf_generalstate.cpp
@@ -218,16 +218,16 @@
m_Ref.GetPrivateCopy()->m_OPMode = mode;
}
-void CPDF_GeneralState::SetBG(const CPDF_Object* pObject) {
- m_Ref.GetPrivateCopy()->m_pBG.Reset(pObject);
+void CPDF_GeneralState::SetBG(RetainPtr<const CPDF_Object> pObject) {
+ m_Ref.GetPrivateCopy()->m_pBG = std::move(pObject);
}
-void CPDF_GeneralState::SetUCR(const CPDF_Object* pObject) {
- m_Ref.GetPrivateCopy()->m_pUCR.Reset(pObject);
+void CPDF_GeneralState::SetUCR(RetainPtr<const CPDF_Object> pObject) {
+ m_Ref.GetPrivateCopy()->m_pUCR = std::move(pObject);
}
-void CPDF_GeneralState::SetHT(const CPDF_Object* pObject) {
- m_Ref.GetPrivateCopy()->m_pHT.Reset(pObject);
+void CPDF_GeneralState::SetHT(RetainPtr<const CPDF_Object> pObject) {
+ m_Ref.GetPrivateCopy()->m_pHT = std::move(pObject);
}
void CPDF_GeneralState::SetFlatness(float flatness) {
diff --git a/core/fpdfapi/page/cpdf_generalstate.h b/core/fpdfapi/page/cpdf_generalstate.h
index e91c4af..cf4eda6 100644
--- a/core/fpdfapi/page/cpdf_generalstate.h
+++ b/core/fpdfapi/page/cpdf_generalstate.h
@@ -63,9 +63,9 @@
int GetOPMode() const;
void SetOPMode(int mode);
- void SetBG(const CPDF_Object* pObject);
- void SetUCR(const CPDF_Object* pObject);
- void SetHT(const CPDF_Object* pObject);
+ void SetBG(RetainPtr<const CPDF_Object> pObject);
+ void SetUCR(RetainPtr<const CPDF_Object> pObject);
+ void SetHT(RetainPtr<const CPDF_Object> pObject);
void SetFlatness(float flatness);
void SetSmoothness(float smoothness);
diff --git a/core/fpdfapi/page/cpdf_meshstream.cpp b/core/fpdfapi/page/cpdf_meshstream.cpp
index c3f0135..27b525c 100644
--- a/core/fpdfapi/page/cpdf_meshstream.cpp
+++ b/core/fpdfapi/page/cpdf_meshstream.cpp
@@ -6,6 +6,8 @@
#include "core/fpdfapi/page/cpdf_meshstream.h"
+#include <utility>
+
#include "core/fpdfapi/page/cpdf_colorspace.h"
#include "core/fpdfapi/page/cpdf_function.h"
#include "core/fpdfapi/parser/cpdf_array.h"
@@ -98,14 +100,13 @@
CPDF_MeshStream::CPDF_MeshStream(
ShadingType type,
const std::vector<std::unique_ptr<CPDF_Function>>& funcs,
- const CPDF_Stream* pShadingStream,
- const RetainPtr<CPDF_ColorSpace>& pCS)
+ RetainPtr<const CPDF_Stream> pShadingStream,
+ RetainPtr<CPDF_ColorSpace> pCS)
: m_type(type),
m_funcs(funcs),
- m_pShadingStream(pShadingStream),
- m_pCS(pCS),
- m_pStream(pdfium::MakeRetain<CPDF_StreamAcc>(
- pdfium::WrapRetain(pShadingStream))) {}
+ m_pShadingStream(std::move(pShadingStream)),
+ m_pCS(std::move(pCS)),
+ m_pStream(pdfium::MakeRetain<CPDF_StreamAcc>(m_pShadingStream)) {}
CPDF_MeshStream::~CPDF_MeshStream() = default;
diff --git a/core/fpdfapi/page/cpdf_meshstream.h b/core/fpdfapi/page/cpdf_meshstream.h
index e828108..3fc0512 100644
--- a/core/fpdfapi/page/cpdf_meshstream.h
+++ b/core/fpdfapi/page/cpdf_meshstream.h
@@ -40,8 +40,8 @@
public:
CPDF_MeshStream(ShadingType type,
const std::vector<std::unique_ptr<CPDF_Function>>& funcs,
- const CPDF_Stream* pShadingStream,
- const RetainPtr<CPDF_ColorSpace>& pCS);
+ RetainPtr<const CPDF_Stream> pShadingStream,
+ RetainPtr<CPDF_ColorSpace> pCS);
~CPDF_MeshStream();
bool Load();
diff --git a/core/fpdfapi/page/cpdf_shadingobject.cpp b/core/fpdfapi/page/cpdf_shadingobject.cpp
index 6218dea..718a0f4 100644
--- a/core/fpdfapi/page/cpdf_shadingobject.cpp
+++ b/core/fpdfapi/page/cpdf_shadingobject.cpp
@@ -6,12 +6,16 @@
#include "core/fpdfapi/page/cpdf_shadingobject.h"
+#include <utility>
+
#include "core/fpdfapi/page/cpdf_shadingpattern.h"
CPDF_ShadingObject::CPDF_ShadingObject(int32_t content_stream,
- CPDF_ShadingPattern* pattern,
+ RetainPtr<CPDF_ShadingPattern> pattern,
const CFX_Matrix& matrix)
- : CPDF_PageObject(content_stream), m_pShading(pattern), m_Matrix(matrix) {}
+ : CPDF_PageObject(content_stream),
+ m_pShading(std::move(pattern)),
+ m_Matrix(matrix) {}
CPDF_ShadingObject::~CPDF_ShadingObject() = default;
diff --git a/core/fpdfapi/page/cpdf_shadingobject.h b/core/fpdfapi/page/cpdf_shadingobject.h
index 072a025..cd0b425 100644
--- a/core/fpdfapi/page/cpdf_shadingobject.h
+++ b/core/fpdfapi/page/cpdf_shadingobject.h
@@ -16,7 +16,7 @@
class CPDF_ShadingObject final : public CPDF_PageObject {
public:
CPDF_ShadingObject(int32_t content_stream,
- CPDF_ShadingPattern* pattern,
+ RetainPtr<CPDF_ShadingPattern> pattern,
const CFX_Matrix& matrix);
~CPDF_ShadingObject() override;
diff --git a/core/fpdfapi/page/cpdf_streamcontentparser.cpp b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
index 1c532f7..347a7aa 100644
--- a/core/fpdfapi/page/cpdf_streamcontentparser.cpp
+++ b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
@@ -66,12 +66,13 @@
CFX_FloatRect GetShadingBBox(CPDF_ShadingPattern* pShading,
const CFX_Matrix& matrix) {
ShadingType type = pShading->GetShadingType();
- const CPDF_Stream* pStream = ToStream(pShading->GetShadingObject());
+ RetainPtr<const CPDF_Stream> pStream(ToStream(pShading->GetShadingObject()));
RetainPtr<CPDF_ColorSpace> pCS = pShading->GetCS();
if (!pStream || !pCS)
return CFX_FloatRect();
- CPDF_MeshStream stream(type, pShading->GetFuncs(), pStream, pCS);
+ CPDF_MeshStream stream(type, pShading->GetFuncs(), std::move(pStream),
+ std::move(pCS));
if (!stream.Load())
return CFX_FloatRect();
@@ -589,7 +590,6 @@
RetainPtr<CPDF_Dictionary> pHolder = FindResourceHolder("Properties");
if (!pHolder || !pHolder->GetDictFor(property_name))
return;
-
new_marks->AddMarkWithPropertiesHolder(tag, std::move(pHolder),
property_name);
} else if (pProperty->IsDictionary()) {
@@ -1079,7 +1079,7 @@
CFX_Matrix matrix = m_pCurStates->m_CTM * m_mtContentToUser;
auto pObj = std::make_unique<CPDF_ShadingObject>(GetCurrentStreamIndex(),
- pShading.Get(), matrix);
+ pShading, matrix);
SetGraphicStates(pObj.get(), false, false, false);
CFX_FloatRect bbox =
pObj->m_ClipPath.HasRef() ? pObj->m_ClipPath.GetClipBox() : m_BBox;
diff --git a/core/fpdfapi/parser/cpdf_flateencoder.cpp b/core/fpdfapi/parser/cpdf_flateencoder.cpp
index d1ee8d1..49d5bf8 100644
--- a/core/fpdfapi/parser/cpdf_flateencoder.cpp
+++ b/core/fpdfapi/parser/cpdf_flateencoder.cpp
@@ -16,15 +16,14 @@
#include "third_party/base/check.h"
#include "third_party/base/numerics/safe_conversions.h"
-CPDF_FlateEncoder::CPDF_FlateEncoder(const CPDF_Stream* pStream,
+CPDF_FlateEncoder::CPDF_FlateEncoder(RetainPtr<const CPDF_Stream> pStream,
bool bFlateEncode)
- : m_pAcc(pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(pStream))) {
+ : m_pAcc(pdfium::MakeRetain<CPDF_StreamAcc>(pStream)) {
m_pAcc->LoadAllDataRaw();
bool bHasFilter = pStream->HasFilter();
if (bHasFilter && !bFlateEncode) {
- auto pDestAcc =
- pdfium::MakeRetain<CPDF_StreamAcc>(pdfium::WrapRetain(pStream));
+ auto pDestAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pStream);
pDestAcc->LoadAllDataFiltered();
m_Data = m_pAcc->GetSpan();
diff --git a/core/fpdfapi/parser/cpdf_flateencoder.h b/core/fpdfapi/parser/cpdf_flateencoder.h
index 782a8d7..7e6c797 100644
--- a/core/fpdfapi/parser/cpdf_flateencoder.h
+++ b/core/fpdfapi/parser/cpdf_flateencoder.h
@@ -20,7 +20,7 @@
class CPDF_FlateEncoder {
public:
- CPDF_FlateEncoder(const CPDF_Stream* pStream, bool bFlateEncode);
+ CPDF_FlateEncoder(RetainPtr<const CPDF_Stream> pStream, bool bFlateEncode);
~CPDF_FlateEncoder();
void CloneDict();
diff --git a/core/fpdfapi/parser/cpdf_stream.cpp b/core/fpdfapi/parser/cpdf_stream.cpp
index 1329d28..341e6ac 100644
--- a/core/fpdfapi/parser/cpdf_stream.cpp
+++ b/core/fpdfapi/parser/cpdf_stream.cpp
@@ -189,7 +189,7 @@
bool CPDF_Stream::WriteTo(IFX_ArchiveStream* archive,
const CPDF_Encryptor* encryptor) const {
const bool is_metadata = IsMetaDataStreamDictionary(GetDict().Get());
- CPDF_FlateEncoder encoder(this, !is_metadata);
+ CPDF_FlateEncoder encoder(pdfium::WrapRetain(this), !is_metadata);
DataVector<uint8_t> encrypted_data;
pdfium::span<const uint8_t> data = encoder.GetSpan();
diff --git a/core/fpdfapi/render/cpdf_rendercontext.cpp b/core/fpdfapi/render/cpdf_rendercontext.cpp
index 19f1596..1efc2f6 100644
--- a/core/fpdfapi/render/cpdf_rendercontext.cpp
+++ b/core/fpdfapi/render/cpdf_rendercontext.cpp
@@ -22,11 +22,12 @@
#include "core/fxge/dib/cfx_dibitmap.h"
#include "core/fxge/dib/fx_dib.h"
-CPDF_RenderContext::CPDF_RenderContext(CPDF_Document* pDoc,
- CPDF_Dictionary* pPageResources,
- CPDF_PageRenderCache* pPageCache)
+CPDF_RenderContext::CPDF_RenderContext(
+ CPDF_Document* pDoc,
+ RetainPtr<CPDF_Dictionary> pPageResources,
+ CPDF_PageRenderCache* pPageCache)
: m_pDocument(pDoc),
- m_pPageResources(pPageResources),
+ m_pPageResources(std::move(pPageResources)),
m_pPageCache(pPageCache) {}
CPDF_RenderContext::~CPDF_RenderContext() = default;
diff --git a/core/fpdfapi/render/cpdf_rendercontext.h b/core/fpdfapi/render/cpdf_rendercontext.h
index 8a03d44..b4aeb51 100644
--- a/core/fpdfapi/render/cpdf_rendercontext.h
+++ b/core/fpdfapi/render/cpdf_rendercontext.h
@@ -43,7 +43,7 @@
};
CPDF_RenderContext(CPDF_Document* pDoc,
- CPDF_Dictionary* pPageResources,
+ RetainPtr<CPDF_Dictionary> pPageResources,
CPDF_PageRenderCache* pPageCache);
~CPDF_RenderContext();
diff --git a/core/fpdfapi/render/cpdf_rendershading.cpp b/core/fpdfapi/render/cpdf_rendershading.cpp
index dd14e16..fa098c8 100644
--- a/core/fpdfapi/render/cpdf_rendershading.cpp
+++ b/core/fpdfapi/render/cpdf_rendershading.cpp
@@ -416,14 +416,14 @@
void DrawFreeGouraudShading(
const RetainPtr<CFX_DIBitmap>& pBitmap,
const CFX_Matrix& mtObject2Bitmap,
- const CPDF_Stream* pShadingStream,
+ RetainPtr<const CPDF_Stream> pShadingStream,
const std::vector<std::unique_ptr<CPDF_Function>>& funcs,
- const RetainPtr<CPDF_ColorSpace>& pCS,
+ RetainPtr<CPDF_ColorSpace> pCS,
int alpha) {
DCHECK_EQ(pBitmap->GetFormat(), FXDIB_Format::kArgb);
CPDF_MeshStream stream(kFreeFormGouraudTriangleMeshShading, funcs,
- pShadingStream, pCS);
+ std::move(pShadingStream), std::move(pCS));
if (!stream.Load())
return;
@@ -455,9 +455,9 @@
void DrawLatticeGouraudShading(
const RetainPtr<CFX_DIBitmap>& pBitmap,
const CFX_Matrix& mtObject2Bitmap,
- const CPDF_Stream* pShadingStream,
+ RetainPtr<const CPDF_Stream> pShadingStream,
const std::vector<std::unique_ptr<CPDF_Function>>& funcs,
- const RetainPtr<CPDF_ColorSpace>& pCS,
+ RetainPtr<CPDF_ColorSpace> pCS,
int alpha) {
DCHECK_EQ(pBitmap->GetFormat(), FXDIB_Format::kArgb);
@@ -466,7 +466,7 @@
return;
CPDF_MeshStream stream(kLatticeFormGouraudTriangleMeshShading, funcs,
- pShadingStream, pCS);
+ std::move(pShadingStream), std::move(pCS));
if (!stream.Load())
return;
@@ -776,9 +776,9 @@
ShadingType type,
const RetainPtr<CFX_DIBitmap>& pBitmap,
const CFX_Matrix& mtObject2Bitmap,
- const CPDF_Stream* pShadingStream,
+ RetainPtr<const CPDF_Stream> pShadingStream,
const std::vector<std::unique_ptr<CPDF_Function>>& funcs,
- const RetainPtr<CPDF_ColorSpace>& pCS,
+ RetainPtr<CPDF_ColorSpace> pCS,
bool bNoPathSmooth,
int alpha) {
DCHECK_EQ(pBitmap->GetFormat(), FXDIB_Format::kArgb);
@@ -787,7 +787,9 @@
CFX_DefaultRenderDevice device;
device.Attach(pBitmap);
- CPDF_MeshStream stream(type, funcs, pShadingStream, pCS);
+
+ CPDF_MeshStream stream(type, funcs, std::move(pShadingStream),
+ std::move(pCS));
if (!stream.Load())
return;
@@ -939,9 +941,10 @@
case kFreeFormGouraudTriangleMeshShading: {
// The shading object can be a stream or a dictionary. We do not handle
// the case of dictionary at the moment.
- const CPDF_Stream* pStream = ToStream(pPattern->GetShadingObject());
+ RetainPtr<const CPDF_Stream> pStream(
+ ToStream(pPattern->GetShadingObject()));
if (pStream) {
- DrawFreeGouraudShading(pBitmap, final_matrix, pStream, funcs,
+ DrawFreeGouraudShading(pBitmap, final_matrix, std::move(pStream), funcs,
pColorSpace, alpha);
}
break;
@@ -949,10 +952,11 @@
case kLatticeFormGouraudTriangleMeshShading: {
// The shading object can be a stream or a dictionary. We do not handle
// the case of dictionary at the moment.
- const CPDF_Stream* pStream = ToStream(pPattern->GetShadingObject());
+ RetainPtr<const CPDF_Stream> pStream(
+ ToStream(pPattern->GetShadingObject()));
if (pStream) {
- DrawLatticeGouraudShading(pBitmap, final_matrix, pStream, funcs,
- pColorSpace, alpha);
+ DrawLatticeGouraudShading(pBitmap, final_matrix, std::move(pStream),
+ funcs, pColorSpace, alpha);
}
break;
}
@@ -960,10 +964,12 @@
case kTensorProductPatchMeshShading: {
// The shading object can be a stream or a dictionary. We do not handle
// the case of dictionary at the moment.
- const CPDF_Stream* pStream = ToStream(pPattern->GetShadingObject());
+ // TODO(tsepez): GetShadinObject() should return retained object.
+ RetainPtr<const CPDF_Stream> pStream(
+ ToStream(pPattern->GetShadingObject()));
if (pStream) {
DrawCoonPatchMeshes(pPattern->GetShadingType(), pBitmap, final_matrix,
- pStream, funcs, pColorSpace,
+ std::move(pStream), funcs, pColorSpace,
options.GetOptions().bNoPathSmooth, alpha);
}
break;
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index 35955c3..c5f97e3 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -382,7 +382,7 @@
status.SetDeviceMatrix(buffer.GetMatrix());
status.SetTransparency(m_Transparency);
status.SetDropObjects(m_bDropObjects);
- status.SetFormResource(pFormResource.Get());
+ status.SetFormResource(std::move(pFormResource));
status.Initialize(nullptr, nullptr);
status.RenderSingleObject(pObj, matrix);
buffer.OutputToDevice();
@@ -407,7 +407,7 @@
status.SetStopObject(m_pStopObj.Get());
status.SetTransparency(m_Transparency);
status.SetDropObjects(m_bDropObjects);
- status.SetFormResource(pResources.Get());
+ status.SetFormResource(std::move(pResources));
status.Initialize(this, pFormObj);
status.m_curBlend = m_curBlend;
{
@@ -715,7 +715,7 @@
bitmap_render.SetStopObject(m_pStopObj.Get());
bitmap_render.SetStdCS(true);
bitmap_render.SetDropObjects(m_bDropObjects);
- bitmap_render.SetFormResource(pFormResource.Get());
+ bitmap_render.SetFormResource(std::move(pFormResource));
bitmap_render.Initialize(nullptr, nullptr);
bitmap_render.ProcessObjectNoClip(pPageObj, new_matrix);
#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
@@ -998,7 +998,7 @@
status.SetType3Char(pType3Char);
status.SetFillColor(fill_argb);
status.SetDropObjects(m_bDropObjects);
- status.SetFormResource(pFormResource.Get());
+ status.SetFormResource(std::move(pFormResource));
status.Initialize(this, pStates.get());
status.m_Type3FontCache = m_Type3FontCache;
status.m_Type3FontCache.emplace_back(pType3Font);
@@ -1023,7 +1023,7 @@
status.SetType3Char(pType3Char);
status.SetFillColor(fill_argb);
status.SetDropObjects(m_bDropObjects);
- status.SetFormResource(pFormResource.Get());
+ status.SetFormResource(std::move(pFormResource));
status.Initialize(this, pStates.get());
status.m_Type3FontCache = m_Type3FontCache;
status.m_Type3FontCache.emplace_back(pType3Font);
@@ -1441,7 +1441,7 @@
status.SetGroupFamily(nCSFamily);
status.SetLoadMask(bLuminosity);
status.SetStdCS(true);
- status.SetFormResource(pFormResource.Get());
+ status.SetFormResource(std::move(pFormResource));
status.SetDropObjects(m_bDropObjects);
status.Initialize(nullptr, nullptr);
status.RenderObjectList(&form, matrix);
diff --git a/core/fpdfapi/render/cpdf_renderstatus.h b/core/fpdfapi/render/cpdf_renderstatus.h
index bbc3505..0ee52a2 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.h
+++ b/core/fpdfapi/render/cpdf_renderstatus.h
@@ -8,6 +8,7 @@
#define CORE_FPDFAPI_RENDER_CPDF_RENDERSTATUS_H_
#include <memory>
+#include <utility>
#include <vector>
#include "core/fpdfapi/page/cpdf_clippath.h"
@@ -50,8 +51,8 @@
void SetOptions(const CPDF_RenderOptions& options) { m_Options = options; }
void SetDeviceMatrix(const CFX_Matrix& matrix) { m_DeviceMatrix = matrix; }
void SetStopObject(const CPDF_PageObject* pStopObj) { m_pStopObj = pStopObj; }
- void SetFormResource(const CPDF_Dictionary* pRes) {
- m_pFormResource.Reset(pRes);
+ void SetFormResource(RetainPtr<const CPDF_Dictionary> pRes) {
+ m_pFormResource = std::move(pRes);
}
void SetType3Char(CPDF_Type3Char* pType3Char) { m_pType3Char = pType3Char; }
void SetFillColor(FX_ARGB color) { m_T3FillColor = color; }
diff --git a/core/fpdfapi/render/cpdf_rendertiling.cpp b/core/fpdfapi/render/cpdf_rendertiling.cpp
index 957a7d1..8d89d61 100644
--- a/core/fpdfapi/render/cpdf_rendertiling.cpp
+++ b/core/fpdfapi/render/cpdf_rendertiling.cpp
@@ -137,7 +137,7 @@
CPDF_RenderStatus status(pContext, pDevice);
status.SetOptions(options);
status.SetTransparency(pPatternForm->GetTransparency());
- status.SetFormResource(pFormResource.Get());
+ status.SetFormResource(pFormResource);
status.SetDropObjects(pRenderStatus->GetDropObjects());
status.Initialize(pRenderStatus, pStates.get());
status.RenderObjectList(pPatternForm, matrix);
diff --git a/core/fpdfdoc/cpdf_annot.cpp b/core/fpdfdoc/cpdf_annot.cpp
index 6da7eae..30ff6b5 100644
--- a/core/fpdfdoc/cpdf_annot.cpp
+++ b/core/fpdfdoc/cpdf_annot.cpp
@@ -402,7 +402,7 @@
return false;
CPDF_RenderContext context(
- pPage->GetDocument(), pPage->GetMutablePageResources().Get(),
+ pPage->GetDocument(), pPage->GetMutablePageResources(),
static_cast<CPDF_PageRenderCache*>(pPage->GetRenderCache()));
context.AppendLayer(pForm, matrix);
context.Render(pDevice, nullptr, nullptr, nullptr);
diff --git a/core/fpdfdoc/cpdf_generateap.cpp b/core/fpdfdoc/cpdf_generateap.cpp
index 063e308..e77bf32 100644
--- a/core/fpdfdoc/cpdf_generateap.cpp
+++ b/core/fpdfdoc/cpdf_generateap.cpp
@@ -1088,8 +1088,7 @@
pStreamDict->SetRectFor("BBox", rcBBox);
}
CPVT_FontMap map(
- pDoc,
- pStreamDict ? pStreamDict->GetMutableDictFor("Resources").Get() : nullptr,
+ pDoc, pStreamDict ? pStreamDict->GetMutableDictFor("Resources") : nullptr,
std::move(pDefFont), font_name);
CPVT_VariableText::Provider prd(&map);
diff --git a/core/fpdfdoc/cpvt_fontmap.cpp b/core/fpdfdoc/cpvt_fontmap.cpp
index cf9fb76..6ee1763 100644
--- a/core/fpdfdoc/cpvt_fontmap.cpp
+++ b/core/fpdfdoc/cpvt_fontmap.cpp
@@ -19,11 +19,11 @@
#include "third_party/base/notreached.h"
CPVT_FontMap::CPVT_FontMap(CPDF_Document* pDoc,
- CPDF_Dictionary* pResDict,
+ RetainPtr<CPDF_Dictionary> pResDict,
RetainPtr<CPDF_Font> pDefFont,
const ByteString& sDefFontAlias)
: m_pDocument(pDoc),
- m_pResDict(pResDict),
+ m_pResDict(std::move(pResDict)),
m_pDefFont(std::move(pDefFont)),
m_sDefFontAlias(sDefFontAlias) {}
diff --git a/core/fpdfdoc/cpvt_fontmap.h b/core/fpdfdoc/cpvt_fontmap.h
index aae4a8d..e6a5e06 100644
--- a/core/fpdfdoc/cpvt_fontmap.h
+++ b/core/fpdfdoc/cpvt_fontmap.h
@@ -21,7 +21,7 @@
class CPVT_FontMap final : public IPVT_FontMap {
public:
CPVT_FontMap(CPDF_Document* pDoc,
- CPDF_Dictionary* pResDict,
+ RetainPtr<CPDF_Dictionary> pResDict,
RetainPtr<CPDF_Font> pDefFont,
const ByteString& sDefFontAlias);
~CPVT_FontMap() override;
diff --git a/core/fxge/skia/fx_skia_device.cpp b/core/fxge/skia/fx_skia_device.cpp
index 3acca4e..38638ed 100644
--- a/core/fxge/skia/fx_skia_device.cpp
+++ b/core/fxge/skia/fx_skia_device.cpp
@@ -2348,7 +2348,8 @@
skPath.transform(inverse);
} else {
DCHECK_EQ(kCoonsPatchMeshShading, shadingType);
- const CPDF_Stream* pStream = ToStream(pPattern->GetShadingObject());
+ RetainPtr<const CPDF_Stream> pStream(
+ ToStream(pPattern->GetShadingObject()));
if (!pStream)
return false;
CPDF_MeshStream stream(shadingType, pPattern->GetFuncs(), pStream,
diff --git a/fpdfsdk/cpdfsdk_renderpage.cpp b/fpdfsdk/cpdfsdk_renderpage.cpp
index ae3cd9f..9f9255c 100644
--- a/fpdfsdk/cpdfsdk_renderpage.cpp
+++ b/fpdfsdk/cpdfsdk_renderpage.cpp
@@ -59,7 +59,7 @@
pContext->m_pDevice->SetBaseClip(clipping_rect);
pContext->m_pDevice->SetClip_Rect(clipping_rect);
pContext->m_pContext = std::make_unique<CPDF_RenderContext>(
- pPage->GetDocument(), pPage->GetMutablePageResources().Get(),
+ pPage->GetDocument(), pPage->GetMutablePageResources(),
static_cast<CPDF_PageRenderCache*>(pPage->GetRenderCache()));
pContext->m_pContext->AppendLayer(pPage, matrix);
diff --git a/fpdfsdk/fpdf_editimg.cpp b/fpdfsdk/fpdf_editimg.cpp
index 85bc686..bde58fc 100644
--- a/fpdfsdk/fpdf_editimg.cpp
+++ b/fpdfsdk/fpdf_editimg.cpp
@@ -235,7 +235,8 @@
// Set up all the rendering code.
RetainPtr<CPDF_Dictionary> page_resources =
optional_page ? optional_page->GetMutablePageResources() : nullptr;
- CPDF_RenderContext context(doc, page_resources.Get(), /*pPageCache=*/nullptr);
+ CPDF_RenderContext context(doc, std::move(page_resources),
+ /*pPageCache=*/nullptr);
CFX_DefaultRenderDevice device;
device.Attach(result_bitmap);
CPDF_RenderStatus status(&context, &device);
diff --git a/fpdfsdk/fpdf_edittext.cpp b/fpdfsdk/fpdf_edittext.cpp
index 90333b7..361879c 100644
--- a/fpdfsdk/fpdf_edittext.cpp
+++ b/fpdfsdk/fpdf_edittext.cpp
@@ -635,7 +635,7 @@
CFX_DefaultRenderDevice* device_ptr = device.get();
render_context_ptr->m_pDevice = std::move(device);
render_context_ptr->m_pContext = std::make_unique<CPDF_RenderContext>(
- doc, page_resources.Get(), /*pPageCache=*/nullptr);
+ doc, std::move(page_resources), /*pPageCache=*/nullptr);
device_ptr->Attach(result_bitmap);