Simplify code in fpdf_transformpage.cpp.
Change-Id: I4a33ad52bf5d0710a44f784da9f50123771b8416
Reviewed-on: https://pdfium-review.googlesource.com/17150
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Art Snake <art-snake@yandex-team.ru>
diff --git a/fpdfsdk/fpdf_transformpage.cpp b/fpdfsdk/fpdf_transformpage.cpp
index 7ba3a3f..e8a2705 100644
--- a/fpdfsdk/fpdf_transformpage.cpp
+++ b/fpdfsdk/fpdf_transformpage.cpp
@@ -55,13 +55,7 @@
}
CPDF_Object* GetPageContent(CPDF_Dictionary* pPageDict) {
- if (!pPageDict)
- return nullptr;
-
- CPDF_Object* pContentObj = pPageDict->GetObjectFor("Contents");
- if (!pContentObj)
- pContentObj = pPageDict->GetArrayFor("Contents");
- return pContentObj;
+ return pPageDict ? pPageDict->GetDirectObjectFor("Contents") : nullptr;
}
} // namespace
@@ -150,30 +144,16 @@
pdfium::MakeUnique<CPDF_Dictionary>(pDoc->GetByteStringPool()));
pEndStream->SetData((const uint8_t*)" Q", 2);
- CPDF_Array* pContentArray = nullptr;
- CPDF_Array* pArray = ToArray(pContentObj);
- if (pArray) {
- pContentArray = pArray;
+ if (CPDF_Array* pContentArray = ToArray(pContentObj)) {
pContentArray->InsertNewAt<CPDF_Reference>(0, pDoc, pStream->GetObjNum());
pContentArray->AddNew<CPDF_Reference>(pDoc, pEndStream->GetObjNum());
- } else if (CPDF_Reference* pReference = ToReference(pContentObj)) {
- CPDF_Object* pDirectObj = pReference->GetDirect();
- if (pDirectObj) {
- CPDF_Array* pObjArray = pDirectObj->AsArray();
- if (pObjArray) {
- pContentArray = pObjArray;
- pContentArray->InsertNewAt<CPDF_Reference>(0, pDoc,
- pStream->GetObjNum());
- pContentArray->AddNew<CPDF_Reference>(pDoc, pEndStream->GetObjNum());
- } else if (pDirectObj->IsStream()) {
- pContentArray = pDoc->NewIndirect<CPDF_Array>();
- pContentArray->AddNew<CPDF_Reference>(pDoc, pStream->GetObjNum());
- pContentArray->AddNew<CPDF_Reference>(pDoc, pDirectObj->GetObjNum());
- pContentArray->AddNew<CPDF_Reference>(pDoc, pEndStream->GetObjNum());
- pPageDict->SetNewFor<CPDF_Reference>("Contents", pDoc,
- pContentArray->GetObjNum());
- }
- }
+ } else if (pContentObj->IsStream() && !pContentObj->IsInline()) {
+ CPDF_Array* pContentArray = pDoc->NewIndirect<CPDF_Array>();
+ pContentArray->AddNew<CPDF_Reference>(pDoc, pStream->GetObjNum());
+ pContentArray->AddNew<CPDF_Reference>(pDoc, pContentObj->GetObjNum());
+ pContentArray->AddNew<CPDF_Reference>(pDoc, pEndStream->GetObjNum());
+ pPageDict->SetNewFor<CPDF_Reference>("Contents", pDoc,
+ pContentArray->GetObjNum());
}
// Need to transform the patterns as well.
@@ -316,28 +296,12 @@
pdfium::MakeUnique<CPDF_Dictionary>(pDoc->GetByteStringPool()));
pStream->SetData(&strClip);
- CPDF_Array* pArray = ToArray(pContentObj);
- if (pArray) {
+ if (CPDF_Array* pArray = ToArray(pContentObj)) {
pArray->InsertNewAt<CPDF_Reference>(0, pDoc, pStream->GetObjNum());
- return;
- }
- CPDF_Reference* pReference = ToReference(pContentObj);
- if (!pReference)
- return;
-
- CPDF_Object* pDirectObj = pReference->GetDirect();
- if (!pDirectObj)
- return;
-
- CPDF_Array* pObjArray = pDirectObj->AsArray();
- if (pObjArray) {
- pObjArray->InsertNewAt<CPDF_Reference>(0, pDoc, pStream->GetObjNum());
- return;
- }
- if (pDirectObj->IsStream()) {
+ } else if (pContentObj->IsStream() && !pContentObj->IsInline()) {
CPDF_Array* pContentArray = pDoc->NewIndirect<CPDF_Array>();
pContentArray->AddNew<CPDF_Reference>(pDoc, pStream->GetObjNum());
- pContentArray->AddNew<CPDF_Reference>(pDoc, pDirectObj->GetObjNum());
+ pContentArray->AddNew<CPDF_Reference>(pDoc, pContentObj->GetObjNum());
pPageDict->SetNewFor<CPDF_Reference>("Contents", pDoc,
pContentArray->GetObjNum());
}