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;