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