Merge CPDF_TransferFuncDIB::LoadSrc() into the ctor.

Construct the object in one step, instead of two. Make more members
const.

Change-Id: Iacbf6f57370fdebfb96123de685fcec8f16db776
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/65095
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_transferfunc.cpp b/core/fpdfapi/page/cpdf_transferfunc.cpp
index 4cc2d87..9e3092b 100644
--- a/core/fpdfapi/page/cpdf_transferfunc.cpp
+++ b/core/fpdfapi/page/cpdf_transferfunc.cpp
@@ -38,9 +38,7 @@
 RetainPtr<CFX_DIBBase> CPDF_TransferFunc::TranslateImage(
     const RetainPtr<CFX_DIBBase>& pSrc) {
   RetainPtr<CPDF_TransferFunc> pHolder(this);
-  auto pDest = pdfium::MakeRetain<CPDF_TransferFuncDIB>(pHolder);
-  pDest->LoadSrc(pSrc);
-  return pDest;
+  return pdfium::MakeRetain<CPDF_TransferFuncDIB>(pSrc, pHolder);
 }
 
 pdfium::span<const uint8_t> CPDF_TransferFunc::GetSamplesR() const {
diff --git a/core/fpdfapi/page/cpdf_transferfuncdib.cpp b/core/fpdfapi/page/cpdf_transferfuncdib.cpp
index ed2dfe5..f985616 100644
--- a/core/fpdfapi/page/cpdf_transferfuncdib.cpp
+++ b/core/fpdfapi/page/cpdf_transferfuncdib.cpp
@@ -14,11 +14,22 @@
 #include "third_party/base/compiler_specific.h"
 
 CPDF_TransferFuncDIB::CPDF_TransferFuncDIB(
+    const RetainPtr<CFX_DIBBase>& pSrc,
     const RetainPtr<CPDF_TransferFunc>& pTransferFunc)
-    : m_pTransferFunc(pTransferFunc),
+    : m_pSrc(pSrc),
+      m_pTransferFunc(pTransferFunc),
       m_RampR(pTransferFunc->GetSamplesR()),
       m_RampG(pTransferFunc->GetSamplesG()),
-      m_RampB(pTransferFunc->GetSamplesB()) {}
+      m_RampB(pTransferFunc->GetSamplesB()) {
+  m_Width = pSrc->GetWidth();
+  m_Height = pSrc->GetHeight();
+  FXDIB_Format format = GetDestFormat();
+  m_bpp = GetBppFromFormat(format);
+  m_AlphaFlag = GetAlphaFlagFromFormat(format);
+  m_Pitch = (m_Width * m_bpp + 31) / 32 * 4;
+  m_pPalette.reset();
+  m_Scanline.resize(m_Pitch);
+}
 
 CPDF_TransferFuncDIB::~CPDF_TransferFuncDIB() = default;
 
@@ -176,18 +187,6 @@
   }
 }
 
-void CPDF_TransferFuncDIB::LoadSrc(const RetainPtr<CFX_DIBBase>& pSrc) {
-  m_pSrc = pSrc;
-  m_Width = pSrc->GetWidth();
-  m_Height = pSrc->GetHeight();
-  FXDIB_Format format = GetDestFormat();
-  m_bpp = GetBppFromFormat(format);
-  m_AlphaFlag = GetAlphaFlagFromFormat(format);
-  m_Pitch = (m_Width * m_bpp + 31) / 32 * 4;
-  m_pPalette.reset();
-  m_Scanline.resize(m_Pitch);
-}
-
 const uint8_t* CPDF_TransferFuncDIB::GetScanline(int line) const {
   TranslateScanline(m_pSrc->GetScanline(line), &m_Scanline);
   return m_Scanline.data();
diff --git a/core/fpdfapi/page/cpdf_transferfuncdib.h b/core/fpdfapi/page/cpdf_transferfuncdib.h
index 21ccc37..c30718a 100644
--- a/core/fpdfapi/page/cpdf_transferfuncdib.h
+++ b/core/fpdfapi/page/cpdf_transferfuncdib.h
@@ -26,11 +26,10 @@
                             const uint8_t* src_buf,
                             int pixels,
                             int Bpp) const;
-  void LoadSrc(const RetainPtr<CFX_DIBBase>& pSrc);
 
  private:
-  explicit CPDF_TransferFuncDIB(
-      const RetainPtr<CPDF_TransferFunc>& pTransferFunc);
+  CPDF_TransferFuncDIB(const RetainPtr<CFX_DIBBase>& pSrc,
+                       const RetainPtr<CPDF_TransferFunc>& pTransferFunc);
   ~CPDF_TransferFuncDIB() override;
 
   // CFX_DIBBase:
@@ -45,9 +44,9 @@
 
   FXDIB_Format GetDestFormat() const;
 
-  RetainPtr<CFX_DIBBase> m_pSrc;
+  RetainPtr<CFX_DIBBase> const m_pSrc;
   mutable std::vector<uint8_t> m_Scanline;
-  RetainPtr<CPDF_TransferFunc> m_pTransferFunc;
+  RetainPtr<CPDF_TransferFunc> const m_pTransferFunc;
   const pdfium::span<const uint8_t> m_RampR;
   const pdfium::span<const uint8_t> m_RampG;
   const pdfium::span<const uint8_t> m_RampB;