Put CJBig2_SymbolDict's images in a CJBig2_List container.
[pdfium.git] / core / include / fpdfdoc / fpdf_tagged.h
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  public:
19   static CPDF_StructTree* LoadDoc(const CPDF_Document* pDoc);
20
21   static CPDF_StructTree* LoadPage(const CPDF_Document* pDoc,
22                                    const CPDF_Dictionary* pPageDict);
23
24   virtual ~CPDF_StructTree() {}
25
26   virtual int CountTopElements() const = 0;
27
28   virtual CPDF_StructElement* GetTopElement(int i) const = 0;
29 };
30 struct CPDF_StructKid {
31   enum { Invalid, Element, PageContent, StreamContent, Object } m_Type;
32
33   union {
34     struct {
35       CPDF_StructElement* m_pElement;
36
37       CPDF_Dictionary* m_pDict;
38     } m_Element;
39     struct {
40       FX_DWORD m_PageObjNum;
41
42       FX_DWORD m_ContentId;
43     } m_PageContent;
44     struct {
45       FX_DWORD m_PageObjNum;
46
47       FX_DWORD m_ContentId;
48
49       FX_DWORD m_RefObjNum;
50     } m_StreamContent;
51     struct {
52       FX_DWORD m_PageObjNum;
53
54       FX_DWORD m_RefObjNum;
55     } m_Object;
56   };
57 };
58 class CPDF_StructElement {
59  public:
60   virtual ~CPDF_StructElement() {}
61
62   virtual CPDF_StructTree* GetTree() const = 0;
63
64   virtual const CFX_ByteString& GetType() const = 0;
65
66   virtual CPDF_StructElement* GetParent() const = 0;
67
68   virtual CPDF_Dictionary* GetDict() const = 0;
69
70   virtual int CountKids() const = 0;
71
72   virtual const CPDF_StructKid& GetKid(int index) const = 0;
73
74   virtual CFX_PtrArray* GetObjectArray() = 0;
75
76   virtual CPDF_Object* GetAttr(const CFX_ByteStringC& owner,
77                                const CFX_ByteStringC& name,
78                                FX_BOOL bInheritable = FALSE,
79                                FX_FLOAT fLevel = 0.0F) = 0;
80
81   virtual CFX_ByteString GetName(const CFX_ByteStringC& owner,
82                                  const CFX_ByteStringC& name,
83                                  const CFX_ByteStringC& default_value,
84                                  FX_BOOL bInheritable = FALSE,
85                                  int subindex = -1) = 0;
86
87   virtual FX_ARGB GetColor(const CFX_ByteStringC& owner,
88                            const CFX_ByteStringC& name,
89                            FX_ARGB default_value,
90                            FX_BOOL bInheritable = FALSE,
91                            int subindex = -1) = 0;
92
93   virtual FX_FLOAT GetNumber(const CFX_ByteStringC& owner,
94                              const CFX_ByteStringC& name,
95                              FX_FLOAT default_value,
96                              FX_BOOL bInheritable = FALSE,
97                              int subindex = -1) = 0;
98
99   virtual int GetInteger(const CFX_ByteStringC& owner,
100                          const CFX_ByteStringC& name,
101                          int default_value,
102                          FX_BOOL bInheritable = FALSE,
103                          int subindex = -1) = 0;
104 };
105
106 #endif  // CORE_INCLUDE_FPDFDOC_FPDF_TAGGED_H_