OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "core/include/fpdfapi/fpdf_parser.h" | 7 #include "core/include/fpdfapi/fpdf_parser.h" |
8 | 8 |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 return 0; | 303 return 0; |
304 } | 304 } |
305 if (!pPages->KeyExist("Kids")) { | 305 if (!pPages->KeyExist("Kids")) { |
306 return 1; | 306 return 1; |
307 } | 307 } |
308 std::set<CPDF_Dictionary*> visited_pages; | 308 std::set<CPDF_Dictionary*> visited_pages; |
309 visited_pages.insert(pPages); | 309 visited_pages.insert(pPages); |
310 return CountPages(pPages, &visited_pages); | 310 return CountPages(pPages, &visited_pages); |
311 } | 311 } |
312 | 312 |
313 FX_BOOL CPDF_Document::IsContentUsedElsewhere(FX_DWORD objnum, | |
314 CPDF_Dictionary* pThisPageDict) { | |
315 for (int i = 0; i < m_PageList.GetSize(); i++) { | |
316 CPDF_Dictionary* pPageDict = GetPage(i); | |
317 if (pPageDict == pThisPageDict) { | |
318 continue; | |
319 } | |
320 CPDF_Object* pContents = | |
321 pPageDict ? pPageDict->GetElement("Contents") : NULL; | |
322 if (!pContents) { | |
323 continue; | |
324 } | |
325 if (pContents->GetDirectType() == PDFOBJ_ARRAY) { | |
326 CPDF_Array* pArray = pContents->GetDirect()->AsArray(); | |
327 for (FX_DWORD j = 0; j < pArray->GetCount(); j++) { | |
328 CPDF_Reference* pRef = ToReference(pArray->GetElement(j)); | |
329 if (pRef && pRef->GetRefObjNum() == objnum) | |
330 return TRUE; | |
331 } | |
332 } else if (pContents->GetObjNum() == objnum) { | |
333 return TRUE; | |
334 } | |
335 } | |
336 return FALSE; | |
337 } | |
338 FX_DWORD CPDF_Document::GetUserPermissions(FX_BOOL bCheckRevision) const { | 313 FX_DWORD CPDF_Document::GetUserPermissions(FX_BOOL bCheckRevision) const { |
339 if (!m_pParser) { | 314 if (!m_pParser) { |
340 return (FX_DWORD)-1; | 315 return (FX_DWORD)-1; |
341 } | 316 } |
342 return m_pParser->GetPermissions(bCheckRevision); | 317 return m_pParser->GetPermissions(bCheckRevision); |
343 } | 318 } |
| 319 |
344 FX_BOOL CPDF_Document::IsOwner() const { | 320 FX_BOOL CPDF_Document::IsOwner() const { |
345 return !m_pParser || m_pParser->IsOwner(); | 321 return !m_pParser || m_pParser->IsOwner(); |
346 } | 322 } |
| 323 |
347 FX_BOOL CPDF_Document::IsFormStream(FX_DWORD objnum, FX_BOOL& bForm) const { | 324 FX_BOOL CPDF_Document::IsFormStream(FX_DWORD objnum, FX_BOOL& bForm) const { |
348 auto it = m_IndirectObjs.find(objnum); | 325 auto it = m_IndirectObjs.find(objnum); |
349 if (it != m_IndirectObjs.end()) { | 326 if (it != m_IndirectObjs.end()) { |
350 CPDF_Stream* pStream = it->second->AsStream(); | 327 CPDF_Stream* pStream = it->second->AsStream(); |
351 bForm = pStream && pStream->GetDict()->GetString("Subtype") == "Form"; | 328 bForm = pStream && pStream->GetDict()->GetString("Subtype") == "Form"; |
352 return TRUE; | 329 return TRUE; |
353 } | 330 } |
354 if (!m_pParser) { | 331 if (!m_pParser) { |
355 bForm = FALSE; | 332 bForm = FALSE; |
356 return TRUE; | 333 return TRUE; |
357 } | 334 } |
358 return m_pParser->IsFormStream(objnum, bForm); | 335 return m_pParser->IsFormStream(objnum, bForm); |
359 } | 336 } |
| 337 |
360 void CPDF_Document::ClearPageData() { | 338 void CPDF_Document::ClearPageData() { |
361 if (m_pDocPage) { | 339 if (m_pDocPage) |
362 CPDF_ModuleMgr::Get()->GetPageModule()->ClearDoc(this); | 340 CPDF_ModuleMgr::Get()->GetPageModule()->ClearDoc(this); |
363 } | |
364 } | 341 } |
| 342 |
365 void CPDF_Document::ClearRenderData() { | 343 void CPDF_Document::ClearRenderData() { |
366 if (m_pDocRender) { | 344 if (m_pDocRender) |
367 CPDF_ModuleMgr::Get()->GetRenderModule()->ClearDocData(m_pDocRender); | 345 CPDF_ModuleMgr::Get()->GetRenderModule()->ClearDocData(m_pDocRender); |
368 } | |
369 } | 346 } |
OLD | NEW |