authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-02-28 15:10:01 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-02-28 15:10:01 -08:00
log06f7340675b359ec37eb44486221b6800b7db7c1
tree93899c2a25cccc82343ff3ac0d6ba22fd8bec10d
parent2f7ad3d5f8d1d233e65ae08cf03c60564914b1df

fix version 25


2 files changed, 96 insertions(+), 6 deletions(-)

qrcode.zig+2-6
......@@ -139,7 +139,7 @@ pub fn encode(comptime mode: Mode, comptime level: Level, comptime version: u16,
139139 for (message_polynomial, 0..) |x, i| mp[i] = to_alpha(.{@bitReverse(x)})[0];
140140
141141 for (0..groupOneDataCodewordsCountPerBlock) |i| {
142 const lead = mp[i].?;
142 const lead = mp[i] orelse 0;
143143 for (&generator_polynomial_alpha, 0..) |x, j| {
144144 var y = GF[(@as(usize, x) + lead) % 255];
145145 if (mp[i + j]) |z| y ^= GF[z];
......@@ -158,7 +158,7 @@ pub fn encode(comptime mode: Mode, comptime level: Level, comptime version: u16,
158158 for (message_polynomial, 0..) |x, i| mp[i] = to_alpha(.{@bitReverse(x)})[0];
159159
160160 for (0..group2_datacodewords_per_block) |i| {
161 const lead = mp[i].?;
161 const lead = mp[i] orelse 0;
162162 for (&generator_polynomial_alpha, 0..) |x, j| {
163163 var y = GF[(@as(usize, x) + lead) % 255];
164164 if (mp[i + j]) |z| y ^= GF[z];
......@@ -272,10 +272,6 @@ pub fn encode(comptime mode: Mode, comptime level: Level, comptime version: u16,
272272 // version block
273273 if (version >= 7) {
274274 var bititer: std.bit_set.IntegerBitSet(18) = .{ .mask = versionBits(version) };
275 std.debug.assert(bititer.mask == 0b001010010011010011);
276 std.debug.assert(bititer.isSet(0));
277 std.debug.assert(bititer.isSet(1));
278
279275 for (0..3) |x| {
280276 for (0..6) |y| {
281277 grid.setV(size - 11 + x, y, bititer.isSet((y * 3) + x));
test.zig+94
......@@ -36,3 +36,97 @@ test {
3636 // 30 68 2b d1 03 dd b7 00 ec 11
3737 _ = &grid;
3838}
39test {
40 const grid = qrcode.encode(
41 .latin1,
42 .L,
43 25,
44 \\Version 25 QR Code, up to 1853 characters at L level.
45 \\A QR code (abbreviated from Quick Response code) is a type of matrix barcode (or two-dimensional code) that is designed to be read by smartphones. The code consists of black modules arranged in a square pattern on a white background. The information encoded may be text, a URL, or other data.
46 \\Created by Toyota subsidiary Denso Wave in 1994, the QR code is one of the most popular types of two-dimensional barcodes. The QR code was designed to allow its contents to be decoded at high speed.
47 \\The technology has seen frequent use in Japan and South Korea; the United Kingdom is the seventh-largest national consumer of QR codes.
48 \\Although initially used for tracking parts in vehicle manufacturing, QR codes now are used in a much broader context, including both commercial tracking applications and convenience-oriented applications aimed at mobile phone users (termed mobile tagging). QR codes may be used to display text to the user, to add a vCard contact to the user's device, to open a Uniform Resource Identifier (URI), or to compose an e-mail or text message. Users can generate and print their own QR codes for others to scan and use by visiting one of several paid and free QR code generating sites or apps.
49 ,
50 );
51 // 40 4f 55 66 57 27 36 96 f6 e2 03 23 52 05 15 22
52 // 04 36 f6 46 52 c2 07 57 02 07 46 f2 03 13 83 53
53 // 32 06 36 86 17 26 16 37 46 57 27 32 06 17 42 04
54 // c2 06 c6 57 66 56 c2 e0 a4 12 05 15 22 06 36 f6
55 // 46 52 02 86 16 26 27 26 57 66 96 17 46 56 42 06
56 // 67 26 f6 d2 05 17 56 96 36 b2 05 26 57 37 06 f6
57 // e7 36 52 06 36 f6 46 52 92 06 97 32 06 12 07 47
58 // 97 06 52 06 f6 62 06 d6 17 47 26 97 82 06 26 17
59 // 26 36 f6 46 52 02 86 f7 22 07 47 76 f2 d6 46 96
60 // d6 56 e7 36 96 f6 e6 16 c2 06 36 f6 46 52 92 07
61 // 46 86 17 42 06 97 32 06 46 57 36 96 76 e6 56 42
62 // 07 46 f2 06 26 52 07 26 56 16 42 06 27 92 07 36
63 // d6 17 27 47 06 86 f6 e6 57 32 e2 05 46 86 52 06
64 // 36 f6 46 52 06 36 f6 e7 36 97 37 47 32 06 f6 62
65 // 06 26 c6 16 36 b2 06 d6 f6 47 56 c6 57 32 06 17
66 // 27 26 16 e6 76 56 42 06 96 e2 06 12 07 37 17 56
67 // 17 26 52 07 06 17 47 46 57 26 e2 06 f6 e2 06 12
68 // 07 76 86 97 46 52 06 26 16 36 b6 77 26 f7 56 e6
69 // 42 e2 05 46 86 52 06 96 e6 66 f7 26 d6 17 46 96
70 // f6 e2 06 56 e6 36 f6 46 56 42 06 d6 17 92 06 26
71 // 52 07 46 57 87 42 c2 06 12 05 55 24 c2 c2 06 f7
72 // 22 06 f7 46 86 57 22 06 46 17 46 12 e0 a4 37 26
73 // 56 17 46 56 42 06 27 92 05 46 f7 96 f7 46 12 07
74 // 37 56 27 36 96 46 96 17 27 92 04 46 56 e7 36 f2
75 // 05 76 17 66 52 06 96 e2 03 13 93 93 42 c2 07 46
76 // 86 52 05 15 22 06 36 f6 46 52 06 97 32 06 f6 e6
77 // 52 06 f6 62 07 46 86 52 06 d6 f7 37 42 07 06 f7
78 // 07 56 c6 17 22 07 47 97 06 57 32 06 f6 62 07 47
79 // 76 f2 d6 46 96 d6 56 e7 36 96 f6 e6 16 c2 06 26
80 // 17 26 36 f6 46 57 32 e2 05 46 86 52 05 15 22 06
81 // 36 f6 46 52 07 76 17 32 06 46 57 36 96 76 e6 56
82 // 42 07 46 f2 06 16 c6 c6 f7 72 06 97 47 32 06 36
83 // f6 e7 46 56 e7 47 32 07 46 f2 06 26 52 06 46 56
84 // 36 f6 46 56 42 06 17 42 06 86 96 76 82 07 37 06
85 // 56 56 42 e0 a5 46 86 52 07 46 56 36 86 e6 f6 c6
86 // f6 77 92 06 86 17 32 07 36 56 56 e2 06 67 26 57
87 // 17 56 56 e7 42 07 57 36 52 06 96 e2 04 a6 17 06
88 // 16 e2 06 16 e6 42 05 36 f7 57 46 82 04 b6 f7 26
89 // 56 13 b2 07 46 86 52 05 56 e6 97 46 56 42 04 b6
90 // 96 e6 76 46 f6 d2 06 97 32 07 46 86 52 07 36 57
91 // 66 56 e7 46 82 d6 c6 17 26 76 57 37 42 06 e6 17
92 // 46 96 f6 e6 16 c2 06 36 f6 e7 37 56 d6 57 22 06
93 // f6 62 05 15 22 06 36 f6 46 57 32 e0 a4 16 c7 46
94 // 86 f7 56 76 82 06 96 e6 97 46 96 16 c6 c7 92 07
95 // 57 36 56 42 06 66 f7 22 07 47 26 16 36 b6 96 e6
96 // 72 07 06 17 27 47 32 06 96 e2 07 66 56 86 96 36
97 // c6 52 06 d6 16 e7 56 66 16 37 47 57 26 96 e6 72
98 // c2 05 15 22 06 36 f6 46 57 32 06 e6 f7 72 06 17
99 // 26 52 07 57 36 56 42 06 96 e2 06 12 06 d7 56 36
100 // 82 06 27 26 f6 16 46 57 22 06 36 f6 e7 46 57 87
101 // 42 c2 06 96 e6 36 c7 56 46 96 e6 72 06 26 f7 46
102 // 82 06 36 f6 d6 d6 57 26 36 96 16 c2 07 47 26 16
103 // 36 b6 96 e6 72 06 17 07 06 c6 96 36 17 46 96 f6
104 // e7 32 06 16 e6 42 06 36 f6 e7 66 56 e6 96 56 e6
105 // 36 52 d6 f7 26 96 56 e7 46 56 42 06 17 07 06 c6
106 // 96 36 17 46 96 f6 e7 32 06 16 96 d6 56 42 06 17
107 // 42 06 d6 f6 26 96 c6 52 07 06 86 f6 e6 52 07 57
108 // 36 57 27 32 02 87 46 57 26 d6 56 42 06 d6 f6 26
109 // 96 c6 52 07 46 16 76 76 96 e6 72 92 e2 05 15 22
110 // 06 36 f6 46 57 32 06 d6 17 92 06 26 52 07 57 36
111 // 56 42 07 46 f2 06 46 97 37 06 c6 17 92 07 46 57
112 // 87 42 07 46 f2 07 46 86 52 07 57 36 57 22 c2 07
113 // 46 f2 06 16 46 42 06 12 07 64 36 17 26 42 06 36
114 // f6 e7 46 16 37 42 07 46 f2 07 46 86 52 07 57 36
115 // 57 22 77 32 06 46 57 66 96 36 52 c2 07 46 f2 06
116 // f7 06 56 e2 06 12 05 56 e6 96 66 f7 26 d2 05 26
117 // 57 36 f7 57 26 36 52 04 96 46 56 e7 46 96 66 96
118 // 57 22 02 85 55 24 92 92 c2 06 f7 22 07 46 f2 06
119 // 36 f6 d7 06 f7 36 52 06 16 e2 06 52 d6 d6 16 96
120 // c2 06 f7 22 07 46 57 87 42 06 d6 57 37 36 16 76
121 // 52 e2 05 57 36 57 27 32 06 36 16 e2 06 76 56 e6
122 // 57 26 17 46 52 06 16 e6 42 07 07 26 96 e7 42 07
123 // 46 86 56 97 22 06 f7 76 e2 05 15 22 06 36 f6 46
124 // 57 32 06 66 f7 22 06 f7 46 86 57 27 32 07 46 f2
125 // 07 36 36 16 e2 06 16 e6 42 07 57 36 52 06 27 92
126 // 07 66 97 36 97 46 96 e6 72 06 f6 e6 52 06 f6 62
127 // 07 36 57 66 57 26 16 c2 07 06 16 96 42 06 16 e6
128 // 42 06 67 26 56 52 05 15 22 06 36 f6 46 52 06 76
129 // 56 e6 57 26 17 46 96 e6 72 07 36 97 46 57 32 06
130 // f7 22 06 17 07 07 32 e0 ec 11 ec 11
131 _ = &grid;
132}