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;