Index: core/fpdfapi/fpdf_page/cpdf_shadingpattern.cpp |
diff --git a/core/fpdfapi/fpdf_page/cpdf_shadingpattern.cpp b/core/fpdfapi/fpdf_page/cpdf_shadingpattern.cpp |
index b7174b4451140934ea95d7dd59594729f0a006ed..1636e17f4fabf552764b503b9e0934dbb3700d58 100644 |
--- a/core/fpdfapi/fpdf_page/cpdf_shadingpattern.cpp |
+++ b/core/fpdfapi/fpdf_page/cpdf_shadingpattern.cpp |
@@ -6,6 +6,7 @@ |
#include "core/fpdfapi/fpdf_page/cpdf_shadingpattern.h" |
+#include "core/fpdfapi/fpdf_page/pageint.h" |
#include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" |
#include "core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h" |
#include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" |
@@ -34,28 +35,22 @@ CPDF_ShadingPattern::CPDF_ShadingPattern(CPDF_Document* pDoc, |
m_bShadingObj(bShading), |
m_pShadingObj(pPatternObj), |
m_pCS(nullptr), |
- m_pCountedCS(nullptr), |
- m_nFuncs(0) { |
+ m_pCountedCS(nullptr) { |
if (!bShading) { |
CPDF_Dictionary* pDict = m_pPatternObj->GetDict(); |
m_Pattern2Form = pDict->GetMatrixBy("Matrix"); |
m_pShadingObj = pDict->GetDirectObjectBy("Shading"); |
m_Pattern2Form.Concat(parentMatrix); |
} |
- for (size_t i = 0; i < FX_ArraySize(m_pFunctions); ++i) |
- m_pFunctions[i] = nullptr; |
} |
CPDF_ShadingPattern::~CPDF_ShadingPattern() { |
- for (size_t i = 0; i < m_nFuncs; ++i) |
- delete m_pFunctions[i]; |
- |
CPDF_ColorSpace* pCS = m_pCountedCS ? m_pCountedCS->get() : nullptr; |
if (pCS && m_pDocument) |
m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray()); |
} |
-FX_BOOL CPDF_ShadingPattern::Load() { |
+bool CPDF_ShadingPattern::Load() { |
if (m_ShadingType != kInvalidShading) |
return TRUE; |
@@ -64,21 +59,15 @@ FX_BOOL CPDF_ShadingPattern::Load() { |
if (!pShadingDict) |
return FALSE; |
- if (m_nFuncs) { |
- for (size_t i = 0; i < m_nFuncs; i++) |
- delete m_pFunctions[i]; |
- m_nFuncs = 0; |
- } |
+ m_pFunctions.clear(); |
CPDF_Object* pFunc = pShadingDict->GetDirectObjectBy("Function"); |
if (pFunc) { |
if (CPDF_Array* pArray = pFunc->AsArray()) { |
- m_nFuncs = std::min<size_t>(pArray->GetCount(), 4); |
- |
- for (size_t i = 0; i < m_nFuncs; i++) |
+ m_pFunctions.resize(std::min<size_t>(pArray->GetCount(), 4)); |
+ for (size_t i = 0; i < m_pFunctions.size(); ++i) |
m_pFunctions[i] = CPDF_Function::Load(pArray->GetDirectObjectAt(i)); |
} else { |
- m_pFunctions[0] = CPDF_Function::Load(pFunc); |
- m_nFuncs = 1; |
+ m_pFunctions.push_back(CPDF_Function::Load(pFunc)); |
} |
} |
CPDF_Object* pCSObj = pShadingDict->GetDirectObjectBy("ColorSpace"); |