File: js/main.js

Recommend this page to a friend!
  Classes of Andras Toth   WebCodeCam   js/main.js   Download  
File: js/main.js
Role: Example script
Content type: text/plain
Description: Example script
Class: WebCodeCam
Barcode and qr code scanner jQuery plugin
Author: By
Last change: Version 1.0.0

- add callback for errors (issues 07)
- add camreaStopAll function for stop all streams (pull req. Camera stop
all #3)
- refactor variables
- some invisible modification
Date: 2 years ago
Size: 5,296 bytes
 

Contents

Class file image Download
(function(window) { 'use strict'; var decoder = $('#qr-canvas'), sl = $('.scanner-laser'), pl = $('#play'), si = $('#scanned-img'), sQ = $('#scanned-QR'), sv = $('#save'), sp = $('#stop'), spAll = $('#stopAll'), co = $('#contrast'), cov = $('#contrast-value'), zo = $('#zoom'), zov = $('#zoom-value'), br = $('#brightness'), brv = $('#brightness-value'), tr = $('#threshold'), trv = $('#threshold-value'), sh = $('#sharpness'), shv = $('#sharpness-value'), gr = $('#grayscale'), grv = $('#grayscale-value'); $('[data-toggle="tooltip"]').tooltip(); sl.css('opacity', .5); pl.click(function() { if (typeof decoder.data().plugin_WebCodeCam == "undefined") { decoder.WebCodeCam({ videoSource: { id: $('select#cameraId').val(), maxWidth: 640, maxHeight: 480 }, autoBrightnessValue: 120, resultFunction: function(text, imgSrc) { si.attr('src', imgSrc); sQ.text(text); sl.fadeOut(150, function() { sl.fadeIn(150); }); }, getUserMediaError: function() { alert('Sorry, the browser you are using doesn\'t support getUserMedia'); }, cameraError: function(error) { var p, message = 'Error detected with the following parameters:\n'; for (p in error) { message += p + ': ' + error[p] + '\n'; } alert(message); } }); sQ.text('Scanning ...'); sv.removeClass('disabled'); sp.click(function(event) { sv.addClass('disabled'); sQ.text('Stopped'); decoder.data().plugin_WebCodeCam.cameraStop(); }); spAll.click(function(event) { sv.addClass('disabled'); sQ.text('Stopped'); decoder.data().plugin_WebCodeCam.cameraStopAll(); }); } else { sv.removeClass('disabled'); sQ.text('Scanning ...'); decoder.data().plugin_WebCodeCam.cameraPlay(); } }); sv.click(function() { if (typeof decoder.data().plugin_WebCodeCam == "undefined") return; var src = decoder.data().plugin_WebCodeCam.getLastImageSrc(); si.attr('src', src); }); Page.changeZoom = function(a) { if (typeof decoder.data().plugin_WebCodeCam == "undefined") return; var value = typeof a != 'undefined' ? parseFloat(a.toPrecision(2)) : zo.val() / 10; zov.text(zov.text().split(':')[0] + ': ' + value.toString()); decoder.data().plugin_WebCodeCam.options.zoom = parseFloat(value); if (typeof a != 'undefined') zo.val(a * 10); } Page.changeContrast = function() { if (typeof decoder.data().plugin_WebCodeCam == "undefined") return; var value = co.val(); cov.text(cov.text().split(':')[0] + ': ' + value.toString()); decoder.data().plugin_WebCodeCam.options.contrast = parseFloat(value); } Page.changeBrightness = function() { if (typeof decoder.data().plugin_WebCodeCam == "undefined") return; var value = br.val(); brv.text(brv.text().split(':')[0] + ': ' + value.toString()); decoder.data().plugin_WebCodeCam.options.brightness = parseFloat(value); } Page.changeThreshold = function() { if (typeof decoder.data().plugin_WebCodeCam == "undefined") return; var value = tr.val(); trv.text(trv.text().split(':')[0] + ': ' + value.toString()); decoder.data().plugin_WebCodeCam.options.threshold = parseFloat(value); } Page.changeSharpness = function() { if (typeof decoder.data().plugin_WebCodeCam == "undefined") return; var value = sh.prop('checked'); if (value) { shv.text(shv.text().split(':')[0] + ': on'); decoder.data().plugin_WebCodeCam.options.sharpness = [0, -1, 0, -1, 5, -1, 0, -1, 0]; } else { shv.text(shv.text().split(':')[0] + ': off'); decoder.data().plugin_WebCodeCam.options.sharpness = []; } } Page.changeGrayscale = function() { if (typeof decoder.data().plugin_WebCodeCam == "undefined") return; var value = gr.prop('checked'); if (value) { grv.text(grv.text().split(':')[0] + ': on'); decoder.data().plugin_WebCodeCam.options.grayScale = true; } else { grv.text(grv.text().split(':')[0] + ': off'); decoder.data().plugin_WebCodeCam.options.grayScale = false; } } var getZomm = setInterval(function() { var a; try { a = decoder.data().plugin_WebCodeCam.optimalZoom(); } catch (e) { a = 0; } if (a != 0) { Page.changeZoom(a); clearInterval(getZomm); } }, 500); function gotSources(sourceInfos) { for (var i = 0; i !== sourceInfos.length; ++i) { var sourceInfo = sourceInfos[i]; var option = document.createElement('option'); option.value = sourceInfo.id; if (sourceInfo.kind === 'video') { var face = sourceInfo.facing == '' ? 'unknown' : sourceInfo.facing; option.text = sourceInfo.label || 'camera ' + (videoSelect.length + 1) + ' (facing: ' + face + ')'; videoSelect.appendChild(option); } } } if (typeof MediaStreamTrack.getSources !== 'undefined') { var videoSelect = document.querySelector('select#cameraId'); $(videoSelect).change(function(event) { if (typeof decoder.data().plugin_WebCodeCam !== "undefined") { decoder.data().plugin_WebCodeCam.options.videoSource.id = $(this).val(); decoder.data().plugin_WebCodeCam.cameraStop(); decoder.data().plugin_WebCodeCam.cameraPlay(false); } }); MediaStreamTrack.getSources(gotSources); } else { document.querySelector('select#cameraId').remove(); } }).call(window.Page = window.Page || {});