Change CBC_OneDimWriter::RenderResult() to use a span.

Combine 2 parameters into 1. Also make it a const span along the way.

Change-Id: I4c578af849df70367b423d14180ea45867dd6174
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/100912
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fxbarcode/cbc_codabar.cpp b/fxbarcode/cbc_codabar.cpp
index babb40e..71061cb 100644
--- a/fxbarcode/cbc_codabar.cpp
+++ b/fxbarcode/cbc_codabar.cpp
@@ -42,8 +42,8 @@
   ByteString byteString = m_renderContents.ToUTF8();
   std::unique_ptr<uint8_t, FxFreeDeleter> data(
       pWriter->Encode(byteString, outWidth));
-  return data && pWriter->RenderResult(m_renderContents.AsStringView(),
-                                       data.get(), outWidth);
+  return pWriter->RenderResult(m_renderContents.AsStringView(),
+                               pdfium::make_span(data.get(), outWidth));
 }
 
 bool CBC_Codabar::RenderDevice(CFX_RenderDevice* device,
diff --git a/fxbarcode/cbc_code128.cpp b/fxbarcode/cbc_code128.cpp
index c4ddb9a..4dfc232 100644
--- a/fxbarcode/cbc_code128.cpp
+++ b/fxbarcode/cbc_code128.cpp
@@ -46,8 +46,8 @@
   ByteString byteString = m_renderContents.ToUTF8();
   std::unique_ptr<uint8_t, FxFreeDeleter> data(
       pWriter->Encode(byteString, outWidth));
-  return data && pWriter->RenderResult(m_renderContents.AsStringView(),
-                                       data.get(), outWidth);
+  return pWriter->RenderResult(m_renderContents.AsStringView(),
+                               pdfium::make_span(data.get(), outWidth));
 }
 
 bool CBC_Code128::RenderDevice(CFX_RenderDevice* device,
diff --git a/fxbarcode/cbc_code39.cpp b/fxbarcode/cbc_code39.cpp
index 72a1985..b3bbdc3 100644
--- a/fxbarcode/cbc_code39.cpp
+++ b/fxbarcode/cbc_code39.cpp
@@ -43,8 +43,8 @@
   ByteString byteString = filtercontents.ToUTF8();
   std::unique_ptr<uint8_t, FxFreeDeleter> data(
       pWriter->Encode(byteString, outWidth));
-  return data && pWriter->RenderResult(m_renderContents.AsStringView(),
-                                       data.get(), outWidth);
+  return pWriter->RenderResult(m_renderContents.AsStringView(),
+                               pdfium::make_span(data.get(), outWidth));
 }
 
 bool CBC_Code39::RenderDevice(CFX_RenderDevice* device,
diff --git a/fxbarcode/cbc_eancode.cpp b/fxbarcode/cbc_eancode.cpp
index 35baed8..ba4ad01 100644
--- a/fxbarcode/cbc_eancode.cpp
+++ b/fxbarcode/cbc_eancode.cpp
@@ -31,8 +31,8 @@
   ByteString str = m_renderContents.ToUTF8();
   pWriter->InitEANWriter();
   std::unique_ptr<uint8_t, FxFreeDeleter> data(pWriter->Encode(str, out_width));
-  return data && pWriter->RenderResult(m_renderContents.AsStringView(),
-                                       data.get(), out_width);
+  return pWriter->RenderResult(m_renderContents.AsStringView(),
+                               pdfium::make_span(data.get(), out_width));
 }
 
 bool CBC_EANCode::RenderDevice(CFX_RenderDevice* device,
diff --git a/fxbarcode/oned/BC_OneDimWriter.cpp b/fxbarcode/oned/BC_OneDimWriter.cpp
index 050657a..b203e59 100644
--- a/fxbarcode/oned/BC_OneDimWriter.cpp
+++ b/fxbarcode/oned/BC_OneDimWriter.cpp
@@ -252,31 +252,28 @@
 }
 
 bool CBC_OneDimWriter::RenderResult(WideStringView contents,
-                                    uint8_t* code,
-                                    int32_t codeLength) {
-  if (codeLength < 1)
+                                    pdfium::span<const uint8_t> code) {
+  if (code.empty())
     return false;
 
   m_ModuleHeight = std::max(m_ModuleHeight, 20);
-  const int32_t codeOldLength = codeLength;
+  const size_t original_codelength = code.size();
   const int32_t leftPadding = m_bLeftPadding ? 7 : 0;
   const int32_t rightPadding = m_bRightPadding ? 7 : 0;
-  codeLength += leftPadding;
-  codeLength += rightPadding;
+  const size_t codelength = code.size() + leftPadding + rightPadding;
   m_outputHScale =
-      m_Width > 0 ? static_cast<float>(m_Width) / static_cast<float>(codeLength)
+      m_Width > 0 ? static_cast<float>(m_Width) / static_cast<float>(codelength)
                   : 1.0;
-  const int32_t outputWidth = codeLength;
   m_barWidth = m_Width;
 
   m_output.clear();
-  m_output.reserve(codeOldLength);
-  for (int32_t inputX = 0, outputX = leftPadding; inputX < codeOldLength;
+  m_output.reserve(original_codelength);
+  for (size_t inputX = 0, outputX = leftPadding; inputX < original_codelength;
        ++inputX, ++outputX) {
     if (code[inputX] != 1)
       continue;
 
-    if (outputX >= outputWidth)
+    if (outputX >= codelength)
       return true;
 
     m_output.emplace_back();
diff --git a/fxbarcode/oned/BC_OneDimWriter.h b/fxbarcode/oned/BC_OneDimWriter.h
index 6ae1475..1d9ed70 100644
--- a/fxbarcode/oned/BC_OneDimWriter.h
+++ b/fxbarcode/oned/BC_OneDimWriter.h
@@ -17,6 +17,7 @@
 #include "core/fxge/cfx_textrenderoptions.h"
 #include "fxbarcode/BC_Library.h"
 #include "fxbarcode/BC_Writer.h"
+#include "third_party/base/span.h"
 
 class CFX_Font;
 class CFX_Matrix;
@@ -35,8 +36,7 @@
   ~CBC_OneDimWriter() override;
 
   virtual bool RenderResult(WideStringView contents,
-                            uint8_t* code,
-                            int32_t codeLength);
+                            pdfium::span<const uint8_t> code);
   virtual bool CheckContentValidity(WideStringView contents) = 0;
   virtual WideString FilterContents(WideStringView contents) = 0;
   virtual void SetDataLength(int32_t length);
diff --git a/fxbarcode/oned/BC_OnedCodaBarWriter.cpp b/fxbarcode/oned/BC_OnedCodaBarWriter.cpp
index e714742..3294ae6 100644
--- a/fxbarcode/oned/BC_OnedCodaBarWriter.cpp
+++ b/fxbarcode/oned/BC_OnedCodaBarWriter.cpp
@@ -182,8 +182,7 @@
 }
 
 bool CBC_OnedCodaBarWriter::RenderResult(WideStringView contents,
-                                         uint8_t* code,
-                                         int32_t codeLength) {
+                                         pdfium::span<const uint8_t> code) {
   return CBC_OneDimWriter::RenderResult(
-      encodedContents(contents).AsStringView(), code, codeLength);
+      encodedContents(contents).AsStringView(), code);
 }
