Reduce layers of wrapper functions in CBC_OneDimWriter::Encode().

- Get rid of EncodeWithHint(): the hint is always 0.
- Get rid of the format parameter. The encoder classes already know what
  what format they support.
- Get rid of EncodeImpl(): Just make Encode() pure virtual instead.

Change-Id: Ic2d493a55b1903f1e86a1ba4ea8499dc126ffb9f
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/100833
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fxbarcode/cbc_codabar.cpp b/fxbarcode/cbc_codabar.cpp
index beb126f..babb40e 100644
--- a/fxbarcode/cbc_codabar.cpp
+++ b/fxbarcode/cbc_codabar.cpp
@@ -37,12 +37,11 @@
   if (!pWriter->CheckContentValidity(contents))
     return false;
 
-  BC_TYPE format = BC_TYPE::kCodabar;
   int32_t outWidth = 0;
   m_renderContents = pWriter->FilterContents(contents);
   ByteString byteString = m_renderContents.ToUTF8();
   std::unique_ptr<uint8_t, FxFreeDeleter> data(
-      pWriter->Encode(byteString, format, outWidth));
+      pWriter->Encode(byteString, outWidth));
   return data && pWriter->RenderResult(m_renderContents.AsStringView(),
                                        data.get(), outWidth);
 }
diff --git a/fxbarcode/cbc_code128.cpp b/fxbarcode/cbc_code128.cpp
index f84ee82..c4ddb9a 100644
--- a/fxbarcode/cbc_code128.cpp
+++ b/fxbarcode/cbc_code128.cpp
@@ -37,7 +37,6 @@
   if (!pWriter->CheckContentValidity(contents))
     return false;
 
-  BC_TYPE format = BC_TYPE::kCode128;
   int32_t outWidth = 0;
   WideString content(contents);
   if (contents.GetLength() % 2 && pWriter->GetType() == BC_TYPE::kCode128C)
@@ -46,7 +45,7 @@
   m_renderContents = pWriter->FilterContents(content.AsStringView());
   ByteString byteString = m_renderContents.ToUTF8();
   std::unique_ptr<uint8_t, FxFreeDeleter> data(
-      pWriter->Encode(byteString, format, outWidth));
+      pWriter->Encode(byteString, outWidth));
   return data && pWriter->RenderResult(m_renderContents.AsStringView(),
                                        data.get(), outWidth);
 }
diff --git a/fxbarcode/cbc_code39.cpp b/fxbarcode/cbc_code39.cpp
index 7939404..72a1985 100644
--- a/fxbarcode/cbc_code39.cpp
+++ b/fxbarcode/cbc_code39.cpp
@@ -37,13 +37,12 @@
   if (!pWriter->CheckContentValidity(contents))
     return false;
 
-  BC_TYPE format = BC_TYPE::kCode39;
   int32_t outWidth = 0;
   WideString filtercontents = pWriter->FilterContents(contents);
   m_renderContents = pWriter->RenderTextContents(contents);
   ByteString byteString = filtercontents.ToUTF8();
   std::unique_ptr<uint8_t, FxFreeDeleter> data(
-      pWriter->Encode(byteString, format, outWidth));
+      pWriter->Encode(byteString, outWidth));
   return data && pWriter->RenderResult(m_renderContents.AsStringView(),
                                        data.get(), outWidth);
 }
diff --git a/fxbarcode/cbc_eancode.cpp b/fxbarcode/cbc_eancode.cpp
index 81d22df..35baed8 100644
--- a/fxbarcode/cbc_eancode.cpp
+++ b/fxbarcode/cbc_eancode.cpp
@@ -26,13 +26,11 @@
   if (!pWriter->CheckContentValidity(contents))
     return false;
 
-  BC_TYPE format = GetType();
   int32_t out_width = 0;
   m_renderContents = Preprocess(contents);
   ByteString str = m_renderContents.ToUTF8();
   pWriter->InitEANWriter();
