mirror of
https://github.com/serratus/quaggaJS.git
synced 2026-08-12 21:21:42 +08:00
Added EAN-8 Reader
This commit is contained in:
Vendored
+86
-16
@@ -1273,23 +1273,11 @@ define(
|
|||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
EANReader.prototype._decode = function() {
|
EANReader.prototype._decodePayload = function(code, result, decodedCodes) {
|
||||||
var startInfo,
|
var i,
|
||||||
self = this,
|
self = this,
|
||||||
code = null,
|
codeFrequency = 0x0;
|
||||||
result = [],
|
|
||||||
i,
|
|
||||||
codeFrequency = 0x0,
|
|
||||||
decodedCodes = [];
|
|
||||||
|
|
||||||
try {
|
|
||||||
startInfo = self._findStart();
|
|
||||||
code = {
|
|
||||||
code : startInfo.code,
|
|
||||||
start : startInfo.start,
|
|
||||||
end : startInfo.end
|
|
||||||
};
|
|
||||||
decodedCodes.push(code);
|
|
||||||
for ( i = 0; i < 6; i++) {
|
for ( i = 0; i < 6; i++) {
|
||||||
code = self._decodeCode(code.end);
|
code = self._decodeCode(code.end);
|
||||||
if (code.code >= self.CODE_G_START) {
|
if (code.code >= self.CODE_G_START) {
|
||||||
@@ -1321,6 +1309,25 @@ define(
|
|||||||
result.push(code.code);
|
result.push(code.code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
};
|
||||||
|
|
||||||
|
EANReader.prototype._decode = function() {
|
||||||
|
var startInfo,
|
||||||
|
self = this,
|
||||||
|
code = null,
|
||||||
|
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);
|
code = self._findEnd(code.end);
|
||||||
if (code === null){
|
if (code === null){
|
||||||
return null;
|
return null;
|
||||||
@@ -7063,12 +7070,75 @@ define(
|
|||||||
/* jshint undef: true, unused: true, browser:true, devel: true */
|
/* jshint undef: true, unused: true, browser:true, devel: true */
|
||||||
/* global define */
|
/* global define */
|
||||||
|
|
||||||
define('barcode_decoder',["bresenham", "image_debug", 'code_128_reader', 'ean_reader', 'code_39_reader', 'codabar_reader', 'upc_reader'], function(Bresenham, ImageDebug, Code128Reader, EANReader, Code39Reader, CodabarReader, UPCReader) {
|
define(
|
||||||
|
'ean_8_reader',[
|
||||||
|
"./ean_reader"
|
||||||
|
],
|
||||||
|
function(EANReader) {
|
||||||
|
|
||||||
|
|
||||||
|
function EAN8Reader() {
|
||||||
|
EANReader.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAN8Reader.prototype = Object.create(EANReader.prototype);
|
||||||
|
EAN8Reader.prototype.constructor = EAN8Reader;
|
||||||
|
|
||||||
|
EAN8Reader.prototype._decodePayload = function(code, result, decodedCodes) {
|
||||||
|
var i,
|
||||||
|
self = this;
|
||||||
|
|
||||||
|
for ( i = 0; i < 4; i++) {
|
||||||
|
code = self._decodeCode(code.end);
|
||||||
|
result.push(code.code);
|
||||||
|
decodedCodes.push(code);
|
||||||
|
}
|
||||||
|
|
||||||
|
code = self._findPattern(self.MIDDLE_PATTERN, code.end, true);
|
||||||
|
if (code === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
decodedCodes.push(code);
|
||||||
|
|
||||||
|
for ( i = 0; i < 4; i++) {
|
||||||
|
code = self._decodeCode(code.end, self.CODE_G_START);
|
||||||
|
decodedCodes.push(code);
|
||||||
|
result.push(code.code);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
};
|
||||||
|
|
||||||
|
return (EAN8Reader);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
/* jshint undef: true, unused: true, browser:true, devel: true */
|
||||||
|
/* global define */
|
||||||
|
|
||||||
|
define('barcode_decoder',[
|
||||||
|
"bresenham",
|
||||||
|
"image_debug",
|
||||||
|
'code_128_reader',
|
||||||
|
'ean_reader',
|
||||||
|
'code_39_reader',
|
||||||
|
'codabar_reader',
|
||||||
|
'upc_reader',
|
||||||
|
'ean_8_reader'
|
||||||
|
], function(
|
||||||
|
Bresenham,
|
||||||
|
ImageDebug,
|
||||||
|
Code128Reader,
|
||||||
|
EANReader,
|
||||||
|
Code39Reader,
|
||||||
|
CodabarReader,
|
||||||
|
UPCReader,
|
||||||
|
EAN8Reader) {
|
||||||
|
|
||||||
|
|
||||||
var readers = {
|
var readers = {
|
||||||
code_128_reader: Code128Reader,
|
code_128_reader: Code128Reader,
|
||||||
ean_reader: EANReader,
|
ean_reader: EANReader,
|
||||||
|
ean_8_reader: EAN8Reader,
|
||||||
code_39_reader: Code39Reader,
|
code_39_reader: Code39Reader,
|
||||||
codabar_reader: CodabarReader,
|
codabar_reader: CodabarReader,
|
||||||
upc_reader: UPCReader
|
upc_reader: UPCReader
|
||||||
|
|||||||
Vendored
+4
-4
File diff suppressed because one or more lines are too long
@@ -44,7 +44,9 @@
|
|||||||
<select name="decoder_readers">
|
<select name="decoder_readers">
|
||||||
<option value="code_128">Code 128</option>
|
<option value="code_128">Code 128</option>
|
||||||
<option value="code_39">Code 39</option>
|
<option value="code_39">Code 39</option>
|
||||||
<option value="ean" selected="selected">EAN</option>
|
<option value="ean">EAN</option>
|
||||||
|
<option value="ean_8" selected="selected">EAN-8</option>
|
||||||
|
<option value="upc">UPC</option>
|
||||||
<option value="codabar">Codabar</option>
|
<option value="codabar">Codabar</option>
|
||||||
</select>
|
</select>
|
||||||
</label>
|
</label>
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ $(function() {
|
|||||||
},
|
},
|
||||||
numOfWorkers: 0,
|
numOfWorkers: 0,
|
||||||
decoder: {
|
decoder: {
|
||||||
readers: ["ean_reader"],
|
readers: ["ean_8_reader"],
|
||||||
showFrequency: true,
|
showFrequency: true,
|
||||||
showPattern: true
|
showPattern: true
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -29,8 +29,10 @@
|
|||||||
<div class="controls">
|
<div class="controls">
|
||||||
<button class="stop">Stop</button>
|
<button class="stop">Stop</button>
|
||||||
<fieldset class="reader-group">
|
<fieldset class="reader-group">
|
||||||
|
<label>EAN-8</label>
|
||||||
|
<input type="radio" name="reader" value="ean_8" checked />
|
||||||
<label>UPC</label>
|
<label>UPC</label>
|
||||||
<input type="radio" name="reader" value="upc" checked />
|
<input type="radio" name="reader" value="upc" />
|
||||||
<label>Code39</label>
|
<label>Code39</label>
|
||||||
<input type="radio" name="reader" value="codabar" />
|
<input type="radio" name="reader" value="codabar" />
|
||||||
<label>Code128</label>
|
<label>Code128</label>
|
||||||
@@ -54,7 +56,7 @@
|
|||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="../src/vendor/jquery-1.9.0.min.js" type="text/javascript"></script>
|
<script src="../src/vendor/jquery-1.9.0.min.js" type="text/javascript"></script>
|
||||||
<script src="../dist/quagga.min.js" type="text/javascript"></script>
|
<script src="../dist/quagga.js" type="text/javascript"></script>
|
||||||
<script src="live_w_locator.js" type="text/javascript"></script>
|
<script src="live_w_locator.js" type="text/javascript"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ $(function() {
|
|||||||
type : "LiveStream"
|
type : "LiveStream"
|
||||||
},
|
},
|
||||||
decoder : {
|
decoder : {
|
||||||
readers : ["upc_reader"]
|
readers : ["ean_8_reader"]
|
||||||
}
|
}
|
||||||
}, function() {
|
}, function() {
|
||||||
App.attachListeners();
|
App.attachListeners();
|
||||||
|
|||||||
+19
-1
@@ -1,12 +1,30 @@
|
|||||||
/* jshint undef: true, unused: true, browser:true, devel: true */
|
/* jshint undef: true, unused: true, browser:true, devel: true */
|
||||||
/* global define */
|
/* global define */
|
||||||
|
|
||||||
define(["bresenham", "image_debug", 'code_128_reader', 'ean_reader', 'code_39_reader', 'codabar_reader', 'upc_reader'], function(Bresenham, ImageDebug, Code128Reader, EANReader, Code39Reader, CodabarReader, UPCReader) {
|
define([
|
||||||
|
"bresenham",
|
||||||
|
"image_debug",
|
||||||
|
'code_128_reader',
|
||||||
|
'ean_reader',
|
||||||
|
'code_39_reader',
|
||||||
|
'codabar_reader',
|
||||||
|
'upc_reader',
|
||||||
|
'ean_8_reader'
|
||||||
|
], function(
|
||||||
|
Bresenham,
|
||||||
|
ImageDebug,
|
||||||
|
Code128Reader,
|
||||||
|
EANReader,
|
||||||
|
Code39Reader,
|
||||||
|
CodabarReader,
|
||||||
|
UPCReader,
|
||||||
|
EAN8Reader) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var readers = {
|
var readers = {
|
||||||
code_128_reader: Code128Reader,
|
code_128_reader: Code128Reader,
|
||||||
ean_reader: EANReader,
|
ean_reader: EANReader,
|
||||||
|
ean_8_reader: EAN8Reader,
|
||||||
code_39_reader: Code39Reader,
|
code_39_reader: Code39Reader,
|
||||||
codabar_reader: CodabarReader,
|
codabar_reader: CodabarReader,
|
||||||
upc_reader: UPCReader
|
upc_reader: UPCReader
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/* jshint undef: true, unused: true, browser:true, devel: true */
|
||||||
|
/* global define */
|
||||||
|
|
||||||
|
define(
|
||||||
|
[
|
||||||
|
"./ean_reader"
|
||||||
|
],
|
||||||
|
function(EANReader) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
function EAN8Reader() {
|
||||||
|
EANReader.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAN8Reader.prototype = Object.create(EANReader.prototype);
|
||||||
|
EAN8Reader.prototype.constructor = EAN8Reader;
|
||||||
|
|
||||||
|
EAN8Reader.prototype._decodePayload = function(code, result, decodedCodes) {
|
||||||
|
var i,
|
||||||
|
self = this;
|
||||||
|
|
||||||
|
for ( i = 0; i < 4; i++) {
|
||||||
|
code = self._decodeCode(code.end);
|
||||||
|
result.push(code.code);
|
||||||
|
decodedCodes.push(code);
|
||||||
|
}
|
||||||
|
|
||||||
|
code = self._findPattern(self.MIDDLE_PATTERN, code.end, true);
|
||||||
|
if (code === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
decodedCodes.push(code);
|
||||||
|
|
||||||
|
for ( i = 0; i < 4; i++) {
|
||||||
|
code = self._decodeCode(code.end, self.CODE_G_START);
|
||||||
|
decodedCodes.push(code);
|
||||||
|
result.push(code.code);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
};
|
||||||
|
|
||||||
|
return (EAN8Reader);
|
||||||
|
}
|
||||||
|
);
|
||||||
+22
-15
@@ -200,23 +200,11 @@ define(
|
|||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
EANReader.prototype._decode = function() {
|
EANReader.prototype._decodePayload = function(code, result, decodedCodes) {
|
||||||
var startInfo,
|
var i,
|
||||||
self = this,
|
self = this,
|
||||||
code = null,
|
codeFrequency = 0x0;
|
||||||
result = [],
|
|
||||||
i,
|
|
||||||
codeFrequency = 0x0,
|
|
||||||
decodedCodes = [];
|
|
||||||
|
|
||||||
try {
|
|
||||||
startInfo = self._findStart();
|
|
||||||
code = {
|
|
||||||
code : startInfo.code,
|
|
||||||
start : startInfo.start,
|
|
||||||
end : startInfo.end
|
|
||||||
};
|
|
||||||
decodedCodes.push(code);
|
|
||||||
for ( i = 0; i < 6; i++) {
|
for ( i = 0; i < 6; i++) {
|
||||||
code = self._decodeCode(code.end);
|
code = self._decodeCode(code.end);
|
||||||
if (code.code >= self.CODE_G_START) {
|
if (code.code >= self.CODE_G_START) {
|
||||||
@@ -248,6 +236,25 @@ define(
|
|||||||
result.push(code.code);
|
result.push(code.code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
};
|
||||||
|
|
||||||
|
EANReader.prototype._decode = function() {
|
||||||
|
var startInfo,
|
||||||
|
self = this,
|
||||||
|
code = null,
|
||||||
|
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);
|
code = self._findEnd(code.end);
|
||||||
if (code === null){
|
if (code === null){
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Vendored
BIN
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
Vendored
BIN
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
Vendored
BIN
Binary file not shown.
|
After Width: | Height: | Size: 64 KiB |
Reference in New Issue
Block a user