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 LayoutProvider_TaggedPDF_H 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define LayoutProvider_TaggedPDF_H 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/reflow/reflowengine.h" 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_LayoutElement : public IPDF_LayoutElement, public CFX_Object 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_LayoutElement(); 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_LayoutElement(); 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LayoutType GetType(); 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void GetRect(CFX_FloatRect& rcRect) {}; 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int CountAttrValues(LayoutAttr attr_type); 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LayoutEnum GetEnumAttr(LayoutAttr attr_type, int index); 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetNumberAttr(LayoutAttr attr_type, int index); 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_COLORREF GetColorAttr(LayoutAttr attr_type, int index); 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int CountChildren(); 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IPDF_LayoutElement* GetChild(int index); 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IPDF_LayoutElement* GetParent(); 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int CountObjects(); 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_PageObject* GetObject(int index); 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL AddObject(CPDF_PageObject* pObj); 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_StructElement* m_pTaggedElement; 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_LayoutElement* m_pParentElement; 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PtrArray m_ChildArray; 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LayoutType ConvertLayoutType(FX_BSTR name); 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC ConvertLayoutType(LayoutType type); 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC ConvertLayoutAttr(LayoutAttr attr); 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LayoutEnum ConvertLayoutEnum(CFX_ByteStringC Enum); 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsInheritable(LayoutAttr attr_type); 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC GetAttrOwner(LayoutAttr attr_type); 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC GetDefaultNameValue(LayoutAttr attr_type); 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetDefaultFloatValue(LayoutAttr attr_type); 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_COLORREF GetDefaultColorValue(LayoutAttr attr_type); 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PtrArray m_ObjArray; 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_LayoutProvider_TaggedPDF : public IPDF_LayoutProvider, public CFX_Object 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_LayoutProvider_TaggedPDF(); 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~CPDF_LayoutProvider_TaggedPDF(); 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetLayoutProviderStyle(LAYOUTPROVIDER_STYLE style) {}; 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Init(CPDF_PageObjects* pPage) 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pPage = pPage; 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Status = LayoutReady; 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }; 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LayoutStatus StartLoad(IFX_Pause* pPause = NULL); 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LayoutStatus Continue(); 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetPosition(); 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IPDF_LayoutElement* GetRoot() 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pRoot; 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }; 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ProcessElement(CPDF_LayoutElement*pParent, CPDF_StructElement* pTaggedElement); 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov LayoutStatus m_Status; 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_StructElement* m_pCurTaggedElement; 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_LayoutElement* m_pRoot; 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Pause* m_pPause; 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_PageObjects* m_pPage; 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_StructTree* m_pPageTree; 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_TopElementIndex; 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 83