Index: core/fpdfdoc/tagged_int.h |
diff --git a/core/fpdfdoc/tagged_int.h b/core/fpdfdoc/tagged_int.h |
index 03f1c40ad605c7eab02bc794e9536a518baf93d9..6a24700502e5c96aa1f71cf2e8043e790379c906 100644 |
--- a/core/fpdfdoc/tagged_int.h |
+++ b/core/fpdfdoc/tagged_int.h |
@@ -15,39 +15,62 @@ |
#include "core/fxcrt/cfx_retain_ptr.h" |
#include "third_party/base/stl_util.h" |
-class CPDF_StructElementImpl; |
+class CPDF_StructElement; |
+ |
+struct CPDF_StructKid { |
+ enum { Invalid, Element, PageContent, StreamContent, Object } m_Type; |
+ |
+ union { |
+ struct { |
+ CPDF_StructElement* m_pElement; |
+ CPDF_Dictionary* m_pDict; |
+ } m_Element; |
+ struct { |
+ uint32_t m_PageObjNum; |
+ uint32_t m_ContentId; |
+ } m_PageContent; |
+ struct { |
+ uint32_t m_PageObjNum; |
+ uint32_t m_ContentId; |
+ uint32_t m_RefObjNum; |
+ } m_StreamContent; |
+ struct { |
+ uint32_t m_PageObjNum; |
+ uint32_t m_RefObjNum; |
+ } m_Object; |
+ }; |
+}; |
-class CPDF_StructTreeImpl final : public IPDF_StructTree { |
+class CPDF_StructTree final : public IPDF_StructTree { |
public: |
- explicit CPDF_StructTreeImpl(const CPDF_Document* pDoc); |
- ~CPDF_StructTreeImpl() override; |
+ explicit CPDF_StructTree(const CPDF_Document* pDoc); |
+ ~CPDF_StructTree() override; |
// IPDF_StructTree: |
int CountTopElements() const override; |
IPDF_StructElement* GetTopElement(int i) const override; |
void LoadPageTree(const CPDF_Dictionary* pPageDict); |
- CPDF_StructElementImpl* AddPageNode( |
+ CPDF_StructElement* AddPageNode( |
CPDF_Dictionary* pElement, |
- std::map<CPDF_Dictionary*, CPDF_StructElementImpl*>& map, |
+ std::map<CPDF_Dictionary*, CPDF_StructElement*>& map, |
int nLevel = 0); |
- bool AddTopLevelNode(CPDF_Dictionary* pDict, |
- CPDF_StructElementImpl* pElement); |
+ bool AddTopLevelNode(CPDF_Dictionary* pDict, CPDF_StructElement* pElement); |
protected: |
const CPDF_Dictionary* const m_pTreeRoot; |
const CPDF_Dictionary* const m_pRoleMap; |
const CPDF_Dictionary* m_pPage; |
- std::vector<CFX_RetainPtr<CPDF_StructElementImpl>> m_Kids; |
+ std::vector<CFX_RetainPtr<CPDF_StructElement>> m_Kids; |
- friend class CPDF_StructElementImpl; |
+ friend class CPDF_StructElement; |
}; |
-class CPDF_StructElementImpl final : public IPDF_StructElement { |
+class CPDF_StructElement final : public IPDF_StructElement { |
public: |
- CPDF_StructElementImpl(CPDF_StructTreeImpl* pTree, |
- CPDF_StructElementImpl* pParent, |
- CPDF_Dictionary* pDict); |
+ CPDF_StructElement(CPDF_StructTree* pTree, |
+ CPDF_StructElement* pParent, |
+ CPDF_Dictionary* pDict); |
// IPDF_StructElement |
IPDF_StructTree* GetTree() const override; |
@@ -55,7 +78,7 @@ class CPDF_StructElementImpl final : public IPDF_StructElement { |
IPDF_StructElement* GetParent() const override; |
CPDF_Dictionary* GetDict() const override; |
int CountKids() const override; |
- const CPDF_StructKid& GetKid(int index) const override; |
+ IPDF_StructElement* GetKidIfElement(int index) const override; |
CPDF_Object* GetAttr(const CFX_ByteStringC& owner, |
const CFX_ByteStringC& name, |
bool bInheritable = false, |
@@ -81,26 +104,26 @@ class CPDF_StructElementImpl final : public IPDF_StructElement { |
bool bInheritable = false, |
int subindex = -1) override; |
+ std::vector<CPDF_StructKid>* GetKids() { return &m_Kids; } |
void LoadKids(CPDF_Dictionary* pDict); |
void LoadKid(uint32_t PageObjNum, CPDF_Object* pObj, CPDF_StructKid* pKid); |
CPDF_Object* GetAttr(const CFX_ByteStringC& owner, |
const CFX_ByteStringC& name, |
bool bInheritable, |
int subindex); |
- CPDF_StructElementImpl* Retain(); |
+ |
+ CPDF_StructElement* Retain(); |
void Release(); |
protected: |
- ~CPDF_StructElementImpl() override; |
+ ~CPDF_StructElement() override; |
int m_RefCount; |
- CPDF_StructTreeImpl* const m_pTree; |
- CPDF_StructElementImpl* const m_pParent; |
+ CPDF_StructTree* const m_pTree; |
+ CPDF_StructElement* const m_pParent; |
CPDF_Dictionary* const m_pDict; |
CFX_ByteString m_Type; |
std::vector<CPDF_StructKid> m_Kids; |
- |
- friend class CPDF_StructTreeImpl; |
}; |
#endif // CORE_FPDFDOC_TAGGED_INT_H_ |