From 0fe8910834a14fd79593dc4726e282d284417221 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Tue, 22 May 2018 20:30:39 +0000 Subject: Simplify CPDF_ShadingPattern::Validate(). Fix some nits in CPDF_ShadingPattern as well. Change-Id: I6b4b73f99031733a113fe2ad1bdc1d1e565b7a7d Reviewed-on: https://pdfium-review.googlesource.com/32738 Reviewed-by: dsinclair Commit-Queue: Lei Zhang --- core/fpdfapi/page/cpdf_shadingpattern.cpp | 42 ++++++++++--------------------- core/fpdfapi/page/cpdf_shadingpattern.h | 4 +-- 2 files changed, 15 insertions(+), 31 deletions(-) diff --git a/core/fpdfapi/page/cpdf_shadingpattern.cpp b/core/fpdfapi/page/cpdf_shadingpattern.cpp index 628155c575..76f201f767 100644 --- a/core/fpdfapi/page/cpdf_shadingpattern.cpp +++ b/core/fpdfapi/page/cpdf_shadingpattern.cpp @@ -19,8 +19,7 @@ namespace { ShadingType ToShadingType(int type) { - return (type > static_cast(kInvalidShading) && - type < static_cast(kMaxShading)) + return (type > kInvalidShading && type < kMaxShading) ? static_cast(type) : kInvalidShading; } @@ -32,11 +31,8 @@ CPDF_ShadingPattern::CPDF_ShadingPattern(CPDF_Document* pDoc, bool bShading, const CFX_Matrix& parentMatrix) : CPDF_Pattern(pDoc, bShading ? nullptr : pPatternObj, parentMatrix), - m_ShadingType(kInvalidShading), m_bShadingObj(bShading), - m_pShadingObj(pPatternObj), - m_pCS(nullptr), - m_pCountedCS(nullptr) { + m_pShadingObj(pPatternObj) { assert(document()); if (!bShading) { m_pShadingObj = pattern_obj()->GetDict()->GetDirectObjectFor("Shading"); @@ -96,9 +92,7 @@ bool CPDF_ShadingPattern::Load() { return false; m_pCountedCS = pDocPageData->FindColorSpacePtr(m_pCS->GetArray()); - m_ShadingType = ToShadingType(pShadingDict->GetIntegerFor("ShadingType")); - return Validate(); } @@ -137,39 +131,29 @@ bool CPDF_ShadingPattern::Validate() const { switch (m_ShadingType) { case kFunctionBasedShading: { // Either one 2-to-N function or N 2-to-1 functions. - if (!ValidateFunctions(1, 2, nNumColorSpaceComponents) && - !ValidateFunctions(nNumColorSpaceComponents, 2, 1)) { - return false; - } - break; + return ValidateFunctions(1, 2, nNumColorSpaceComponents) || + ValidateFunctions(nNumColorSpaceComponents, 2, 1); } case kAxialShading: case kRadialShading: { // Either one 1-to-N function or N 1-to-1 functions. - if (!ValidateFunctions(1, 1, nNumColorSpaceComponents) && - !ValidateFunctions(nNumColorSpaceComponents, 1, 1)) { - return false; - } - break; + return ValidateFunctions(1, 1, nNumColorSpaceComponents) || + ValidateFunctions(nNumColorSpaceComponents, 1, 1); } case kFreeFormGouraudTriangleMeshShading: case kLatticeFormGouraudTriangleMeshShading: case kCoonsPatchMeshShading: case kTensorProductPatchMeshShading: { // Either no function, one 1-to-N function, or N 1-to-1 functions. - if (!m_pFunctions.empty() && - !ValidateFunctions(1, 1, nNumColorSpaceComponents) && - !ValidateFunctions(nNumColorSpaceComponents, 1, 1)) { - return false; - } - break; - } - default: { - NOTREACHED(); - return false; + return m_pFunctions.empty() || + ValidateFunctions(1, 1, nNumColorSpaceComponents) || + ValidateFunctions(nNumColorSpaceComponents, 1, 1); } + default: + break; } - return true; + NOTREACHED(); + return false; } bool CPDF_ShadingPattern::ValidateFunctions( diff --git a/core/fpdfapi/page/cpdf_shadingpattern.h b/core/fpdfapi/page/cpdf_shadingpattern.h index 17b6e4bb8c..bb633f9a4d 100644 --- a/core/fpdfapi/page/cpdf_shadingpattern.h +++ b/core/fpdfapi/page/cpdf_shadingpattern.h @@ -67,8 +67,8 @@ class CPDF_ShadingPattern : public CPDF_Pattern { uint32_t nExpectedNumInputs, uint32_t nExpectedNumOutputs) const; - ShadingType m_ShadingType; - bool m_bShadingObj; + ShadingType m_ShadingType = kInvalidShading; + const bool m_bShadingObj; UnownedPtr m_pShadingObj; // Still keep |m_pCS| as some CPDF_ColorSpace (name object) are not managed -- cgit v1.2.3