micro_pdf417/
micro_pdf417.rs

1use pdf417::*;
2
3const WHITE: &str = "\x1B[38;2;255;255;255m█";
4const BLACK: &str = "\x1B[38;2;0;0;0m█";
5
6const PADDING: usize = 4;
7const COLS: u8 = 4;
8const ROWS: u8 = 4;
9const V: Option<u8> = get_variant(ROWS, COLS);
10
11const W: usize = m_pdf417_width!(COLS);
12const H: usize = m_pdf417_height!(ROWS);
13
14fn main() {
15    let variant = V.unwrap();
16    let mut input = [0u16; (COLS*ROWS) as usize];
17    PDF417Encoder::new(&mut input, true).append_num(12345678)
18        .seal(variant);
19
20    let mut storage = [false; W * H];
21    let pdf417 = MicroPDF417::new(&input, variant);
22    pdf417.render(&mut storage[..]);
23
24    let mut col = 0;
25    for _ in 0..((PADDING+1)/2) {
26        println!("{}", str::repeat(WHITE, W + PADDING * 2));
27    }
28    print!("{}", str::repeat(WHITE, PADDING));
29    for on in storage {
30        print!("{}", if on { BLACK } else { WHITE });
31        col += 1;
32        if col == W {
33            col = 0;
34            print!("{b}\n{b}", b = str::repeat(WHITE, PADDING));
35        }
36    }
37    println!("{}", str::repeat(WHITE, W + PADDING));
38    for _ in 0..((PADDING-1)/2) {
39        println!("{}", str::repeat(WHITE, W + PADDING * 2));
40    }
41    println!("\x1B[0m");
42}