@zxing/library
Version:
TypeScript port of ZXing multi-format 1D/2D barcode image processing library.
102 lines (101 loc) • 2.63 kB
JavaScript
import * as C from './EncoderConstants';
import Arrays from '../../util/Arrays';
import StringUtils from '../../common/StringUtils';
export function static_CHAR_MAP(CHAR_MAP) {
const spaceCharCode = StringUtils.getCharCode(' ');
const pointCharCode = StringUtils.getCharCode('.');
const commaCharCode = StringUtils.getCharCode(',');
CHAR_MAP[C.MODE_UPPER][spaceCharCode] = 1;
const zUpperCharCode = StringUtils.getCharCode('Z');
const aUpperCharCode = StringUtils.getCharCode('A');
for (let c = aUpperCharCode; c <= zUpperCharCode; c++) {
CHAR_MAP[C.MODE_UPPER][c] = c - aUpperCharCode + 2;
}
CHAR_MAP[C.MODE_LOWER][spaceCharCode] = 1;
const zLowerCharCode = StringUtils.getCharCode('z');
const aLowerCharCode = StringUtils.getCharCode('a');
for (let c = aLowerCharCode; c <= zLowerCharCode; c++) {
CHAR_MAP[C.MODE_LOWER][c] = c - aLowerCharCode + 2;
}
CHAR_MAP[C.MODE_DIGIT][spaceCharCode] = 1;
const nineCharCode = StringUtils.getCharCode('9');
const zeroCharCode = StringUtils.getCharCode('0');
for (let c = zeroCharCode; c <= nineCharCode; c++) {
CHAR_MAP[C.MODE_DIGIT][c] = c - zeroCharCode + 2;
}
CHAR_MAP[C.MODE_DIGIT][commaCharCode] = 12;
CHAR_MAP[C.MODE_DIGIT][pointCharCode] = 13;
const mixedTable = [
'\x00',
' ',
'\x01',
'\x02',
'\x03',
'\x04',
'\x05',
'\x06',
'\x07',
'\b',
'\t',
'\n',
'\x0b',
'\f',
'\r',
'\x1b',
'\x1c',
'\x1d',
'\x1e',
'\x1f',
'@',
'\\',
'^',
'_',
'`',
'|',
'~',
'\x7f'
];
for (let i = 0; i < mixedTable.length; i++) {
CHAR_MAP[C.MODE_MIXED][StringUtils.getCharCode(mixedTable[i])] = i;
}
const punctTable = [
'\x00',
'\r',
'\x00',
'\x00',
'\x00',
'\x00',
'!',
'\'',
'#',
'$',
'%',
'&',
'\'',
'(',
')',
'*',
'+',
',',
'-',
'.',
'/',
':',
';',
'<',
'=',
'>',
'?',
'[',
']',
'{',
'}'
];
for (let i = 0; i < punctTable.length; i++) {
if (StringUtils.getCharCode(punctTable[i]) > 0) {
CHAR_MAP[C.MODE_PUNCT][StringUtils.getCharCode(punctTable[i])] = i;
}
}
return CHAR_MAP;
}
export const CHAR_MAP = static_CHAR_MAP(Arrays.createInt32Array(5, 256));