|
|
|
@ -1177,7 +1177,7 @@ define(
|
|
|
|
|
isWhite = !isWhite;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
throw BarcodeReader.CodeNotFoundException;
|
|
|
|
|
return null;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
EANReader.prototype._findPattern = function(pattern, offset, isWhite, tryHarder, epsilon) {
|
|
|
|
@ -1242,7 +1242,7 @@ define(
|
|
|
|
|
counter[counter.length - 1] = 0;
|
|
|
|
|
counterPos--;
|
|
|
|
|
} else {
|
|
|
|
|
throw BarcodeReader.PatternNotFoundException;
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
counterPos++;
|
|
|
|
@ -1251,7 +1251,7 @@ define(
|
|
|
|
|
isWhite = !isWhite;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
throw BarcodeReader.PatternNotFoundException;
|
|
|
|
|
return null;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
EANReader.prototype._findStart = function() {
|
|
|
|
@ -1262,6 +1262,9 @@ define(
|
|
|
|
|
|
|
|
|
|
while(!startInfo) {
|
|
|
|
|
startInfo = self._findPattern(self.START_PATTERN, offset);
|
|
|
|
|
if (!startInfo) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
leadingWhitespaceStart = startInfo.start - (startInfo.end - startInfo.start);
|
|
|
|
|
if (leadingWhitespaceStart >= 0) {
|
|
|
|
|
if (self._matchRange(leadingWhitespaceStart, startInfo.start, 0)) {
|
|
|
|
@ -1290,7 +1293,7 @@ define(
|
|
|
|
|
var self = this,
|
|
|
|
|
endInfo = self._findPattern(self.STOP_PATTERN, offset, isWhite, false);
|
|
|
|
|
|
|
|
|
|
return self._verifyTrailingWhitespace(endInfo);
|
|
|
|
|
return endInfo !== null ? self._verifyTrailingWhitespace(endInfo) : null;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
EANReader.prototype._calculateFirstDigit = function(codeFrequency) {
|
|
|
|
@ -1340,6 +1343,9 @@ define(
|
|
|
|
|
|
|
|
|
|
for ( i = 0; i < 6; i++) {
|
|
|
|
|
code = self._decodeCode(code.end, self.CODE_G_START);
|
|
|
|
|
if (!code) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
decodedCodes.push(code);
|
|
|
|
|
result.push(code.code);
|
|
|
|
|
}
|
|
|
|
@ -1350,31 +1356,33 @@ define(
|
|
|
|
|
EANReader.prototype._decode = function() {
|
|
|
|
|
var startInfo,
|
|
|
|
|
self = this,
|
|
|
|
|
code = null,
|
|
|
|
|
code,
|
|
|
|
|
result = [],
|
|
|
|
|
decodedCodes = [];
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
startInfo = self._findStart();
|
|
|
|
|
code = {
|
|
|
|
|
code : startInfo.code,
|
|
|
|
|
start : startInfo.start,
|
|
|
|
|
end : startInfo.end
|
|
|
|
|
};
|
|
|
|
|
decodedCodes.push(code);
|
|
|
|
|
code = self._decodePayload(code, result, decodedCodes);
|
|
|
|
|
code = self._findEnd(code.end, false);
|
|
|
|
|
if (!code){
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
startInfo = self._findStart();
|
|
|
|
|
if (!startInfo) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
code = {
|
|
|
|
|
code : startInfo.code,
|
|
|
|
|
start : startInfo.start,
|
|
|
|
|
end : startInfo.end
|
|
|
|
|
};
|
|
|
|
|
decodedCodes.push(code);
|
|
|
|
|
code = self._decodePayload(code, result, decodedCodes);
|
|
|
|
|
if (!code) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
code = self._findEnd(code.end, false);
|
|
|
|
|
if (!code){
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
decodedCodes.push(code);
|
|
|
|
|
decodedCodes.push(code);
|
|
|
|
|
|
|
|
|
|
// Checksum
|
|
|
|
|
if (!self._checksum(result)) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
} catch (exc) {
|
|
|
|
|
// Checksum
|
|
|
|
|
if (!self._checksum(result)) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -7302,6 +7310,9 @@ define(
|
|
|
|
|
|
|
|
|
|
for ( i = 0; i < 4; i++) {
|
|
|
|
|
code = self._decodeCode(code.end, self.CODE_G_START);
|
|
|
|
|
if (!code) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
result.push(code.code);
|
|
|
|
|
decodedCodes.push(code);
|
|
|
|
|
}
|
|
|
|
@ -7314,6 +7325,9 @@ define(
|
|
|
|
|
|
|
|
|
|
for ( i = 0; i < 4; i++) {
|
|
|
|
|
code = self._decodeCode(code.end, self.CODE_G_START);
|
|
|
|
|
if (!code) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
decodedCodes.push(code);
|
|
|
|
|
result.push(code.code);
|
|
|
|
|
}
|
|
|
|
@ -7355,6 +7369,9 @@ define(
|
|
|
|
|
|
|
|
|
|
for ( i = 0; i < 6; i++) {
|
|
|
|
|
code = self._decodeCode(code.end);
|
|
|
|
|
if (!code) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
if (code.code >= self.CODE_G_START) {
|
|
|
|
|
code.code = code.code - self.CODE_G_START;
|
|
|
|
|
codeFrequency |= 1 << (5 - i);
|
|
|
|
|