Index: core/src/fpdfdoc/doc_ocg.cpp |
diff --git a/core/src/fpdfdoc/doc_ocg.cpp b/core/src/fpdfdoc/doc_ocg.cpp |
index e66b04489f7b2593881adf5ed61fee0fd186ae3e..b252456df6a18632820170b42e15a30805d4d595 100644 |
--- a/core/src/fpdfdoc/doc_ocg.cpp |
+++ b/core/src/fpdfdoc/doc_ocg.cpp |
@@ -7,23 +7,18 @@ |
#include "../../include/fpdfdoc/fpdf_doc.h" |
static int32_t FPDFDOC_OCG_FindGroup(const CPDF_Object* pObject, |
const CPDF_Dictionary* pGroupDict) { |
- if (pObject == NULL || pGroupDict == NULL) { |
+ if (!pObject || !pGroupDict) |
return -1; |
- } |
- int32_t iType = pObject->GetType(); |
- if (iType == PDFOBJ_ARRAY) { |
- FX_DWORD dwCount = ((CPDF_Array*)pObject)->GetCount(); |
+ |
+ if (const CPDF_Array* pArray = pObject->AsArray()) { |
+ FX_DWORD dwCount = pArray->GetCount(); |
for (FX_DWORD i = 0; i < dwCount; i++) { |
- if (((CPDF_Array*)pObject)->GetDict(i) == pGroupDict) { |
+ if (pArray->GetDict(i) == pGroupDict) |
return i; |
- } |
} |
return -1; |
} |
- if (pObject->GetDict() == pGroupDict) { |
- return 0; |
- } |
- return -1; |
+ return pObject->GetDict() == pGroupDict ? 0 : -1; |
} |
static FX_BOOL FPDFDOC_OCG_HasIntent( |
const CPDF_Dictionary* pDict, |
@@ -35,13 +30,12 @@ static FX_BOOL FPDFDOC_OCG_HasIntent( |
return csElement == csDef; |
} |
CFX_ByteString bsIntent; |
- if (pIntent->GetType() == PDFOBJ_ARRAY) { |
- FX_DWORD dwCount = ((CPDF_Array*)pIntent)->GetCount(); |
+ if (CPDF_Array* pArray = pIntent->AsArray()) { |
+ FX_DWORD dwCount = pArray->GetCount(); |
for (FX_DWORD i = 0; i < dwCount; i++) { |
- bsIntent = ((CPDF_Array*)pIntent)->GetString(i); |
- if (bsIntent == FX_BSTRC("All") || bsIntent == csElement) { |
+ bsIntent = pArray->GetString(i); |
+ if (bsIntent == FX_BSTRC("All") || bsIntent == csElement) |
return TRUE; |
- } |
} |
return FALSE; |
} |
@@ -206,15 +200,12 @@ FX_BOOL CPDF_OCContext::GetOCGVE(CPDF_Array* pExpression, |
CFX_ByteString csOperator = pExpression->GetString(0); |
if (csOperator == FX_BSTRC("Not")) { |
pOCGObj = pExpression->GetElementValue(1); |
- if (pOCGObj == NULL) { |
+ if (!pOCGObj) |
return FALSE; |
- } |
- if (CPDF_Dictionary* pDict = pOCGObj->AsDictionary()) { |
+ if (CPDF_Dictionary* pDict = pOCGObj->AsDictionary()) |
return !(bFromConfig ? LoadOCGState(pDict) : GetOCGVisible(pDict)); |
- } |
- if (pOCGObj->GetType() == PDFOBJ_ARRAY) { |
- return !GetOCGVE((CPDF_Array*)pOCGObj, bFromConfig, nLevel + 1); |
- } |
+ if (CPDF_Array* pArray = pOCGObj->AsArray()) |
+ return !GetOCGVE(pArray, bFromConfig, nLevel + 1); |
return FALSE; |
} |
if (csOperator == FX_BSTRC("Or") || csOperator == FX_BSTRC("And")) { |
@@ -225,11 +216,11 @@ FX_BOOL CPDF_OCContext::GetOCGVE(CPDF_Array* pExpression, |
continue; |
} |
FX_BOOL bItem = FALSE; |
- if (CPDF_Dictionary* pDict = pOCGObj->AsDictionary()) { |
+ if (CPDF_Dictionary* pDict = pOCGObj->AsDictionary()) |
bItem = bFromConfig ? LoadOCGState(pDict) : GetOCGVisible(pDict); |
- } else if (pOCGObj->GetType() == PDFOBJ_ARRAY) { |
- bItem = GetOCGVE((CPDF_Array*)pOCGObj, bFromConfig, nLevel + 1); |
- } |
+ else if (CPDF_Array* pArray = pOCGObj->AsArray()) |
+ bItem = GetOCGVE(pArray, bFromConfig, nLevel + 1); |
+ |
if (i == 1) { |
bValue = bItem; |
} else { |
@@ -253,38 +244,32 @@ FX_BOOL CPDF_OCContext::LoadOCMDState(const CPDF_Dictionary* pOCMDDict, |
} |
CFX_ByteString csP = pOCMDDict->GetString(FX_BSTRC("P"), FX_BSTRC("AnyOn")); |
CPDF_Object* pOCGObj = pOCMDDict->GetElementValue(FX_BSTRC("OCGs")); |
- if (pOCGObj == NULL) { |
+ if (!pOCGObj) |
return TRUE; |
- } |
- if (const CPDF_Dictionary* pDict = pOCGObj->AsDictionary()) { |
+ if (const CPDF_Dictionary* pDict = pOCGObj->AsDictionary()) |
return bFromConfig ? LoadOCGState(pDict) : GetOCGVisible(pDict); |
- } |
- if (pOCGObj->GetType() != PDFOBJ_ARRAY) { |
+ |
+ CPDF_Array* pArray = pOCGObj->AsArray(); |
+ if (!pArray) |
return TRUE; |
- } |
+ |
FX_BOOL bState = FALSE; |
if (csP == FX_BSTRC("AllOn") || csP == FX_BSTRC("AllOff")) { |
bState = TRUE; |
} |
- int32_t iCount = ((CPDF_Array*)pOCGObj)->GetCount(); |
+ int32_t iCount = pArray->GetCount(); |
for (int32_t i = 0; i < iCount; i++) { |
FX_BOOL bItem = TRUE; |
- CPDF_Dictionary* pItemDict = ((CPDF_Array*)pOCGObj)->GetDict(i); |
- if (pItemDict) { |
+ CPDF_Dictionary* pItemDict = pArray->GetDict(i); |
+ if (pItemDict) |
bItem = bFromConfig ? LoadOCGState(pItemDict) : GetOCGVisible(pItemDict); |
- } |
- if (csP == FX_BSTRC("AnyOn") && bItem) { |
- return TRUE; |
- } |
- if (csP == FX_BSTRC("AnyOff") && !bItem) { |
+ |
+ if ((csP == FX_BSTRC("AnyOn") && bItem) || |
+ (csP == FX_BSTRC("AnyOff") && !bItem)) |
return TRUE; |
- } |
- if (csP == FX_BSTRC("AllOn") && !bItem) { |
+ if ((csP == FX_BSTRC("AllOn") && !bItem) || |
+ (csP == FX_BSTRC("AllOff") && bItem)) |
return FALSE; |
- } |
- if (csP == FX_BSTRC("AllOff") && bItem) { |
- return FALSE; |
- } |
} |
return bState; |
} |