Better encapsulate CPDF_ColorSpace.
Bug: pdfium:1680
Change-Id: I10a2cc5b27299086d360dec73a41790b54da3ddc
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/96513
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_colorspace.cpp b/core/fpdfapi/page/cpdf_colorspace.cpp
index 6478bd5..e3eb1d0 100644
--- a/core/fpdfapi/page/cpdf_colorspace.cpp
+++ b/core/fpdfapi/page/cpdf_colorspace.cpp
@@ -1114,7 +1114,7 @@
return 1;
const CPDF_Object* pAltArray = pArray->GetDirectObjectAt(2);
- if (pAltArray == m_pArray)
+ if (pAltArray == GetArray())
return 0;
m_pBaseCS = Load(pDoc, pAltArray, pVisited);
@@ -1187,7 +1187,7 @@
return 0;
const CPDF_Object* pAltCS = pArray->GetDirectObjectAt(2);
- if (!pAltCS || pAltCS == m_pArray)
+ if (!pAltCS || pAltCS == GetArray())
return 0;
m_pBaseCS = Load(pDoc, pAltCS, pVisited);
diff --git a/core/fpdfapi/page/cpdf_colorspace.h b/core/fpdfapi/page/cpdf_colorspace.h
index 973cd71..b528e69 100644
--- a/core/fpdfapi/page/cpdf_colorspace.h
+++ b/core/fpdfapi/page/cpdf_colorspace.h
@@ -82,8 +82,6 @@
static uint32_t ComponentsForFamily(Family family);
static bool IsValidIccComponents(int components);
- const CPDF_Array* GetArray() const { return m_pArray.Get(); }
-
// Should only be called if this colorspace is not a pattern.
std::vector<float> CreateBufAndSetDefaultColor() const;
@@ -134,11 +132,9 @@
// components count.
void SetComponentsForStockCS(uint32_t nComponents);
+ const CPDF_Array* GetArray() const { return m_pArray.Get(); }
bool IsStdConversionEnabled() const { return m_dwStdConversion != 0; }
- RetainPtr<const CPDF_Array> m_pArray;
- const Family m_Family;
-
private:
friend class CPDF_CalGray_TranslateImageLine_Test;
friend class CPDF_CalRGB_TranslateImageLine_Test;
@@ -146,8 +142,10 @@
static RetainPtr<CPDF_ColorSpace> AllocateColorSpace(
ByteStringView bsFamilyName);
+ const Family m_Family;
uint32_t m_dwStdConversion = 0;
uint32_t m_nComponents = 0;
+ RetainPtr<const CPDF_Array> m_pArray;
};
#endif // CORE_FPDFAPI_PAGE_CPDF_COLORSPACE_H_
diff --git a/core/fpdfapi/page/cpdf_devicecs.cpp b/core/fpdfapi/page/cpdf_devicecs.cpp
index 494a2d0..3d87766 100644
--- a/core/fpdfapi/page/cpdf_devicecs.cpp
+++ b/core/fpdfapi/page/cpdf_devicecs.cpp
@@ -48,7 +48,7 @@
float* R,
float* G,
float* B) const {
- switch (m_Family) {
+ switch (GetFamily()) {
case Family::kDeviceGray:
*R = NormalizeChannel(pBuf[0]);
*G = *R;
@@ -85,7 +85,7 @@
bool bTransMask) const {
uint8_t* pDestBuf = dest_span.data();
const uint8_t* pSrcBuf = src_span.data();
- switch (m_Family) {
+ switch (GetFamily()) {
case Family::kDeviceGray:
for (int i = 0; i < pixels; i++) {
// Compiler can not conclude that src/dest don't overlap, avoid
diff --git a/core/fpdfapi/page/cpdf_indexedcs.cpp b/core/fpdfapi/page/cpdf_indexedcs.cpp
index 06c5ce4..10e112e 100644
--- a/core/fpdfapi/page/cpdf_indexedcs.cpp
+++ b/core/fpdfapi/page/cpdf_indexedcs.cpp
@@ -35,7 +35,7 @@
return 0;
const CPDF_Object* pBaseObj = pArray->GetDirectObjectAt(1);
- if (pBaseObj == m_pArray)
+ if (pBaseObj == GetArray())
return 0;
auto* pDocPageData = CPDF_DocPageData::FromDocument(pDoc);
diff --git a/core/fpdfapi/page/cpdf_patterncs.cpp b/core/fpdfapi/page/cpdf_patterncs.cpp
index dad3db9..5b85b3e 100644
--- a/core/fpdfapi/page/cpdf_patterncs.cpp
+++ b/core/fpdfapi/page/cpdf_patterncs.cpp
@@ -23,7 +23,7 @@
const CPDF_Array* pArray,
std::set<const CPDF_Object*>* pVisited) {
const CPDF_Object* pBaseCS = pArray->GetDirectObjectAt(1);
- if (pBaseCS == m_pArray)
+ if (pBaseCS == GetArray())
return 0;
auto* pDocPageData = CPDF_DocPageData::FromDocument(pDoc);