From 5110c4743751145c4ae1934cd1d83bc6c55bb43f Mon Sep 17 00:00:00 2001 From: John Abd-El-Malek Date: Sat, 17 May 2014 22:33:34 -0700 Subject: Initial commit. --- core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp (limited to 'core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp') diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp new file mode 100644 index 0000000000..836c940f5e --- /dev/null +++ b/core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp @@ -0,0 +1,52 @@ +// Copyright 2014 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 "../../../include/fpdfapi/fpdf_page.h" +#include "../../../include/fpdfapi/fpdf_pageobj.h" +#include "../../../include/fpdfapi/fpdf_module.h" +#include "pageint.h" +void CPDF_PathObject::CopyData(const CPDF_PageObject* pSrc) +{ + const CPDF_PathObject* pSrcObj = (const CPDF_PathObject*)pSrc; + m_Path = pSrcObj->m_Path; + m_FillType = pSrcObj->m_FillType; + m_bStroke = pSrcObj->m_bStroke; + m_Matrix = pSrcObj->m_Matrix; +} +void CPDF_PathObject::Transform(const CPDF_Matrix& matrix) +{ + m_Matrix.Concat(matrix); + CalcBoundingBox(); +} +void CPDF_PathObject::SetGraphState(CPDF_GraphState GraphState) +{ + m_GraphState = GraphState; + CalcBoundingBox(); +} +void CPDF_PathObject::CalcBoundingBox() +{ + if (m_Path.IsNull()) { + return; + } + CFX_FloatRect rect; + FX_FLOAT width = m_GraphState.GetObject()->m_LineWidth; + if (m_bStroke && width != 0) { + rect = m_Path.GetBoundingBox(width, m_GraphState.GetObject()->m_MiterLimit); + } else { + rect = m_Path.GetBoundingBox(); + } + rect.Transform(&m_Matrix); + if (width == 0 && m_bStroke) { + rect.left += -0.5f; + rect.right += 0.5f; + rect.bottom += -0.5f; + rect.top += 0.5f; + } + m_Left = rect.left; + m_Right = rect.right; + m_Top = rect.top; + m_Bottom = rect.bottom; +} -- cgit v1.2.3