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;