From 0a4445ad1c3d76f8eb1b6b3e443a9a731430c237 Mon Sep 17 00:00:00 2001 From: Henrique Nakashima Date: Thu, 16 Aug 2018 20:15:41 +0000 Subject: Allow PDF417 barcodes to reduce modules by shaving off padding. The way it was working before is: Look at the width and height provided for the barcode. If the maximum number of codewords to fit in that space was within the spec limits (1 <= cols <= 30 and 3 <= rows <= 90), cram as many codewords as possible. The unused space was filled with padding. With this CL, instead look at the amount of content that needs to fit into the barcode and favor fewer codewords rather than as many as possible. Bug: pdfium:1135 Change-Id: Ia96be82ec7c5f4f920cff58def1a44000bf04761 Reviewed-on: https://pdfium-review.googlesource.com/40350 Reviewed-by: Ryan Harrison Commit-Queue: Henrique Nakashima --- fxbarcode/pdf417/BC_PDF417Writer.cpp | 2 +- xfa/fwl/cfx_barcode_unittest.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fxbarcode/pdf417/BC_PDF417Writer.cpp b/fxbarcode/pdf417/BC_PDF417Writer.cpp index 026c89a59d..ca96f69926 100644 --- a/fxbarcode/pdf417/BC_PDF417Writer.cpp +++ b/fxbarcode/pdf417/BC_PDF417Writer.cpp @@ -55,7 +55,7 @@ uint8_t* CBC_PDF417Writer::Encode(const WideString& contents, int32_t col = (m_Width / m_ModuleWidth - 69) / 17; int32_t row = m_Height / (m_ModuleWidth * 20); if (row >= 3 && row <= 90 && col >= 1 && col <= 30) - encoder.setDimensions(col, col, row, row); + encoder.setDimensions(col, 1, row, 3); else if (col >= 1 && col <= 30) encoder.setDimensions(col, col, 90, 3); else if (row >= 3 && row <= 90) diff --git a/xfa/fwl/cfx_barcode_unittest.cpp b/xfa/fwl/cfx_barcode_unittest.cpp index 0fa2352175..1113f39475 100644 --- a/xfa/fwl/cfx_barcode_unittest.cpp +++ b/xfa/fwl/cfx_barcode_unittest.cpp @@ -131,7 +131,7 @@ TEST_F(BarcodeTest, Pdf417) { EXPECT_TRUE(Create(BC_PDF417)); EXPECT_TRUE(barcode()->Encode(L"clams")); RenderDevice(); - EXPECT_EQ("3a154001167ff0b8511b72677dd4c5a4", BitmapChecksum()); + EXPECT_EQ("fdd7d7ad325551927d9207a725b3832b", BitmapChecksum()); } TEST_F(BarcodeTest, DataMatrix) { -- cgit v1.2.3