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);