diff options
Diffstat (limited to 'xfa/fxfa/parser/cxfa_layoutprocessor.cpp')
-rw-r--r-- | xfa/fxfa/parser/cxfa_layoutprocessor.cpp | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/xfa/fxfa/parser/cxfa_layoutprocessor.cpp b/xfa/fxfa/parser/cxfa_layoutprocessor.cpp index ad1c2a936a..ea1064a4bc 100644 --- a/xfa/fxfa/parser/cxfa_layoutprocessor.cpp +++ b/xfa/fxfa/parser/cxfa_layoutprocessor.cpp @@ -6,6 +6,7 @@ #include "xfa/fxfa/parser/cxfa_layoutprocessor.h" +#include "third_party/base/ptr_util.h" #include "xfa/fxfa/parser/cxfa_contentlayoutitem.h" #include "xfa/fxfa/parser/cxfa_document.h" #include "xfa/fxfa/parser/cxfa_layoutpagemgr.h" @@ -30,14 +31,10 @@ CXFA_LayoutProcessor* CXFA_Document::GetDocLayout() { CXFA_LayoutProcessor::CXFA_LayoutProcessor(CXFA_Document* pDocument) : m_pDocument(pDocument), - m_pRootItemLayoutProcessor(nullptr), - m_pLayoutPageMgr(nullptr), m_nProgressCounter(0), m_bNeeLayout(true) {} -CXFA_LayoutProcessor::~CXFA_LayoutProcessor() { - ClearLayoutData(); -} +CXFA_LayoutProcessor::~CXFA_LayoutProcessor() {} CXFA_Document* CXFA_LayoutProcessor::GetDocument() const { return m_pDocument; @@ -47,8 +44,7 @@ int32_t CXFA_LayoutProcessor::StartLayout(bool bForceRestart) { if (!bForceRestart && !IsNeedLayout()) return 100; - delete m_pRootItemLayoutProcessor; - m_pRootItemLayoutProcessor = nullptr; + m_pRootItemLayoutProcessor.reset(); m_nProgressCounter = 0; CXFA_Node* pFormPacketNode = ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Form)); @@ -59,14 +55,17 @@ int32_t CXFA_LayoutProcessor::StartLayout(bool bForceRestart) { pFormPacketNode->GetFirstChildByClass(XFA_Element::Subform); if (!pFormRoot) return -1; + if (!m_pLayoutPageMgr) - m_pLayoutPageMgr = new CXFA_LayoutPageMgr(this); + m_pLayoutPageMgr = pdfium::MakeUnique<CXFA_LayoutPageMgr>(this); if (!m_pLayoutPageMgr->InitLayoutPage(pFormRoot)) return -1; + if (!m_pLayoutPageMgr->PrepareFirstPage(pFormRoot)) return -1; - m_pRootItemLayoutProcessor = - new CXFA_ItemLayoutProcessor(pFormRoot, m_pLayoutPageMgr); + + m_pRootItemLayoutProcessor = pdfium::MakeUnique<CXFA_ItemLayoutProcessor>( + pFormRoot, m_pLayoutPageMgr.get()); m_nProgressCounter = 1; return 0; } @@ -150,14 +149,6 @@ CXFA_ContainerLayoutItem* CXFA_LayoutProcessor::GetRootLayoutItem() const { return m_pLayoutPageMgr ? m_pLayoutPageMgr->GetRootLayoutItem() : nullptr; } -void CXFA_LayoutProcessor::ClearLayoutData() { - delete m_pLayoutPageMgr; - m_pLayoutPageMgr = nullptr; - delete m_pRootItemLayoutProcessor; - m_pRootItemLayoutProcessor = nullptr; - m_nProgressCounter = 0; -} - bool CXFA_LayoutProcessor::IsNeedLayout() { return m_bNeeLayout || m_rgChangedContainers.GetSize() > 0; } |