-  std::unique_ptr<uint8_t, FxFreeDeleter> data(
-      pWriter->Encode(str, format, out_width));
+  std::unique_ptr<uint8_t, FxFreeDeleter> data(pWriter->Encode(str, out_width));
   return data && pWriter->RenderResult(m_renderContents.AsStringView(),
                                        data.get(), out_width);
 }
diff --git a/fxbarcode/oned/BC_OneDimWriter.cpp b/fxbarcode/oned/BC_OneDimWriter.cpp
index df9f088..4bca114 100644
--- a/fxbarcode/oned/BC_OneDimWriter.cpp
+++ b/fxbarcode/oned/BC_OneDimWriter.cpp
@@ -85,19 +85,6 @@
   m_fontColor = color;
 }
 
-uint8_t* CBC_OneDimWriter::EncodeWithHint(const ByteString& contents,
-                                          BC_TYPE format,
-                                          int32_t& outWidth,
-                                          int32_t hints) {
-  return EncodeImpl(contents, outWidth);
-}
-
-uint8_t* CBC_OneDimWriter::Encode(const ByteString& contents,
-                                  BC_TYPE format,
-                                  int32_t& outWidth) {
-  return EncodeWithHint(contents, format, outWidth, 0);
-}
-
 int32_t CBC_OneDimWriter::AppendPattern(uint8_t* target,
                                         int32_t pos,
                                         const int8_t* pattern,
diff --git a/fxbarcode/oned/BC_OneDimWriter.h b/fxbarcode/oned/BC_OneDimWriter.h
index a8a3486..83efb99 100644
--- a/fxbarcode/oned/BC_OneDimWriter.h
+++ b/fxbarcode/oned/BC_OneDimWriter.h
@@ -47,21 +47,13 @@
   void SetFontStyle(int32_t style);
   void SetFontColor(FX_ARGB color);
 
-  uint8_t* Encode(const ByteString& contents,
-                  BC_TYPE format,
-                  int32_t& outWidth);
+  virtual uint8_t* Encode(const ByteString& contents, int32_t& outLength) = 0;
   bool RenderDeviceResult(CFX_RenderDevice* device,
                           const CFX_Matrix& matrix,
                           WideStringView contents);
   bool SetFont(CFX_Font* cFont);
 
  protected:
-  virtual uint8_t* EncodeWithHint(const ByteString& contents,
-                                  BC_TYPE format,
-                                  int32_t& outWidth,
-                                  int32_t hints);
-  virtual uint8_t* EncodeImpl(const ByteString& contents,
-                              int32_t& outLength) = 0;
   virtual bool ShowChars(WideStringView contents,
                          CFX_RenderDevice* device,
                          const CFX_Matrix& matrix,
diff --git a/fxbarcode/oned/BC_OnedCodaBarWriter.cpp b/fxbarcode/oned/BC_OnedCodaBarWriter.cpp
index 57c28be..e714742 100644
--- a/fxbarcode/oned/BC_OnedCodaBarWriter.cpp
+++ b/fxbarcode/oned/BC_OnedCodaBarWriter.cpp
@@ -120,18 +120,8 @@
   return filtercontents;
 }
 
-uint8_t* CBC_OnedCodaBarWriter::EncodeWithHint(const ByteString& contents,
-                                               BC_TYPE format,
-                                               int32_t& outWidth,
-                                               int32_t hints) {
-  if (format != BC_TYPE::kCodabar)
-    return nullptr;
-
-  return CBC_OneDimWriter::EncodeWithHint(contents, format, outWidth, hints);
-}
-
-uint8_t* CBC_OnedCodaBarWriter::EncodeImpl(const ByteString& contents,
-                                           int32_t& outLength) {
+uint8_t* CBC_OnedCodaBarWriter::Encode(const ByteString& contents,
+                                       int32_t& outLength) {
   ByteString data = m_chStart + contents + m_chEnd;
   m_iContentLen = data.GetLength();
   uint8_t* result = FX_Alloc2D(uint8_t, m_iWideNarrRatio * 7, data.GetLength());
diff --git a/fxbarcode/oned/BC_OnedCodaBarWriter.h b/fxbarcode/oned/BC_OnedCodaBarWriter.h
index a0ee62f..dbdc139 100644
--- a/fxbarcode/oned/BC_OnedCodaBarWriter.h
+++ b/fxbarcode/oned/BC_OnedCodaBarWriter.h
@@ -19,11 +19,7 @@
   ~CBC_OnedCodaBarWriter() override;
 
   // CBC_OneDimWriter:
-  uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
-  uint8_t* EncodeWithHint(const ByteString& contents,
-                          BC_TYPE format,
-                          int32_t& outWidth,
-                          int32_t hints) override;
+  uint8_t* Encode(const ByteString& contents, int32_t& outLength) override;
   bool RenderResult(WideStringView contents,
                     uint8_t* code,
                     int32_t codeLength) override;
diff --git a/fxbarcode/oned/BC_OnedCodaBarWriter_unittest.cpp b/fxbarcode/oned/BC_OnedCodaBarWriter_unittest.cpp
index eb1cad0..add28cf 100644
--- a/fxbarcode/oned/BC_OnedCodaBarWriter_unittest.cpp
+++ b/fxbarcode/oned/BC_OnedCodaBarWriter_unittest.cpp
@@ -22,7 +22,7 @@
   CBC_OnedCodaBarWriter writer;
   int32_t width;
 
-  uint8_t* encoded = writer.Encode("", BC_TYPE::kCodabar, width);
+  uint8_t* encoded = writer.Encode("", width);
   EXPECT_EQ(kModulesForDelimiters, width);
   const char* expected =
       "# ##  #  # "  // A Start
@@ -32,7 +32,7 @@
   }
   FX_Free(encoded);
 
-  encoded = writer.Encode("123", BC_TYPE::kCodabar, width);
+  encoded = writer.Encode("123", width);
   EXPECT_EQ(kModulesForDelimiters + 3 * kModulesPerNumber, width);
   expected =
       "# ##  #  # "  // A Start
@@ -45,7 +45,7 @@
   }
   FX_Free(encoded);
 
-  encoded = writer.Encode("-$./:+", BC_TYPE::kCodabar, width);
+  encoded = writer.Encode("-$./:+", width);
   EXPECT_EQ(kModulesForDelimiters + 2 * kModulesPerNumber +
                 4 * kModulesPerPunctuation,
             width);
@@ -63,7 +63,7 @@
   }
   FX_Free(encoded);
 
