summaryrefslogtreecommitdiff
path: root/core/fpdfapi/fpdf_parser/include
diff options
context:
space:
mode:
authordsinclair <dsinclair@chromium.org>2016-09-29 12:01:30 -0700
committerCommit bot <commit-bot@chromium.org>2016-09-29 12:01:30 -0700
commitc6c425af1156587fd9b770e5d40bc087df0c63d8 (patch)
treeb73f313c39cd2b1a275a0f9e1ad7206baf5f95d1 /core/fpdfapi/fpdf_parser/include
parent8a752ab21daa2dcd0314ab5e3908f8d6e7bba2b7 (diff)
downloadpdfium-c6c425af1156587fd9b770e5d40bc087df0c63d8.tar.xz
Move core/fpdfapi/fpdf_parser/include to core/fpdfapi/fpdf_parser
BUG=pdfium:611 Review-Url: https://codereview.chromium.org/2383543002
Diffstat (limited to 'core/fpdfapi/fpdf_parser/include')
-rw-r--r--core/fpdfapi/fpdf_parser/include/cfdf_document.h42
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_array.h72
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_data_avail.h253
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h97
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_document.h145
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_indirect_object_holder.h48
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_name.h32
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_number.h44
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_object.h183
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_parser.h177
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_reference.h55
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_simple_parser.h35
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_stream.h61
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_stream_acc.h46
-rw-r--r--core/fpdfapi/fpdf_parser/include/cpdf_string.h39
-rw-r--r--core/fpdfapi/fpdf_parser/include/fpdf_parser_decode.h77
16 files changed, 0 insertions, 1406 deletions
diff --git a/core/fpdfapi/fpdf_parser/include/cfdf_document.h b/core/fpdfapi/fpdf_parser/include/cfdf_document.h
deleted file mode 100644
index 25366b0cd4..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cfdf_document.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CFDF_DOCUMENT_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CFDF_DOCUMENT_H_
-
-#include "core/fpdfapi/fpdf_parser/include/cpdf_indirect_object_holder.h"
-#include "core/fpdfapi/fpdf_parser/include/cpdf_object.h"
-#include "core/fxcrt/include/cfx_string_pool_template.h"
-#include "core/fxcrt/include/cfx_weak_ptr.h"
-#include "core/fxcrt/include/fx_basic.h"
-
-class CPDF_Dictionary;
-
-class CFDF_Document : public CPDF_IndirectObjectHolder {
- public:
- static CFDF_Document* CreateNewDoc();
- static CFDF_Document* ParseFile(IFX_FileRead* pFile,
- FX_BOOL bOwnFile = FALSE);
- static CFDF_Document* ParseMemory(const uint8_t* pData, uint32_t size);
- ~CFDF_Document() override;
-
- FX_BOOL WriteBuf(CFX_ByteTextBuf& buf) const;
- CPDF_Dictionary* GetRoot() const { return m_pRootDict; }
- CFX_WeakPtr<CFX_ByteStringPool> GetByteStringPool() const {
- return m_pByteStringPool;
- }
-
- protected:
- CFDF_Document();
- void ParseStream(IFX_FileRead* pFile, FX_BOOL bOwnFile);
-
- CPDF_Dictionary* m_pRootDict;
- IFX_FileRead* m_pFile;
- FX_BOOL m_bOwnFile;
- CFX_WeakPtr<CFX_ByteStringPool> m_pByteStringPool;
-};
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CFDF_DOCUMENT_H_
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_array.h b/core/fpdfapi/fpdf_parser/include/cpdf_array.h
deleted file mode 100644
index a63c40cddb..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cpdf_array.h
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_ARRAY_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_ARRAY_H_
-
-#include <set>
-#include <vector>
-
-#include "core/fpdfapi/fpdf_parser/include/cpdf_indirect_object_holder.h"
-#include "core/fpdfapi/fpdf_parser/include/cpdf_object.h"
-#include "core/fxcrt/include/fx_basic.h"
-#include "core/fxcrt/include/fx_coordinates.h"
-
-class CPDF_Array : public CPDF_Object {
- public:
- using iterator = std::vector<CPDF_Object*>::iterator;
- using const_iterator = std::vector<CPDF_Object*>::const_iterator;
-
- CPDF_Array();
-
- // CPDF_Object.
- Type GetType() const override;
- CPDF_Object* Clone() const override;
- bool IsArray() const override;
- CPDF_Array* AsArray() override;
- const CPDF_Array* AsArray() const override;
-
- bool IsEmpty() const { return m_Objects.empty(); }
- size_t GetCount() const { return m_Objects.size(); }
- CPDF_Object* GetObjectAt(size_t index) const;
- CPDF_Object* GetDirectObjectAt(size_t index) const;
- CFX_ByteString GetStringAt(size_t index) const;
- int GetIntegerAt(size_t index) const;
- FX_FLOAT GetNumberAt(size_t index) const;
- CPDF_Dictionary* GetDictAt(size_t index) const;
- CPDF_Stream* GetStreamAt(size_t index) const;
- CPDF_Array* GetArrayAt(size_t index) const;
- FX_FLOAT GetFloatAt(size_t index) const { return GetNumberAt(index); }
- CFX_Matrix GetMatrix();
- CFX_FloatRect GetRect();
-
- void SetAt(size_t index, CPDF_Object* pObj);
- void InsertAt(size_t index, CPDF_Object* pObj);
- void RemoveAt(size_t index, size_t nCount = 1);
-
- void Add(CPDF_Object* pObj);
- void AddNumber(FX_FLOAT f);
- void AddInteger(int i);
- void AddString(const CFX_ByteString& str);
- void AddName(const CFX_ByteString& str);
- void AddReference(CPDF_IndirectObjectHolder* pDoc, uint32_t objnum);
-
- iterator begin() { return m_Objects.begin(); }
- iterator end() { return m_Objects.end(); }
- const_iterator begin() const { return m_Objects.begin(); }
- const_iterator end() const { return m_Objects.end(); }
-
- protected:
- ~CPDF_Array() override;
-
- CPDF_Object* CloneNonCyclic(
- bool bDirect,
- std::set<const CPDF_Object*>* pVisited) const override;
-
- std::vector<CPDF_Object*> m_Objects;
-};
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_ARRAY_H_
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_data_avail.h b/core/fpdfapi/fpdf_parser/include/cpdf_data_avail.h
deleted file mode 100644
index b93394cd8f..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cpdf_data_avail.h
+++ /dev/null
@@ -1,253 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_DATA_AVAIL_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_DATA_AVAIL_H_
-
-#include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h"
-#include "core/fpdfapi/fpdf_parser/include/cpdf_parser.h"
-#include "core/fxcrt/include/fx_basic.h"
-
-class CPDF_Dictionary;
-class CPDF_HintTables;
-class CPDF_IndirectObjectHolder;
-class CPDF_Parser;
-
-enum PDF_DATAAVAIL_STATUS {
- PDF_DATAAVAIL_HEADER = 0,
- PDF_DATAAVAIL_FIRSTPAGE,
- PDF_DATAAVAIL_FIRSTPAGE_PREPARE,
- PDF_DATAAVAIL_HINTTABLE,
- PDF_DATAAVAIL_END,
- PDF_DATAAVAIL_CROSSREF,
- PDF_DATAAVAIL_CROSSREF_ITEM,
- PDF_DATAAVAIL_CROSSREF_STREAM,
- PDF_DATAAVAIL_TRAILER,
- PDF_DATAAVAIL_LOADALLCROSSREF,
- PDF_DATAAVAIL_ROOT,
- PDF_DATAAVAIL_INFO,
- PDF_DATAAVAIL_ACROFORM,
- PDF_DATAAVAIL_ACROFORM_SUBOBJECT,
- PDF_DATAAVAIL_PAGETREE,
- PDF_DATAAVAIL_PAGE,
- PDF_DATAAVAIL_PAGE_LATERLOAD,
- PDF_DATAAVAIL_RESOURCES,
- PDF_DATAAVAIL_DONE,
- PDF_DATAAVAIL_ERROR,
- PDF_DATAAVAIL_LOADALLFILE,
- PDF_DATAAVAIL_TRAILER_APPEND
-};
-
-enum PDF_PAGENODE_TYPE {
- PDF_PAGENODE_UNKNOWN = 0,
- PDF_PAGENODE_PAGE,
- PDF_PAGENODE_PAGES,
- PDF_PAGENODE_ARRAY,
-};
-
-class CPDF_DataAvail final {
- public:
- // Must match PDF_DATA_* definitions in public/fpdf_dataavail.h, but cannot
- // #include that header. fpdfsdk/fpdf_dataavail.cpp has static_asserts
- // to make sure the two sets of values match.
- enum DocAvailStatus {
- DataError = -1, // PDF_DATA_ERROR
- DataNotAvailable = 0, // PDF_DATA_NOTAVAIL
- DataAvailable = 1, // PDF_DATA_AVAIL
- };
-
- // Must match PDF_*LINEAR* definitions in public/fpdf_dataavail.h, but cannot
- // #include that header. fpdfsdk/fpdf_dataavail.cpp has static_asserts
- // to make sure the two sets of values match.
- enum DocLinearizationStatus {
- LinearizationUnknown = -1, // PDF_LINEARIZATION_UNKNOWN
- NotLinearized = 0, // PDF_NOT_LINEARIZED
- Linearized = 1, // PDF_LINEARIZED
- };
-
- // Must match PDF_FORM_* definitions in public/fpdf_dataavail.h, but cannot
- // #include that header. fpdfsdk/fpdf_dataavail.cpp has static_asserts
- // to make sure the two sets of values match.
- enum DocFormStatus {
- FormError = -1, // PDF_FORM_ERROR
- FormNotAvailable = 0, // PDF_FORM_NOTAVAIL
- FormAvailable = 1, // PDF_FORM_AVAIL
- FormNotExist = 2, // PDF_FORM_NOTEXIST
- };
-
- class FileAvail {
- public:
- virtual ~FileAvail();
- virtual FX_BOOL IsDataAvail(FX_FILESIZE offset, uint32_t size) = 0;
- };
-
- class DownloadHints {
- public:
- virtual ~DownloadHints();
- virtual void AddSegment(FX_FILESIZE offset, uint32_t size) = 0;
- };
-
- CPDF_DataAvail(FileAvail* pFileAvail,
- IFX_FileRead* pFileRead,
- FX_BOOL bSupportHintTable);
- ~CPDF_DataAvail();
-
- DocAvailStatus IsDocAvail(DownloadHints* pHints);
- void SetDocument(CPDF_Document* pDoc);
- DocAvailStatus IsPageAvail(uint32_t dwPage, DownloadHints* pHints);
- DocFormStatus IsFormAvail(DownloadHints* pHints);
- DocLinearizationStatus IsLinearizedPDF();
- FX_BOOL IsLinearized();
- void GetLinearizedMainXRefInfo(FX_FILESIZE* pPos, uint32_t* pSize);
- IFX_FileRead* GetFileRead() const { return m_pFileRead; }
- int GetPageCount() const;
- CPDF_Dictionary* GetPage(int index);
-
- friend class CPDF_HintTables;
-
- protected:
- class PageNode {
- public:
- PageNode();
- ~PageNode();
-
- PDF_PAGENODE_TYPE m_type;
- uint32_t m_dwPageNo;
- CFX_ArrayTemplate<PageNode*> m_childNode;
- };
-
- static const int kMaxDataAvailRecursionDepth = 64;
- static int s_CurrentDataAvailRecursionDepth;
- static const int kMaxPageRecursionDepth = 1024;
-
- uint32_t GetObjectSize(uint32_t objnum, FX_FILESIZE& offset);
- FX_BOOL IsObjectsAvail(CFX_ArrayTemplate<CPDF_Object*>& obj_array,
- FX_BOOL bParsePage,
- DownloadHints* pHints,
- CFX_ArrayTemplate<CPDF_Object*>& ret_array);
- FX_BOOL CheckDocStatus(DownloadHints* pHints);
- FX_BOOL CheckHeader(DownloadHints* pHints);
- FX_BOOL CheckFirstPage(DownloadHints* pHints);
- FX_BOOL CheckHintTables(DownloadHints* pHints);
- FX_BOOL CheckEnd(DownloadHints* pHints);
- FX_BOOL CheckCrossRef(DownloadHints* pHints);
- FX_BOOL CheckCrossRefItem(DownloadHints* pHints);
- FX_BOOL CheckTrailer(DownloadHints* pHints);
- FX_BOOL CheckRoot(DownloadHints* pHints);
- FX_BOOL CheckInfo(DownloadHints* pHints);
- FX_BOOL CheckPages(DownloadHints* pHints);
- FX_BOOL CheckPage(DownloadHints* pHints);
- FX_BOOL CheckResources(DownloadHints* pHints);
- FX_BOOL CheckAnnots(DownloadHints* pHints);
- FX_BOOL CheckAcroForm(DownloadHints* pHints);
- FX_BOOL CheckAcroFormSubObject(DownloadHints* pHints);
- FX_BOOL CheckTrailerAppend(DownloadHints* pHints);
- FX_BOOL CheckPageStatus(DownloadHints* pHints);
- FX_BOOL CheckAllCrossRefStream(DownloadHints* pHints);
-
- int32_t CheckCrossRefStream(DownloadHints* pHints, FX_FILESIZE& xref_offset);
- FX_BOOL IsLinearizedFile(uint8_t* pData, uint32_t dwLen);
- void SetStartOffset(FX_FILESIZE dwOffset);
- FX_BOOL GetNextToken(CFX_ByteString& token);
- FX_BOOL GetNextChar(uint8_t& ch);
- CPDF_Object* ParseIndirectObjectAt(
- FX_FILESIZE pos,
- uint32_t objnum,
- CPDF_IndirectObjectHolder* pObjList = nullptr);
- CPDF_Object* GetObject(uint32_t objnum,
- DownloadHints* pHints,
- FX_BOOL* pExistInFile);
- FX_BOOL GetPageKids(CPDF_Parser* pParser, CPDF_Object* pPages);
- FX_BOOL PreparePageItem();
- FX_BOOL LoadPages(DownloadHints* pHints);
- FX_BOOL LoadAllXref(DownloadHints* pHints);
- FX_BOOL LoadAllFile(DownloadHints* pHints);
- DocAvailStatus CheckLinearizedData(DownloadHints* pHints);
- FX_BOOL CheckPageAnnots(uint32_t dwPage, DownloadHints* pHints);
-
- DocAvailStatus CheckLinearizedFirstPage(uint32_t dwPage,
- DownloadHints* pHints);
- FX_BOOL HaveResourceAncestor(CPDF_Dictionary* pDict);
- FX_BOOL CheckPage(uint32_t dwPage, DownloadHints* pHints);
- FX_BOOL LoadDocPages(DownloadHints* pHints);
- FX_BOOL LoadDocPage(uint32_t dwPage, DownloadHints* pHints);
- FX_BOOL CheckPageNode(PageNode& pageNodes,
- int32_t iPage,
- int32_t& iCount,
- DownloadHints* pHints,
- int level);
- FX_BOOL CheckUnkownPageNode(uint32_t dwPageNo,
- PageNode* pPageNode,
- DownloadHints* pHints);
- FX_BOOL CheckArrayPageNode(uint32_t dwPageNo,
- PageNode* pPageNode,
- DownloadHints* pHints);
- FX_BOOL CheckPageCount(DownloadHints* pHints);
- bool IsFirstCheck(uint32_t dwPage);
- void ResetFirstCheck(uint32_t dwPage);
- FX_BOOL IsDataAvail(FX_FILESIZE offset, uint32_t size, DownloadHints* pHints);
-
- FileAvail* const m_pFileAvail;
- IFX_FileRead* const m_pFileRead;
- CPDF_Parser m_parser;
- CPDF_SyntaxParser m_syntaxParser;
- CPDF_Object* m_pRoot;
- uint32_t m_dwRootObjNum;
- uint32_t m_dwInfoObjNum;
- CPDF_Object* m_pLinearized;
- CPDF_Object* m_pTrailer;
- FX_BOOL m_bDocAvail;
- FX_FILESIZE m_dwHeaderOffset;
- FX_FILESIZE m_dwLastXRefOffset;
- FX_FILESIZE m_dwXRefOffset;
- FX_FILESIZE m_dwTrailerOffset;
- FX_FILESIZE m_dwCurrentOffset;
- PDF_DATAAVAIL_STATUS m_docStatus;
- FX_FILESIZE m_dwFileLen;
- CPDF_Document* m_pDocument;
- std::set<uint32_t> m_ObjectSet;
- CFX_ArrayTemplate<CPDF_Object*> m_objs_array;
- FX_FILESIZE m_Pos;
- FX_FILESIZE m_bufferOffset;
- uint32_t m_bufferSize;
- CFX_ByteString m_WordBuf;
- uint8_t m_bufferData[512];
- CFX_ArrayTemplate<uint32_t> m_XRefStreamList;
- CFX_ArrayTemplate<uint32_t> m_PageObjList;
- uint32_t m_PagesObjNum;
- FX_BOOL m_bLinearized;
- uint32_t m_dwFirstPageNo;
- FX_BOOL m_bLinearedDataOK;
- FX_BOOL m_bMainXRefLoadTried;
- FX_BOOL m_bMainXRefLoadedOK;
- FX_BOOL m_bPagesTreeLoad;
- FX_BOOL m_bPagesLoad;
- CPDF_Parser* m_pCurrentParser;
- FX_FILESIZE m_dwCurrentXRefSteam;
- FX_BOOL m_bAnnotsLoad;
- FX_BOOL m_bHaveAcroForm;
- uint32_t m_dwAcroFormObjNum;
- FX_BOOL m_bAcroFormLoad;
- CPDF_Object* m_pAcroForm;
- CFX_ArrayTemplate<CPDF_Object*> m_arrayAcroforms;
- CPDF_Dictionary* m_pPageDict;
- CPDF_Object* m_pPageResource;
- FX_BOOL m_bNeedDownLoadResource;
- FX_BOOL m_bPageLoadedOK;
- FX_BOOL m_bLinearizedFormParamLoad;
- CFX_ArrayTemplate<CPDF_Object*> m_PagesArray;
- uint32_t m_dwEncryptObjNum;
- FX_FILESIZE m_dwPrevXRefOffset;
- FX_BOOL m_bTotalLoadPageTree;
- FX_BOOL m_bCurPageDictLoadOK;
- PageNode m_pageNodes;
- std::set<uint32_t> m_pageMapCheckState;
- std::set<uint32_t> m_pagesLoadState;
- std::unique_ptr<CPDF_HintTables> m_pHintTables;
- FX_BOOL m_bSupportHintTable;
-};
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_DATA_AVAIL_H_
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h b/core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h
deleted file mode 100644
index 501b287dfc..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_DICTIONARY_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_DICTIONARY_H_
-
-#include <map>
-#include <set>
-
-#include "core/fpdfapi/fpdf_parser/include/cpdf_object.h"
-#include "core/fxcrt/include/cfx_string_pool_template.h"
-#include "core/fxcrt/include/cfx_weak_ptr.h"
-#include "core/fxcrt/include/fx_coordinates.h"
-#include "core/fxcrt/include/fx_string.h"
-
-class CPDF_IndirectObjectHolder;
-
-class CPDF_Dictionary : public CPDF_Object {
- public:
- using iterator = std::map<CFX_ByteString, CPDF_Object*>::iterator;
- using const_iterator = std::map<CFX_ByteString, CPDF_Object*>::const_iterator;
-
- explicit CPDF_Dictionary(const CFX_WeakPtr<CFX_ByteStringPool>& pPool);
-
- // CPDF_Object.
- Type GetType() const override;
- CPDF_Object* Clone() const override;
- CPDF_Dictionary* GetDict() const override;
- bool IsDictionary() const override;
- CPDF_Dictionary* AsDictionary() override;
- const CPDF_Dictionary* AsDictionary() const override;
-
- size_t GetCount() const { return m_Map.size(); }
- CPDF_Object* GetObjectFor(const CFX_ByteString& key) const;
- CPDF_Object* GetDirectObjectFor(const CFX_ByteString& key) const;
- CFX_ByteString GetStringFor(const CFX_ByteString& key) const;
- CFX_ByteString GetStringFor(const CFX_ByteString& key,
- const CFX_ByteString& default_str) const;
- CFX_WideString GetUnicodeTextFor(const CFX_ByteString& key) const;
- int GetIntegerFor(const CFX_ByteString& key) const;
- int GetIntegerFor(const CFX_ByteString& key, int default_int) const;
- bool GetBooleanFor(const CFX_ByteString& key, bool bDefault = false) const;
- FX_FLOAT GetNumberFor(const CFX_ByteString& key) const;
- CPDF_Dictionary* GetDictFor(const CFX_ByteString& key) const;
- CPDF_Stream* GetStreamFor(const CFX_ByteString& key) const;
- CPDF_Array* GetArrayFor(const CFX_ByteString& key) const;
- CFX_FloatRect GetRectFor(const CFX_ByteString& key) const;
- CFX_Matrix GetMatrixFor(const CFX_ByteString& key) const;
- FX_FLOAT GetFloatFor(const CFX_ByteString& key) const {
- return GetNumberFor(key);
- }
-
- FX_BOOL KeyExist(const CFX_ByteString& key) const;
- bool IsSignatureDict() const;
-
- // Set* functions invalidate iterators for the element with the key |key|.
- void SetFor(const CFX_ByteString& key, CPDF_Object* pObj);
- void SetNameFor(const CFX_ByteString& key, const CFX_ByteString& name);
- void SetStringFor(const CFX_ByteString& key, const CFX_ByteString& str);
- void SetIntegerFor(const CFX_ByteString& key, int i);
- void SetNumberFor(const CFX_ByteString& key, FX_FLOAT f);
- void SetReferenceFor(const CFX_ByteString& key,
- CPDF_IndirectObjectHolder* pDoc,
- uint32_t objnum);
- void SetRectFor(const CFX_ByteString& key, const CFX_FloatRect& rect);
- void SetMatrixFor(const CFX_ByteString& key, const CFX_Matrix& matrix);
- void SetBooleanFor(const CFX_ByteString& key, bool bValue);
-
- // Invalidates iterators for the element with the key |key|.
- void RemoveFor(const CFX_ByteString& key);
-
- // Invalidates iterators for the element with the key |oldkey|.
- void ReplaceKey(const CFX_ByteString& oldkey, const CFX_ByteString& newkey);
-
- iterator begin() { return m_Map.begin(); }
- iterator end() { return m_Map.end(); }
- const_iterator begin() const { return m_Map.begin(); }
- const_iterator end() const { return m_Map.end(); }
-
- CFX_WeakPtr<CFX_ByteStringPool> GetByteStringPool() const { return m_pPool; }
-
- protected:
- ~CPDF_Dictionary() override;
-
- CFX_ByteString MaybeIntern(const CFX_ByteString& str);
- CPDF_Object* CloneNonCyclic(
- bool bDirect,
- std::set<const CPDF_Object*>* visited) const override;
-
- CFX_WeakPtr<CFX_ByteStringPool> m_pPool;
- std::map<CFX_ByteString, CPDF_Object*> m_Map;
-};
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_DICTIONARY_H_
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_document.h b/core/fpdfapi/fpdf_parser/include/cpdf_document.h
deleted file mode 100644
index 383c6faeb4..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cpdf_document.h
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_DOCUMENT_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_DOCUMENT_H_
-
-#include <functional>
-#include <memory>
-
-#include "core/fpdfapi/fpdf_parser/include/cpdf_indirect_object_holder.h"
-#include "core/fpdfapi/fpdf_parser/include/cpdf_object.h"
-#include "core/fpdfdoc/include/cpdf_linklist.h"
-#include "core/fxcrt/include/cfx_string_pool_template.h"
-#include "core/fxcrt/include/cfx_weak_ptr.h"
-#include "core/fxcrt/include/fx_basic.h"
-
-class CFX_Font;
-class CFX_Matrix;
-class CPDF_ColorSpace;
-class CPDF_DocPageData;
-class CPDF_DocRenderData;
-class CPDF_Font;
-class CPDF_FontEncoding;
-class CPDF_IccProfile;
-class CPDF_Image;
-class CPDF_Parser;
-class CPDF_Pattern;
-class CPDF_StreamAcc;
-class JBig2_DocumentContext;
-
-#define FPDFPERM_PRINT 0x0004
-#define FPDFPERM_MODIFY 0x0008
-#define FPDFPERM_EXTRACT 0x0010
-#define FPDFPERM_ANNOT_FORM 0x0020
-#define FPDFPERM_FILL_FORM 0x0100
-#define FPDFPERM_EXTRACT_ACCESS 0x0200
-#define FPDFPERM_ASSEMBLE 0x0400
-#define FPDFPERM_PRINT_HIGH 0x0800
-#define FPDF_PAGE_MAX_NUM 0xFFFFF
-
-class CPDF_Document : public CPDF_IndirectObjectHolder {
- public:
- explicit CPDF_Document(std::unique_ptr<CPDF_Parser> pParser);
- ~CPDF_Document() override;
-
- CPDF_Parser* GetParser() const { return m_pParser.get(); }
- CPDF_Dictionary* GetRoot() const { return m_pRootDict; }
- CPDF_Dictionary* GetInfo() const { return m_pInfoDict; }
- CFX_WeakPtr<CFX_ByteStringPool> GetByteStringPool() const {
- return m_pByteStringPool;
- }
-
- void DeletePage(int iPage);
- int GetPageCount() const;
-
- bool IsPageLoaded(int iPage) const;
- CPDF_Dictionary* GetPage(int iPage);
- int GetPageIndex(uint32_t objnum);
- uint32_t GetUserPermissions() const;
- CPDF_DocPageData* GetPageData() const { return m_pDocPage; }
-
- void SetPageObjNum(int iPage, uint32_t objNum);
-
- std::unique_ptr<JBig2_DocumentContext>* CodecContext() {
- return &m_pCodecContext;
- }
- std::unique_ptr<CPDF_LinkList>* LinksContext() { return &m_pLinksContext; }
-
- CPDF_DocRenderData* GetRenderData() const { return m_pDocRender.get(); }
-
- // |pFontDict| must not be null.
- CPDF_Font* LoadFont(CPDF_Dictionary* pFontDict);
- CPDF_ColorSpace* LoadColorSpace(CPDF_Object* pCSObj,
- CPDF_Dictionary* pResources = nullptr);
-
- CPDF_Pattern* LoadPattern(CPDF_Object* pObj,
- FX_BOOL bShading,
- const CFX_Matrix& matrix);
-
- CPDF_Image* LoadImageF(CPDF_Object* pObj);
- CPDF_StreamAcc* LoadFontFile(CPDF_Stream* pStream);
- CPDF_IccProfile* LoadIccProfile(CPDF_Stream* pStream);
-
- void LoadDoc();
- void LoadLinearizedDoc(CPDF_Dictionary* pLinearizationParams);
- void LoadPages();
-
- void CreateNewDoc();
- CPDF_Dictionary* CreateNewPage(int iPage);
-
- CPDF_Font* AddStandardFont(const FX_CHAR* font, CPDF_FontEncoding* pEncoding);
- CPDF_Font* AddFont(CFX_Font* pFont, int charset, FX_BOOL bVert);
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
- CPDF_Font* AddWindowsFont(LOGFONTA* pLogFont,
- FX_BOOL bVert,
- FX_BOOL bTranslateName = FALSE);
- CPDF_Font* AddWindowsFont(LOGFONTW* pLogFont,
- FX_BOOL bVert,
- FX_BOOL bTranslateName = FALSE);
-#endif
-
- private:
- friend class CPDF_TestDocument;
-
- // Retrieve page count information by getting count value from the tree nodes
- int RetrievePageCount() const;
- CPDF_Dictionary* FindPDFPage(CPDF_Dictionary* pPages,
- int iPage,
- int nPagesToGo,
- int level);
- int FindPageIndex(CPDF_Dictionary* pNode,
- uint32_t& skip_count,
- uint32_t objnum,
- int& index,
- int level = 0);
- CPDF_Object* ParseIndirectObject(uint32_t objnum) override;
- void LoadDocInternal();
- size_t CalculateEncodingDict(int charset, CPDF_Dictionary* pBaseDict);
- CPDF_Dictionary* GetPagesDict() const;
- CPDF_Dictionary* ProcessbCJK(
- CPDF_Dictionary* pBaseDict,
- int charset,
- FX_BOOL bVert,
- CFX_ByteString basefont,
- std::function<void(FX_WCHAR, FX_WCHAR, CPDF_Array*)> Insert);
-
- std::unique_ptr<CPDF_Parser> m_pParser;
- CPDF_Dictionary* m_pRootDict;
- CPDF_Dictionary* m_pInfoDict;
- bool m_bLinearized;
- int m_iFirstPageNo;
- uint32_t m_dwFirstPageObjNum;
- // TODO(thestig): Figure out why this cannot be a std::unique_ptr.
- CPDF_DocPageData* m_pDocPage;
- std::unique_ptr<CPDF_DocRenderData> m_pDocRender;
- std::unique_ptr<JBig2_DocumentContext> m_pCodecContext;
- std::unique_ptr<CPDF_LinkList> m_pLinksContext;
- CFX_ArrayTemplate<uint32_t> m_PageList;
- CFX_WeakPtr<CFX_ByteStringPool> m_pByteStringPool;
-};
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_DOCUMENT_H_
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_indirect_object_holder.h b/core/fpdfapi/fpdf_parser/include/cpdf_indirect_object_holder.h
deleted file mode 100644
index 2abbda2a36..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cpdf_indirect_object_holder.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_INDIRECT_OBJECT_HOLDER_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_INDIRECT_OBJECT_HOLDER_H_
-
-#include <map>
-#include <memory>
-
-#include "core/fxcrt/include/fx_system.h"
-
-class CPDF_Object;
-
-class CPDF_IndirectObjectHolder {
- public:
- using const_iterator =
- std::map<uint32_t, std::unique_ptr<CPDF_Object>>::const_iterator;
-
- CPDF_IndirectObjectHolder();
- virtual ~CPDF_IndirectObjectHolder();
-
- CPDF_Object* GetIndirectObject(uint32_t objnum) const;
- CPDF_Object* GetOrParseIndirectObject(uint32_t objnum);
- void ReleaseIndirectObject(uint32_t objnum);
-
- // Take ownership of |pObj|.
- uint32_t AddIndirectObject(CPDF_Object* pObj);
- bool ReplaceIndirectObjectIfHigherGeneration(uint32_t objnum,
- CPDF_Object* pObj);
-
- uint32_t GetLastObjNum() const { return m_LastObjNum; }
- void SetLastObjNum(uint32_t objnum) { m_LastObjNum = objnum; }
-
- const_iterator begin() const { return m_IndirectObjs.begin(); }
- const_iterator end() const { return m_IndirectObjs.end(); }
-
- protected:
- virtual CPDF_Object* ParseIndirectObject(uint32_t objnum);
-
- private:
- uint32_t m_LastObjNum;
- std::map<uint32_t, std::unique_ptr<CPDF_Object>> m_IndirectObjs;
-};
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_INDIRECT_OBJECT_HOLDER_H_
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_name.h b/core/fpdfapi/fpdf_parser/include/cpdf_name.h
deleted file mode 100644
index 3cefa7e8c1..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cpdf_name.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_NAME_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_NAME_H_
-
-#include "core/fpdfapi/fpdf_parser/include/cpdf_object.h"
-
-class CPDF_Name : public CPDF_Object {
- public:
- explicit CPDF_Name(const CFX_ByteString& str);
-
- // CPDF_Object.
- Type GetType() const override;
- CPDF_Object* Clone() const override;
- CFX_ByteString GetString() const override;
- CFX_WideString GetUnicodeText() const override;
- void SetString(const CFX_ByteString& str) override;
- bool IsName() const override;
- CPDF_Name* AsName() override;
- const CPDF_Name* AsName() const override;
-
- protected:
- ~CPDF_Name() override;
-
- CFX_ByteString m_Name;
-};
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_NAME_H_
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_number.h b/core/fpdfapi/fpdf_parser/include/cpdf_number.h
deleted file mode 100644
index f3d9042b62..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cpdf_number.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_NUMBER_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_NUMBER_H_
-
-#include "core/fpdfapi/fpdf_parser/include/cpdf_object.h"
-#include "core/fxcrt/include/fx_string.h"
-#include "core/fxcrt/include/fx_system.h"
-
-class CPDF_Number : public CPDF_Object {
- public:
- CPDF_Number();
- explicit CPDF_Number(int value);
- explicit CPDF_Number(FX_FLOAT value);
- explicit CPDF_Number(const CFX_ByteStringC& str);
-
- // CPDF_Object.
- Type GetType() const override;
- CPDF_Object* Clone() const override;
- CFX_ByteString GetString() const override;
- FX_FLOAT GetNumber() const override;
- int GetInteger() const override;
- void SetString(const CFX_ByteString& str) override;
- bool IsNumber() const override;
- CPDF_Number* AsNumber() override;
- const CPDF_Number* AsNumber() const override;
-
- bool IsInteger() const { return m_bInteger; }
-
- protected:
- ~CPDF_Number() override;
-
- bool m_bInteger;
- union {
- int m_Integer;
- FX_FLOAT m_Float;
- };
-};
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_NUMBER_H_
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_object.h b/core/fpdfapi/fpdf_parser/include/cpdf_object.h
deleted file mode 100644
index de14503bbb..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cpdf_object.h
+++ /dev/null
@@ -1,183 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_OBJECT_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_OBJECT_H_
-
-#include <memory>
-#include <set>
-
-#include "core/fxcrt/include/fx_string.h"
-#include "core/fxcrt/include/fx_system.h"
-
-class CPDF_Array;
-class CPDF_Boolean;
-class CPDF_Dictionary;
-class CPDF_Name;
-class CPDF_Null;
-class CPDF_Number;
-class CPDF_Reference;
-class CPDF_Stream;
-class CPDF_String;
-
-class CPDF_Object {
- public:
- static const uint32_t kInvalidObjNum = static_cast<uint32_t>(-1);
- enum Type {
- BOOLEAN = 1,
- NUMBER,
- STRING,
- NAME,
- ARRAY,
- DICTIONARY,
- STREAM,
- NULLOBJ,
- REFERENCE
- };
-
- virtual Type GetType() const = 0;
- uint32_t GetObjNum() const { return m_ObjNum; }
- uint32_t GetGenNum() const { return m_GenNum; }
-
- // Create a deep copy of the object.
- virtual CPDF_Object* Clone() const = 0;
- // Create a deep copy of the object except any reference object be
- // copied to the object it points to directly.
- virtual CPDF_Object* CloneDirectObject() const;
- virtual CPDF_Object* GetDirect() const;
-
- void Release();
-
- virtual CFX_ByteString GetString() const;
- virtual CFX_WideString GetUnicodeText() const;
- virtual FX_FLOAT GetNumber() const;
- virtual int GetInteger() const;
- virtual CPDF_Dictionary* GetDict() const;
-
- virtual void SetString(const CFX_ByteString& str);
-
- virtual bool IsArray() const;
- virtual bool IsBoolean() const;
- virtual bool IsDictionary() const;
- virtual bool IsName() const;
- virtual bool IsNumber() const;
- virtual bool IsReference() const;
- virtual bool IsStream() const;
- virtual bool IsString() const;
-
- virtual CPDF_Array* AsArray();
- virtual const CPDF_Array* AsArray() const;
- virtual CPDF_Boolean* AsBoolean();
- virtual const CPDF_Boolean* AsBoolean() const;
- virtual CPDF_Dictionary* AsDictionary();
- virtual const CPDF_Dictionary* AsDictionary() const;
- virtual CPDF_Name* AsName();
- virtual const CPDF_Name* AsName() const;
- virtual CPDF_Number* AsNumber();
- virtual const CPDF_Number* AsNumber() const;
- virtual CPDF_Reference* AsReference();
- virtual const CPDF_Reference* AsReference() const;
- virtual CPDF_Stream* AsStream();
- virtual const CPDF_Stream* AsStream() const;
- virtual CPDF_String* AsString();
- virtual const CPDF_String* AsString() const;
-
- protected:
- friend class CPDF_Array;
- friend class CPDF_Dictionary;
- friend class CPDF_Document;
- friend class CPDF_IndirectObjectHolder;
- friend class CPDF_Parser;
- friend class CPDF_Reference;
- friend class CPDF_Stream;
- friend struct std::default_delete<CPDF_Object>;
-
- CPDF_Object() : m_ObjNum(0), m_GenNum(0) {}
- virtual ~CPDF_Object();
-
- CPDF_Object* CloneObjectNonCyclic(bool bDirect) const;
-
- // Create a deep copy of the object with the option to either
- // copy a reference object or directly copy the object it refers to
- // when |bDirect| is true.
- // Also check cyclic reference against |pVisited|, no copy if it is found.
- // Complex objects should implement their own CloneNonCyclic()
- // function to properly check for possible loop.
- virtual CPDF_Object* CloneNonCyclic(
- bool bDirect,
- std::set<const CPDF_Object*>* pVisited) const;
-
- uint32_t m_ObjNum;
- uint32_t m_GenNum;
-
- private:
- CPDF_Object(const CPDF_Object& src) {}
-};
-
-inline CPDF_Boolean* ToBoolean(CPDF_Object* obj) {
- return obj ? obj->AsBoolean() : nullptr;
-}
-
-inline const CPDF_Boolean* ToBoolean(const CPDF_Object* obj) {
- return obj ? obj->AsBoolean() : nullptr;
-}
-
-inline CPDF_Number* ToNumber(CPDF_Object* obj) {
- return obj ? obj->AsNumber() : nullptr;
-}
-
-inline const CPDF_Number* ToNumber(const CPDF_Object* obj) {
- return obj ? obj->AsNumber() : nullptr;
-}
-
-inline CPDF_String* ToString(CPDF_Object* obj) {
- return obj ? obj->AsString() : nullptr;
-}
-
-inline const CPDF_String* ToString(const CPDF_Object* obj) {
- return obj ? obj->AsString() : nullptr;
-}
-
-inline CPDF_Name* ToName(CPDF_Object* obj) {
- return obj ? obj->AsName() : nullptr;
-}
-
-inline const CPDF_Name* ToName(const CPDF_Object* obj) {
- return obj ? obj->AsName() : nullptr;
-}
-
-inline CPDF_Array* ToArray(CPDF_Object* obj) {
- return obj ? obj->AsArray() : nullptr;
-}
-
-inline const CPDF_Array* ToArray(const CPDF_Object* obj) {
- return obj ? obj->AsArray() : nullptr;
-}
-
-inline CPDF_Dictionary* ToDictionary(CPDF_Object* obj) {
- return obj ? obj->AsDictionary() : nullptr;
-}
-
-inline const CPDF_Dictionary* ToDictionary(const CPDF_Object* obj) {
- return obj ? obj->AsDictionary() : nullptr;
-}
-inline CPDF_Reference* ToReference(CPDF_Object* obj) {
- return obj ? obj->AsReference() : nullptr;
-}
-
-inline const CPDF_Reference* ToReference(const CPDF_Object* obj) {
- return obj ? obj->AsReference() : nullptr;
-}
-
-inline CPDF_Stream* ToStream(CPDF_Object* obj) {
- return obj ? obj->AsStream() : nullptr;
-}
-
-inline const CPDF_Stream* ToStream(const CPDF_Object* obj) {
- return obj ? obj->AsStream() : nullptr;
-}
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_OBJECT_H_
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_parser.h b/core/fpdfapi/fpdf_parser/include/cpdf_parser.h
deleted file mode 100644
index 05288353f2..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cpdf_parser.h
+++ /dev/null
@@ -1,177 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_PARSER_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_PARSER_H_
-
-#include <map>
-#include <memory>
-#include <set>
-
-#include "core/fxcrt/include/fx_basic.h"
-
-class CPDF_Array;
-class CPDF_CryptoHandler;
-class CPDF_Dictionary;
-class CPDF_Document;
-class CPDF_IndirectObjectHolder;
-class CPDF_Object;
-class CPDF_SecurityHandler;
-class CPDF_StreamAcc;
-class CPDF_SyntaxParser;
-class IFX_FileRead;
-
-class CPDF_Parser {
- public:
- enum Error {
- SUCCESS = 0,
- FILE_ERROR,
- FORMAT_ERROR,
- PASSWORD_ERROR,
- HANDLER_ERROR
- };
-
- // A limit on the maximum object number in the xref table. Theoretical limits
- // are higher, but this may be large enough in practice.
- static const uint32_t kMaxObjectNumber = 1048576;
-
- CPDF_Parser();
- ~CPDF_Parser();
-
- Error StartParse(IFX_FileRead* pFile, CPDF_Document* pDocument);
- Error StartLinearizedParse(IFX_FileRead* pFile, CPDF_Document* pDocument);
-
- void SetPassword(const FX_CHAR* password) { m_Password = password; }
- CFX_ByteString GetPassword() { return m_Password; }
- CPDF_Dictionary* GetTrailer() const { return m_pTrailer; }
- FX_FILESIZE GetLastXRefOffset() const { return m_LastXRefOffset; }
-
- uint32_t GetPermissions() const;
- uint32_t GetRootObjNum();
- uint32_t GetInfoObjNum();
- CPDF_Array* GetIDArray();
-
- CPDF_Dictionary* GetEncryptDict() const { return m_pEncryptDict; }
-
- CPDF_Object* ParseIndirectObject(CPDF_IndirectObjectHolder* pObjList,
- uint32_t objnum);
-
- uint32_t GetLastObjNum() const;
- bool IsValidObjectNumber(uint32_t objnum) const;
- FX_FILESIZE GetObjectPositionOrZero(uint32_t objnum) const;
- uint8_t GetObjectType(uint32_t objnum) const;
- uint16_t GetObjectGenNum(uint32_t objnum) const;
- bool IsVersionUpdated() const { return m_bVersionUpdated; }
- bool IsObjectFreeOrNull(uint32_t objnum) const;
- CPDF_CryptoHandler* GetCryptoHandler();
- IFX_FileRead* GetFileAccess() const;
-
- FX_FILESIZE GetObjectOffset(uint32_t objnum) const;
- FX_FILESIZE GetObjectSize(uint32_t objnum) const;
-
- void GetIndirectBinary(uint32_t objnum, uint8_t*& pBuffer, uint32_t& size);
- int GetFileVersion() const { return m_FileVersion; }
- FX_BOOL IsXRefStream() const { return m_bXRefStream; }
-
- CPDF_Object* ParseIndirectObjectAt(CPDF_IndirectObjectHolder* pObjList,
- FX_FILESIZE pos,
- uint32_t objnum);
-
- CPDF_Object* ParseIndirectObjectAtByStrict(
- CPDF_IndirectObjectHolder* pObjList,
- FX_FILESIZE pos,
- uint32_t objnum,
- FX_FILESIZE* pResultPos);
-
- uint32_t GetFirstPageNo() const { return m_dwFirstPageNo; }
-
- protected:
- struct ObjectInfo {
- ObjectInfo() : pos(0), type(0), gennum(0) {}
-
- FX_FILESIZE pos;
- uint8_t type;
- uint16_t gennum;
- };
-
- std::unique_ptr<CPDF_SyntaxParser> m_pSyntax;
- std::map<uint32_t, ObjectInfo> m_ObjectInfo;
-
- bool LoadCrossRefV4(FX_FILESIZE pos, FX_FILESIZE streampos, FX_BOOL bSkip);
- FX_BOOL RebuildCrossRef();
-
- private:
- friend class CPDF_DataAvail;
-
- enum class ParserState {
- kDefault,
- kComment,
- kWhitespace,
- kString,
- kHexString,
- kEscapedString,
- kXref,
- kObjNum,
- kPostObjNum,
- kGenNum,
- kPostGenNum,
- kTrailer,
- kBeginObj,
- kEndObj
- };
-
- CPDF_Object* ParseDirect(CPDF_Object* pObj);
- FX_BOOL LoadAllCrossRefV4(FX_FILESIZE pos);
- FX_BOOL LoadAllCrossRefV5(FX_FILESIZE pos);
- FX_BOOL LoadCrossRefV5(FX_FILESIZE* pos, FX_BOOL bMainXRef);
- CPDF_Dictionary* LoadTrailerV4();
- Error SetEncryptHandler();
- void ReleaseEncryptHandler();
- FX_BOOL LoadLinearizedAllCrossRefV4(FX_FILESIZE pos, uint32_t dwObjCount);
- FX_BOOL LoadLinearizedCrossRefV4(FX_FILESIZE pos, uint32_t dwObjCount);
- FX_BOOL LoadLinearizedAllCrossRefV5(FX_FILESIZE pos);
- Error LoadLinearizedMainXRefTable();
- CPDF_StreamAcc* GetObjectStream(uint32_t number);
- FX_BOOL IsLinearizedFile(IFX_FileRead* pFileAccess, uint32_t offset);
- void SetEncryptDictionary(CPDF_Dictionary* pDict);
- void ShrinkObjectMap(uint32_t size);
- // A simple check whether the cross reference table matches with
- // the objects.
- bool VerifyCrossRefV4();
-
- CPDF_Document* m_pDocument; // not owned
- bool m_bHasParsed;
- bool m_bOwnFileRead;
- int m_FileVersion;
- CPDF_Dictionary* m_pTrailer;
- CPDF_Dictionary* m_pEncryptDict;
- FX_FILESIZE m_LastXRefOffset;
- FX_BOOL m_bXRefStream;
- std::unique_ptr<CPDF_SecurityHandler> m_pSecurityHandler;
- CFX_ByteString m_Password;
- std::set<FX_FILESIZE> m_SortedOffset;
- CFX_ArrayTemplate<CPDF_Dictionary*> m_Trailers;
- bool m_bVersionUpdated;
- CPDF_Object* m_pLinearized;
- uint32_t m_dwFirstPageNo;
- uint32_t m_dwXrefStartObjNum;
-
- // A map of object numbers to indirect streams. Map owns the streams.
- std::map<uint32_t, std::unique_ptr<CPDF_StreamAcc>> m_ObjectStreamMap;
-
- // Mapping of object numbers to offsets. The offsets are relative to the first
- // object in the stream.
- using StreamObjectCache = std::map<uint32_t, uint32_t>;
-
- // Mapping of streams to their object caches. This is valid as long as the
- // streams in |m_ObjectStreamMap| are valid.
- std::map<CPDF_StreamAcc*, StreamObjectCache> m_ObjCache;
-
- // All indirect object numbers that are being parsed.
- std::set<uint32_t> m_ParsingObjNums;
-};
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_PARSER_H_
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_reference.h b/core/fpdfapi/fpdf_parser/include/cpdf_reference.h
deleted file mode 100644
index 388c1697a8..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cpdf_reference.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_REFERENCE_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_REFERENCE_H_
-
-#include <set>
-
-#include "core/fpdfapi/fpdf_parser/include/cpdf_object.h"
-
-class CPDF_IndirectObjectHolder;
-
-class CPDF_Reference : public CPDF_Object {
- public:
- CPDF_Reference(CPDF_IndirectObjectHolder* pDoc, int objnum);
-
- // CPDF_Object.
- Type GetType() const override;
- CPDF_Object* Clone() const override;
- CPDF_Object* GetDirect() const override;
- CFX_ByteString GetString() const override;
- FX_FLOAT GetNumber() const override;
- int GetInteger() const override;
- CPDF_Dictionary* GetDict() const override;
-
- // TODO(weili): check whether GetUnicodeText() and GetArray() are needed.
- bool IsReference() const override;
- CPDF_Reference* AsReference() override;
- const CPDF_Reference* AsReference() const override;
-
- CPDF_IndirectObjectHolder* GetObjList() const { return m_pObjList; }
- uint32_t GetRefObjNum() const { return m_RefObjNum; }
-
- void SetRef(CPDF_IndirectObjectHolder* pDoc, uint32_t objnum);
-
- protected:
- ~CPDF_Reference() override;
- CPDF_Object* CloneNonCyclic(
- bool bDirect,
- std::set<const CPDF_Object*>* pVisited) const override;
- CPDF_Object* SafeGetDirect() const {
- CPDF_Object* obj = GetDirect();
- if (!obj || obj->IsReference())
- return nullptr;
- return obj;
- }
-
- CPDF_IndirectObjectHolder* m_pObjList;
- uint32_t m_RefObjNum;
-};
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_REFERENCE_H_
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_simple_parser.h b/core/fpdfapi/fpdf_parser/include/cpdf_simple_parser.h
deleted file mode 100644
index c9aa12eaa9..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cpdf_simple_parser.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_SIMPLE_PARSER_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_SIMPLE_PARSER_H_
-
-#include "core/fxcrt/include/fx_string.h"
-#include "core/fxcrt/include/fx_system.h"
-
-class CPDF_SimpleParser {
- public:
- CPDF_SimpleParser(const uint8_t* pData, uint32_t dwSize);
- CPDF_SimpleParser(const CFX_ByteStringC& str);
-
- CFX_ByteStringC GetWord();
-
- // Find the token and its |nParams| parameters from the start of data,
- // and move the current position to the start of those parameters.
- bool FindTagParamFromStart(const CFX_ByteStringC& token, int nParams);
-
- // For testing only.
- uint32_t GetCurPos() const { return m_dwCurPos; }
-
- private:
- void ParseWord(const uint8_t*& pStart, uint32_t& dwSize);
-
- const uint8_t* m_pData;
- uint32_t m_dwSize;
- uint32_t m_dwCurPos;
-};
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_SIMPLE_PARSER_H_
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_stream.h b/core/fpdfapi/fpdf_parser/include/cpdf_stream.h
deleted file mode 100644
index 69a612cc0c..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cpdf_stream.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_STREAM_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_STREAM_H_
-
-#include <memory>
-#include <set>
-
-#include "core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h"
-#include "core/fpdfapi/fpdf_parser/include/cpdf_object.h"
-#include "core/fxcrt/include/fx_basic.h"
-
-class CPDF_Stream : public CPDF_Object {
- public:
- CPDF_Stream();
-
- // Takes ownership of |pData| and |pDict|.
- CPDF_Stream(uint8_t* pData, uint32_t size, CPDF_Dictionary* pDict);
-
- // CPDF_Object.
- Type GetType() const override;
- CPDF_Object* Clone() const override;
- CPDF_Dictionary* GetDict() const override;
- CFX_WideString GetUnicodeText() const override;
- bool IsStream() const override;
- CPDF_Stream* AsStream() override;
- const CPDF_Stream* AsStream() const override;
-
- uint32_t GetRawSize() const { return m_dwSize; }
- uint8_t* GetRawData() const { return m_pDataBuf.get(); }
-
- // Does not takes onwership of |pData|, copies into internally-owned buffer.
- void SetData(const uint8_t* pData, uint32_t size);
-
- void InitStream(const uint8_t* pData, uint32_t size, CPDF_Dictionary* pDict);
- void InitStreamFromFile(IFX_FileRead* pFile, CPDF_Dictionary* pDict);
-
- FX_BOOL ReadRawData(FX_FILESIZE start_pos,
- uint8_t* pBuf,
- uint32_t buf_size) const;
-
- bool IsMemoryBased() const { return m_bMemoryBased; }
-
- protected:
- ~CPDF_Stream() override;
- CPDF_Object* CloneNonCyclic(
- bool bDirect,
- std::set<const CPDF_Object*>* pVisited) const override;
-
- std::unique_ptr<CPDF_Dictionary, ReleaseDeleter<CPDF_Dictionary>> m_pDict;
- bool m_bMemoryBased = true;
- uint32_t m_dwSize = 0;
- std::unique_ptr<uint8_t, FxFreeDeleter> m_pDataBuf;
- IFX_FileRead* m_pFile = nullptr;
-};
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_STREAM_H_
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_stream_acc.h b/core/fpdfapi/fpdf_parser/include/cpdf_stream_acc.h
deleted file mode 100644
index 6176753deb..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cpdf_stream_acc.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_STREAM_ACC_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_STREAM_ACC_H_
-
-#include "core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h"
-#include "core/fpdfapi/fpdf_parser/include/cpdf_stream.h"
-#include "core/fxcrt/include/fx_string.h"
-#include "core/fxcrt/include/fx_system.h"
-
-class CPDF_StreamAcc {
- public:
- CPDF_StreamAcc();
- ~CPDF_StreamAcc();
-
- void LoadAllData(const CPDF_Stream* pStream,
- FX_BOOL bRawAccess = FALSE,
- uint32_t estimated_size = 0,
- FX_BOOL bImageAcc = FALSE);
-
- const CPDF_Stream* GetStream() const { return m_pStream; }
- CPDF_Dictionary* GetDict() const {
- return m_pStream ? m_pStream->GetDict() : nullptr;
- }
-
- const uint8_t* GetData() const;
- uint32_t GetSize() const;
- const CFX_ByteString& GetImageDecoder() const { return m_ImageDecoder; }
- const CPDF_Dictionary* GetImageParam() const { return m_pImageParam; }
- uint8_t* DetachData();
-
- protected:
- uint8_t* m_pData;
- uint32_t m_dwSize;
- FX_BOOL m_bNewBuf;
- CFX_ByteString m_ImageDecoder;
- CPDF_Dictionary* m_pImageParam;
- const CPDF_Stream* m_pStream;
- uint8_t* m_pSrcData;
-};
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_STREAM_ACC_H_
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_string.h b/core/fpdfapi/fpdf_parser/include/cpdf_string.h
deleted file mode 100644
index 740465c59f..0000000000
--- a/core/fpdfapi/fpdf_parser/include/cpdf_string.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_STRING_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_STRING_H_
-
-#include "core/fpdfapi/fpdf_parser/include/cpdf_object.h"
-#include "core/fxcrt/include/fx_string.h"
-#include "core/fxcrt/include/fx_system.h"
-
-class CPDF_String : public CPDF_Object {
- public:
- CPDF_String();
- CPDF_String(const CFX_ByteString& str, FX_BOOL bHex);
- explicit CPDF_String(const CFX_WideString& str);
-
- // CPDF_Object.
- Type GetType() const override;
- CPDF_Object* Clone() const override;
- CFX_ByteString GetString() const override;
- CFX_WideString GetUnicodeText() const override;
- void SetString(const CFX_ByteString& str) override;
- bool IsString() const override;
- CPDF_String* AsString() override;
- const CPDF_String* AsString() const override;
-
- FX_BOOL IsHex() const { return m_bHex; }
-
- protected:
- ~CPDF_String() override;
-
- CFX_ByteString m_String;
- FX_BOOL m_bHex;
-};
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_STRING_H_
diff --git a/core/fpdfapi/fpdf_parser/include/fpdf_parser_decode.h b/core/fpdfapi/fpdf_parser/include/fpdf_parser_decode.h
deleted file mode 100644
index 5ae4011c76..0000000000
--- a/core/fpdfapi/fpdf_parser/include/fpdf_parser_decode.h
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_FPDF_PARSER_DECODE_H_
-#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_FPDF_PARSER_DECODE_H_
-
-#include "core/fxcrt/include/fx_basic.h"
-
-class CPDF_Dictionary;
-
-// Indexed by 8-bit char code, contains unicode code points.
-extern const uint16_t PDFDocEncoding[256];
-
-CFX_ByteString PDF_NameDecode(const CFX_ByteStringC& orig);
-CFX_ByteString PDF_NameDecode(const CFX_ByteString& orig);
-CFX_ByteString PDF_NameEncode(const CFX_ByteString& orig);
-CFX_ByteString PDF_EncodeString(const CFX_ByteString& src,
- FX_BOOL bHex = FALSE);
-CFX_WideString PDF_DecodeText(const uint8_t* pData, uint32_t size);
-CFX_WideString PDF_DecodeText(const CFX_ByteString& bstr);
-CFX_ByteString PDF_EncodeText(const FX_WCHAR* pString, int len = -1);
-CFX_ByteString PDF_EncodeText(const CFX_WideString& str);
-
-bool FlateEncode(const uint8_t* src_buf,
- uint32_t src_size,
- uint8_t** dest_buf,
- uint32_t* dest_size);
-
-// This used to have more parameters like the predictor and bpc, but there was
-// only one caller, so the interface has been simplified, the values are hard
-// coded, and dead code has been removed.
-bool PngEncode(const uint8_t* src_buf,
- uint32_t src_size,
- uint8_t** dest_buf,
- uint32_t* dest_size);
-
-uint32_t FlateDecode(const uint8_t* src_buf,
- uint32_t src_size,
- uint8_t*& dest_buf,
- uint32_t& dest_size);
-uint32_t RunLengthDecode(const uint8_t* src_buf,
- uint32_t src_size,
- uint8_t*& dest_buf,
- uint32_t& dest_size);
-
-// Public for testing.
-uint32_t A85Decode(const uint8_t* src_buf,
- uint32_t src_size,
- uint8_t*& dest_buf,
- uint32_t& dest_size);
-// Public for testing.
-uint32_t HexDecode(const uint8_t* src_buf,
- uint32_t src_size,
- uint8_t*& dest_buf,
- uint32_t& dest_size);
-// Public for testing.
-uint32_t FPDFAPI_FlateOrLZWDecode(FX_BOOL bLZW,
- const uint8_t* src_buf,
- uint32_t src_size,
- CPDF_Dictionary* pParams,
- uint32_t estimated_size,
- uint8_t*& dest_buf,
- uint32_t& dest_size);
-FX_BOOL PDF_DataDecode(const uint8_t* src_buf,
- uint32_t src_size,
- const CPDF_Dictionary* pDict,
- uint8_t*& dest_buf,
- uint32_t& dest_size,
- CFX_ByteString& ImageEncoding,
- CPDF_Dictionary*& pImageParms,
- uint32_t estimated_size,
- FX_BOOL bImageAcc);
-
-#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_FPDF_PARSER_DECODE_H_