1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef CORE_INCLUDE_FPDFDOC_FPDF_TAGGED_H_ 8 #define CORE_INCLUDE_FPDFDOC_FPDF_TAGGED_H_ 9 10 class CPDF_Document; 11 class CPDF_Page; 12 class CPDF_StructElement; 13 class CPDF_StructTree; 14 class IPDF_ReflowedPage; 15 struct CPDF_StructKid; 16 17 class CPDF_StructTree 18 { 19 public: 20 21 static CPDF_StructTree* LoadDoc(const CPDF_Document* pDoc); 22 23 static CPDF_StructTree* LoadPage(const CPDF_Document* pDoc, const CPDF_Dictionary* pPageDict); 24 ~CPDF_StructTree()25 virtual ~CPDF_StructTree() {} 26 27 virtual int CountTopElements() const = 0; 28 29 virtual CPDF_StructElement* GetTopElement(int i) const = 0; 30 }; 31 struct CPDF_StructKid { 32 enum { 33 Invalid, 34 Element, 35 PageContent, 36 StreamContent, 37 Object 38 } m_Type; 39 40 union { 41 struct { 42 43 CPDF_StructElement* m_pElement; 44 45 CPDF_Dictionary* m_pDict; 46 } m_Element; 47 struct { 48 49 FX_DWORD m_PageObjNum; 50 51 FX_DWORD m_ContentId; 52 } m_PageContent; 53 struct { 54 55 FX_DWORD m_PageObjNum; 56 57 FX_DWORD m_ContentId; 58 59 FX_DWORD m_RefObjNum; 60 } m_StreamContent; 61 struct { 62 63 FX_DWORD m_PageObjNum; 64 65 FX_DWORD m_RefObjNum; 66 } m_Object; 67 }; 68 }; 69 class CPDF_StructElement 70 { 71 public: ~CPDF_StructElement()72 virtual ~CPDF_StructElement() { } 73 74 virtual CPDF_StructTree* GetTree() const = 0; 75 76 virtual const CFX_ByteString& GetType() const = 0; 77 78 virtual CPDF_StructElement* GetParent() const = 0; 79 80 virtual CPDF_Dictionary * GetDict() const = 0; 81 82 virtual int CountKids() const = 0; 83 84 virtual const CPDF_StructKid& GetKid(int index) const = 0; 85 86 virtual CFX_PtrArray* GetObjectArray() = 0; 87 88 virtual CPDF_Object* GetAttr(FX_BSTR owner, FX_BSTR name, FX_BOOL bInheritable = FALSE, FX_FLOAT fLevel = 0.0F) = 0; 89 90 91 92 virtual CFX_ByteString GetName(FX_BSTR owner, FX_BSTR name, FX_BSTR default_value, FX_BOOL bInheritable = FALSE, int subindex = -1) = 0; 93 94 virtual FX_ARGB GetColor(FX_BSTR owner, FX_BSTR name, FX_ARGB default_value, FX_BOOL bInheritable = FALSE, int subindex = -1) = 0; 95 96 virtual FX_FLOAT GetNumber(FX_BSTR owner, FX_BSTR name, FX_FLOAT default_value, FX_BOOL bInheritable = FALSE, int subindex = -1) = 0; 97 98 virtual int GetInteger(FX_BSTR owner, FX_BSTR name, int default_value, FX_BOOL bInheritable = FALSE, int subindex = -1) = 0; 99 100 }; 101 102 #endif // CORE_INCLUDE_FPDFDOC_FPDF_TAGGED_H_ 103