diff --git a/src/pdf417/encoder/barcode_matrix.rs b/src/pdf417/encoder/barcode_matrix.rs index 5d9db4c..28e4d36 100644 --- a/src/pdf417/encoder/barcode_matrix.rs +++ b/src/pdf417/encoder/barcode_matrix.rs @@ -31,13 +31,18 @@ impl BarcodeMatrix { /** * @param height the height of the matrix (Rows) * @param width the width of the matrix (Cols) + * @param compact if true, enables compaction */ - pub fn new(height: usize, width: usize) -> Self { + pub fn new(height: usize, width: usize, compact: bool) -> Self { //Initializes the array to the correct width let mut matrix = Vec::with_capacity(height); for _i in 0..height { - matrix.push(BarcodeRow::new((width + 4) * 17 + 1)); + if !compact { + matrix.push(BarcodeRow::new((width + 4) * 17 + 1)); + } else { + matrix.push(BarcodeRow::new((width + 2) * 17 + 1)); + } } Self { matrix, diff --git a/src/pdf417/encoder/pdf_417.rs b/src/pdf417/encoder/pdf_417.rs index 184d6b5..0a06e3d 100644 --- a/src/pdf417/encoder/pdf_417.rs +++ b/src/pdf417/encoder/pdf_417.rs @@ -243,7 +243,7 @@ impl PDF417 { )?; //4. step: low-level encoding - let mut barcode_matrix = BarcodeMatrix::new(rows as usize, cols as usize); + let mut barcode_matrix = BarcodeMatrix::new(rows as usize, cols as usize, self.compact); self.encodeLowLevel( &format!("{dataCodewords}{ec}"), cols, diff --git a/src/pdf417/pdf_417_writer.rs b/src/pdf417/pdf_417_writer.rs index 774abd2..4f27f4e 100644 --- a/src/pdf417/pdf_417_writer.rs +++ b/src/pdf417/pdf_417_writer.rs @@ -213,7 +213,7 @@ impl PDF417Writer { * Takes and rotates the it 90 degrees */ fn rotateArray(bitarray: &Vec>) -> Vec> { - let mut temp = vec![vec![0; bitarray[0].len()]; bitarray.len()]; + let mut temp = vec![vec![0; bitarray.len()]; bitarray[0].len()]; for ii in 0..bitarray.len() { // This makes the direction consistent on screen when rotating the screen;