summaryrefslogtreecommitdiff
path: root/core/fpdfapi/page/ipdf_page.h
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2018-06-12 13:36:05 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-06-12 13:36:05 +0000
commit101535f463dda5766f99b66f383672d5898556fe (patch)
tree04ca2226b850756c67dd29444545f4b91682835c /core/fpdfapi/page/ipdf_page.h
parent755b0e5f71518488456e7cffc64fd7ba89692e68 (diff)
downloadpdfium-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.h52
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_