void CScript_LayoutPseudoModel::GetObjArray(CXFA_LayoutProcessor* pDocLayout, int32_t iPageNo, const CFX_WideString& wsType, FX_BOOL bOnPageArea, CXFA_NodeArray& retArray) { CXFA_ContainerLayoutItem* pLayoutPage = pDocLayout->GetPage(iPageNo); if (!pLayoutPage) { return; } if (wsType == FX_WSTRC(L"pageArea")) { if (CXFA_Node* pMasterPage = pLayoutPage->m_pFormNode) { retArray.Add(pMasterPage); } return; } if (wsType == FX_WSTRC(L"contentArea")) { for (CXFA_LayoutItem* pItem = pLayoutPage->m_pFirstChild; pItem; pItem = pItem->m_pNextSibling) { if (pItem->m_pFormNode->GetElementType() == XFA_Element::ContentArea) { retArray.Add(pItem->m_pFormNode); } } return; } std::set<CXFA_Node*> formItems; if (wsType.IsEmpty()) { if (CXFA_Node* pMasterPage = pLayoutPage->m_pFormNode) { retArray.Add(pMasterPage); } for (CXFA_LayoutItem* pItem = pLayoutPage->m_pFirstChild; pItem; pItem = pItem->m_pNextSibling) { if (pItem->m_pFormNode->GetElementType() == XFA_Element::ContentArea) { retArray.Add(pItem->m_pFormNode); if (!bOnPageArea) { CXFA_NodeIteratorTemplate<CXFA_ContentLayoutItem, CXFA_TraverseStrategy_ContentLayoutItem> iterator(static_cast<CXFA_ContentLayoutItem*>(pItem->m_pFirstChild)); for (CXFA_ContentLayoutItem* pItemChild = iterator.GetCurrent(); pItemChild; pItemChild = iterator.MoveToNext()) { if (!pItemChild->IsContentLayoutItem()) { continue; } XFA_Element eType = pItemChild->m_pFormNode->GetElementType(); if (eType != XFA_Element::Field && eType != XFA_Element::Draw && eType != XFA_Element::Subform && eType != XFA_Element::Area) { continue; } if (pdfium::ContainsValue(formItems, pItemChild->m_pFormNode)) continue; formItems.insert(pItemChild->m_pFormNode); retArray.Add(pItemChild->m_pFormNode); } } } else { if (bOnPageArea) { CXFA_NodeIteratorTemplate<CXFA_ContentLayoutItem, CXFA_TraverseStrategy_ContentLayoutItem> iterator(static_cast<CXFA_ContentLayoutItem*>(pItem)); for (CXFA_ContentLayoutItem* pItemChild = iterator.GetCurrent(); pItemChild; pItemChild = iterator.MoveToNext()) { if (!pItemChild->IsContentLayoutItem()) { continue; } XFA_Element eType = pItemChild->m_pFormNode->GetElementType(); if (eType != XFA_Element::Field && eType != XFA_Element::Draw && eType != XFA_Element::Subform && eType != XFA_Element::Area) { continue; } if (pdfium::ContainsValue(formItems, pItemChild->m_pFormNode)) continue; formItems.insert(pItemChild->m_pFormNode); retArray.Add(pItemChild->m_pFormNode); } } } } return; } XFA_Element eType = XFA_Element::Unknown; if (wsType == FX_WSTRC(L"field")) { eType = XFA_Element::Field; } else if (wsType == FX_WSTRC(L"draw")) { eType = XFA_Element::Draw; } else if (wsType == FX_WSTRC(L"subform")) { eType = XFA_Element::Subform; } else if (wsType == FX_WSTRC(L"area")) { eType = XFA_Element::Area; } if (eType != XFA_Element::Unknown) { for (CXFA_LayoutItem* pItem = pLayoutPage->m_pFirstChild; pItem; pItem = pItem->m_pNextSibling) { if (pItem->m_pFormNode->GetElementType() == XFA_Element::ContentArea) { if (!bOnPageArea) { CXFA_NodeIteratorTemplate<CXFA_ContentLayoutItem, CXFA_TraverseStrategy_ContentLayoutItem> iterator(static_cast<CXFA_ContentLayoutItem*>(pItem->m_pFirstChild)); for (CXFA_ContentLayoutItem* pItemChild = iterator.GetCurrent(); pItemChild; pItemChild = iterator.MoveToNext()) { if (!pItemChild->IsContentLayoutItem()) continue; if (pItemChild->m_pFormNode->GetElementType() != eType) continue; if (pdfium::ContainsValue(formItems, pItemChild->m_pFormNode)) continue; formItems.insert(pItemChild->m_pFormNode); retArray.Add(pItemChild->m_pFormNode); } } } else { if (bOnPageArea) { CXFA_NodeIteratorTemplate<CXFA_ContentLayoutItem, CXFA_TraverseStrategy_ContentLayoutItem> iterator(static_cast<CXFA_ContentLayoutItem*>(pItem)); for (CXFA_ContentLayoutItem* pItemChild = iterator.GetCurrent(); pItemChild; pItemChild = iterator.MoveToNext()) { if (!pItemChild->IsContentLayoutItem()) continue; if (pItemChild->m_pFormNode->GetElementType() != eType) continue; if (pdfium::ContainsValue(formItems, pItemChild->m_pFormNode)) continue; formItems.insert(pItemChild->m_pFormNode); retArray.Add(pItemChild->m_pFormNode); } } } } return; } }
void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_GetObjArray( IXFA_DocLayout* pDocLayout, int32_t iPageNo, const CFX_WideString& wsType, FX_BOOL bOnPageArea, CXFA_NodeArray& retArray) { CXFA_ContainerLayoutItem* pLayoutPage = (CXFA_ContainerLayoutItem*)pDocLayout->GetPage(iPageNo); if (!pLayoutPage) { return; } if (wsType == FX_WSTRC(L"pageArea")) { if (CXFA_Node* pMasterPage = pLayoutPage->m_pFormNode) { retArray.Add(pMasterPage); } return; } if (wsType == FX_WSTRC(L"contentArea")) { for (CXFA_LayoutItem* pItem = pLayoutPage->m_pFirstChild; pItem; pItem = pItem->m_pNextSibling) { if (pItem->m_pFormNode->GetClassID() == XFA_ELEMENT_ContentArea) { retArray.Add(pItem->m_pFormNode); } } return; } CFX_MapPtrToPtr formItems; formItems.InitHashTable(256, TRUE); if (wsType.IsEmpty()) { if (CXFA_Node* pMasterPage = pLayoutPage->m_pFormNode) { retArray.Add(pMasterPage); } for (CXFA_LayoutItem* pItem = pLayoutPage->m_pFirstChild; pItem; pItem = pItem->m_pNextSibling) { if (pItem->m_pFormNode->GetClassID() == XFA_ELEMENT_ContentArea) { retArray.Add(pItem->m_pFormNode); if (!bOnPageArea) { CXFA_NodeIteratorTemplate<CXFA_ContentLayoutItem, CXFA_TraverseStrategy_ContentLayoutItem> iterator((CXFA_ContentLayoutItem*)pItem->m_pFirstChild); for (CXFA_ContentLayoutItem* pItemChild = iterator.GetCurrent(); pItemChild; pItemChild = iterator.MoveToNext()) { if (!pItemChild->IsContentLayoutItem()) { continue; } XFA_ELEMENT eElementType = pItemChild->m_pFormNode->GetClassID(); if (eElementType != XFA_ELEMENT_Field && eElementType != XFA_ELEMENT_Draw && eElementType != XFA_ELEMENT_Subform && eElementType != XFA_ELEMENT_Area) { continue; } if (formItems.GetValueAt(pItemChild->m_pFormNode)) { continue; } formItems.SetAt(pItemChild->m_pFormNode, this); retArray.Add(pItemChild->m_pFormNode); } } } else { if (bOnPageArea) { CXFA_NodeIteratorTemplate<CXFA_ContentLayoutItem, CXFA_TraverseStrategy_ContentLayoutItem> iterator((CXFA_ContentLayoutItem*)pItem); for (CXFA_ContentLayoutItem* pItemChild = iterator.GetCurrent(); pItemChild; pItemChild = iterator.MoveToNext()) { if (!pItemChild->IsContentLayoutItem()) { continue; } XFA_ELEMENT eElementType = pItemChild->m_pFormNode->GetClassID(); if (eElementType != XFA_ELEMENT_Field && eElementType != XFA_ELEMENT_Draw && eElementType != XFA_ELEMENT_Subform && eElementType != XFA_ELEMENT_Area) { continue; } if (formItems.GetValueAt(pItemChild->m_pFormNode)) { continue; } formItems.SetAt(pItemChild->m_pFormNode, this); retArray.Add(pItemChild->m_pFormNode); } } } } return; } XFA_ELEMENT eType = XFA_ELEMENT_UNKNOWN; if (wsType == FX_WSTRC(L"field")) { eType = XFA_ELEMENT_Field; } else if (wsType == FX_WSTRC(L"draw")) { eType = XFA_ELEMENT_Draw; } else if (wsType == FX_WSTRC(L"subform")) { eType = XFA_ELEMENT_Subform; } else if (wsType == FX_WSTRC(L"area")) { eType = XFA_ELEMENT_Area; } if (eType != XFA_ELEMENT_UNKNOWN) { for (CXFA_LayoutItem* pItem = pLayoutPage->m_pFirstChild; pItem; pItem = pItem->m_pNextSibling) { if (pItem->m_pFormNode->GetClassID() == XFA_ELEMENT_ContentArea) { if (!bOnPageArea) { CXFA_NodeIteratorTemplate<CXFA_ContentLayoutItem, CXFA_TraverseStrategy_ContentLayoutItem> iterator((CXFA_ContentLayoutItem*)pItem->m_pFirstChild); for (CXFA_ContentLayoutItem* pItemChild = iterator.GetCurrent(); pItemChild; pItemChild = iterator.MoveToNext()) { if (!pItemChild->IsContentLayoutItem()) { continue; } if (pItemChild->m_pFormNode->GetClassID() != eType) { continue; } if (formItems.GetValueAt(pItemChild->m_pFormNode)) { continue; } formItems.SetAt(pItemChild->m_pFormNode, this); retArray.Add(pItemChild->m_pFormNode); } } } else { if (bOnPageArea) { CXFA_NodeIteratorTemplate<CXFA_ContentLayoutItem, CXFA_TraverseStrategy_ContentLayoutItem> iterator((CXFA_ContentLayoutItem*)pItem); for (CXFA_ContentLayoutItem* pItemChild = iterator.GetCurrent(); pItemChild; pItemChild = iterator.MoveToNext()) { if (!pItemChild->IsContentLayoutItem()) { continue; } if (pItemChild->m_pFormNode->GetClassID() != eType) { continue; } if (formItems.GetValueAt(pItemChild->m_pFormNode)) { continue; } formItems.SetAt(pItemChild->m_pFormNode, this); retArray.Add(pItemChild->m_pFormNode); } } } } return; } }