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 _XFA_LAYOUT_APPADAPTER_H_ 8 #define _XFA_LAYOUT_APPADAPTER_H_ 9 class CXFA_TraverseStrategy_PageAreaContainerLayoutItem { 10 public: GetFirstChild(CXFA_ContainerLayoutItem * pLayoutItem)11 static inline CXFA_ContainerLayoutItem* GetFirstChild( 12 CXFA_ContainerLayoutItem* pLayoutItem) { 13 if (pLayoutItem->m_pFormNode->GetClassID() == XFA_ELEMENT_PageSet) { 14 return (CXFA_ContainerLayoutItem*)pLayoutItem->m_pFirstChild; 15 } 16 return NULL; 17 } GetNextSibling(CXFA_ContainerLayoutItem * pLayoutItem)18 static inline CXFA_ContainerLayoutItem* GetNextSibling( 19 CXFA_ContainerLayoutItem* pLayoutItem) { 20 return (CXFA_ContainerLayoutItem*)pLayoutItem->m_pNextSibling; 21 } GetParent(CXFA_ContainerLayoutItem * pLayoutItem)22 static inline CXFA_ContainerLayoutItem* GetParent( 23 CXFA_ContainerLayoutItem* pLayoutItem) { 24 return (CXFA_ContainerLayoutItem*)pLayoutItem->m_pParent; 25 } 26 }; 27 class CXFA_TraverseStrategy_ContentAreaContainerLayoutItem { 28 public: GetFirstChild(CXFA_ContainerLayoutItem * pLayoutItem)29 static inline CXFA_ContainerLayoutItem* GetFirstChild( 30 CXFA_ContainerLayoutItem* pLayoutItem) { 31 for (CXFA_LayoutItem* pChildItem = pLayoutItem->m_pFirstChild; pChildItem; 32 pChildItem = pChildItem->m_pNextSibling) { 33 if (CXFA_ContainerLayoutItem* pContainer = 34 pChildItem->AsContainerLayoutItem()) { 35 return pContainer; 36 } 37 } 38 return nullptr; 39 } GetNextSibling(CXFA_ContainerLayoutItem * pLayoutItem)40 static inline CXFA_ContainerLayoutItem* GetNextSibling( 41 CXFA_ContainerLayoutItem* pLayoutItem) { 42 for (CXFA_LayoutItem* pChildItem = pLayoutItem->m_pNextSibling; pChildItem; 43 pChildItem = pChildItem->m_pNextSibling) { 44 if (CXFA_ContainerLayoutItem* pContainer = 45 pChildItem->AsContainerLayoutItem()) { 46 return pContainer; 47 } 48 } 49 return nullptr; 50 } GetParent(CXFA_ContainerLayoutItem * pLayoutItem)51 static inline CXFA_ContainerLayoutItem* GetParent( 52 CXFA_ContainerLayoutItem* pLayoutItem) { 53 return (CXFA_ContainerLayoutItem*)pLayoutItem->m_pParent; 54 } 55 }; 56 class CXFA_TraverseStrategy_ContentLayoutItem { 57 public: GetFirstChild(CXFA_ContentLayoutItem * pLayoutItem)58 static inline CXFA_ContentLayoutItem* GetFirstChild( 59 CXFA_ContentLayoutItem* pLayoutItem) { 60 return (CXFA_ContentLayoutItem*)pLayoutItem->m_pFirstChild; 61 } GetNextSibling(CXFA_ContentLayoutItem * pLayoutItem)62 static inline CXFA_ContentLayoutItem* GetNextSibling( 63 CXFA_ContentLayoutItem* pLayoutItem) { 64 return (CXFA_ContentLayoutItem*)pLayoutItem->m_pNextSibling; 65 } GetParent(CXFA_ContentLayoutItem * pLayoutItem)66 static inline CXFA_ContentLayoutItem* GetParent( 67 CXFA_ContentLayoutItem* pLayoutItem) { 68 return (CXFA_ContentLayoutItem*)pLayoutItem->m_pParent; 69 } 70 }; 71 FX_DWORD XFA_GetRelevant(CXFA_Node* pFormItem, FX_DWORD dwParentRelvant); 72 void XFA_ReleaseLayoutItem(CXFA_LayoutItem* pLayoutItem); 73 #endif 74