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>
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index 653d657..8b58295 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -1429,6 +1429,18 @@
   }
 }
 
+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 @@
     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 @@
     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 7dee814..92b96f9 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.h
+++ b/core/fpdfapi/render/cpdf_renderstatus.h
@@ -119,6 +119,9 @@
                            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);