14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2016 PDFium Authors. All rights reserved. 24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file. 44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#ifndef CORE_FPDFAPI_PAGE_CPDF_PAGE_H_ 84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define CORE_FPDFAPI_PAGE_CPDF_PAGE_H_ 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <memory> 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/page/cpdf_pageobjectholder.h" 134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_coordinates.h" 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_system.h" 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDF_Dictionary; 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDF_Document; 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDF_Object; 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDF_PageRenderCache; 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDF_PageRenderContext; 214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDF_Page : public CPDF_PageObjectHolder { 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public: 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann class View {}; // Caller implements as desired, empty here due to layering. 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Page(CPDF_Document* pDocument, 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Dictionary* pPageDict, 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bPageCache); 294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ~CPDF_Page() override; 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 31d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann // CPDF_PageObjectHolder 32d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool IsPage() const override; 33d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void ParseContent(); 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann CFX_Matrix GetDisplayMatrix(int xPos, 3733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann int yPos, 3833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann int xSize, 3933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann int ySize, 4033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann int iRotate) const; 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 42d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann float GetPageWidth() const { return m_PageWidth; } 43d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann float GetPageHeight() const { return m_PageHeight; } 444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_FloatRect GetPageBBox() const { return m_BBox; } 45d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int GetPageRotation() const; 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_PageRenderCache* GetRenderCache() const { return m_pPageRender.get(); } 474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_PageRenderContext* GetRenderContext() const { 494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pRenderContext.get(); 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetRenderContext(std::unique_ptr<CPDF_PageRenderContext> pContext); 524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann View* GetView() const { return m_pView; } 544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetView(View* pView) { m_pView = pView; } 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 56d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann private: 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void StartParse(); 584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 59d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CPDF_Object* GetPageAttr(const ByteString& name) const; 60d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CFX_FloatRect GetBox(const ByteString& name) const; 61d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 62d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann float m_PageWidth; 63d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann float m_PageHeight; 644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_Matrix m_PageMatrix; 654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann View* m_pView; 664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::unique_ptr<CPDF_PageRenderCache> m_pPageRender; 674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::unique_ptr<CPDF_PageRenderContext> m_pRenderContext; 684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}; 694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif // CORE_FPDFAPI_PAGE_CPDF_PAGE_H_ 71