Move creation code out of CPDF_DocRenderData::GetTransferFunc().
Add private CreateTransferFunc().
Change-Id: I15d7d8d5bb4b96792b40be07646b34dec8ebe85b
Reviewed-on: https://pdfium-review.googlesource.com/c/43370
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/render/cpdf_docrenderdata.cpp b/core/fpdfapi/render/cpdf_docrenderdata.cpp
index 5f19210..12325c4 100644
--- a/core/fpdfapi/render/cpdf_docrenderdata.cpp
+++ b/core/fpdfapi/render/cpdf_docrenderdata.cpp
@@ -56,6 +56,18 @@
if (it != m_TransferFuncMap.end())
return it->second;
+ m_TransferFuncMap[pObj] = CreateTransferFunc(pObj);
+ return m_TransferFuncMap[pObj];
+}
+
+void CPDF_DocRenderData::MaybePurgeTransferFunc(const CPDF_Object* pObj) {
+ auto it = m_TransferFuncMap.find(pObj);
+ if (it != m_TransferFuncMap.end() && it->second->HasOneRef())
+ m_TransferFuncMap.erase(it);
+}
+
+RetainPtr<CPDF_TransferFunc> CPDF_DocRenderData::CreateTransferFunc(
+ const CPDF_Object* pObj) const {
std::unique_ptr<CPDF_Function> pFuncs[3];
bool bUniTransfer = true;
bool bIdentity = true;
@@ -110,15 +122,7 @@
}
}
- auto pTransfer = pdfium::MakeRetain<CPDF_TransferFunc>(
+ return pdfium::MakeRetain<CPDF_TransferFunc>(
m_pPDFDoc.Get(), bIdentity, std::move(samples_r), std::move(samples_g),
std::move(samples_b));
- m_TransferFuncMap[pObj] = pTransfer;
- return pTransfer;
-}
-
-void CPDF_DocRenderData::MaybePurgeTransferFunc(const CPDF_Object* pObj) {
- auto it = m_TransferFuncMap.find(pObj);
- if (it != m_TransferFuncMap.end() && it->second->HasOneRef())
- m_TransferFuncMap.erase(it);
}
diff --git a/core/fpdfapi/render/cpdf_docrenderdata.h b/core/fpdfapi/render/cpdf_docrenderdata.h
index 5f78d58..cc1d7c8 100644
--- a/core/fpdfapi/render/cpdf_docrenderdata.h
+++ b/core/fpdfapi/render/cpdf_docrenderdata.h
@@ -33,6 +33,9 @@
void MaybePurgeTransferFunc(const CPDF_Object* pObj);
private:
+ RetainPtr<CPDF_TransferFunc> CreateTransferFunc(
+ const CPDF_Object* pObj) const;
+
UnownedPtr<CPDF_Document> m_pPDFDoc;
std::map<CPDF_Font*, RetainPtr<CPDF_Type3Cache>> m_Type3FaceMap;
std::map<const CPDF_Object*, RetainPtr<CPDF_TransferFunc>> m_TransferFuncMap;