From 118a8e28783f42e089721eac4880f3b3f683e832 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Thu, 9 Feb 2017 10:16:07 -0500 Subject: Replace rect.Transform(matrix) with matrix.TransformRect(rect) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This Cl removes the rect based transform method which internally just called the matrix tranform method. The callers have been reversed to make it clearer the matrix is transforming the rect. Change-Id: I8ef57ccc2311e4e853b8180a6ff475f8eda2138e Reviewed-on: https://pdfium-review.googlesource.com/2572 Commit-Queue: dsinclair Reviewed-by: Nicolás Peña --- core/fpdfapi/font/cpdf_cidfont.cpp | 2 +- core/fpdfapi/font/cpdf_type3font.cpp | 2 +- core/fpdfapi/page/cpdf_contentparser.cpp | 6 ++++-- core/fpdfapi/page/cpdf_formobject.cpp | 2 +- core/fpdfapi/page/cpdf_imageobject.cpp | 6 ++++-- core/fpdfapi/page/cpdf_pathobject.cpp | 3 ++- core/fpdfapi/page/cpdf_streamcontentparser.cpp | 2 +- core/fpdfapi/render/cpdf_renderstatus.cpp | 8 +++++--- 8 files changed, 19 insertions(+), 12 deletions(-) (limited to 'core/fpdfapi') diff --git a/core/fpdfapi/font/cpdf_cidfont.cpp b/core/fpdfapi/font/cpdf_cidfont.cpp index e96f824bd5..a9ffbbdf71 100644 --- a/core/fpdfapi/font/cpdf_cidfont.cpp +++ b/core/fpdfapi/font/cpdf_cidfont.cpp @@ -488,7 +488,7 @@ FX_RECT CPDF_CIDFont::GetCharBBox(uint32_t charcode) { CIDTransformToFloat(pTransform[4]) * 1000, CIDTransformToFloat(pTransform[5]) * 1000); CFX_FloatRect rect_f(rect); - rect_f.Transform(&matrix); + matrix.TransformRect(rect_f); rect = rect_f.GetOuterRect(); } } diff --git a/core/fpdfapi/font/cpdf_type3font.cpp b/core/fpdfapi/font/cpdf_type3font.cpp index 9542945845..f6cd6ecf26 100644 --- a/core/fpdfapi/font/cpdf_type3font.cpp +++ b/core/fpdfapi/font/cpdf_type3font.cpp @@ -121,7 +121,7 @@ CPDF_Type3Char* CPDF_Type3Font::LoadChar(uint32_t charcode) { if (rcBBox.right <= rcBBox.left || rcBBox.bottom >= rcBBox.top) char_rect = pNewChar->m_pForm->CalcBoundingBox(); - char_rect.Transform(&m_FontMatrix); + m_FontMatrix.TransformRect(char_rect); rcBBox.left = FXSYS_round(char_rect.left * 1000); rcBBox.right = FXSYS_round(char_rect.right * 1000); rcBBox.top = FXSYS_round(char_rect.top * 1000); diff --git a/core/fpdfapi/page/cpdf_contentparser.cpp b/core/fpdfapi/page/cpdf_contentparser.cpp index 1e0fe62e09..7f00eabb86 100644 --- a/core/fpdfapi/page/cpdf_contentparser.cpp +++ b/core/fpdfapi/page/cpdf_contentparser.cpp @@ -90,10 +90,12 @@ void CPDF_ContentParser::Start(CPDF_Form* pForm, ClipPath.Transform(&form_matrix); if (pParentMatrix) ClipPath.Transform(pParentMatrix); - form_bbox.Transform(&form_matrix); + + form_matrix.TransformRect(form_bbox); if (pParentMatrix) - form_bbox.Transform(pParentMatrix); + pParentMatrix->TransformRect(form_bbox); } + CPDF_Dictionary* pResources = pForm->m_pFormDict->GetDictFor("Resources"); m_pParser = pdfium::MakeUnique( pForm->m_pDocument, pForm->m_pPageResources, pForm->m_pResources, diff --git a/core/fpdfapi/page/cpdf_formobject.cpp b/core/fpdfapi/page/cpdf_formobject.cpp index dc596e53c6..5642a5dd01 100644 --- a/core/fpdfapi/page/cpdf_formobject.cpp +++ b/core/fpdfapi/page/cpdf_formobject.cpp @@ -35,7 +35,7 @@ CPDF_PageObject::Type CPDF_FormObject::GetType() const { void CPDF_FormObject::CalcBoundingBox() { CFX_FloatRect form_rect = m_pForm->CalcBoundingBox(); - form_rect.Transform(&m_FormMatrix); + m_FormMatrix.TransformRect(form_rect); m_Left = form_rect.left; m_Bottom = form_rect.bottom; m_Right = form_rect.right; diff --git a/core/fpdfapi/page/cpdf_imageobject.cpp b/core/fpdfapi/page/cpdf_imageobject.cpp index bb91820548..01d2df7421 100644 --- a/core/fpdfapi/page/cpdf_imageobject.cpp +++ b/core/fpdfapi/page/cpdf_imageobject.cpp @@ -41,8 +41,10 @@ const CPDF_ImageObject* CPDF_ImageObject::AsImage() const { } void CPDF_ImageObject::CalcBoundingBox() { - m_Left = m_Bottom = 0; - m_Right = m_Top = 1.0f; + m_Left = 0; + m_Bottom = 0; + m_Right = 1.0f; + m_Top = 1.0f; m_Matrix.TransformRect(m_Left, m_Right, m_Top, m_Bottom); } diff --git a/core/fpdfapi/page/cpdf_pathobject.cpp b/core/fpdfapi/page/cpdf_pathobject.cpp index 27c4535fa5..b5bb89390c 100644 --- a/core/fpdfapi/page/cpdf_pathobject.cpp +++ b/core/fpdfapi/page/cpdf_pathobject.cpp @@ -41,7 +41,8 @@ void CPDF_PathObject::CalcBoundingBox() { } else { rect = m_Path.GetBoundingBox(); } - rect.Transform(&m_Matrix); + m_Matrix.TransformRect(rect); + if (width == 0 && m_bStroke) { rect.left += -0.5f; rect.right += 0.5f; diff --git a/core/fpdfapi/page/cpdf_streamcontentparser.cpp b/core/fpdfapi/page/cpdf_streamcontentparser.cpp index 28f3594f47..1fcb27a8c8 100644 --- a/core/fpdfapi/page/cpdf_streamcontentparser.cpp +++ b/core/fpdfapi/page/cpdf_streamcontentparser.cpp @@ -127,7 +127,7 @@ CFX_FloatRect GetShadingBBox(CPDF_ShadingPattern* pShading, if (bGouraud) stream.BitStream()->ByteAlign(); } - rect.Transform(&matrix); + matrix.TransformRect(rect); return rect; } diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp index 1bdf4a0382..07987d616e 100644 --- a/core/fpdfapi/render/cpdf_renderstatus.cpp +++ b/core/fpdfapi/render/cpdf_renderstatus.cpp @@ -1860,7 +1860,8 @@ bool CPDF_RenderStatus::ProcessType3Text(CPDF_TextObject* textobj, m_pDevice->RestoreState(false); } else { CFX_FloatRect rect_f = pType3Char->m_pForm->CalcBoundingBox(); - rect_f.Transform(&matrix); + matrix.TransformRect(rect_f); + FX_RECT rect = rect_f.GetOuterRect(); CFX_FxgeDevice bitmap_device; if (!bitmap_device.Create((int)(rect.Width() * sa), @@ -2038,7 +2039,7 @@ void CPDF_RenderStatus::DrawShading(CPDF_ShadingPattern* pPattern, } if (pDict->KeyExist("BBox")) { CFX_FloatRect rect = pDict->GetRectFor("BBox"); - rect.Transform(pMatrix); + pMatrix->TransformRect(rect); clip_rect.Intersect(rect.GetOuterRect()); } if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_SHADING && @@ -2204,8 +2205,9 @@ void CPDF_RenderStatus::DrawTilingPattern(CPDF_TilingPattern* pPattern, int min_col, max_col, min_row, max_row; CFX_Matrix mtDevice2Pattern; mtDevice2Pattern.SetReverse(mtPattern2Device); + CFX_FloatRect clip_box_p(clip_box); - clip_box_p.Transform(&mtDevice2Pattern); + mtDevice2Pattern.TransformRect(clip_box_p); min_col = (int)FXSYS_ceil((clip_box_p.left - pPattern->bbox().right) / pPattern->x_step()); -- cgit v1.2.3