UNPKG

@zxing/library

Version:

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

64 lines (63 loc) 2.58 kB
import BitArray from '../common/BitArray'; import DecodeHintType from '../DecodeHintType'; import Result from '../Result'; import OneDReader from './OneDReader'; /** * <p>Encapsulates functionality and implementation that is common to UPC and EAN families * of one-dimensional barcodes.</p> * * @author dswitkin@google.com (Daniel Switkin) * @author Sean Owen * @author alasdair@google.com (Alasdair Mackintosh) */ export default abstract class UPCEANReader extends OneDReader { private static MAX_AVG_VARIANCE; private static MAX_INDIVIDUAL_VARIANCE; /** * Start/end guard pattern. */ static START_END_PATTERN: number[]; /** * Pattern marking the middle of a UPC/EAN pattern, separating the two halves. */ static MIDDLE_PATTERN: number[]; /** * end guard pattern. */ static END_PATTERN: number[]; /** * "Odd", or "L" patterns used to encode UPC/EAN digits. */ static L_PATTERNS: number[][]; /** * As above but also including the "even", or "G" patterns used to encode UPC/EAN digits. */ static L_AND_G_PATTERNS: number[][]; private decodeRowStringBuffer; constructor(); static findStartGuardPattern(row: BitArray): number[]; decodeRow(rowNumber: number, row: BitArray, hints?: Map<DecodeHintType, any>): Result; static checkChecksum(s: string): boolean; static checkStandardUPCEANChecksum(s: string): boolean; static getStandardUPCEANChecksum(s: string): number; static decodeEnd(row: BitArray, endStart: number): number[]; static findGuardPattern(row: BitArray, rowOffset: number, whiteFirst: boolean, pattern: number[], counters: number[]): number[]; static decodeDigit(row: BitArray, counters: number[], rowOffset: number, patterns: number[][]): number; /** * Get the format of this decoder. * * @return The 1D format. */ abstract getBarcodeFormat(): any; /** * Subclasses override this to decode the portion of a barcode between the start * and end guard patterns. * * @param row row of black/white values to search * @param startRange start/end offset of start guard pattern * @param resultString {@link StringBuilder} to append decoded chars to * @return horizontal offset of first pixel after the "middle" that was decoded * @throws NotFoundException if decoding could not complete successfully */ abstract decodeMiddle(row: BitArray, startRange: number[], resultString: string): any; }