diff options
-rw-r--r-- | BUILD.gn | 1 | ||||
-rw-r--r-- | fxjs/xfa/cjx_layoutpseudomodel.cpp | 51 | ||||
-rw-r--r-- | xfa/fxfa/cxfa_ffpageview.h | 5 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_traversestrategy_contentlayoutitem.h | 30 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h | 5 |
5 files changed, 29 insertions, 63 deletions
@@ -2759,7 +2759,6 @@ if (pdf_enable_xfa) { "xfa/fxfa/parser/cxfa_traverse.cpp", "xfa/fxfa/parser/cxfa_traverse.h", "xfa/fxfa/parser/cxfa_traversestrategy_contentareacontainerlayoutitem.h", - "xfa/fxfa/parser/cxfa_traversestrategy_contentlayoutitem.h", "xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h", "xfa/fxfa/parser/cxfa_traversestrategy_xfacontainernode.h", "xfa/fxfa/parser/cxfa_traversestrategy_xfanode.h", diff --git a/fxjs/xfa/cjx_layoutpseudomodel.cpp b/fxjs/xfa/cjx_layoutpseudomodel.cpp index 4918349111..ea842c78e0 100644 --- a/fxjs/xfa/cjx_layoutpseudomodel.cpp +++ b/fxjs/xfa/cjx_layoutpseudomodel.cpp @@ -24,7 +24,7 @@ #include "xfa/fxfa/parser/cxfa_measurement.h" #include "xfa/fxfa/parser/cxfa_node.h" #include "xfa/fxfa/parser/cxfa_nodeiteratortemplate.h" -#include "xfa/fxfa/parser/cxfa_traversestrategy_contentlayoutitem.h" +#include "xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h" const CJX_MethodSpec CJX_LayoutPseudoModel::MethodSpecs[] = { {"absPage", absPage_static}, @@ -244,14 +244,13 @@ std::vector<CXFA_Node*> CJX_LayoutPseudoModel::GetObjArray( if (pItem->GetFormNode()->GetElementType() == XFA_Element::ContentArea) { retArray.push_back(pItem->GetFormNode()); 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()) { + CXFA_LayoutItemIterator iterator(pItem->m_pFirstChild); + for (CXFA_LayoutItem* pChild = iterator.GetCurrent(); pChild; + pChild = iterator.MoveToNext()) { + CXFA_ContentLayoutItem* pItemChild = pChild->AsContentLayoutItem(); + if (!pItemChild) continue; - } + XFA_Element eType = pItemChild->GetFormNode()->GetElementType(); if (eType != XFA_Element::Field && eType != XFA_Element::Draw && eType != XFA_Element::Subform && eType != XFA_Element::Area) { @@ -266,14 +265,13 @@ std::vector<CXFA_Node*> CJX_LayoutPseudoModel::GetObjArray( } } 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()) { + CXFA_LayoutItemIterator iterator(pItem); + for (CXFA_LayoutItem* pChild = iterator.GetCurrent(); pChild; + pChild = iterator.MoveToNext()) { + CXFA_ContentLayoutItem* pItemChild = pChild->AsContentLayoutItem(); + if (!pItemChild) continue; - } + XFA_Element eType = pItemChild->GetFormNode()->GetElementType(); if (eType != XFA_Element::Field && eType != XFA_Element::Draw && eType != XFA_Element::Subform && eType != XFA_Element::Area) { @@ -281,6 +279,7 @@ std::vector<CXFA_Node*> CJX_LayoutPseudoModel::GetObjArray( } if (pdfium::ContainsValue(formItems, pItemChild->GetFormNode())) continue; + formItems.insert(pItemChild->GetFormNode()); retArray.push_back(pItemChild->GetFormNode()); } @@ -305,12 +304,11 @@ std::vector<CXFA_Node*> CJX_LayoutPseudoModel::GetObjArray( pItem = pItem->m_pNextSibling) { if (pItem->GetFormNode()->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()) + CXFA_LayoutItemIterator iterator(pItem->m_pFirstChild); + for (CXFA_LayoutItem* pChild = iterator.GetCurrent(); pChild; + pChild = iterator.MoveToNext()) { + CXFA_ContentLayoutItem* pItemChild = pChild->AsContentLayoutItem(); + if (!pItemChild) continue; if (pItemChild->GetFormNode()->GetElementType() != eType) continue; @@ -323,12 +321,11 @@ std::vector<CXFA_Node*> CJX_LayoutPseudoModel::GetObjArray( } } 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()) + CXFA_LayoutItemIterator iterator(pItem); + for (CXFA_LayoutItem* pChild = iterator.GetCurrent(); pChild; + pChild = iterator.MoveToNext()) { + CXFA_ContentLayoutItem* pItemChild = pChild->AsContentLayoutItem(); + if (!pItemChild) continue; if (pItemChild->GetFormNode()->GetElementType() != eType) continue; diff --git a/xfa/fxfa/cxfa_ffpageview.h b/xfa/fxfa/cxfa_ffpageview.h index f3ae069638..daf2b1933e 100644 --- a/xfa/fxfa/cxfa_ffpageview.h +++ b/xfa/fxfa/cxfa_ffpageview.h @@ -12,7 +12,6 @@ #include "xfa/fxfa/parser/cxfa_containerlayoutitem.h" #include "xfa/fxfa/parser/cxfa_contentlayoutitem.h" -#include "xfa/fxfa/parser/cxfa_nodeiteratortemplate.h" #include "xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h" class CXFA_FFWidget; @@ -34,10 +33,6 @@ class CXFA_FFPageView : public CXFA_ContainerLayoutItem { UnownedPtr<CXFA_FFDocView> const m_pDocView; }; -using CXFA_LayoutItemIterator = - CXFA_NodeIteratorTemplate<CXFA_LayoutItem, - CXFA_TraverseStrategy_LayoutItem>; - class CXFA_FFPageWidgetIterator : public IXFA_WidgetIterator { public: CXFA_FFPageWidgetIterator(CXFA_FFPageView* pPageView, uint32_t dwFilter); diff --git a/xfa/fxfa/parser/cxfa_traversestrategy_contentlayoutitem.h b/xfa/fxfa/parser/cxfa_traversestrategy_contentlayoutitem.h deleted file mode 100644 index de0d52ab10..0000000000 --- a/xfa/fxfa/parser/cxfa_traversestrategy_contentlayoutitem.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef XFA_FXFA_PARSER_CXFA_TRAVERSESTRATEGY_CONTENTLAYOUTITEM_H_ -#define XFA_FXFA_PARSER_CXFA_TRAVERSESTRATEGY_CONTENTLAYOUTITEM_H_ - -#include "xfa/fxfa/parser/cxfa_contentlayoutitem.h" - -class CXFA_TraverseStrategy_ContentLayoutItem { - public: - static CXFA_ContentLayoutItem* GetFirstChild( - CXFA_ContentLayoutItem* pLayoutItem) { - return static_cast<CXFA_ContentLayoutItem*>(pLayoutItem->m_pFirstChild); - } - - static CXFA_ContentLayoutItem* GetNextSibling( - CXFA_ContentLayoutItem* pLayoutItem) { - return static_cast<CXFA_ContentLayoutItem*>(pLayoutItem->m_pNextSibling); - } - - static CXFA_ContentLayoutItem* GetParent( - CXFA_ContentLayoutItem* pLayoutItem) { - return static_cast<CXFA_ContentLayoutItem*>(pLayoutItem->m_pParent); - } -}; - -#endif // XFA_FXFA_PARSER_CXFA_TRAVERSESTRATEGY_CONTENTLAYOUTITEM_H_ diff --git a/xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h b/xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h index 7b39826130..0371eef449 100644 --- a/xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h +++ b/xfa/fxfa/parser/cxfa_traversestrategy_layoutitem.h @@ -8,6 +8,7 @@ #define XFA_FXFA_PARSER_CXFA_TRAVERSESTRATEGY_LAYOUTITEM_H_ #include "xfa/fxfa/parser/cxfa_layoutitem.h" +#include "xfa/fxfa/parser/cxfa_nodeiteratortemplate.h" class CXFA_TraverseStrategy_LayoutItem { public: @@ -22,4 +23,8 @@ class CXFA_TraverseStrategy_LayoutItem { } }; +using CXFA_LayoutItemIterator = + CXFA_NodeIteratorTemplate<CXFA_LayoutItem, + CXFA_TraverseStrategy_LayoutItem>; + #endif // XFA_FXFA_PARSER_CXFA_TRAVERSESTRATEGY_LAYOUTITEM_H_ |