Move some args to CPDF_DIB() ctor and make const.
Because they don't change and there are too many args in the
Load*() methods.
-- shuffle method declarations to put like things together.
-- change one confusing arg name.
Change-Id: I9e899900a316342f9857476f5e0388202f06997e
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/92313
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_dib.cpp b/core/fpdfapi/page/cpdf_dib.cpp
index d621198..9d1fe4f 100644
--- a/core/fpdfapi/page/cpdf_dib.cpp
+++ b/core/fpdfapi/page/cpdf_dib.cpp
@@ -152,7 +152,8 @@
} // namespace
-CPDF_DIB::CPDF_DIB() = default;
+CPDF_DIB::CPDF_DIB(CPDF_Document* pDoc, const CPDF_Stream* pStream)
+ : m_pDocument(pDoc), m_pStream(pStream) {}
CPDF_DIB::~CPDF_DIB() = default;
@@ -160,16 +161,14 @@
CPDF_DIB::JpxSMaskInlineData::~JpxSMaskInlineData() = default;
-bool CPDF_DIB::Load(CPDF_Document* pDoc, const CPDF_Stream* pStream) {
- if (!pStream)
+bool CPDF_DIB::Load() {
+ if (!m_pStream)
return false;
- m_pDocument = pDoc;
- m_pDict.Reset(pStream->GetDict());
+ m_pDict.Reset(m_pStream->GetDict());
if (!m_pDict)
return false;
- m_pStream.Reset(pStream);
m_Width = m_pDict->GetIntegerFor("Width");
m_Height = m_pDict->GetIntegerFor("Height");
if (!IsValidDimension(m_Width) || !IsValidDimension(m_Height))
@@ -193,7 +192,7 @@
if (!src_size.IsValid())
return false;
- m_pStreamAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pStream);
+ m_pStreamAcc = pdfium::MakeRetain<CPDF_StreamAcc>(m_pStream.Get());
m_pStreamAcc->LoadAllDataImageAcc(src_size.ValueOrDie());
if (m_pStreamAcc->GetSize() == 0 || !m_pStreamAcc->GetData())
return false;
@@ -257,20 +256,16 @@
}
CPDF_DIB::LoadState CPDF_DIB::StartLoadDIBBase(
- CPDF_Document* pDoc,
- const CPDF_Stream* pStream,
bool bHasMask,
const CPDF_Dictionary* pFormResources,
const CPDF_Dictionary* pPageResources,
bool bStdCS,
CPDF_ColorSpace::Family GroupFamily,
bool bLoadMask) {
- if (!pStream)
+ if (!m_pStream)
return LoadState::kFail;
- m_pDocument = pDoc;
- m_pDict.Reset(pStream->GetDict());
- m_pStream.Reset(pStream);
+ m_pDict.Reset(m_pStream->GetDict());
m_bStdCS = bStdCS;
m_bHasMask = bHasMask;
m_Width = m_pDict->GetIntegerFor("Width");
@@ -297,7 +292,7 @@
if (!src_size.IsValid())
return LoadState::kFail;
- m_pStreamAcc = pdfium::MakeRetain<CPDF_StreamAcc>(pStream);
+ m_pStreamAcc = pdfium::MakeRetain<CPDF_StreamAcc>(m_pStream.Get());
m_pStreamAcc->LoadAllDataImageAcc(src_size.ValueOrDie());
if (m_pStreamAcc->GetSize() == 0 || !m_pStreamAcc->GetData())
return LoadState::kFail;
@@ -839,11 +834,10 @@
}
CPDF_DIB::LoadState CPDF_DIB::StartLoadMaskDIB(
- RetainPtr<const CPDF_Stream> mask) {
- m_pMask = pdfium::MakeRetain<CPDF_DIB>();
+ RetainPtr<const CPDF_Stream> mask_stream) {
+ m_pMask = pdfium::MakeRetain<CPDF_DIB>(m_pDocument.Get(), mask_stream.Get());
LoadState ret = m_pMask->StartLoadDIBBase(
- m_pDocument.Get(), mask.Get(), false, nullptr, nullptr, true,
- CPDF_ColorSpace::Family::kUnknown, false);
+ false, nullptr, nullptr, true, CPDF_ColorSpace::Family::kUnknown, false);
if (ret == LoadState::kContinue) {
if (m_Status == LoadState::kFail)
m_Status = LoadState::kContinue;
diff --git a/core/fpdfapi/page/cpdf_dib.h b/core/fpdfapi/page/cpdf_dib.h
index e3f28c0..ca7b941 100644
--- a/core/fpdfapi/page/cpdf_dib.h
+++ b/core/fpdfapi/page/cpdf_dib.h
@@ -42,8 +42,6 @@
CONSTRUCT_VIA_MAKE_RETAIN;
- bool Load(CPDF_Document* pDoc, const CPDF_Stream* pStream);
-
// CFX_DIBBase:
uint8_t* GetBuffer() const override;
pdfium::span<const uint8_t> GetScanline(int line) const override;
@@ -52,10 +50,10 @@
RetainPtr<CPDF_ColorSpace> GetColorSpace() const { return m_pColorSpace; }
uint32_t GetMatteColor() const { return m_MatteColor; }
+ bool IsJBigImage() const;
- LoadState StartLoadDIBBase(CPDF_Document* pDoc,
- const CPDF_Stream* pStream,
- bool bHasMask,
+ bool Load();
+ LoadState StartLoadDIBBase(bool bHasMask,
const CPDF_Dictionary* pFormResources,
const CPDF_Dictionary* pPageResources,
bool bStdCS,
@@ -64,10 +62,8 @@
LoadState ContinueLoadDIBBase(PauseIndicatorIface* pPause);
RetainPtr<CPDF_DIB> DetachMask();
- bool IsJBigImage() const;
-
private:
- CPDF_DIB();
+ CPDF_DIB(CPDF_Document* pDoc, const CPDF_Stream* pStream);
~CPDF_DIB() override;
struct JpxSMaskInlineData {
@@ -80,7 +76,7 @@
};
LoadState StartLoadMask();
- LoadState StartLoadMaskDIB(RetainPtr<const CPDF_Stream> mask);
+ LoadState StartLoadMaskDIB(RetainPtr<const CPDF_Stream> mask_stream);
bool ContinueToLoadMask();
LoadState ContinueLoadMaskDIB(PauseIndicatorIface* pPause);
bool LoadColorInfo(const CPDF_Dictionary* pFormResources,
@@ -103,8 +99,8 @@
uint32_t Get1BitSetValue() const;
uint32_t Get1BitResetValue() const;
- UnownedPtr<CPDF_Document> m_pDocument;
- RetainPtr<const CPDF_Stream> m_pStream;
+ UnownedPtr<CPDF_Document> const m_pDocument;
+ RetainPtr<const CPDF_Stream> const m_pStream;
RetainPtr<const CPDF_Dictionary> m_pDict;
RetainPtr<CPDF_StreamAcc> m_pStreamAcc;
RetainPtr<CPDF_ColorSpace> m_pColorSpace;
diff --git a/core/fpdfapi/page/cpdf_image.cpp b/core/fpdfapi/page/cpdf_image.cpp
index c2db8e1..e82c4fa 100644
--- a/core/fpdfapi/page/cpdf_image.cpp
+++ b/core/fpdfapi/page/cpdf_image.cpp
@@ -330,8 +330,9 @@
}
RetainPtr<CFX_DIBBase> CPDF_Image::LoadDIBBase() const {
- auto source = pdfium::MakeRetain<CPDF_DIB>();
- if (!source->Load(m_pDocument.Get(), m_pStream.Get()))
+ auto source =
+ pdfium::MakeRetain<CPDF_DIB>(m_pDocument.Get(), m_pStream.Get());
+ if (!source->Load())
return nullptr;
if (!source->IsJBigImage())
@@ -356,10 +357,10 @@
bool bStdCS,
CPDF_ColorSpace::Family GroupFamily,
bool bLoadMask) {
- auto source = pdfium::MakeRetain<CPDF_DIB>();
+ auto source =
+ pdfium::MakeRetain<CPDF_DIB>(m_pDocument.Get(), m_pStream.Get());
CPDF_DIB::LoadState ret = source->StartLoadDIBBase(
- m_pDocument.Get(), m_pStream.Get(), true, pFormResource, pPageResource,
- bStdCS, GroupFamily, bLoadMask);
+ true, pFormResource, pPageResource, bStdCS, GroupFamily, bLoadMask);
if (ret == CPDF_DIB::LoadState::kFail) {
m_pDIBBase.Reset();
return false;
diff --git a/core/fpdfapi/render/cpdf_imagecacheentry.cpp b/core/fpdfapi/render/cpdf_imagecacheentry.cpp
index 6d95348..e43a4df 100644
--- a/core/fpdfapi/render/cpdf_imagecacheentry.cpp
+++ b/core/fpdfapi/render/cpdf_imagecacheentry.cpp
@@ -48,10 +48,10 @@
return CPDF_DIB::LoadState::kSuccess;
}
- m_pCurBitmap = pdfium::MakeRetain<CPDF_DIB>();
+ m_pCurBitmap =
+ pdfium::MakeRetain<CPDF_DIB>(m_pDocument.Get(), m_pImage->GetStream());
CPDF_DIB::LoadState ret = m_pCurBitmap.As<CPDF_DIB>()->StartLoadDIBBase(
- m_pDocument.Get(), m_pImage->GetStream(), true,
- pRenderStatus->GetFormResource(), pPageResources, bStdCS,
+ true, pRenderStatus->GetFormResource(), pPageResources, bStdCS,
pRenderStatus->GetGroupFamily(), pRenderStatus->GetLoadMask());
if (ret == CPDF_DIB::LoadState::kContinue)
return CPDF_DIB::LoadState::kContinue;
diff --git a/core/fxge/dib/cstretchengine_unittest.cpp b/core/fxge/dib/cstretchengine_unittest.cpp
index 5398cd7..26c550a 100644
--- a/core/fxge/dib/cstretchengine_unittest.cpp
+++ b/core/fxge/dib/cstretchengine_unittest.cpp
@@ -75,8 +75,8 @@
dict_obj->SetNewFor<CPDF_Number>("Height", 12500);
RetainPtr<CPDF_Stream> stream =
pdfium::MakeRetain<CPDF_Stream>(nullptr, 0, std::move(dict_obj));
- auto dib_source = pdfium::MakeRetain<CPDF_DIB>();
- dib_source->Load(nullptr, stream.Get());
+ auto dib_source = pdfium::MakeRetain<CPDF_DIB>(nullptr, stream.Get());
+ dib_source->Load();
CStretchEngine engine(nullptr, FXDIB_Format::k8bppRgb, 500, 500, clip_rect,
dib_source, FXDIB_ResampleOptions());
EXPECT_TRUE(engine.GetResampleOptionsForTest().bInterpolateBilinear);
diff --git a/fpdfsdk/fpdf_editimg.cpp b/fpdfsdk/fpdf_editimg.cpp
index 4f63807..77bc238 100644
--- a/fpdfsdk/fpdf_editimg.cpp
+++ b/fpdfsdk/fpdf_editimg.cpp
@@ -376,11 +376,11 @@
if (!pPage || !pPage->GetDocument() || !pImg->GetStream())
return true;
- auto pSource = pdfium::MakeRetain<CPDF_DIB>();
- CPDF_DIB::LoadState ret =
- pSource->StartLoadDIBBase(pPage->GetDocument(), pImg->GetStream(), false,
- nullptr, pPage->GetPageResources(), false,
- CPDF_ColorSpace::Family::kUnknown, false);
+ auto pSource =
+ pdfium::MakeRetain<CPDF_DIB>(pPage->GetDocument(), pImg->GetStream());
+ CPDF_DIB::LoadState ret = pSource->StartLoadDIBBase(
+ false, nullptr, pPage->GetPageResources(), false,
+ CPDF_ColorSpace::Family::kUnknown, false);
if (ret == CPDF_DIB::LoadState::kFail)
return true;
diff --git a/fpdfsdk/fpdf_thumbnail.cpp b/fpdfsdk/fpdf_thumbnail.cpp
index 10ca410..cb87152 100644
--- a/fpdfsdk/fpdf_thumbnail.cpp
+++ b/fpdfsdk/fpdf_thumbnail.cpp
@@ -59,11 +59,11 @@
const CPDF_Page* p_page = CPDFPageFromFPDFPage(page);
- auto p_source = pdfium::MakeRetain<CPDF_DIB>();
- const CPDF_DIB::LoadState start_status =
- p_source->StartLoadDIBBase(p_page->GetDocument(), thumb_stream, false,
- nullptr, p_page->GetPageResources(), false,
- CPDF_ColorSpace::Family::kUnknown, false);
+ auto p_source =
+ pdfium::MakeRetain<CPDF_DIB>(p_page->GetDocument(), thumb_stream);
+ const CPDF_DIB::LoadState start_status = p_source->StartLoadDIBBase(
+ false, nullptr, p_page->GetPageResources(), false,
+ CPDF_ColorSpace::Family::kUnknown, false);
if (start_status == CPDF_DIB::LoadState::kFail)
return nullptr;