1 // Copyright 2014 PDFium Authors. All rights reserved.
\r
2 // Use of this source code is governed by a BSD-style license that can be
\r
3 // found in the LICENSE file.
\r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
\r
7 #ifndef _XFA_DOCLAYOUT_H_
\r
8 #define _XFA_DOCLAYOUT_H_
\r
9 #define _XFA_LAYOUTITEM_ProcessCACHE_
\r
10 class CXFA_LayoutItem;
\r
11 class IXFA_LayoutPage;
\r
12 class CXFA_LayoutItem
\r
15 IXFA_LayoutPage* GetPage() const;
\r
16 CXFA_Node* GetFormNode() const;
\r
17 void GetRect(CFX_RectF &rtLayout, FX_BOOL bRelative = FALSE) const;
\r
18 FX_INT32 GetIndex() const;
\r
19 FX_INT32 GetCount() const;
\r
20 CXFA_LayoutItem* GetParent() const;
\r
21 CXFA_LayoutItem* GetFirst() const;
\r
22 CXFA_LayoutItem* GetPrev() const;
\r
23 CXFA_LayoutItem* GetNext() const;
\r
24 CXFA_LayoutItem* GetLast() const;
\r
26 class CXFA_LayoutItemImpl : public CFX_Object
\r
29 CXFA_LayoutItemImpl(CXFA_Node *pNode, FX_BOOL bIsContentLayoutItem);
\r
30 virtual ~CXFA_LayoutItemImpl();
\r
31 FX_BOOL IsContentLayoutItem()
\r
33 return m_bIsContentLayoutItem;
\r
35 void AddChild(CXFA_LayoutItemImpl *pChildItem);
\r
36 void AddHeadChild(CXFA_LayoutItemImpl *pChildItem);
\r
37 void RemoveChild(CXFA_LayoutItemImpl *pChildItem);
\r
38 void InsertChild(CXFA_LayoutItemImpl *pBeforeItem, CXFA_LayoutItemImpl *pChildItem);
\r
40 CXFA_Node* m_pFormNode;
\r
41 CXFA_LayoutItemImpl* m_pParent;
\r
42 CXFA_LayoutItemImpl* m_pNextSibling;
\r
43 CXFA_LayoutItemImpl* m_pFirstChild;
\r
44 FX_BOOL m_bIsContentLayoutItem;
\r
46 class CXFA_ContainerLayoutItemImpl : public CXFA_LayoutItemImpl
\r
49 CXFA_ContainerLayoutItemImpl(CXFA_Node *pNode);
\r
51 CXFA_Node* m_pOldSubform;
\r
53 #define XFA_WIDGETSTATUS_Access 0x80000000
\r
54 #define XFA_WIDGETSTATUS_Disabled 0x40000000
\r
55 #define XFA_WIDGETSTATUS_RectCached 0x20000000
\r
56 #define XFA_WIDGETSTATUS_ButtonDown 0x10000000
\r
57 #define XFA_WIDGETSTATUS_Highlight 0x08000000
\r
58 #define XFA_WIDGETSTATUS_TextEditValueChanged 0x04000000
\r
59 class CXFA_ContentLayoutItemImpl : public CXFA_LayoutItemImpl
\r
62 CXFA_ContentLayoutItemImpl(CXFA_Node *pNode);
\r
63 virtual ~CXFA_ContentLayoutItemImpl();
\r
65 CXFA_ContentLayoutItemImpl* m_pPrev;
\r
66 CXFA_ContentLayoutItemImpl* m_pNext;
\r
69 FX_DWORD m_dwStatus;
\r
71 class CXFA_TraverseStrategy_LayoutItem
\r
74 static inline CXFA_LayoutItem* GetFirstChild(CXFA_LayoutItem* pLayoutItem)
\r
76 return (CXFA_LayoutItem*)((CXFA_LayoutItemImpl*)pLayoutItem)->m_pFirstChild;
\r
78 static inline CXFA_LayoutItem* GetNextSibling(CXFA_LayoutItem* pLayoutItem)
\r
80 return (CXFA_LayoutItem*)((CXFA_LayoutItemImpl*)pLayoutItem)->m_pNextSibling;
\r
82 static inline CXFA_LayoutItem* GetParent(CXFA_LayoutItem* pLayoutItem)
\r
84 return (CXFA_LayoutItem*)((CXFA_LayoutItemImpl*)pLayoutItem)->m_pParent;
\r
87 class IXFA_LayoutPage
\r
90 IXFA_DocLayout* GetLayout() const;
\r
91 FX_INT32 GetPageIndex() const;
\r
92 void GetPageSize(CFX_SizeF &size);
\r
93 CXFA_Node* GetMasterPage() const;
\r
95 class IXFA_DocLayout
\r
98 virtual CXFA_Document* GetDocument() const = 0;
\r
99 virtual FX_INT32 StartLayout(FX_BOOL bForceRestart = FALSE) = 0;
\r
100 virtual FX_INT32 DoLayout(IFX_Pause *pPause = NULL) = 0;
\r
101 virtual FX_BOOL IncrementLayout() = 0;
\r
102 virtual FX_INT32 CountPages() const = 0;
\r
103 virtual IXFA_LayoutPage* GetPage(FX_INT32 index) const = 0;
\r
105 virtual CXFA_LayoutItem* GetLayoutItem(CXFA_Node *pFormItem) = 0;
\r