PDF417ByteCompactor.java
1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
* Decompiled with CFR 0_118.
*/
package com.adobe.xfa.pmp.adobepdf417pmp;
import com.adobe.xfa.pmp.adobepdf417pmp.PDF417SpecialCode;
import java.util.List;
class PDF417ByteCompactor {
PDF417ByteCompactor() {
}
static void compact(List<Character> message, List<Integer> compactedMessage) {
compactedMessage.add(0);
char[] base256 = new char[6];
int[] base900 = new int[5];
int srcIdx = 0;
while (srcIdx + 6 <= message.size()) {
base256[0] = message.get(srcIdx++).charValue();
base256[1] = message.get(srcIdx++).charValue();
base256[2] = message.get(srcIdx++).charValue();
base256[3] = message.get(srcIdx++).charValue();
base256[4] = message.get(srcIdx++).charValue();
base256[5] = message.get(srcIdx++).charValue();
PDF417ByteCompactor.base256ToBase900(base256, base900);
compactedMessage.add(base900[0]);
compactedMessage.add(base900[1]);
compactedMessage.add(base900[2]);
compactedMessage.add(base900[3]);
compactedMessage.add(base900[4]);
}
if (srcIdx != message.size()) {
compactedMessage.set(0, PDF417SpecialCode.ByteCompactionLatch0.getValue());
while (srcIdx < message.size()) {
compactedMessage.add(Integer.valueOf(message.get(srcIdx++).charValue()));
}
} else {
compactedMessage.set(0, PDF417SpecialCode.ByteCompactionLatch1.getValue());
}
}
static void base256ToBase900(char[] in, int[] out) {
long v1 = in[0];
long v2 = in[1];
long v3 = in[2];
long v4 = in[3];
long v5 = in[4];
long v6 = in[5];
long v = (v1 <<= 40) | (v2 <<= 32) | (v3 <<= 24) | (v4 <<= 16) | (v5 <<= 8) | v6;
for (int idx = 4; idx >= 0; --idx) {
int c = (int)(v % 900);
v /= 900;
out[idx] = c;
}
}
}