// Copyright 2014 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 _FPDF_TAGGED_INT_H_ | |
#define _FPDF_TAGGED_INT_H_ | |
class CPDF_StructTreeImpl; | |
class CPDF_StructElementImpl; | |
class CPDF_StructTreeImpl : public CPDF_StructTree | |
{ | |
public: | |
CPDF_StructTreeImpl(const CPDF_Document* pDoc); | |
~CPDF_StructTreeImpl(); | |
int CountTopElements() const | |
{ | |
return m_Kids.GetSize(); | |
} | |
CPDF_StructElement* GetTopElement(int i) const | |
{ | |
return (CPDF_StructElement*)m_Kids.GetAt(i); | |
} | |
void LoadDocTree(); | |
void LoadPageTree(const CPDF_Dictionary* pPageDict); | |
CPDF_StructElementImpl* AddPageNode(CPDF_Dictionary* pElement, CFX_MapPtrToPtr& map, int nLevel = 0); | |
FX_BOOL AddTopLevelNode(CPDF_Dictionary* pDict, CPDF_StructElementImpl* pElement); | |
protected: | |
const CPDF_Dictionary* m_pTreeRoot; | |
const CPDF_Dictionary* m_pRoleMap; | |
const CPDF_Dictionary* m_pPage; | |
CFX_ArrayTemplate<CPDF_StructElementImpl*> m_Kids; | |
friend class CPDF_StructElementImpl; | |
}; | |
class CPDF_StructElementImpl : public CPDF_StructElement | |
{ | |
public: | |
CPDF_StructElementImpl(CPDF_StructTreeImpl* pTree, CPDF_StructElementImpl* pParent, CPDF_Dictionary* pDict); | |
~CPDF_StructElementImpl(); | |
CPDF_StructTree* GetTree() const | |
{ | |
return m_pTree; | |
} | |
const CFX_ByteString& GetType() const | |
{ | |
return m_Type; | |
} | |
CPDF_StructElement* GetParent() const | |
{ | |
return m_pParent; | |
} | |
CPDF_Dictionary * GetDict() const | |
{ | |
return m_pDict; | |
} | |
int CountKids() const | |
{ | |
return m_Kids.GetSize(); | |
} | |
const CPDF_StructKid& GetKid(int index) const | |
{ | |
return m_Kids.GetData()[index]; | |
} | |
CFX_PtrArray* GetObjectArray() | |
{ | |
return &m_ObjectArray; | |
} | |
CPDF_Object* GetAttr(FX_BSTR owner, FX_BSTR name, FX_BOOL bInheritable = FALSE, FX_FLOAT fLevel = 0.0F); | |
CFX_ByteString GetName(FX_BSTR owner, FX_BSTR name, FX_BSTR default_value, FX_BOOL bInheritable = FALSE, int subindex = -1); | |
FX_ARGB GetColor(FX_BSTR owner, FX_BSTR name, FX_ARGB default_value, FX_BOOL bInheritable = FALSE, int subindex = -1); | |
FX_FLOAT GetNumber(FX_BSTR owner, FX_BSTR name, FX_FLOAT default_value, FX_BOOL bInheritable = FALSE, int subindex = -1); | |
int GetInteger(FX_BSTR owner, FX_BSTR name, int default_value, FX_BOOL bInheritable = FALSE, int subindex = -1); | |
CFX_PtrArray m_ObjectArray; | |
void LoadKids(CPDF_Dictionary* pDict); | |
void LoadKid(FX_DWORD PageObjNum, CPDF_Object* pObj, CPDF_StructKid* pKid); | |
CPDF_Object* GetAttr(FX_BSTR owner, FX_BSTR name, FX_BOOL bInheritable, int subindex); | |
CPDF_StructElementImpl* Retain(); | |
void Release(); | |
protected: | |
CPDF_StructTreeImpl* m_pTree; | |
CFX_ByteString m_Type; | |
CPDF_StructElementImpl* m_pParent; | |
CPDF_Dictionary* m_pDict; | |
CFX_ArrayTemplate<CPDF_StructKid> m_Kids; | |
int m_RefCount; | |
friend class CPDF_StructTreeImpl; | |
}; | |
#endif |