UNPKG

@zxing/library

Version:

TypeScript port of ZXing multi-format 1D/2D barcode image processing library.

41 lines (40 loc) 1.5 kB
import AbstractExpandedDecoder from './AbstractExpandedDecoder'; export default class AI01decoder extends AbstractExpandedDecoder { constructor(information) { super(information); } encodeCompressedGtin(buf, currentPos) { buf.append('(01)'); let initialPosition = buf.length(); buf.append('9'); this.encodeCompressedGtinWithoutAI(buf, currentPos, initialPosition); } encodeCompressedGtinWithoutAI(buf, currentPos, initialBufferPosition) { for (let i = 0; i < 4; ++i) { let currentBlock = this.getGeneralDecoder().extractNumericValueFromBitArray(currentPos + 10 * i, 10); if (currentBlock / 100 === 0) { buf.append('0'); } if (currentBlock / 10 === 0) { buf.append('0'); } buf.append(currentBlock); } AI01decoder.appendCheckDigit(buf, initialBufferPosition); } static appendCheckDigit(buf, currentPos) { let checkDigit = 0; for (let i = 0; i < 13; i++) { // let digit = buf.charAt(i + currentPos) - '0'; // To be checked let digit = buf.charAt(i + currentPos).charCodeAt(0) - '0'.charCodeAt(0); checkDigit += (i & 0x01) === 0 ? 3 * digit : digit; } checkDigit = 10 - (checkDigit % 10); if (checkDigit === 10) { checkDigit = 0; } buf.append(checkDigit); } } AI01decoder.GTIN_SIZE = 40;