diff options
author | Tom Sepez <tsepez@chromium.org> | 2018-05-30 18:11:51 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-05-30 18:11:51 +0000 |
commit | d06cc38b76685b002c51b227ae43b8314d926ad8 (patch) | |
tree | 89413c48e3de57f3e09043310598eaf219b78bca /fpdfsdk/fpdfxfa | |
parent | 0789714191b4b3109f7d5c415663090018e27577 (diff) | |
download | pdfium-d06cc38b76685b002c51b227ae43b8314d926ad8.tar.xz |
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 <tsepez@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'fpdfsdk/fpdfxfa')
-rw-r--r-- | fpdfsdk/fpdfxfa/cpdfxfa_page.cpp | 12 | ||||
-rw-r--r-- | fpdfsdk/fpdfxfa/cpdfxfa_page.h | 31 |
2 files changed, 30 insertions, 13 deletions
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp index f4120896a8..ad0615528f 100644 --- a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp +++ b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp @@ -22,6 +22,18 @@ CPDFXFA_Page::CPDFXFA_Page(CPDFXFA_Context* pContext, int page_index) CPDFXFA_Page::~CPDFXFA_Page() {} +CPDF_Page* CPDFXFA_Page::AsPDFPage() { + return m_pPDFPage.Get(); +} + +CPDFXFA_Page* CPDFXFA_Page::AsXFAPage() { + return this; +} + +CPDF_Document* CPDFXFA_Page::GetDocument() const { + return GetDocumentExtension()->GetPDFDoc(); +} + bool CPDFXFA_Page::LoadPDFPage() { if (!m_pContext) return false; diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_page.h b/fpdfsdk/fpdfxfa/cpdfxfa_page.h index 2573b9cebd..76c425f82b 100644 --- a/fpdfsdk/fpdfxfa/cpdfxfa_page.h +++ b/fpdfsdk/fpdfxfa/cpdfxfa_page.h @@ -10,6 +10,7 @@ #include <memory> #include "core/fpdfapi/page/cpdf_page.h" +#include "core/fpdfapi/page/ipdf_page.h" #include "core/fpdfapi/parser/cpdf_document.h" #include "core/fxcrt/fx_coordinates.h" #include "core/fxcrt/fx_system.h" @@ -21,35 +22,39 @@ class CPDF_Dictionary; class CPDFXFA_Context; class CXFA_FFPageView; -class CPDFXFA_Page : public CPDF_Page::Extension { +class CPDFXFA_Page : public IPDF_Page { public: template <typename T, typename... Args> friend RetainPtr<T> pdfium::MakeRetain(Args&&... args); + // IPDF_Page: + CPDF_Page* AsPDFPage() override; + CPDFXFA_Page* AsXFAPage() override; + CPDF_Document* GetDocument() const override; + float GetPageWidth() const override; + float GetPageHeight() const override; + CFX_Matrix GetDisplayMatrix(const FX_RECT& rect, int iRotate) const override; + Optional<CFX_PointF> DeviceToPage( + const FX_RECT& rect, + int rotate, + const CFX_PointF& device_point) const override; + Optional<CFX_PointF> PageToDevice( + const FX_RECT& rect, + int rotate, + const CFX_PointF& page_point) const override; + bool LoadPage(); bool LoadPDFPage(CPDF_Dictionary* pageDict); CPDF_Document::Extension* GetDocumentExtension() const; int GetPageIndex() const { return m_iPageIndex; } - CPDF_Page* GetPDFPage() const { return m_pPDFPage.Get(); } CXFA_FFPageView* GetXFAPageView() const { return m_pXFAPageView; } void SetXFAPageView(CXFA_FFPageView* pPageView) { m_pXFAPageView = pPageView; } - float GetPageWidth() const; - float GetPageHeight() const; - - Optional<CFX_PointF> DeviceToPage(const FX_RECT& rect, - int rotate, - const CFX_PointF& device_point) const; - Optional<CFX_PointF> PageToDevice(const FX_RECT& rect, - int rotate, - const CFX_PointF& page_point) const; - - CFX_Matrix GetDisplayMatrix(const FX_RECT& rect, int iRotate) const; protected: // Refcounted class. |