f2e-server
Version:
a nodejs based file-system-server with easy-template-engine and several F2E-utils
44 lines (37 loc) • 15.5 kB
JavaScript
;
(function(a,b){if(typeof define==="function"&&define.amd){define(b)}else{a.QRCode=b()}}(this,function(e,h,b){function c(i){this.mode=m.MODE_8BIT_BYTE;this.data=i}c.prototype={getLength:function(i){return this.data.length},write:function(p){for(var q=0;q<this.data.length;q++){p.put(this.data.charCodeAt(q),8)}}};function d(p,i){this.typeNumber=p;this.errorCorrectLevel=i;this.modules=null;this.moduleCount=0;this.dataCache=null;this.dataList=new Array()}d.prototype={addData:function(p){var i=new c(p);this.dataList.push(i);this.dataCache=null},isDark:function(p,i){if(p<0||this.moduleCount<=p||i<0||this.moduleCount<=i){throw new Error(p+","+i)}return this.modules[p][i]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var u=1;for(u=1;u<40;u++){var q=f.getRSBlocks(u,this.errorCorrectLevel);var p=new n();var s=0;for(var r=0;r<q.length;r++){s+=q[r].dataCount}for(var r=0;r<this.dataList.length;r++){var t=this.dataList[r];p.put(t.mode,4);p.put(t.getLength(),k.getLengthInBits(t.mode,u));t.write(p)}if(p.getLengthInBits()<=s*8){break}}this.typeNumber=u}this.makeImpl(false,this.getBestMaskPattern())},makeImpl:function(r,q){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var p=0;p<this.moduleCount;p++){this.modules[p]=new Array(this.moduleCount);for(var i=0;i<this.moduleCount;i++){this.modules[p][i]=null}}this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(r,q);if(this.typeNumber>=7){this.setupTypeNumber(r)}if(this.dataCache==null){this.dataCache=d.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)}this.mapData(this.dataCache,q)},setupPositionProbePattern:function(q,i){for(var p=-1;p<=7;p++){if(q+p<=-1||this.moduleCount<=q+p){continue}for(var s=-1;s<=7;s++){if(i+s<=-1||this.moduleCount<=i+s){continue}if((0<=p&&p<=6&&(s==0||s==6))||(0<=s&&s<=6&&(p==0||p==6))||(2<=p&&p<=4&&2<=s&&s<=4)){this.modules[q+p][i+s]=true}else{this.modules[q+p][i+s]=false}}}},getBestMaskPattern:function(){var s=0;var r=0;for(var q=0;q<8;q++){this.makeImpl(true,q);var p=k.getLostPoint(this);if(q==0||s>p){s=p;r=q}}return r},createMovieClip:function(s,i,q){var w=s.createEmptyMovieClip(i,q);var r=1;this.make();for(var z=0;z<this.modules.length;z++){var u=z*r;for(var p=0;p<this.modules[z].length;p++){var v=p*r;var t=this.modules[z][p];if(t){w.beginFill(0,100);w.moveTo(v,u);w.lineTo(v+r,u);w.lineTo(v+r,u+r);w.lineTo(v,u+r);w.endFill()}}}return w},setupTimingPattern:function(){for(var i=8;i<this.moduleCount-8;i++){if(this.modules[i][6]!=null){continue}this.modules[i][6]=(i%2==0)}for(var p=8;p<this.moduleCount-8;p++){if(this.modules[6][p]!=null){continue}this.modules[6][p]=(p%2==0)}},setupPositionAdjustPattern:function(){var w=k.getPatternPosition(this.typeNumber);for(var s=0;s<w.length;s++){for(var q=0;q<w.length;q++){var u=w[s];var p=w[q];if(this.modules[u][p]!=null){continue}for(var t=-2;t<=2;t++){for(var v=-2;v<=2;v++){if(t==-2||t==2||v==-2||v==2||(t==0&&v==0)){this.modules[u+t][p+v]=true}else{this.modules[u+t][p+v]=false}}}}}},setupTypeNumber:function(s){var r=k.getBCHTypeNumber(this.typeNumber);for(var q=0;q<18;q++){var p=(!s&&((r>>q)&1)==1);this.modules[Math.floor(q/3)][q%3+this.moduleCount-8-3]=p}for(var q=0;q<18;q++){var p=(!s&&((r>>q)&1)==1);this.modules[q%3+this.moduleCount-8-3][Math.floor(q/3)]=p}},setupTypeInfo:function(u,t){var s=(this.errorCorrectLevel<<3)|t;var r=k.getBCHTypeInfo(s);for(var q=0;q<15;q++){var p=(!u&&((r>>q)&1)==1);if(q<6){this.modules[q][8]=p}else{if(q<8){this.modules[q+1][8]=p}else{this.modules[this.moduleCount-15+q][8]=p}}}for(var q=0;q<15;q++){var p=(!u&&((r>>q)&1)==1);if(q<8){this.modules[8][this.moduleCount-q-1]=p}else{if(q<9){this.modules[8][15-q-1+1]=p}else{this.modules[8][15-q-1]=p}}}this.modules[this.moduleCount-8][8]=(!u)},mapData:function(t,p){var r=-1;var x=this.moduleCount-1;var s=7;var i=0;for(var q=this.moduleCount-1;q>0;q-=2){if(q==6){q--}while(true){for(var v=0;v<2;v++){if(this.modules[x][q-v]==null){var u=false;if(i<t.length){u=(((t[i]>>>s)&1)==1)}var w=k.getMask(p,x,q-v);if(w){u=!u}this.modules[x][q-v]=u;s--;if(s==-1){i++;s=7}}}x+=r;if(x<0||this.moduleCount<=x){x-=r;r=-r;break}}}}};d.PAD0=236;d.PAD1=17;d.createData=function(w,v,s){var q=f.getRSBlocks(w,v);var p=new n();for(var r=0;r<s.length;r++){var u=s[r];p.put(u.mode,4);p.put(u.getLength(),k.getLengthInBits(u.mode,w));u.write(p)}var t=0;for(var r=0;r<q.length;r++){t+=q[r].dataCount}if(p.getLengthInBits()>t*8){throw new Error("code length overflow. ("+p.getLengthInBits()+">"+t*8+")")}if(p.getLengthInBits()+4<=t*8){p.put(0,4)}while(p.getLengthInBits()%8!=0){p.putBit(false)}while(true){if(p.getLengthInBits()>=t*8){break}p.put(d.PAD0,8);if(p.getLengthInBits()>=t*8){break}p.put(d.PAD1,8)}return d.createBytes(p,q)};d.createBytes=function(A,D){var s=0;var G=0;var E=0;var q=new Array(D.length);var v=new Array(D.length);for(var y=0;y<D.length;y++){var z=D[y].dataCount;var p=D[y].totalCount-z;G=Math.max(G,z);E=Math.max(E,p);q[y]=new Array(z);for(var B=0;B<q[y].length;B++){q[y][B]=255&A.buffer[B+s]}s+=z;var w=k.getErrorCorrectPolynomial(p);var F=new g(q[y],w.getLength()-1);var t=F.mod(w);v[y]=new Array(w.getLength()-1);for(var B=0;B<v[y].length;B++){var x=B+t.getLength()-v[y].length;v[y][B]=(x>=0)?t.get(x):0}}var C=0;for(var B=0;B<D.length;B++){C+=D[B].totalCount}var H=new Array(C);var u=0;for(var B=0;B<G;B++){for(var y=0;y<D.length;y++){if(B<q[y].length){H[u++]=q[y][B]}}}for(var B=0;B<E;B++){for(var y=0;y<D.length;y++){if(B<v[y].length){H[u++]=v[y][B]}}}return H};var m={MODE_NUMBER:1<<0,MODE_ALPHA_NUM:1<<1,MODE_8BIT_BYTE:1<<2,MODE_KANJI:1<<3};var l={L:1,M:0,Q:3,H:2};var a={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var k={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:(1<<10)|(1<<8)|(1<<5)|(1<<4)|(1<<2)|(1<<1)|(1<<0),G18:(1<<12)|(1<<11)|(1<<10)|(1<<9)|(1<<8)|(1<<5)|(1<<2)|(1<<0),G15_MASK:(1<<14)|(1<<12)|(1<<10)|(1<<4)|(1<<1),getBCHTypeInfo:function(i){var p=i<<10;while(k.getBCHDigit(p)-k.getBCHDigit(k.G15)>=0){p^=(k.G15<<(k.getBCHDigit(p)-k.getBCHDigit(k.G15)))}return((i<<10)|p)^k.G15_MASK},getBCHTypeNumber:function(i){var p=i<<12;while(k.getBCHDigit(p)-k.getBCHDigit(k.G18)>=0){p^=(k.G18<<(k.getBCHDigit(p)-k.getBCHDigit(k.G18)))}return(i<<12)|p},getBCHDigit:function(i){var p=0;while(i!=0){p++;i>>>=1}return p},getPatternPosition:function(i){return k.PATTERN_POSITION_TABLE[i-1]},getMask:function(r,q,p){switch(r){case a.PATTERN000:return(q+p)%2==0;case a.PATTERN001:return q%2==0;case a.PATTERN010:return p%3==0;case a.PATTERN011:return(q+p)%3==0;case a.PATTERN100:return(Math.floor(q/2)+Math.floor(p/3))%2==0;case a.PATTERN101:return(q*p)%2+(q*p)%3==0;case a.PATTERN110:return((q*p)%2+(q*p)%3)%2==0;case a.PATTERN111:return((q*p)%3+(q+p)%2)%2==0;default:throw new Error("bad maskPattern:"+r)}},getErrorCorrectPolynomial:function(q){var p=new g([1],0);for(var r=0;r<q;r++){p=p.multiply(new g([1,o.gexp(r)],0))}return p},getLengthInBits:function(p,i){if(1<=i&&i<10){switch(p){case m.MODE_NUMBER:return 10;case m.MODE_ALPHA_NUM:return 9;case m.MODE_8BIT_BYTE:return 8;case m.MODE_KANJI:return 8;default:throw new Error("mode:"+p)}}else{if(i<27){switch(p){case m.MODE_NUMBER:return 12;case m.MODE_ALPHA_NUM:return 11;case m.MODE_8BIT_BYTE:return 16;case m.MODE_KANJI:return 10;default:throw new Error("mode:"+p)}}else{if(i<41){switch(p){case m.MODE_NUMBER:return 14;case m.MODE_ALPHA_NUM:return 13;case m.MODE_8BIT_BYTE:return 16;case m.MODE_KANJI:return 12;default:throw new Error("mode:"+p)}}else{throw new Error("type:"+i)}}}},getLostPoint:function(p){var s=p.getModuleCount();var t=0;for(var A=0;A<s;A++){for(var q=0;q<s;q++){var y=0;var x=p.isDark(A,q);for(var i=-1;i<=1;i++){if(A+i<0||s<=A+i){continue}for(var w=-1;w<=1;w++){if(q+w<0||s<=q+w){continue}if(i==0&&w==0){continue}if(x==p.isDark(A+i,q+w)){y++}}}if(y>5){t+=(3+y-5)}}}for(var A=0;A<s-1;A++){for(var q=0;q<s-1;q++){var u=0;if(p.isDark(A,q)){u++}if(p.isDark(A+1,q)){u++}if(p.isDark(A,q+1)){u++}if(p.isDark(A+1,q+1)){u++}if(u==0||u==4){t+=3}}}for(var A=0;A<s;A++){for(var q=0;q<s-6;q++){if(p.isDark(A,q)&&!p.isDark(A,q+1)&&p.isDark(A,q+2)&&p.isDark(A,q+3)&&p.isDark(A,q+4)&&!p.isDark(A,q+5)&&p.isDark(A,q+6)){t+=40}}}for(var q=0;q<s;q++){for(var A=0;A<s-6;A++){if(p.isDark(A,q)&&!p.isDark(A+1,q)&&p.isDark(A+2,q)&&p.isDark(A+3,q)&&p.isDark(A+4,q)&&!p.isDark(A+5,q)&&p.isDark(A+6,q)){t+=40}}}var z=0;for(var q=0;q<s;q++){for(var A=0;A<s;A++){if(p.isDark(A,q)){z++}}}var v=Math.abs(100*z/s/s-50)/5;t+=v*10;return t}};var o={glog:function(i){if(i<1){throw new Error("glog("+i+")")}return o.LOG_TABLE[i]},gexp:function(i){while(i<0){i+=255}while(i>=256){i-=255}return o.EXP_TABLE[i]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var j=0;j<8;j++){o.EXP_TABLE[j]=1<<j}for(var j=8;j<256;j++){o.EXP_TABLE[j]=o.EXP_TABLE[j-4]^o.EXP_TABLE[j-5]^o.EXP_TABLE[j-6]^o.EXP_TABLE[j-8]}for(var j=0;j<255;j++){o.LOG_TABLE[o.EXP_TABLE[j]]=j}function g(q,p){if(q.length==undefined){throw new Error(q.length+"/"+p)}var s=0;while(s<q.length&&q[s]==0){s++}this.num=new Array(q.length-s+p);for(var r=0;r<q.length-s;r++){this.num[r]=q[r+s]}}g.prototype={get:function(i){return this.num[i]},getLength:function(){return this.num.length},multiply:function(s){var q=new Array(this.getLength()+s.getLength()-1);for(var r=0;r<this.getLength();r++){for(var p=0;p<s.getLength();p++){q[r+p]^=o.gexp(o.glog(this.get(r))+o.glog(s.get(p)))}}return new g(q,0)},mod:function(s){if(this.getLength()-s.getLength()<0){return this}var r=o.glog(this.get(0))-o.glog(s.get(0));var p=new Array(this.getLength());for(var q=0;q<this.getLength();q++){p[q]=this.get(q)}for(var q=0;q<s.getLength();q++){p[q]^=o.gexp(o.glog(s.get(q))+r)}return new g(p,0).mod(s)}};function f(i,p){this.totalCount=i;this.dataCount=p}f.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];f.getRSBlocks=function(r,x){var q=f.getRsBlockTable(r,x);if(q==undefined){throw new Error("bad rs block @ typeNumber:"+r+"/errorCorrectLevel:"+x)}var p=q.length/3;var v=new Array();for(var t=0;t<p;t++){var u=q[t*3+0];var y=q[t*3+1];var w=q[t*3+2];for(var s=0;s<u;s++){v.push(new f(y,w))}}return v};f.getRsBlockTable=function(p,i){switch(i){case l.L:return f.RS_BLOCK_TABLE[(p-1)*4+0];case l.M:return f.RS_BLOCK_TABLE[(p-1)*4+1];case l.Q:return f.RS_BLOCK_TABLE[(p-1)*4+2];case l.H:return f.RS_BLOCK_TABLE[(p-1)*4+3];default:return undefined}};function n(){this.buffer=new Array();this.length=0}n.prototype={get:function(i){var p=Math.floor(i/8);return((this.buffer[p]>>>(7-i%8))&1)==1},put:function(p,r){for(var q=0;q<r;q++){this.putBit(((p>>>(r-q-1))&1)==1)}},getLengthInBits:function(){return this.length},putBit:function(p){var i=Math.floor(this.length/8);if(this.buffer.length<=i){this.buffer.push(0)}if(p){this.buffer[i]|=(128>>>(this.length%8))}this.length++}};return d}));
(function(QRCode){
var qrcode = new QRCode(-1, 2),
c = document.getElementById("qrcode"),
h = {
width: 256,
height: 256,
typeNumber: -1,
correctLevel: 2,
background: "#ffffff",
foreground: "#000000"
};
c.width = h.width;
c.height = h.height;
var render = function(c, url){
qrcode.addData(url);
qrcode.make();
if(c.getContext){
var d = c.getContext("2d");
}
var c = qrcode.getModuleCount(),
b = h.width / c,
e = h.height / c;
for (var f = 0; f < c; f++){
for (var i = 0; i < c; i++) {
d.fillStyle = qrcode.isDark(f, i) ? h.foreground : h.background;
var g = Math.ceil((i + 1) * b) - Math.floor(i * b),
j = Math.ceil((f + 1) * b) - Math.floor(f * b);
d.fillRect(Math.round(i * b), Math.round(f * e), g, j);
}
}
};
chrome.tabs.getSelected(null, function(tab) {
render( c, tab.url );
});
})(QRCode);