-  encoded = writer.Encode("456.987987987/001", BC_TYPE::kCodabar, width);
+  encoded = writer.Encode("456.987987987/001", width);
   EXPECT_EQ(kModulesForDelimiters + 15 * kModulesPerNumber +
                 2 * kModulesPerPunctuation,
             width);
@@ -126,7 +126,7 @@
   writer.SetStartChar('N');
   writer.SetEndChar('*');
 
-  uint8_t* encoded = writer.Encode("987", BC_TYPE::kCodabar, width);
+  uint8_t* encoded = writer.Encode("987", width);
   EXPECT_EQ(kModulesForDelimiters + 3 * kModulesPerNumber, width);
   const char* expected =
       "#  #  # ## "  // N (same as B) Start
diff --git a/fxbarcode/oned/BC_OnedCode128Writer.cpp b/fxbarcode/oned/BC_OnedCode128Writer.cpp
index 2fc3488..5c2a7b8 100644
--- a/fxbarcode/oned/BC_OnedCode128Writer.cpp
+++ b/fxbarcode/oned/BC_OnedCode128Writer.cpp
@@ -118,18 +118,8 @@
   m_locTextLoc = location;
 }
 
-uint8_t* CBC_OnedCode128Writer::EncodeWithHint(const ByteString& contents,
-                                               BC_TYPE format,
-                                               int32_t& outWidth,
-                                               int32_t hints) {
-  if (format != BC_TYPE::kCode128)
-    return nullptr;
-
-  return CBC_OneDimWriter::EncodeWithHint(contents, format, outWidth, hints);
-}
-
-uint8_t* CBC_OnedCode128Writer::EncodeImpl(const ByteString& contents,
-                                           int32_t& outLength) {
+uint8_t* CBC_OnedCode128Writer::Encode(const ByteString& contents,
+                                       int32_t& outLength) {
   if (contents.GetLength() < 1 || contents.GetLength() > 80)
     return nullptr;
 
diff --git a/fxbarcode/oned/BC_OnedCode128Writer.h b/fxbarcode/oned/BC_OnedCode128Writer.h
index 169a157..62e2ad6 100644
--- a/fxbarcode/oned/BC_OnedCode128Writer.h
+++ b/fxbarcode/oned/BC_OnedCode128Writer.h
@@ -27,11 +27,7 @@
                             std::vector<int32_t>* patterns);
 
   // CBC_OneDimWriter
-  uint8_t* EncodeWithHint(const ByteString& contents,
-                          BC_TYPE format,
-                          int32_t& outWidth,
-                          int32_t hints) override;
-  uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+  uint8_t* Encode(const ByteString& contents, int32_t& outLength) override;
   bool CheckContentValidity(WideStringView contents) override;
   WideString FilterContents(WideStringView contents) override;
   void SetTextLocation(BC_TEXT_LOC location) override;
diff --git a/fxbarcode/oned/BC_OnedCode39Writer.cpp b/fxbarcode/oned/BC_OnedCode39Writer.cpp
index 1b2fb24..836c492 100644
--- a/fxbarcode/oned/BC_OnedCode39Writer.cpp
+++ b/fxbarcode/oned/BC_OnedCode39Writer.cpp
@@ -119,16 +119,6 @@
   return true;
 }
 
