Remove bool from DetectFirstLastScan().

Separate into first and last functions.

-- Remove CPDF_ prefix from anonymous class while at it (since
   collision avoidance not required from prefixing).

Change-Id: I5e07afce33786a0f56d3547a58b1fbf8a85f2d87
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/81113
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/render/cpdf_type3cache.cpp b/core/fpdfapi/render/cpdf_type3cache.cpp
index 6e7911c..5fda300 100644
--- a/core/fpdfapi/render/cpdf_type3cache.cpp
+++ b/core/fpdfapi/render/cpdf_type3cache.cpp
@@ -20,14 +20,14 @@
 
 namespace {
 
-struct CPDF_UniqueKeyGen {
+struct UniqueKeyGen {
   void Generate(int count, ...);
 
   int m_KeyLen;
   char m_Key[128];
 };
 
-void CPDF_UniqueKeyGen::Generate(int count, ...) {
+void UniqueKeyGen::Generate(int count, ...) {
   va_list argList;
   va_start(argList, count);
   for (int i = 0; i < count; i++) {
@@ -38,7 +38,7 @@
   m_KeyLen = count * sizeof(uint32_t);
 }
 
-bool IsScanLine1bpp(uint8_t* pBuf, int width) {
+bool IsScanLine1bpp(const uint8_t* pBuf, int width) {
   int size = width / 8;
   for (int i = 0; i < size; i++) {
     if (pBuf[i])
@@ -47,7 +47,7 @@
   return (width % 8) && (pBuf[width / 8] & (0xff << (8 - width % 8)));
 }
 
-bool IsScanLine8bpp(uint8_t* pBuf, int width) {
+bool IsScanLine8bpp(const uint8_t* pBuf, int width) {
   for (int i = 0; i < width; i++) {
     if (pBuf[i] > 0x40)
       return true;
@@ -55,26 +55,36 @@
   return false;
 }
 
-int DetectFirstLastScan(const RetainPtr<CFX_DIBitmap>& pBitmap, bool bFirst) {
-  int height = pBitmap->GetHeight();
-  int pitch = pBitmap->GetPitch();
-  int width = pBitmap->GetWidth();
-  int bpp = pBitmap->GetBPP();
+bool IsScanLineBpp(int bpp, const uint8_t* pBuf, int width) {
+  if (bpp == 1)
+    return IsScanLine1bpp(pBuf, width);
   if (bpp > 8)
     width *= bpp / 8;
-  uint8_t* pBuf = pBitmap->GetBuffer();
-  int line = bFirst ? 0 : height - 1;
-  int line_step = bFirst ? 1 : -1;
-  int line_end = bFirst ? height : -1;
-  while (line != line_end) {
-    if (bpp == 1) {
-      if (IsScanLine1bpp(pBuf + line * pitch, width))
-        return line;
-    } else {
-      if (IsScanLine8bpp(pBuf + line * pitch, width))
-        return line;
-    }
-    line += line_step;
+  return IsScanLine8bpp(pBuf, width);
+}
+
+int DetectFirstScan(const RetainPtr<CFX_DIBitmap>& pBitmap) {
+  const int height = pBitmap->GetHeight();
+  const int pitch = pBitmap->GetPitch();
+  const int width = pBitmap->GetWidth();
+  const int bpp = pBitmap->GetBPP();
+  const uint8_t* pBuf = pBitmap->GetBuffer();
+  for (int line = 0; line < height; ++line) {
+    if (IsScanLineBpp(bpp, pBuf + line * pitch, width))
+      return line;
+  }
+  return -1;
+}
+
+int DetectLastScan(const RetainPtr<CFX_DIBitmap>& pBitmap) {
+  const int height = pBitmap->GetHeight();
+  const int pitch = pBitmap->GetPitch();
+  const int bpp = pBitmap->GetBPP();
+  const int width = pBitmap->GetWidth();
+  const uint8_t* pBuf = pBitmap->GetBuffer();
+  for (int line = height - 1; line >= 0; --line) {
+    if (IsScanLineBpp(bpp, pBuf + line * pitch, width))
+      return line;
   }
   return -1;
 }
@@ -87,7 +97,7 @@
 
 const CFX_GlyphBitmap* CPDF_Type3Cache::LoadGlyph(uint32_t charcode,
                                                   const CFX_Matrix& mtMatrix) {
-  CPDF_UniqueKeyGen keygen;
+  UniqueKeyGen keygen;
   keygen.Generate(
       4, FXSYS_roundf(mtMatrix.a * 10000), FXSYS_roundf(mtMatrix.b * 10000),
       FXSYS_roundf(mtMatrix.c * 10000), FXSYS_roundf(mtMatrix.d * 10000));
@@ -129,8 +139,8 @@
   int top = 0;
   if (fabs(image_matrix.b) < fabs(image_matrix.a) / 100 &&
       fabs(image_matrix.c) < fabs(image_matrix.d) / 100) {
-    int top_line = DetectFirstLastScan(pBitmap, true);
-    int bottom_line = DetectFirstLastScan(pBitmap, false);
+    int top_line = DetectFirstScan(pBitmap);
+    int bottom_line = DetectLastScan(pBitmap);
     if (top_line == 0 && bottom_line == pBitmap->GetHeight() - 1) {
       float top_y = image_matrix.d + image_matrix.f;
       float bottom_y = image_matrix.f;