Creating config programatically

feature/109
Christoph Oberhofer 9 years ago committed by Christoph Oberhofer
parent f3f656f3e7
commit b733c2b7fd

@ -1,8 +1,9 @@
const vec2 = { const vec2 = {
clone: require('gl-vec2/clone'), clone: require('gl-vec2/clone'),
dot: require('gl-vec2/dot') dot: require('gl-vec2/dot')
} };
/**
/**
* Creates a cluster for grouping similar orientations of datapoints * Creates a cluster for grouping similar orientations of datapoints
*/ */
export default { export default {

@ -1,10 +1,10 @@
import Cluster2 from './cluster'; import Cluster2 from './cluster';
import ArrayHelper from './array_helper'; import ArrayHelper from './array_helper';
const vec2 = { const vec2 = {
clone: require('gl-vec2/clone'), clone: require('gl-vec2/clone')
}; };
const vec3 = { const vec3 = {
clone: require('gl-vec3/clone'), clone: require('gl-vec3/clone')
}; };
/** /**

@ -1,5 +1,3 @@
import ImageWrapper from '../common/image_wrapper';
var Bresenham = {}; var Bresenham = {};
var Slope = { var Slope = {

@ -1,7 +1,6 @@
import {merge, pick} from 'lodash'; import {merge, pick} from 'lodash';
var streamRef, var streamRef;
loadedDataHandler;
function waitForVideo(video) { function waitForVideo(video) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {

@ -6,11 +6,12 @@ import Events from './common/events';
import ImageDebug from './common/image_debug'; import ImageDebug from './common/image_debug';
import ResultCollector from './analytics/result_collector'; import ResultCollector from './analytics/result_collector';
import Config from './config/config'; import Config from './config/config';
import {merge} from 'lodash'; import {merge, pick, omitBy, isEmpty, omit} from 'lodash';
function fromImage(config, imageSrc, imageConfig) { function fromImage(config, imageSrc, imageConfig) {
config = merge({ config =
merge({
inputStream: { inputStream: {
type: "ImageStream", type: "ImageStream",
sequence: false, sequence: false,
@ -21,7 +22,12 @@ function fromImage(config, imageSrc, imageConfig) {
locator: { locator: {
halfSample: false halfSample: false
} }
}, config, {inputStream: imageConfig}); },
omit(config, 'inputStream'),
{inputStream: omitBy(pick(config.inputStream, ['size', 'src']), isEmpty)},
{inputStream: imageConfig});
console.log(config);
const scanner = createScanner(config); const scanner = createScanner(config);
return { return {
addEventListener: (eventType, cb) => { addEventListener: (eventType, cb) => {
@ -38,12 +44,16 @@ function fromImage(config, imageSrc, imageConfig) {
}, },
toPromise() { toPromise() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
scanner.addEventListener('processed', (result) => { scanner.init(config, () => {
Events.once('processed', (result) => {
scanner.stop();
if (result.codeResult && result.codeResult.code) { if (result.codeResult && result.codeResult.code) {
return resolve(result); return resolve(result);
} }
return reject(result); return reject(result);
}); });
scanner.start();
});
}); });
} }
}; };
@ -87,12 +97,25 @@ function fromImage(config, imageSrc, imageConfig) {
} */ } */
let defaultScanner = createScanner(); let defaultScanner = createScanner();
export default {
withConfig: function(config) { function setConfig(configuration = {}, key, config = {}) {
var mergedConfig = merge({}, configuration, {[key]: config});
return createApi(mergedConfig);
}
function createApi(configuration = Config) {
return { return {
fromImage: fromImage.bind(this, config) fromImage(src, conf) {
//fromVideo: fromVideo.bind(this, config) return fromImage(configuration, src, conf);
}; },
decoder(conf) {
return setConfig(configuration, "decoder", conf);
},
locator(conf) {
return setConfig(configuration, "locator", conf);
},
config(conf) {
return createApi(merge({}, configuration, conf));
}, },
init: function(config, cb, imageWrapper) { init: function(config, cb, imageWrapper) {
defaultScanner.init(config, cb, imageWrapper); defaultScanner.init(config, cb, imageWrapper);
@ -128,4 +151,6 @@ export default {
ImageDebug: ImageDebug, ImageDebug: ImageDebug,
ResultCollector: ResultCollector, ResultCollector: ResultCollector,
canvas: defaultScanner.canvas canvas: defaultScanner.canvas
}; };
}
export default createApi();

@ -515,18 +515,6 @@ function createScanner() {
} }
}, },
decodeSingle: function(config, resultCallback) { decodeSingle: function(config, resultCallback) {
config = merge({
inputStream: {
type: "ImageStream",
sequence: false,
size: 800,
src: config.src
},
numOfWorkers: (ENV.development && config.debug) ? 0 : 1,
locator: {
halfSample: false
}
}, config);
this.init(config, () => { this.init(config, () => {
Events.once("processed", (result) => { Events.once("processed", (result) => {
this.stop(); this.stop();

Loading…
Cancel
Save