-uint8_t* CBC_OnedCode39Writer::EncodeWithHint(const ByteString& contents,
-                                              BC_TYPE format,
-                                              int32_t& outWidth,
-                                              int32_t hints) {
-  if (format != BC_TYPE::kCode39)
-    return nullptr;
-
-  return CBC_OneDimWriter::EncodeWithHint(contents, format, outWidth, hints);
-}
-
 void CBC_OnedCode39Writer::ToIntArray(int16_t a, int8_t* toReturn) {
   for (int32_t i = 0; i < 9; i++) {
     toReturn[i] = (a & (1 << i)) == 0 ? 1 : m_iWideNarrRatio;
@@ -155,8 +145,8 @@
   return kOnedCode39Checksum[checksum % std::size(kOnedCode39Checksum)];
 }
 
-uint8_t* CBC_OnedCode39Writer::EncodeImpl(const ByteString& contents,
-                                          int32_t& outlength) {
+uint8_t* CBC_OnedCode39Writer::Encode(const ByteString& contents,
+                                      int32_t& outlength) {
   char checksum = CalcCheckSum(contents);
   if (checksum == '*')
     return nullptr;
diff --git a/fxbarcode/oned/BC_OnedCode39Writer.h b/fxbarcode/oned/BC_OnedCode39Writer.h
index c44f2dd..e6ea93d 100644
--- a/fxbarcode/oned/BC_OnedCode39Writer.h
+++ b/fxbarcode/oned/BC_OnedCode39Writer.h
@@ -16,11 +16,7 @@
   ~CBC_OnedCode39Writer() override;
 
   // CBC_OneDimWriter
-  uint8_t* EncodeWithHint(const ByteString& contents,
-                          BC_TYPE format,
-                          int32_t& outWidth,
-                          int32_t hints) override;
-  uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+  uint8_t* Encode(const ByteString& contents, int32_t& outLength) override;
   bool RenderResult(WideStringView contents,
                     uint8_t* code,
                     int32_t codeLength) override;
diff --git a/fxbarcode/oned/BC_OnedCode39Writer_unittest.cpp b/fxbarcode/oned/BC_OnedCode39Writer_unittest.cpp
index 44c3e62..6f1efbb 100644
--- a/fxbarcode/oned/BC_OnedCode39Writer_unittest.cpp
+++ b/fxbarcode/oned/BC_OnedCode39Writer_unittest.cpp
@@ -40,7 +40,7 @@
   uint8_t* encoded;
   const char* expected;
 
-  encoded = writer.Encode("PDFIUM", BC_TYPE::kCode39, width);
+  encoded = writer.Encode("PDFIUM", width);
   expected =
       "#   # ### ### # "  // * Start
       "# ### ### #   # "  // P
@@ -56,7 +56,7 @@
 
   writer.SetWideNarrowRatio(2);
 
-  encoded = writer.Encode("PDFIUM", BC_TYPE::kCode39, width);
+  encoded = writer.Encode("PDFIUM", width);
   expected =
       "#  # ## ## # "  // * Start
       "# ## ## #  # "  // P
@@ -77,7 +77,7 @@
   uint8_t* encoded;
   const char* expected;
 
-  encoded = writer.Encode("", BC_TYPE::kCode39, width);
+  encoded = writer.Encode("", width);
   EXPECT_EQ((0 + DELIMITER_CHARS) * MODULES_PER_CHAR - 1, width);
   expected =
       "#   # ### ### # "  // * Start
@@ -86,7 +86,7 @@
     EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i;
   FX_Free(encoded);
 
-  encoded = writer.Encode("123", BC_TYPE::kCode39, width);
+  encoded = writer.Encode("123", width);
   EXPECT_EQ((3 + DELIMITER_CHARS) * MODULES_PER_CHAR - 1, width);
   expected =
       "#   # ### ### # "  // * Start
@@ -98,7 +98,7 @@
     EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i;
   FX_Free(encoded);
 
-  encoded = writer.Encode("PDFIUM", BC_TYPE::kCode39, width);
+  encoded = writer.Encode("PDFIUM", width);
   EXPECT_EQ((6 + DELIMITER_CHARS) * MODULES_PER_CHAR - 1, width);
   expected =
       "#   # ### ### # "  // * Start
@@ -113,7 +113,7 @@
     EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i;
   FX_Free(encoded);
 
-  encoded = writer.Encode("A -$%./+Z", BC_TYPE::kCode39, width);
+  encoded = writer.Encode("A -$%./+Z", width);
   EXPECT_EQ((9 + DELIMITER_CHARS) * MODULES_PER_CHAR - 1, width);
   expected =
       "#   # ### ### # "  // * Start
@@ -140,7 +140,7 @@
 
   writer.SetCalcChecksum(true);
 
-  encoded = writer.Encode("123", BC_TYPE::kCode39, width);
+  encoded = writer.Encode("123", width);
   EXPECT_EQ((3 + CHECKSUM_CHARS + DELIMITER_CHARS) * MODULES_PER_CHAR - 1,
             width);
   expected =
@@ -154,7 +154,7 @@
     EXPECT_EQ(expected[i] != ' ', !!encoded[i]) << i;
   FX_Free(encoded);
 
-  encoded = writer.Encode("PDFIUM", BC_TYPE::kCode39, width);
+  encoded = writer.Encode("PDFIUM", width);
   EXPECT_EQ((6 + CHECKSUM_CHARS + DELIMITER_CHARS) * MODULES_PER_CHAR - 1,
             width);
   expected =
diff --git a/fxbarcode/oned/BC_OnedEAN13Writer.cpp b/fxbarcode/oned/BC_OnedEAN13Writer.cpp
index 0834941..02aab8c 100644
--- a/fxbarcode/oned/BC_OnedEAN13Writer.cpp
+++ b/fxbarcode/oned/BC_OnedEAN13Writer.cpp
@@ -85,18 +85,8 @@
   return EANCalcChecksum(contents);
 }
 
-uint8_t* CBC_OnedEAN13Writer::EncodeWithHint(const ByteString& contents,
-                                             BC_TYPE format,
-                                             int32_t& outWidth,
-                                             int32_t hints) {
-  if (format != BC_TYPE::kEAN13)
-    return nullptr;
-
-  return CBC_OneDimWriter::EncodeWithHint(contents, format, outWidth, hints);
-}
-
-uint8_t* CBC_OnedEAN13Writer::EncodeImpl(const ByteString& contents,
-                                         int32_t& outLength) {
+uint8_t* CBC_OnedEAN13Writer::Encode(const ByteString& contents,
+                                     int32_t& outLength) {
   if (contents.GetLength() != 13)
     return nullptr;
 
diff --git a/fxbarcode/oned/BC_OnedEAN13Writer.h b/fxbarcode/oned/BC_OnedEAN13Writer.h
index 0a9f2ce..c2d701d 100644
--- a/fxbarcode/oned/BC_OnedEAN13Writer.h
+++ b/fxbarcode/oned/BC_OnedEAN13Writer.h
@@ -21,11 +21,7 @@
   ~CBC_OnedEAN13Writer() override;
 
   // CBC_OneDimEANWriter:
-  uint8_t* EncodeWithHint(const ByteString& contents,
-                          BC_TYPE format,
-                          int32_t& outWidth,
-                          int32_t hints) override;
-  uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+  uint8_t* Encode(const ByteString& contents, int32_t& outLength) override;
   bool CheckContentValidity(WideStringView contents) override;
   WideString FilterContents(WideStringView contents) override;
   int32_t CalcChecksum(const ByteString& contents) override;
diff --git a/fxbarcode/oned/BC_OnedEAN13Writer_unittest.cpp b/fxbarcode/oned/BC_OnedEAN13Writer_unittest.cpp
index d7f1425..d0bb4b6 100644
--- a/fxbarcode/oned/BC_OnedEAN13Writer_unittest.cpp
+++ b/fxbarcode/oned/BC_OnedEAN13Writer_unittest.cpp
@@ -18,23 +18,23 @@
 
   // EAN-13 barcodes encode 13-digit numbers into 95 modules in a unidimensional
   // disposition.
-  encoded = writer.Encode("", BC_TYPE::kEAN13, width);
+  encoded = writer.Encode("", width);
   EXPECT_FALSE(encoded);
   FX_Free(encoded);
 
-  encoded = writer.Encode("123", BC_TYPE::kEAN13, width);
+  encoded = writer.Encode("123", width);
   EXPECT_FALSE(encoded);
   FX_Free(encoded);
 
-  encoded = writer.Encode("123456789012", BC_TYPE::kEAN13, width);
+  encoded = writer.Encode("123456789012", width);
   EXPECT_FALSE(encoded);
   FX_Free(encoded);
 
-  encoded = writer.Encode("12345678901234", BC_TYPE::kEAN13, width);
+  encoded = writer.Encode("12345678901234", width);
   EXPECT_FALSE(encoded);
   FX_Free(encoded);
 
-  encoded = writer.Encode("1234567890128", BC_TYPE::kEAN13, width);
+  encoded = writer.Encode("1234567890128", width);
   EXPECT_TRUE(encoded);
   EXPECT_EQ(95, width);
 
@@ -60,7 +60,7 @@
   }
   FX_Free(encoded);
 
-  encoded = writer.Encode("7776665554440", BC_TYPE::kEAN13, width);
+  encoded = writer.Encode("7776665554440", width);
   EXPECT_TRUE(encoded);
   EXPECT_EQ(95, width);
 
diff --git a/fxbarcode/oned/BC_OnedEAN8Writer.cpp b/fxbarcode/oned/BC_OnedEAN8Writer.cpp
index 91d0420..a542fdf 100644
--- a/fxbarcode/oned/BC_OnedEAN8Writer.cpp
+++ b/fxbarcode/oned/BC_OnedEAN8Writer.cpp
@@ -88,18 +88,8 @@
   return EANCalcChecksum(contents);
 }
 
-uint8_t* CBC_OnedEAN8Writer::EncodeWithHint(const ByteString& contents,
-                                            BC_TYPE format,
-                                            int32_t& outWidth,
-                                            int32_t hints) {
-  if (format != BC_TYPE::kEAN8)
-    return nullptr;
-
-  return CBC_OneDimWriter::EncodeWithHint(contents, format, outWidth, hints);
-}
-
-uint8_t* CBC_OnedEAN8Writer::EncodeImpl(const ByteString& contents,
-                                        int32_t& outLength) {
+uint8_t* CBC_OnedEAN8Writer::Encode(const ByteString& contents,
+                                    int32_t& outLength) {
   if (contents.GetLength() != 8)
     return nullptr;
 
diff --git a/fxbarcode/oned/BC_OnedEAN8Writer.h b/fxbarcode/oned/BC_OnedEAN8Writer.h
index 9c3d751..f8a42d9 100644
--- a/fxbarcode/oned/BC_OnedEAN8Writer.h
+++ b/fxbarcode/oned/BC_OnedEAN8Writer.h
@@ -22,11 +22,7 @@
   ~CBC_OnedEAN8Writer() override;
 
   // CBC_OneDimEANWriter:
-  uint8_t* EncodeWithHint(const ByteString& contents,
-                          BC_TYPE format,
-                          int32_t& outWidth,
-                          int32_t hints) override;
-  uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+  uint8_t* Encode(const ByteString& contents, int32_t& outLength) override;
   bool CheckContentValidity(WideStringView contents) override;
   WideString FilterContents(WideStringView contents) override;
   void SetDataLength(int32_t length) override;
diff --git a/fxbarcode/oned/BC_OnedEAN8Writer_unittest.cpp b/fxbarcode/oned/BC_OnedEAN8Writer_unittest.cpp
index 18bc605..513c666 100644
--- a/fxbarcode/oned/BC_OnedEAN8Writer_unittest.cpp
+++ b/fxbarcode/oned/BC_OnedEAN8Writer_unittest.cpp
@@ -18,23 +18,23 @@
 
   // EAN-8 barcodes encode 8-digit numbers into 67 modules in a unidimensional
   // disposition.
-  encoded = writer.Encode("", BC_TYPE::kEAN8, width);
+  encoded = writer.Encode("", width);
   EXPECT_FALSE(encoded);
   FX_Free(encoded);
 
-  encoded = writer.Encode("123", BC_TYPE::kEAN8, width);
+  encoded = writer.Encode("123", width);
   EXPECT_FALSE(encoded);
   FX_Free(encoded);
 
-  encoded = writer.Encode("1234567", BC_TYPE::kEAN8, width);
+  encoded = writer.Encode("1234567", width);
   EXPECT_FALSE(encoded);
   FX_Free(encoded);
 
-  encoded = writer.Encode("123456789", BC_TYPE::kEAN8, width);
+  encoded = writer.Encode("123456789", width);
   EXPECT_FALSE(encoded);
   FX_Free(encoded);
 
-  encoded = writer.Encode("12345670", BC_TYPE::kEAN8, width);
+  encoded = writer.Encode("12345670", width);
   EXPECT_TRUE(encoded);
   EXPECT_EQ(67, width);
 
@@ -55,7 +55,7 @@
   }
   FX_Free(encoded);
 
-  encoded = writer.Encode("99441104", BC_TYPE::kEAN8, width);
+  encoded = writer.Encode("99441104", width);
   EXPECT_TRUE(encoded);
   EXPECT_EQ(67, width);
 
diff --git a/fxbarcode/oned/BC_OnedUPCAWriter.cpp b/fxbarcode/oned/BC_OnedUPCAWriter.cpp
index bff5db1..00cb37c 100644
--- a/fxbarcode/oned/BC_OnedUPCAWriter.cpp
+++ b/fxbarcode/oned/BC_OnedUPCAWriter.cpp
@@ -84,22 +84,11 @@
   return checksum;
 }
 
-uint8_t* CBC_OnedUPCAWriter::EncodeWithHint(const ByteString& contents,
-                                            BC_TYPE format,
-                                            int32_t& outWidth,
-                                            int32_t hints) {
-  if (format != BC_TYPE::kUPCA)
-    return nullptr;
-
+uint8_t* CBC_OnedUPCAWriter::Encode(const ByteString& contents,
+                                    int32_t& outLength) {
   ByteString toEAN13String = '0' + contents;
   m_iDataLenth = 13;
-  return m_subWriter->EncodeWithHint(toEAN13String, BC_TYPE::kEAN13, outWidth,
-                                     hints);
-}
-
-uint8_t* CBC_OnedUPCAWriter::EncodeImpl(const ByteString& contents,
-                                        int32_t& outLength) {
-  return nullptr;
+  return m_subWriter->Encode(toEAN13String, outLength);
 }
 
 bool CBC_OnedUPCAWriter::ShowChars(WideStringView contents,
diff --git a/fxbarcode/oned/BC_OnedUPCAWriter.h b/fxbarcode/oned/BC_OnedUPCAWriter.h
index aad574d..e9ed964 100644
--- a/fxbarcode/oned/BC_OnedUPCAWriter.h
+++ b/fxbarcode/oned/BC_OnedUPCAWriter.h
@@ -23,11 +23,7 @@
   ~CBC_OnedUPCAWriter() override;
 
   // CBC_OneDimEANWriter:
-  uint8_t* EncodeWithHint(const ByteString& contents,
-                          BC_TYPE format,
-                          int32_t& outWidth,
-                          int32_t hints) override;
-  uint8_t* EncodeImpl(const ByteString& contents, int32_t& outLength) override;
+  uint8_t* Encode(const ByteString& contents, int32_t& outLength) override;
   bool CheckContentValidity(WideStringView contents) override;
   WideString FilterContents(WideStringView contents) override;
   void InitEANWriter() override;
diff --git a/fxbarcode/oned/BC_OnedUPCAWriter_unittest.cpp b/fxbarcode/oned/BC_OnedUPCAWriter_unittest.cpp
index 0088a69..19330b5 100644
--- a/fxbarcode/oned/BC_OnedUPCAWriter_unittest.cpp
+++ b/fxbarcode/oned/BC_OnedUPCAWriter_unittest.cpp
@@ -16,23 +16,23 @@
 
   // UPCA barcodes encode 12-digit numbers into 95 modules in a unidimensional
   // disposition.
-  uint8_t* encoded = writer.Encode("", BC_TYPE::kUPCA, width);
+  uint8_t* encoded = writer.Encode("", width);
   EXPECT_FALSE(encoded);
   FX_Free(encoded);
 
-  encoded = writer.Encode("123", BC_TYPE::kUPCA, width);
+  encoded = writer.Encode("123", width);
   EXPECT_FALSE(encoded);
   FX_Free(encoded);
 
-  encoded = writer.Encode("12345678901", BC_TYPE::kUPCA, width);
+  encoded = writer.Encode("12345678901", width);
   EXPECT_FALSE(encoded);
   FX_Free(encoded);
 
-  encoded = writer.Encode("1234567890123", BC_TYPE::kUPCA, width);
+  encoded = writer.Encode("1234567890123", width);
   EXPECT_FALSE(encoded);
   FX_Free(encoded);
 
-  encoded = writer.Encode("123456789012", BC_TYPE::kUPCA, width);
+  encoded = writer.Encode("123456789012", width);
   const char* expected =
       "# #"      // Start
       "  ##  #"  // 1 L
@@ -56,7 +56,7 @@
   }
   FX_Free(encoded);
 
-  encoded = writer.Encode("777666555440", BC_TYPE::kUPCA, width);
+  encoded = writer.Encode("777666555440", width);
   expected =
       "# #"      // Start
       " ### ##"  // 7 L