diff options
author | Tom Sepez <tsepez@chromium.org> | 2018-06-12 13:36:05 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-06-12 13:36:05 +0000 |
commit | 101535f463dda5766f99b66f383672d5898556fe (patch) | |
tree | 04ca2226b850756c67dd29444545f4b91682835c /core/fpdfapi/page/ipdf_page.h | |
parent | 755b0e5f71518488456e7cffc64fd7ba89692e68 (diff) | |
download | pdfium-101535f463dda5766f99b66f383672d5898556fe.tar.xz |
Rework "Make common page base class."
Re-landing of https://pdfium-review.googlesource.com/c/pdfium/+/32892
This time, however, we do not build on the previous CL which cached
pages. This CL by itself should be OK but was reverted only because
it was blocking earlier reverts.
Change-Id: I067d5f07373eeac6cced5d0c113ea40e5f8dcd15
Reviewed-on: https://pdfium-review.googlesource.com/34910
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'core/fpdfapi/page/ipdf_page.h')
-rw-r--r-- | core/fpdfapi/page/ipdf_page.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/core/fpdfapi/page/ipdf_page.h b/core/fpdfapi/page/ipdf_page.h new file mode 100644 index 0000000000..7c9fce7726 --- /dev/null +++ b/core/fpdfapi/page/ipdf_page.h @@ -0,0 +1,52 @@ +// Copyright 2018 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 CORE_FPDFAPI_PAGE_IPDF_PAGE_H_ +#define CORE_FPDFAPI_PAGE_IPDF_PAGE_H_ + +#include "core/fxcrt/fx_coordinates.h" +#include "core/fxcrt/retain_ptr.h" +#include "third_party/base/optional.h" + +class CPDF_Document; +class CPDF_Page; + +// Small layering violation, incomplete type and always null if non-XFA. +class CPDFXFA_Page; + +// Interface implemented by both page types (CPDF_Page and CPDFXFA_Page). +class IPDF_Page : public Retainable { + public: + virtual CPDF_Page* AsPDFPage() = 0; + virtual CPDFXFA_Page* AsXFAPage() = 0; + + virtual CPDF_Document* GetDocument() const = 0; + + virtual float GetPageWidth() const = 0; + virtual float GetPageHeight() const = 0; + virtual CFX_Matrix GetDisplayMatrix(const FX_RECT& rect, + int iRotate) const = 0; + + virtual Optional<CFX_PointF> DeviceToPage( + const FX_RECT& rect, + int rotate, + const CFX_PointF& device_point) const = 0; + + virtual Optional<CFX_PointF> PageToDevice( + const FX_RECT& rect, + int rotate, + const CFX_PointF& page_point) const = 0; +}; + +inline CPDF_Page* ToPDFPage(IPDF_Page* pBase) { + return pBase ? pBase->AsPDFPage() : nullptr; +} + +inline CPDFXFA_Page* ToXFAPage(IPDF_Page* pBase) { + return pBase ? pBase->AsXFAPage() : nullptr; +} + +#endif // CORE_FPDFAPI_PAGE_IPDF_PAGE_H_ |