From d06cc38b76685b002c51b227ae43b8314d926ad8 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Wed, 30 May 2018 18:11:51 +0000 Subject: Make common page base class for XFA and non-XFA. Now that both are ref-counted, we can replace ifdef's with some polymorphism. Bug: pdfium:760 Change-Id: Ie22ea259c9af56fa569f0af268b8e7065789a3f2 Reviewed-on: https://pdfium-review.googlesource.com/32892 Commit-Queue: Tom Sepez Reviewed-by: dsinclair --- fpdfsdk/cpdfsdk_pageview.cpp | 45 +++++++++++++++++--------------------------- 1 file changed, 17 insertions(+), 28 deletions(-) (limited to 'fpdfsdk/cpdfsdk_pageview.cpp') diff --git a/fpdfsdk/cpdfsdk_pageview.cpp b/fpdfsdk/cpdfsdk_pageview.cpp index 43f8ee0214..5cb5f2ced2 100644 --- a/fpdfsdk/cpdfsdk_pageview.cpp +++ b/fpdfsdk/cpdfsdk_pageview.cpp @@ -31,17 +31,17 @@ #endif // PDF_ENABLE_XFA CPDFSDK_PageView::CPDFSDK_PageView(CPDFSDK_FormFillEnvironment* pFormFillEnv, - UnderlyingPageType* page) + IPDF_Page* page) : m_page(page), m_pFormFillEnv(pFormFillEnv) { - CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); - CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); -#ifdef PDF_ENABLE_XFA - if (page->GetPDFPage()) - pPDFInterForm->FixPageFields(page->GetPDFPage()); -#else // PDF_ENABLE_XFA - pPDFInterForm->FixPageFields(page); - m_page->SetView(this); + CPDF_Page* pPDFPage = ToPDFPage(page); + if (pPDFPage) { + CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); + CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); + pPDFInterForm->FixPageFields(pPDFPage); +#ifndef PDF_ENABLE_XFA + pPDFPage->SetView(this); #endif // PDF_ENABLE_XFA + } } CPDFSDK_PageView::~CPDFSDK_PageView() { @@ -49,7 +49,7 @@ CPDFSDK_PageView::~CPDFSDK_PageView() { // The call to |ReleaseAnnot| can cause the page pointed to by |m_page| to // be freed, which will cause issues if we try to cleanup the pageview pointer // in |m_page|. So, reset the pageview pointer before doing anything else. - m_page->SetView(nullptr); + m_page->AsPDFPage()->SetView(nullptr); #endif // PDF_ENABLE_XFA CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = @@ -190,22 +190,11 @@ bool CPDFSDK_PageView::DeleteAnnot(CPDFSDK_Annot* pAnnot) { #endif // PDF_ENABLE_XFA CPDF_Document* CPDFSDK_PageView::GetPDFDocument() { - if (m_page) { -#ifdef PDF_ENABLE_XFA - return m_page->GetDocumentExtension()->GetPDFDoc(); -#else // PDF_ENABLE_XFA - return m_page->GetDocument(); -#endif // PDF_ENABLE_XFA - } - return nullptr; + return m_page ? m_page->GetDocument() : nullptr; } CPDF_Page* CPDFSDK_PageView::GetPDFPage() const { -#ifdef PDF_ENABLE_XFA - return m_page ? m_page->GetPDFPage() : nullptr; -#else // PDF_ENABLE_XFA - return m_page; -#endif // PDF_ENABLE_XFA + return ToPDFPage(m_page); } CPDFSDK_Annot* CPDFSDK_PageView::GetAnnotByDict(CPDF_Dictionary* pDict) { @@ -460,9 +449,9 @@ void CPDFSDK_PageView::LoadFXAnnots() { m_bLocked = true; #ifdef PDF_ENABLE_XFA - RetainPtr protector(m_page); + RetainPtr protector(ToXFAPage(m_page)); if (m_pFormFillEnv->GetXFAContext()->GetFormType() == FormType::kXFAFull) { - CXFA_FFPageView* pageView = m_page->GetXFAPageView(); + CXFA_FFPageView* pageView = protector->GetXFAPageView(); std::unique_ptr pWidgetHandler( pageView->CreateWidgetIterator( XFA_TRAVERSEWAY_Form, @@ -518,11 +507,11 @@ int CPDFSDK_PageView::GetPageIndex() const { return -1; #ifdef PDF_ENABLE_XFA - auto* pContext = - static_cast(m_page->GetDocumentExtension()); + auto* pContext = static_cast( + m_page->AsXFAPage()->GetDocumentExtension()); switch (pContext->GetFormType()) { case FormType::kXFAFull: { - CXFA_FFPageView* pPageView = m_page->GetXFAPageView(); + CXFA_FFPageView* pPageView = m_page->AsXFAPage()->GetXFAPageView(); return pPageView ? pPageView->GetPageIndex() : -1; } case FormType::kNone: -- cgit v1.2.3