Skip to content

Commit 9b128cd

Browse files
committed
Fixed #76
1 parent 14c2079 commit 9b128cd

File tree

8 files changed

+106
-57
lines changed

8 files changed

+106
-57
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
quaggaJS
22
========
33

4-
- [Changelog](#changelog) (2015-11-15)
4+
- [Changelog](#changelog) (2015-11-22)
55

66
## What is QuaggaJS?
77

@@ -434,6 +434,12 @@ on the ``singleChannel`` flag in the configuration when using ``decodeSingle``.
434434

435435
## <a name="changelog">Changelog</a>
436436

437+
### 2015-11-22
438+
439+
- Fixes
440+
- Fixed inconsistencies for Code 128 decoding (See
441+
[\#76](https://github.com/serratus/quaggaJS/issues/76))
442+
437443
### 2015-11-15
438444

439445
- Fixes

dist/quagga.js

Lines changed: 31 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/quagga.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

example/static_images.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ <h3>Working with static images</h3>
5858
&copy; Copyright by Christoph Oberhofer
5959
</p>
6060
</footer>
61-
<script src="../src/vendor/jquery-1.9.0.min.js" type="text/javascript"></script>
61+
<script src="vendor/jquery-1.9.0.min.js" type="text/javascript"></script>
6262
<script src="../dist/quagga.js" type="text/javascript"></script>
6363
<script src="static_images.js" type="text/javascript"></script>
6464
</body>

lib/quagga.js

Lines changed: 31 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "quagga",
3-
"version": "0.8.1",
3+
"version": "0.8.2",
44
"description": "An advanced barcode-scanner written in JavaScript",
55
"main": "lib/quagga.js",
66
"browser": "dist/quagga.min.js",

src/code_128_reader.js

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,8 @@ Code128Reader.prototype._decode = function() {
247247
rawResult = [],
248248
decodedCodes = [],
249249
shiftNext = false,
250-
unshift;
250+
unshift,
251+
removeLastCharacter = true;
251252

252253
if (startInfo === null) {
253254
return null;
@@ -278,6 +279,10 @@ Code128Reader.prototype._decode = function() {
278279
shiftNext = false;
279280
code = self._decodeCode(code.end);
280281
if (code !== null) {
282+
if (code.code !== self.STOP_CODE) {
283+
removeLastCharacter = true;
284+
}
285+
281286
if (code.code !== self.STOP_CODE) {
282287
rawResult.push(code.code);
283288
multiplier++;
@@ -292,6 +297,9 @@ Code128Reader.prototype._decode = function() {
292297
} else if (code.code < 96) {
293298
result.push(String.fromCharCode(code.code - 64));
294299
} else {
300+
if (code.code !== self.STOP_CODE) {
301+
removeLastCharacter = false;
302+
}
295303
switch (code.code) {
296304
case self.CODE_SHIFT:
297305
shiftNext = true;
@@ -313,6 +321,9 @@ Code128Reader.prototype._decode = function() {
313321
if (code.code < 96) {
314322
result.push(String.fromCharCode(32 + code.code));
315323
} else {
324+
if (code.code !== self.STOP_CODE) {
325+
removeLastCharacter = false;
326+
}
316327
switch (code.code) {
317328
case self.CODE_SHIFT:
318329
shiftNext = true;
@@ -333,17 +344,21 @@ Code128Reader.prototype._decode = function() {
333344
case self.CODE_C:
334345
if (code.code < 100) {
335346
result.push(code.code < 10 ? "0" + code.code : code.code);
336-
}
337-
switch (code.code) {
338-
case self.CODE_A:
339-
codeset = self.CODE_A;
340-
break;
341-
case self.CODE_B:
342-
codeset = self.CODE_B;
343-
break;
344-
case self.STOP_CODE:
345-
done = true;
346-
break;
347+
} else {
348+
if (code.code !== self.STOP_CODE) {
349+
removeLastCharacter = false;
350+
}
351+
switch (code.code) {
352+
case self.CODE_A:
353+
codeset = self.CODE_A;
354+
break;
355+
case self.CODE_B:
356+
codeset = self.CODE_B;
357+
break;
358+
case self.STOP_CODE:
359+
done = true;
360+
break;
361+
}
347362
}
348363
break;
349364
}
@@ -359,14 +374,11 @@ Code128Reader.prototype._decode = function() {
359374
return null;
360375
}
361376

362-
// find end bar
363377
code.end = self._nextUnset(self._row, code.end);
364378
if (!self._verifyTrailingWhitespace(code)){
365379
return null;
366380
}
367381

368-
// checksum
369-
// Does not work correctly yet!!! startcode - endcode?
370382
checksum -= multiplier * rawResult[rawResult.length - 1];
371383
if (checksum % 103 !== rawResult[rawResult.length - 1]) {
372384
return null;
@@ -377,7 +389,10 @@ Code128Reader.prototype._decode = function() {
377389
}
378390

379391
// remove last code from result (checksum)
380-
result.splice(result.length - 1, 1);
392+
if (removeLastCharacter) {
393+
result.splice(result.length - 1, 1);
394+
}
395+
381396

382397
return {
383398
code: result.join(""),

test/integration/integration.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ describe('decodeSingle', function () {
8686
{"name": "image-005.jpg", "result": "419055603900009001012999"},
8787
{"name": "image-006.jpg", "result": "419055603900009001012999"},
8888
{"name": "image-007.jpg", "result": "T 000003552345"},
89-
{"name": "image-008.jpg", "result": "FANAVF1461710"},
89+
{"name": "image-008.jpg", "result": "FANAVF14617104"},
9090
{"name": "image-009.jpg", "result": "0001285112001000040801"},
9191
{"name": "image-010.jpg", "result": "673023"}
9292
];

0 commit comments

Comments
 (0)