Tightened some Rust variable scopes, simplified a bit of code.

pull/76/head
Project Nayuki 6 years ago
parent 6007d92aaa
commit 765527895c

@ -440,14 +440,15 @@ impl QrCode {
// based on the given mask and this object's error correction level field. // based on the given mask and this object's error correction level field.
fn draw_format_bits(&mut self, mask: Mask) { fn draw_format_bits(&mut self, mask: Mask) {
// Calculate error correction code and pack bits // Calculate error correction code and pack bits
let size: i32 = self.size; let bits: u32 = {
// errcorrlvl is uint2, mask is uint3 // errcorrlvl is uint2, mask is uint3
let data: u32 = self.errorcorrectionlevel.format_bits() << 3 | u32::from(mask.value()); let data: u32 = self.errorcorrectionlevel.format_bits() << 3 | u32::from(mask.value());
let mut rem: u32 = data; let mut rem: u32 = data;
for _ in 0 .. 10 { for _ in 0 .. 10 {
rem = (rem << 1) ^ ((rem >> 9) * 0x537); rem = (rem << 1) ^ ((rem >> 9) * 0x537);
} }
let bits: u32 = (data << 10 | rem) ^ 0x5412; // uint15 (data << 10 | rem) ^ 0x5412 // uint15
};
assert_eq!(bits >> 15, 0, "Assertion error"); assert_eq!(bits >> 15, 0, "Assertion error");
// Draw first copy // Draw first copy
@ -462,6 +463,7 @@ impl QrCode {
} }
// Draw second copy // Draw second copy
let size: i32 = self.size;
for i in 0 .. 8 { for i in 0 .. 8 {
self.set_function_module(size - 1 - i, 8, get_bit(bits, i)); self.set_function_module(size - 1 - i, 8, get_bit(bits, i));
} }
@ -480,11 +482,14 @@ impl QrCode {
} }
// Calculate error correction code and pack bits // Calculate error correction code and pack bits
let mut rem: u32 = u32::from(self.version.value()); // version is uint6, in the range [7, 40] let bits: u32 = {
for _ in 0 .. 12 { let data = u32::from(self.version.value()); // uint6, in the range [7, 40]
rem = (rem << 1) ^ ((rem >> 11) * 0x1F25); let mut rem: u32 = data;
} for _ in 0 .. 12 {
let bits: u32 = u32::from(self.version.value()) << 12 | rem; // uint18 rem = (rem << 1) ^ ((rem >> 11) * 0x1F25);
}
data << 12 | rem // uint18
};
assert!(bits >> 18 == 0, "Assertion error"); assert!(bits >> 18 == 0, "Assertion error");
// Draw two copies // Draw two copies

Loading…
Cancel
Save