diff options
author | Lei Zhang <thestig@chromium.org> | 2018-06-25 19:42:04 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-06-25 19:42:04 +0000 |
commit | 8c955c9d307272d43d532cd206abc4077076d212 (patch) | |
tree | e2110aaf636fd5e6835dbe148a059c6502fa6f3f | |
parent | 8256f1f063793da1e0b4c34884a4e52d5df935c2 (diff) | |
download | pdfium-8c955c9d307272d43d532cd206abc4077076d212.tar.xz |
Combine common code into CPDF_RenderStatus::ClipPattern().
Change-Id: I53ce4ee699644b0a30132e642b8f466cd9b6e7b1
Reviewed-on: https://pdfium-review.googlesource.com/35972
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
-rw-r--r-- | core/fpdfapi/render/cpdf_renderstatus.cpp | 29 | ||||
-rw-r--r-- | core/fpdfapi/render/cpdf_renderstatus.h | 3 |
2 files changed, 18 insertions, 14 deletions
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp index 653d657984..8b58295ab4 100644 --- a/core/fpdfapi/render/cpdf_renderstatus.cpp +++ b/core/fpdfapi/render/cpdf_renderstatus.cpp @@ -1429,6 +1429,18 @@ void CPDF_RenderStatus::ProcessClipPath(const CPDF_ClipPath& ClipPath, } } +bool CPDF_RenderStatus::ClipPattern(const CPDF_PageObject* pPageObj, + const CFX_Matrix* pObj2Device, + bool bStroke) { + if (pPageObj->IsPath()) + return SelectClipPath(pPageObj->AsPath(), pObj2Device, bStroke); + if (pPageObj->IsImage()) { + m_pDevice->SetClip_Rect(pPageObj->GetBBox(pObj2Device)); + return true; + } + return false; +} + bool CPDF_RenderStatus::SelectClipPath(const CPDF_PathObject* pPathObj, const CFX_Matrix* pObj2Device, bool bStroke) { @@ -2127,14 +2139,9 @@ void CPDF_RenderStatus::DrawShadingPattern(CPDF_ShadingPattern* pattern, return; CFX_RenderDevice::StateRestorer restorer(m_pDevice); - if (pPageObj->IsPath()) { - if (!SelectClipPath(pPageObj->AsPath(), pObj2Device, bStroke)) - return; - } else if (pPageObj->IsImage()) { - m_pDevice->SetClip_Rect(pPageObj->GetBBox(pObj2Device)); - } else { + if (!ClipPattern(pPageObj, pObj2Device, bStroke)) return; - } + FX_RECT rect = GetObjectClippedRect(pPageObj, pObj2Device); if (rect.IsEmpty()) return; @@ -2171,14 +2178,8 @@ void CPDF_RenderStatus::DrawTilingPattern(CPDF_TilingPattern* pPattern, return; CFX_RenderDevice::StateRestorer restorer(m_pDevice); - if (pPageObj->IsPath()) { - if (!SelectClipPath(pPageObj->AsPath(), pObj2Device, bStroke)) - return; - } else if (pPageObj->IsImage()) { - m_pDevice->SetClip_Rect(pPageObj->GetBBox(pObj2Device)); - } else { + if (!ClipPattern(pPageObj, pObj2Device, bStroke)) return; - } FX_RECT clip_box = m_pDevice->GetClipBox(); if (clip_box.IsEmpty()) diff --git a/core/fpdfapi/render/cpdf_renderstatus.h b/core/fpdfapi/render/cpdf_renderstatus.h index 7dee8142c4..92b96f9bec 100644 --- a/core/fpdfapi/render/cpdf_renderstatus.h +++ b/core/fpdfapi/render/cpdf_renderstatus.h @@ -119,6 +119,9 @@ class CPDF_RenderStatus { const CFX_Matrix* pObj2Device, const CPDF_Color* pColor, bool bStroke); + bool ClipPattern(const CPDF_PageObject* pPageObj, + const CFX_Matrix* pObj2Device, + bool bStroke); bool SelectClipPath(const CPDF_PathObject* pPathObj, const CFX_Matrix* pObj2Device, bool bStroke); |