// QRCODE reader Copyright 2011 Lazar Laszlo // http://www.webqr.com var gCtx = null; var gCanvas = null; var c=0; var stype=0; var gUM=false; var webkit=false; var moz=false; var v=null; var vidhtml = ''; $(function() { load(); }); function initCanvas(w,h) { gCanvas = document.getElementById("qr-canvas"); gCanvas.style.width = w + "px"; gCanvas.style.height = h + "px"; gCanvas.width = w; gCanvas.height = h; gCtx = gCanvas.getContext("2d"); gCtx.clearRect(0, 0, w, h); } function captureToCanvas() { if(stype!=1) return; if(gUM) { try{ gCtx.drawImage(v,0,0); try{ qrcode.decode(); } catch(e){ console.log(e); setTimeout(captureToCanvas, 500); }; } catch(e){ console.log(e); setTimeout(captureToCanvas, 500); }; } } function htmlEntities(str) { return String(str).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); } function isCanvasSupported(){ var elem = document.createElement('canvas'); return !!(elem.getContext && elem.getContext('2d')); } function success(stream) { if(webkit) v.src = window.webkitURL.createObjectURL(stream); else if(moz) { v.mozSrcObject = stream; v.play(); } else v.src = stream; gUM=true; setTimeout(captureToCanvas, 500); } function error(error) { gUM=false; return; } function load() { if(isCanvasSupported() && window.File && window.FileReader) { initCanvas(800, 800); setwebcam(); } } function setwebcam() { if(stype==1) { setTimeout(captureToCanvas, 500); return; } var n=navigator; document.getElementById("outdiv").innerHTML = vidhtml; v=document.getElementById("v"); if(n.getUserMedia) n.getUserMedia({video: true, audio: false}, success, error); else if(n.webkitGetUserMedia) { webkit=true; n.webkitGetUserMedia({video: true, audio: false}, success, error); } else if(n.mozGetUserMedia) { moz=true; n.mozGetUserMedia({video: true, audio: false}, success, error); } stype=1; setTimeout(captureToCanvas, 500); }