1 /*
2 * Copyright 2016 Nu-book Inc.
3 * Copyright 2016 ZXing authors
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 
18 #include "ODCode128Patterns.h"
19 
20 namespace ZXing::OneD::Code128 {
21 
22 const std::array<std::array<int, 6>, 107> CODE_PATTERNS = { {
23 	{ 2, 1, 2, 2, 2, 2 }, // 0
24 	{ 2, 2, 2, 1, 2, 2 },
25 	{ 2, 2, 2, 2, 2, 1 },
26 	{ 1, 2, 1, 2, 2, 3 },
27 	{ 1, 2, 1, 3, 2, 2 },
28 	{ 1, 3, 1, 2, 2, 2 }, // 5
29 	{ 1, 2, 2, 2, 1, 3 },
30 	{ 1, 2, 2, 3, 1, 2 },
31 	{ 1, 3, 2, 2, 1, 2 },
32 	{ 2, 2, 1, 2, 1, 3 },
33 	{ 2, 2, 1, 3, 1, 2 }, // 10
34 	{ 2, 3, 1, 2, 1, 2 },
35 	{ 1, 1, 2, 2, 3, 2 },
36 	{ 1, 2, 2, 1, 3, 2 },
37 	{ 1, 2, 2, 2, 3, 1 },
38 	{ 1, 1, 3, 2, 2, 2 }, // 15
39 	{ 1, 2, 3, 1, 2, 2 },
40 	{ 1, 2, 3, 2, 2, 1 },
41 	{ 2, 2, 3, 2, 1, 1 },
42 	{ 2, 2, 1, 1, 3, 2 },
43 	{ 2, 2, 1, 2, 3, 1 }, // 20
44 	{ 2, 1, 3, 2, 1, 2 },
45 	{ 2, 2, 3, 1, 1, 2 },
46 	{ 3, 1, 2, 1, 3, 1 },
47 	{ 3, 1, 1, 2, 2, 2 },
48 	{ 3, 2, 1, 1, 2, 2 }, // 25
49 	{ 3, 2, 1, 2, 2, 1 },
50 	{ 3, 1, 2, 2, 1, 2 },
51 	{ 3, 2, 2, 1, 1, 2 },
52 	{ 3, 2, 2, 2, 1, 1 },
53 	{ 2, 1, 2, 1, 2, 3 }, // 30
54 	{ 2, 1, 2, 3, 2, 1 },
55 	{ 2, 3, 2, 1, 2, 1 },
56 	{ 1, 1, 1, 3, 2, 3 },
57 	{ 1, 3, 1, 1, 2, 3 },
58 	{ 1, 3, 1, 3, 2, 1 }, // 35
59 	{ 1, 1, 2, 3, 1, 3 },
60 	{ 1, 3, 2, 1, 1, 3 },
61 	{ 1, 3, 2, 3, 1, 1 },
62 	{ 2, 1, 1, 3, 1, 3 },
63 	{ 2, 3, 1, 1, 1, 3 }, // 40
64 	{ 2, 3, 1, 3, 1, 1 },
65 	{ 1, 1, 2, 1, 3, 3 },
66 	{ 1, 1, 2, 3, 3, 1 },
67 	{ 1, 3, 2, 1, 3, 1 },
68 	{ 1, 1, 3, 1, 2, 3 }, // 45
69 	{ 1, 1, 3, 3, 2, 1 },
70 	{ 1, 3, 3, 1, 2, 1 },
71 	{ 3, 1, 3, 1, 2, 1 },
72 	{ 2, 1, 1, 3, 3, 1 },
73 	{ 2, 3, 1, 1, 3, 1 }, // 50
74 	{ 2, 1, 3, 1, 1, 3 },
75 	{ 2, 1, 3, 3, 1, 1 },
76 	{ 2, 1, 3, 1, 3, 1 },
77 	{ 3, 1, 1, 1, 2, 3 },
78 	{ 3, 1, 1, 3, 2, 1 }, // 55
79 	{ 3, 3, 1, 1, 2, 1 },
80 	{ 3, 1, 2, 1, 1, 3 },
81 	{ 3, 1, 2, 3, 1, 1 },
82 	{ 3, 3, 2, 1, 1, 1 },
83 	{ 3, 1, 4, 1, 1, 1 }, // 60
84 	{ 2, 2, 1, 4, 1, 1 },
85 	{ 4, 3, 1, 1, 1, 1 },
86 	{ 1, 1, 1, 2, 2, 4 },
87 	{ 1, 1, 1, 4, 2, 2 },
88 	{ 1, 2, 1, 1, 2, 4 }, // 65
89 	{ 1, 2, 1, 4, 2, 1 },
90 	{ 1, 4, 1, 1, 2, 2 },
91 	{ 1, 4, 1, 2, 2, 1 },
92 	{ 1, 1, 2, 2, 1, 4 },
93 	{ 1, 1, 2, 4, 1, 2 }, // 70
94 	{ 1, 2, 2, 1, 1, 4 },
95 	{ 1, 2, 2, 4, 1, 1 },
96 	{ 1, 4, 2, 1, 1, 2 },
97 	{ 1, 4, 2, 2, 1, 1 },
98 	{ 2, 4, 1, 2, 1, 1 }, // 75
99 	{ 2, 2, 1, 1, 1, 4 },
100 	{ 4, 1, 3, 1, 1, 1 },
101 	{ 2, 4, 1, 1, 1, 2 },
102 	{ 1, 3, 4, 1, 1, 1 },
103 	{ 1, 1, 1, 2, 4, 2 }, // 80
104 	{ 1, 2, 1, 1, 4, 2 },
105 	{ 1, 2, 1, 2, 4, 1 },
106 	{ 1, 1, 4, 2, 1, 2 },
107 	{ 1, 2, 4, 1, 1, 2 },
108 	{ 1, 2, 4, 2, 1, 1 }, // 85
109 	{ 4, 1, 1, 2, 1, 2 },
110 	{ 4, 2, 1, 1, 1, 2 },
111 	{ 4, 2, 1, 2, 1, 1 },
112 	{ 2, 1, 2, 1, 4, 1 },
113 	{ 2, 1, 4, 1, 2, 1 }, // 90
114 	{ 4, 1, 2, 1, 2, 1 },
115 	{ 1, 1, 1, 1, 4, 3 },
116 	{ 1, 1, 1, 3, 4, 1 },
117 	{ 1, 3, 1, 1, 4, 1 },
118 	{ 1, 1, 4, 1, 1, 3 }, // 95
119 	{ 1, 1, 4, 3, 1, 1 },
120 	{ 4, 1, 1, 1, 1, 3 },
121 	{ 4, 1, 1, 3, 1, 1 },
122 	{ 1, 1, 3, 1, 4, 1 },
123 	{ 1, 1, 4, 1, 3, 1 }, // 100
124 	{ 3, 1, 1, 1, 4, 1 },
125 	{ 4, 1, 1, 1, 3, 1 },
126 	{ 2, 1, 1, 4, 1, 2 },
127 	{ 2, 1, 1, 2, 1, 4 },
128 	{ 2, 1, 1, 2, 3, 2 }, // 105
129 	{ 2, 3, 3, 1, 1, 1 }  // STOP_CODE followed by 2-wide termination bar
130 } };
131 
132 } // namespace ZXing::OneD::Code128
133