diff --git a/fxbarcode/oned/BC_OnedCodaBarWriter.h b/fxbarcode/oned/BC_OnedCodaBarWriter.h
index dbdc139..dd7658f 100644
--- a/fxbarcode/oned/BC_OnedCodaBarWriter.h
+++ b/fxbarcode/oned/BC_OnedCodaBarWriter.h
@@ -21,8 +21,7 @@
   // CBC_OneDimWriter:
   uint8_t* Encode(const ByteString& contents, int32_t& outLength) override;
   bool RenderResult(WideStringView contents,
-                    uint8_t* code,
-                    int32_t codeLength) override;
+                    pdfium::span<const uint8_t> code) override;
   bool CheckContentValidity(WideStringView contents) override;
   WideString FilterContents(WideStringView contents) override;
   void SetDataLength(int32_t length) override;
diff --git a/fxbarcode/oned/BC_OnedCode39Writer.cpp b/fxbarcode/oned/BC_OnedCode39Writer.cpp
index 836c492..b674e0c 100644
--- a/fxbarcode/oned/BC_OnedCode39Writer.cpp
+++ b/fxbarcode/oned/BC_OnedCode39Writer.cpp
@@ -217,11 +217,9 @@
 }
 
 bool CBC_OnedCode39Writer::RenderResult(WideStringView contents,
-                                        uint8_t* code,
-                                        int32_t codeLength) {
+                                        pdfium::span<const uint8_t> code) {
   WideString encodedCon;
   if (!encodedContents(contents, &encodedCon))
     return false;
-  return CBC_OneDimWriter::RenderResult(encodedCon.AsStringView(), code,
-                                        codeLength);
+  return CBC_OneDimWriter::RenderResult(encodedCon.AsStringView(), code);
 }
diff --git a/fxbarcode/oned/BC_OnedCode39Writer.h b/fxbarcode/oned/BC_OnedCode39Writer.h
index e6ea93d..0dd99aa 100644
--- a/fxbarcode/oned/BC_OnedCode39Writer.h
+++ b/fxbarcode/oned/BC_OnedCode39Writer.h
@@ -18,8 +18,7 @@
   // CBC_OneDimWriter
   uint8_t* Encode(const ByteString& contents, int32_t& outLength) override;
   bool RenderResult(WideStringView contents,
-                    uint8_t* code,
-                    int32_t codeLength) override;
+                    pdfium::span<const uint8_t> code) override;
   bool CheckContentValidity(WideStringView contents) override;
   WideString FilterContents(WideStringView contents) override;
   void SetTextLocation(BC_TEXT_LOC location) override;