diff options
Diffstat (limited to 'fpdfsdk/fpdfxfa/fpdfxfa_page.h')
-rw-r--r-- | fpdfsdk/fpdfxfa/fpdfxfa_page.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/fpdfsdk/fpdfxfa/fpdfxfa_page.h b/fpdfsdk/fpdfxfa/fpdfxfa_page.h new file mode 100644 index 0000000000..cc622b7a40 --- /dev/null +++ b/fpdfsdk/fpdfxfa/fpdfxfa_page.h @@ -0,0 +1,85 @@ +// Copyright 2014 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 FPDFSDK_FPDFXFA_FPDFXFA_PAGE_H_ +#define FPDFSDK_FPDFXFA_FPDFXFA_PAGE_H_ + +#include <memory> + +#include "core/fxcrt/fx_system.h" + +class CFX_Matrix; +class CPDFXFA_Document; +class CPDF_Dictionary; +class CPDF_Page; +class CXFA_FFPageView; + +class CPDFXFA_Page { + public: + CPDFXFA_Page(CPDFXFA_Document* pDoc, int page_index); + + void Retain() { m_iRef++; } + void Release() { + if (--m_iRef <= 0) + delete this; + } + + FX_BOOL LoadPage(); + FX_BOOL LoadPDFPage(CPDF_Dictionary* pageDict); + CPDFXFA_Document* GetDocument() const { return m_pDocument; } + 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; + } + + FX_FLOAT GetPageWidth() const; + FX_FLOAT GetPageHeight() const; + + void DeviceToPage(int start_x, + int start_y, + int size_x, + int size_y, + int rotate, + int device_x, + int device_y, + double* page_x, + double* page_y); + void PageToDevice(int start_x, + int start_y, + int size_x, + int size_y, + int rotate, + double page_x, + double page_y, + int* device_x, + int* device_y); + + void GetDisplayMatrix(CFX_Matrix& matrix, + int xPos, + int yPos, + int xSize, + int ySize, + int iRotate) const; + + protected: + // Refcounted class. + ~CPDFXFA_Page(); + + FX_BOOL LoadPDFPage(); + FX_BOOL LoadXFAPageView(); + + private: + std::unique_ptr<CPDF_Page> m_pPDFPage; + CXFA_FFPageView* m_pXFAPageView; + CPDFXFA_Document* const m_pDocument; + const int m_iPageIndex; + int m_iRef; +}; + +#endif // FPDFSDK_FPDFXFA_FPDFXFA_PAGE_H_ |