diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2016-03-21 09:15:45 -0400 |
---|---|---|
committer | Dan Sinclair <dsinclair@chromium.org> | 2016-03-21 09:15:45 -0400 |
commit | 584b1e679f41a580e2b38d5534f126355c78043b (patch) | |
tree | ca3f78bc30673b9c4650433168efe574920c60f1 /core/fpdfapi/fpdf_page/cpdf_shadingobject.cpp | |
parent | edbb319d3143692befdbb0603089b7e265cf89aa (diff) | |
download | pdfium-584b1e679f41a580e2b38d5534f126355c78043b.tar.xz |
Move core/include/fpdfapi/fpdf_pageobj.h into core/fpdfapi.
This CL splits the file into individual classes and moves them into
core/fpdfapi/fpdf_page as needed.
R=tsepez@chromium.org
Review URL: https://codereview.chromium.org/1811053002 .
Diffstat (limited to 'core/fpdfapi/fpdf_page/cpdf_shadingobject.cpp')
-rw-r--r-- | core/fpdfapi/fpdf_page/cpdf_shadingobject.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/core/fpdfapi/fpdf_page/cpdf_shadingobject.cpp b/core/fpdfapi/fpdf_page/cpdf_shadingobject.cpp new file mode 100644 index 0000000000..16287fe692 --- /dev/null +++ b/core/fpdfapi/fpdf_page/cpdf_shadingobject.cpp @@ -0,0 +1,54 @@ +// Copyright 2016 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 + +#include "core/fpdfapi/fpdf_page/include/cpdf_shadingobject.h" + +#include "core/fpdfapi/fpdf_page/pageint.h" +#include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" + +CPDF_ShadingObject::CPDF_ShadingObject() : m_pShading(nullptr) {} + +CPDF_ShadingObject::~CPDF_ShadingObject() {} + +CPDF_ShadingObject* CPDF_ShadingObject::Clone() const { + CPDF_ShadingObject* obj = new CPDF_ShadingObject; + obj->CopyData(this); + + obj->m_pShading = m_pShading; + if (obj->m_pShading && obj->m_pShading->m_pDocument) { + CPDF_DocPageData* pDocPageData = + obj->m_pShading->m_pDocument->GetPageData(); + obj->m_pShading = (CPDF_ShadingPattern*)pDocPageData->GetPattern( + obj->m_pShading->m_pShadingObj, m_pShading->m_bShadingObj, + &obj->m_pShading->m_ParentMatrix); + } + obj->m_Matrix = m_Matrix; + return obj; +} + +void CPDF_ShadingObject::Transform(const CFX_Matrix& matrix) { + if (!m_ClipPath.IsNull()) { + m_ClipPath.GetModify(); + m_ClipPath.Transform(matrix); + } + m_Matrix.Concat(matrix); + if (!m_ClipPath.IsNull()) { + CalcBoundingBox(); + } else { + matrix.TransformRect(m_Left, m_Right, m_Top, m_Bottom); + } +} + +void CPDF_ShadingObject::CalcBoundingBox() { + if (m_ClipPath.IsNull()) { + return; + } + CFX_FloatRect rect = m_ClipPath.GetClipBox(); + m_Left = rect.left; + m_Bottom = rect.bottom; + m_Right = rect.right; + m_Top = rect.top; +} |