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