///|
pub fn code128_pattern(symbol : Int) -> String {
match symbol {
0 => "11011001100"
1 => "11001101100"
2 => "11001100110"
3 => "10010011000"
4 => "10010001100"
5 => "10001001100"
6 => "10011001000"
7 => "10011000100"
8 => "10001100100"
9 => "11001001000"
10 => "11001000100"
11 => "11000100100"
12 => "10110011100"
13 => "10011011100"
14 => "10011001110"
15 => "10111001100"
16 => "10011101100"
17 => "10011100110"
18 => "11001110010"
19 => "11001011100"
20 => "11001001110"
21 => "11011100100"
22 => "11001110100"
23 => "11101101110"
24 => "11101001100"
25 => "11100101100"
26 => "11100100110"
27 => "11101100100"
28 => "11100110100"
29 => "11100110010"
30 => "11011011000"
31 => "11011000110"
32 => "11000110110"
33 => "10100011000"
34 => "10001011000"
35 => "10001000110"
36 => "10110001000"
37 => "10001101000"
38 => "10001100010"
39 => "11010001000"
40 => "11000101000"
41 => "11000100010"
42 => "10110111000"
43 => "10110001110"
44 => "10001101110"
45 => "10111011000"
46 => "10111000110"
47 => "10001110110"
48 => "11101110110"
49 => "11010001110"
50 => "11000101110"
51 => "11011101000"
52 => "11011100010"
53 => "11011101110"
54 => "11101011000"
55 => "11101000110"
56 => "11100010110"
57 => "11101101000"
58 => "11101100010"
59 => "11100011010"
60 => "11101111010"
61 => "11001000010"
62 => "11110001010"
63 => "10100110000"
64 => "10100001100"
65 => "10010110000"
66 => "10010000110"
67 => "10000101100"
68 => "10000100110"
69 => "10110010000"
70 => "10110000100"
71 => "10011010000"
72 => "10011000010"
73 => "10000110100"
74 => "10000110010"
75 => "11000010010"
76 => "11001010000"
77 => "11110111010"
78 => "11000010100"
79 => "10001111010"
80 => "10100111100"
81 => "10010111100"
82 => "10010011110"
83 => "10111100100"
84 => "10011110100"
85 => "10011110010"
86 => "11110100100"
87 => "11110010100"
88 => "11110010010"
89 => "11011011110"
90 => "11011110110"
91 => "11110110110"
92 => "10101111000"
93 => "10100011110"
94 => "10001011110"
95 => "10111101000"
96 => "10111100010"
97 => "11110101000"
98 => "11110100010"
99 => "10111011110"
100 => "10111101110"
101 => "11101011110"
102 => "11110101110"
103 => "11010000100"
104 => "11010010000"
105 => "11010011100"
106 => "1100011101011"
_ => ""
}
}
///|
pub fn code128_is_bar(symbol : Int, unit : Int) -> Bool {
let pattern = code128_pattern(symbol)
unit >= 0 && unit < pattern.length() && pattern.get_char(unit) == Some('1')
}
///|
pub fn code128_width(symbol : Int) -> Int {
code128_pattern(symbol).length()
}
///|
pub fn code128_symbol_patterns() -> Array[String] {
[
"11011001100", "11001101100", "11001100110", "10010011000", "10010001100", "10001001100",
"10011001000", "10011000100", "10001100100", "11001001000", "11001000100", "11000100100",
"10110011100", "10011011100", "10011001110", "10111001100", "10011101100", "10011100110",
"11001110010", "11001011100", "11001001110", "11011100100", "11001110100", "11101101110",
"11101001100", "11100101100", "11100100110", "11101100100", "11100110100", "11100110010",
"11011011000", "11011000110", "11000110110", "10100011000", "10001011000", "10001000110",
"10110001000", "10001101000", "10001100010", "11010001000", "11000101000", "11000100010",
"10110111000", "10110001110", "10001101110", "10111011000", "10111000110", "10001110110",
"11101110110", "11010001110", "11000101110", "11011101000", "11011100010", "11011101110",
"11101011000", "11101000110", "11100010110", "11101101000", "11101100010", "11100011010",
"11101111010", "11001000010", "11110001010", "10100110000", "10100001100", "10010110000",
"10010000110", "10000101100", "10000100110", "10110010000", "10110000100", "10011010000",
"10011000010", "10000110100", "10000110010", "11000010010", "11001010000", "11110111010",
"11000010100", "10001111010", "10100111100", "10010111100", "10010011110", "10111100100",
"10011110100", "10011110010", "11110100100", "11110010100", "11110010010", "11011011110",
"11011110110", "11110110110", "10101111000", "10100011110", "10001011110", "10111101000",
"10111100010", "11110101000", "11110100010", "10111011110", "10111101110", "11101011110",
"11110101110", "11010000100", "11010010000", "11010011100", "1100011101011",
]
}