Use fxge::CalculatePitch8() in CFX_DIBBase

Use CalculatePitch8() instead of manually doing the same calculation in
CFX_DIBBase.

Change-Id: Idaa2c40ef3b474073ec48c529f56ae2d73f44183
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/111450
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Nigi <nigi@chromium.org>
diff --git a/core/fxge/dib/cfx_dibbase.cpp b/core/fxge/dib/cfx_dibbase.cpp
index 97f8440..b64bc28 100644
--- a/core/fxge/dib/cfx_dibbase.cpp
+++ b/core/fxge/dib/cfx_dibbase.cpp
@@ -19,6 +19,7 @@
 #include "core/fxcrt/fx_memory.h"
 #include "core/fxcrt/fx_safe_types.h"
 #include "core/fxcrt/span_util.h"
+#include "core/fxge/calculate_pitch.h"
 #include "core/fxge/cfx_cliprgn.h"
 #include "core/fxge/dib/cfx_bitmapstorer.h"
 #include "core/fxge/dib/cfx_dibitmap.h"
@@ -669,14 +670,13 @@
       }
     }
   } else {
-    FX_SAFE_UINT32 copy_len = pNewBitmap->GetWidth();
-    copy_len *= pNewBitmap->GetBPP();
-    copy_len += 7;
-    copy_len /= 8;
-    if (!copy_len.IsValid())
+    absl::optional<uint32_t> copy_len = fxge::CalculatePitch8(
+        pNewBitmap->GetBPP(), /*components=*/1, pNewBitmap->GetWidth());
+    if (!copy_len.has_value()) {
       return nullptr;
+    }
 
-    copy_len = std::min<uint32_t>(m_Pitch, copy_len.ValueOrDie());
+    copy_len = std::min<uint32_t>(m_Pitch, copy_len.value());
 
     FX_SAFE_UINT32 offset = rect.left;
     offset *= GetBppFromFormat(m_Format);
@@ -689,7 +689,7 @@
           GetScanline(row).subspan(offset.ValueOrDie()).data();
       uint8_t* dest_scan =
           pNewBitmap->GetWritableScanline(row - rect.top).data();
-      memcpy(dest_scan, src_scan, copy_len.ValueOrDie());
+      memcpy(dest_scan, src_scan, copy_len.value());
     }
   }
   return pNewBitmap;