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#include "core/fpdfapi/page/cpdf_pageobject.h" 84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_PageObject::CPDF_PageObject() {} 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_PageObject::~CPDF_PageObject() {} 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CPDF_PageObject::IsText() const { 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CPDF_PageObject::IsPath() const { 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CPDF_PageObject::IsImage() const { 224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CPDF_PageObject::IsShading() const { 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CPDF_PageObject::IsForm() const { 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_TextObject* CPDF_PageObject::AsText() { 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannconst CPDF_TextObject* CPDF_PageObject::AsText() const { 384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_PathObject* CPDF_PageObject::AsPath() { 424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannconst CPDF_PathObject* CPDF_PageObject::AsPath() const { 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_ImageObject* CPDF_PageObject::AsImage() { 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannconst CPDF_ImageObject* CPDF_PageObject::AsImage() const { 544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_ShadingObject* CPDF_PageObject::AsShading() { 584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannconst CPDF_ShadingObject* CPDF_PageObject::AsShading() const { 624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_FormObject* CPDF_PageObject::AsForm() { 664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannconst CPDF_FormObject* CPDF_PageObject::AsForm() const { 704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CPDF_PageObject::CopyData(const CPDF_PageObject* pSrc) { 744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CopyStates(*pSrc); 754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_Left = pSrc->m_Left; 764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_Right = pSrc->m_Right; 774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_Top = pSrc->m_Top; 784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_Bottom = pSrc->m_Bottom; 794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CPDF_PageObject::TransformClipPath(CFX_Matrix& matrix) { 824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_ClipPath) 834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_ClipPath.Transform(matrix); 854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CPDF_PageObject::TransformGeneralState(CFX_Matrix& matrix) { 884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_GeneralState) 894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_GeneralState.GetMutableMatrix()->Concat(matrix); 914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannFX_RECT CPDF_PageObject::GetBBox(const CFX_Matrix* pMatrix) const { 944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_FloatRect rect(m_Left, m_Bottom, m_Right, m_Top); 954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pMatrix) { 964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pMatrix->TransformRect(rect); 974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return rect.GetOuterRect(); 994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 100