Index: core/src/fpdfdoc/doc_basic.cpp |
diff --git a/core/src/fpdfdoc/doc_basic.cpp b/core/src/fpdfdoc/doc_basic.cpp |
index 39b5788c86c0543bf46a881e0d1777ce603ed0a3..e3b630862c4e140e7c71530b9ff8837348715dea 100644 |
--- a/core/src/fpdfdoc/doc_basic.cpp |
+++ b/core/src/fpdfdoc/doc_basic.cpp |
@@ -17,7 +17,7 @@ int CPDF_Dest::GetPageIndex(CPDF_Document* pDoc) { |
if (pPage->GetType() == PDFOBJ_NUMBER) { |
return pPage->GetInteger(); |
} |
- if (pPage->GetType() != PDFOBJ_DICTIONARY) { |
+ if (!pPage->IsDictionary()) { |
return 0; |
} |
return pDoc->GetPageIndex(pPage->GetObjNum()); |
@@ -33,7 +33,7 @@ FX_DWORD CPDF_Dest::GetPageObjNum() { |
if (pPage->GetType() == PDFOBJ_NUMBER) { |
return pPage->GetInteger(); |
} |
- if (pPage->GetType() == PDFOBJ_DICTIONARY) { |
+ if (pPage->IsDictionary()) { |
return pPage->GetObjNum(); |
} |
return 0; |
@@ -243,8 +243,8 @@ CPDF_Array* CPDF_NameTree::LookupNamedDest(CPDF_Document* pDoc, |
if (pValue->GetType() == PDFOBJ_ARRAY) { |
return (CPDF_Array*)pValue; |
} |
- if (pValue->GetType() == PDFOBJ_DICTIONARY) { |
- return ((CPDF_Dictionary*)pValue)->GetArray(FX_BSTRC("D")); |
+ if (CPDF_Dictionary* pDict = pValue->AsDictionary()) { |
+ return pDict->GetArray(FX_BSTRC("D")); |
} |
return NULL; |
} |
@@ -311,11 +311,10 @@ static CFX_WideString FILESPEC_DecodeFileName(const CFX_WideStringC& filepath) { |
#endif |
} |
FX_BOOL CPDF_FileSpec::GetFileName(CFX_WideString& csFileName) const { |
- if (m_pObj == NULL) { |
+ if (!m_pObj) { |
return FALSE; |
} |
- if (m_pObj->GetType() == PDFOBJ_DICTIONARY) { |
- CPDF_Dictionary* pDict = (CPDF_Dictionary*)m_pObj; |
+ if (CPDF_Dictionary* pDict = m_pObj->AsDictionary()) { |
csFileName = pDict->GetUnicodeText(FX_BSTRC("UF")); |
if (csFileName.IsEmpty()) { |
csFileName = CFX_WideString::FromLocal(pDict->GetString(FX_BSTRC("F"))); |
@@ -345,20 +344,15 @@ FX_BOOL CPDF_FileSpec::GetFileName(CFX_WideString& csFileName) const { |
} |
CPDF_FileSpec::CPDF_FileSpec() { |
m_pObj = CPDF_Dictionary::Create(); |
- if (m_pObj != NULL) { |
- ((CPDF_Dictionary*)m_pObj) |
- ->SetAtName(FX_BSTRC("Type"), FX_BSTRC("Filespec")); |
+ if (CPDF_Dictionary* pDict = ToDictionary(m_pObj)) { |
+ pDict->SetAtName(FX_BSTRC("Type"), FX_BSTRC("Filespec")); |
} |
} |
FX_BOOL CPDF_FileSpec::IsURL() const { |
- if (m_pObj == NULL) { |
- return FALSE; |
- } |
- if (m_pObj->GetType() != PDFOBJ_DICTIONARY) { |
- return FALSE; |
+ if (CPDF_Dictionary* pDict = ToDictionary(m_pObj)) { |
+ return pDict->GetString(FX_BSTRC("FS")) == FX_BSTRC("URL"); |
} |
- return ((CPDF_Dictionary*)m_pObj)->GetString(FX_BSTRC("FS")) == |
- FX_BSTRC("URL"); |
+ return FALSE; |
} |
CFX_WideString FILESPEC_EncodeFileName(const CFX_WideStringC& filepath) { |
if (filepath.GetLength() <= 1) { |
@@ -402,15 +396,10 @@ CPDF_Stream* CPDF_FileSpec::GetFileStream() const { |
return NULL; |
} |
int32_t iType = m_pObj->GetType(); |
- if (iType == PDFOBJ_STREAM) { |
+ if (iType == PDFOBJ_STREAM) |
return (CPDF_Stream*)m_pObj; |
- } else if (iType == PDFOBJ_DICTIONARY) { |
- CPDF_Dictionary* pEF = ((CPDF_Dictionary*)m_pObj)->GetDict(FX_BSTRC("EF")); |
- if (pEF == NULL) { |
- return NULL; |
- } |
+ if (CPDF_Dictionary* pEF = m_pObj->AsDictionary()->GetDict(FX_BSTRC("EF"))) |
return pEF->GetStream(FX_BSTRC("F")); |
- } |
return NULL; |
} |
static void FPDFDOC_FILESPEC_SetFileName(CPDF_Object* pObj, |
@@ -426,8 +415,7 @@ static void FPDFDOC_FILESPEC_SetFileName(CPDF_Object* pObj, |
int32_t iType = pObj->GetType(); |
if (iType == PDFOBJ_STRING) { |
pObj->SetString(CFX_ByteString::FromUnicode(wsStr)); |
- } else if (iType == PDFOBJ_DICTIONARY) { |
- CPDF_Dictionary* pDict = (CPDF_Dictionary*)pObj; |
+ } else if (CPDF_Dictionary* pDict = pObj->AsDictionary()) { |
pDict->SetAtString(FX_BSTRC("F"), CFX_ByteString::FromUnicode(wsStr)); |
pDict->SetAtString(FX_BSTRC("UF"), PDF_EncodeText(wsStr)); |
} |
@@ -435,8 +423,10 @@ static void FPDFDOC_FILESPEC_SetFileName(CPDF_Object* pObj, |
void CPDF_FileSpec::SetFileName(const CFX_WideStringC& wsFileName, |
FX_BOOL bURL) { |
ASSERT(m_pObj != NULL); |
- if (m_pObj->GetType() == PDFOBJ_DICTIONARY && bURL) { |
- ((CPDF_Dictionary*)m_pObj)->SetAtName(FX_BSTRC("FS"), "URL"); |
+ if (bURL) { |
+ if (CPDF_Dictionary* pDict = m_pObj->AsDictionary()) { |
+ pDict->SetAtName(FX_BSTRC("FS"), "URL"); |
+ } |
} |
FPDFDOC_FILESPEC_SetFileName(m_pObj, wsFileName, bURL); |
} |
@@ -517,8 +507,7 @@ CFX_WideString CPDF_PageLabel::GetLabel(int nPage) const { |
} |
if (pValue != NULL) { |
pValue = pValue->GetDirect(); |
- if (pValue->GetType() == PDFOBJ_DICTIONARY) { |
- CPDF_Dictionary* pLabel = (CPDF_Dictionary*)pValue; |
+ if (CPDF_Dictionary* pLabel = pValue->AsDictionary()) { |
if (pLabel->KeyExist(FX_BSTRC("P"))) { |
wsLabel += pLabel->GetUnicodeText(FX_BSTRC("P")); |
} |