passing encode 1

This commit is contained in:
Henry Schimke
2022-09-25 20:11:59 -05:00
parent b50fa1e015
commit 2754ee4e58
2 changed files with 35 additions and 17 deletions

View File

@@ -105,7 +105,7 @@ X X X X X X X X X X
X X X X X X X X X X X X X X X X X X X X X X X X
X X X X X X
X X X X X X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X X X X X X
" ); " );
} }
@@ -710,11 +710,15 @@ fn testWriter(
let writer = AztecWriter {}; let writer = AztecWriter {};
let mut matrix = AztecWriter::encode_with_hints(data, &BarcodeFormat::AZTEC, 0, 0, &hints) let mut matrix = AztecWriter::encode_with_hints(data, &BarcodeFormat::AZTEC, 0, 0, &hints)
.expect("encoder created"); .expect("encoder created");
let cset = match charset {
Some(cs) => cs,
None => encoding::all::ISO_8859_1,
};
let aztec = encoder::encode_with_charset( let aztec = encoder::encode_with_charset(
data, data,
eccPercent, eccPercent,
encoder::DEFAULT_AZTEC_LAYERS, encoder::DEFAULT_AZTEC_LAYERS,
charset.unwrap(), cset,
) )
.expect("encode should encode"); .expect("encode should encode");
assert_eq!( assert_eq!(
@@ -740,12 +744,12 @@ fn testWriter(
for _i in 0..ecWords { for _i in 0..ecWords {
// for (int i = 0; i < ecWords; i++) { // for (int i = 0; i < ecWords; i++) {
// don't touch the core // don't touch the core
let x = if random.gen_bool(50.0) { let x = if random.gen_bool(0.50) {
random.gen_range(0..=aztec.getLayers() * 2) random.gen_range(0..=aztec.getLayers() * 2)
} else { } else {
matrix.getWidth() - 1 - random.gen_range(0..=aztec.getLayers() * 2) matrix.getWidth() - 1 - random.gen_range(0..=aztec.getLayers() * 2)
}; };
let y = if random.gen_bool(50.0) { let y = if random.gen_bool(0.50) {
random.gen_range(0..=aztec.getLayers() * 2) random.gen_range(0..=aztec.getLayers() * 2)
} else { } else {
matrix.getHeight() - 1 - random.gen_range(0..=aztec.getLayers() * 2) matrix.getHeight() - 1 - random.gen_range(0..=aztec.getLayers() * 2)

View File

@@ -382,12 +382,20 @@ fn drawBullsEye(matrix: &mut BitMatrix, center: u32, size: u32) {
pub fn generateModeMessage(compact: bool, layers: u32, messageSizeInWords: u32) -> BitArray { pub fn generateModeMessage(compact: bool, layers: u32, messageSizeInWords: u32) -> BitArray {
let mut mode_message = BitArray::new(); let mut mode_message = BitArray::new();
if compact { if compact {
mode_message.appendBits(layers - 1, 2).expect("should append"); mode_message
mode_message.appendBits(messageSizeInWords - 1, 6).expect("should append"); .appendBits(layers - 1, 2)
.expect("should append");
mode_message
.appendBits(messageSizeInWords - 1, 6)
.expect("should append");
mode_message = generateCheckWords(&mode_message, 28, 4); mode_message = generateCheckWords(&mode_message, 28, 4);
} else { } else {
mode_message.appendBits(layers - 1, 5).expect("should append"); mode_message
mode_message.appendBits(messageSizeInWords - 1, 11).expect("should append"); .appendBits(layers - 1, 5)
.expect("should append");
mode_message
.appendBits(messageSizeInWords - 1, 11)
.expect("should append");
mode_message = generateCheckWords(&mode_message, 40, 4); mode_message = generateCheckWords(&mode_message, 40, 4);
} }
return mode_message; return mode_message;
@@ -438,22 +446,26 @@ fn generateCheckWords(bitArray: &BitArray, totalBits: usize, wordSize: usize) ->
let mut rs = ReedSolomonEncoder::new(getGF(wordSize).expect("Should never have bad value")); let mut rs = ReedSolomonEncoder::new(getGF(wordSize).expect("Should never have bad value"));
let total_words = totalBits / wordSize; let total_words = totalBits / wordSize;
let mut message_words = bitsToWords(bitArray, wordSize, total_words); let mut message_words = bitsToWords(bitArray, wordSize, total_words);
rs.encode(&mut message_words, total_words - message_size_in_words).expect("must encode ok"); rs.encode(&mut message_words, total_words - message_size_in_words)
.expect("must encode ok");
let start_pad = totalBits % wordSize; let start_pad = totalBits % wordSize;
let mut message_bits = BitArray::new(); let mut message_bits = BitArray::new();
message_bits.appendBits(0, start_pad).expect("must append"); message_bits.appendBits(0, start_pad).expect("must append");
for message_word in message_words { for message_word in message_words {
// for (int messageWord : messageWords) { // for (int messageWord : messageWords) {
message_bits.appendBits(message_word as u32, wordSize).expect("must append"); message_bits
.appendBits(message_word as u32, wordSize)
.expect("must append");
} }
dbg!(message_bits.to_string()); // dbg!(message_bits.to_string());
return message_bits; return message_bits;
} }
fn bitsToWords(stuffedBits: &BitArray, wordSize: usize, totalWords: usize) -> Vec<i32> { fn bitsToWords(stuffedBits: &BitArray, wordSize: usize, totalWords: usize) -> Vec<i32> {
let mut message = vec![0i32; totalWords]; let mut message = vec![0i32; totalWords];
let mut i = 0;
for i in 0..(stuffedBits.getSize() / wordSize) { let n = stuffedBits.getSize() / wordSize;
while i < n {
// for (i = 0, n = stuffedBits.getSize() / wordSize; i < n; i++) { // for (i = 0, n = stuffedBits.getSize() / wordSize; i < n; i++) {
let mut value = 0; let mut value = 0;
for j in 0..wordSize { for j in 0..wordSize {
@@ -465,6 +477,8 @@ fn bitsToWords(stuffedBits: &BitArray, wordSize: usize, totalWords: usize) -> Ve
}; };
} }
message[i] = value; message[i] = value;
i += 1;
} }
return message; return message;
} }