]>
git.immae.eu Git - github/shaarli/Shaarli.git/blob - inc/qr.min.js
1 // [qr.js](http://neocotic.com/qr.js) 1.0.3
2 // (c) 2011 Alasdair Mercer
3 // Freely distributable under the MIT license.
5 // (c) 2010 tz@execpc.com
6 // Licensed under the GPL Version 3 license.
7 // For all details and documentation:
8 // http://neocotic.com/qr.js
9 (function(a
){function Q(a
){var c
,h
,i
,j
,k
,m
,n
,u
;k
=a
.length
;C
=0;do{C
++;i
=(r
-1)*4+(C
-1)*16;z
=d
[i
++];A
=d
[i
++];o
=d
[i
++];p
=d
[i
];i
=o
*(z
+A
)+A
-3+(C
<=9);if(k
<=i
)break}while(C
<40);D
=17+4*C
;m
=o
+(o
+p
)*(z
+A
)+A
;for(k
=0;k
<m
;k
++)q
[k
]=0;B
=a
.slice(0);for(k
=0;k
<D
*D
;k
++)s
[k
]=0;for(k
=0;k
<(D
*(D
+1)+1)/2;k
++)t
[k
]=0;for(k
=0;k
<3;k
++){i
=0;u
=0;if(k
===1)i
=D
-7;if(k
===2)u
=D
-7;s
[u
+3+D
*(i
+3)]=1;for(n
=0;n
<6;n
++){s
[u
+n
+D
*i
]=1;s
[u
+D
*(i
+n
+1)]=1;s
[u
+6+D
*(i
+n
)]=1;s
[u
+n
+1+D
*(i
+6)]=1}for(n
=1;n
<5;n
++){I(u
+n
,i
+1);I(u
+1,i
+n
+1);I(u
+5,i
+n
);I(u
+n
+1,i
+5)}for(n
=2;n
<4;n
++){s
[u
+n
+D
*(i
+2)]=1;s
[u
+2+D
*(i
+n
+1)]=1;s
[u
+4+D
*(i
+n
)]=1;s
[u
+n
+1+D
*(i
+4)]=1}}if(C
>1){k
=b
[C
];u
=D
-7;for(;;){n
=D
-7;while(n
>k
-3){J(n
,u
);if(n
<k
)break;n
-=k
}if(u
<=k
+9)break;u
-=k
;J(6,u
);J(u
,6)}}s
[8+D
*(D
-8)]=1;for(u
=0;u
<7;u
++){I(7,u
);I(D
-8,u
);I(7,u
+D
-7)}for(n
=0;n
<8;n
++){I(n
,7);I(n
+D
-8,7);I(n
,D
-8)}for(n
=0;n
<9;n
++)I(n
,8);for(n
=0;n
<8;n
++){I(n
+D
-8,8);I(8,n
)}for(u
=0;u
<7;u
++)I(8,u
+D
-7);for(n
=0;n
<D
-14;n
++){if(n
&1){I(8+n
,6);I(6,8+n
)}else{s
[8+n
+D
*6]=1;s
[6+D
*(8+n
)]=1}}if(C
>6){k
=l
[C
-7];i
=17;for(n
=0;n
<6;n
++){for(u
=0;u
<3;u
++,i
--){if(1&(i
>11?C
>>i
-12:k
>>i
)){s
[5-n
+D
*(2-u
+D
-11)]=1;s
[2-u
+D
-11+D
*(5-n
)]=1}else{I(5-n
,2-u
+D
-11);I(2-u
+D
-11,5-n
)}}}}for(u
=0;u
<D
;u
++){for(n
=0;n
<=u
;n
++){if(s
[n
+D
*u
])I(n
,u
)}}m
=B
.length
;for(c
=0;c
<m
;c
++)q
[c
]=B
.charCodeAt(c
);B
=q
.slice(0);n
=o
*(z
+A
)+A
;if(m
>=n
-2){m
=n
-2;if(C
>9)m
--}c
=m
;if(C
>9){B
[c
+2]=0;B
[c
+3]=0;while(c
--){k
=B
[c
];B
[c
+3]|=255&k
<<4;B
[c
+2]=k
>>4}B
[2]|=255&m
<<4;B
[1]=m
>>4;B
[0]=64|m
>>12}else{B
[c
+1]=0;B
[c
+2]=0;while(c
--){k
=B
[c
];B
[c
+2]|=255&k
<<4;B
[c
+1]=k
>>4}B
[1]|=255&m
<<4;B
[0]=64|m
>>4}c
=m
+3-(C
<10);while(c
<n
){B
[c
++]=236;B
[c
++]=17}x
[0]=1;for(c
=0;c
<p
;c
++){x
[c
+1]=1;for(h
=c
;h
>0;h
--){x
[h
]=x
[h
]?x
[h
-1]^f
[K(g
[x
[h
]]+c
)]:x
[h
-1]}x
[0]=f
[K(g
[x
[0]]+c
)]}for(c
=0;c
<=p
;c
++)x
[c
]=g
[x
[c
]];i
=n
;u
=0;for(c
=0;c
<z
;c
++){L(u
,o
,i
,p
);u
+=o
;i
+=p
}for(c
=0;c
<A
;c
++){L(u
,o
+1,i
,p
);u
+=o
+1;i
+=p
}u
=0;for(c
=0;c
<o
;c
++){for(h
=0;h
<z
;h
++){q
[u
++]=B
[c
+h
*o
]}for(h
=0;h
<A
;h
++){q
[u
++]=B
[z
*o
+c
+h
*(o
+1)]}}for(h
=0;h
<A
;h
++){q
[u
++]=B
[z
*o
+c
+h
*(o
+1)]}for(c
=0;c
<p
;c
++){for(h
=0;h
<z
+A
;h
++){q
[u
++]=B
[n
+c
+h
*p
]}}B
=q
;n
=u
=D
-1;i
=m
=1;j
=(o
+p
)*(z
+A
)+A
;for(c
=0;c
<j
;c
++){k
=B
[c
];for(h
=0;h
<8;h
++,k
<<=1){if(128&k
)s
[n
+D
*u
]=1;do{if(m
){n
--}else{n
++;if(i
){if(u
!==0){u
--}else{n
-=2;i
=!i
;if(n
===6){n
--;u
=9}}}else{if(u
!==D
-1){u
++}else{n
-=2;i
=!i
;if(n
===6){n
--;u
-=8}}}}m
=!m
}while(M(n
,u
))}}B
=s
.slice(0);k
=0;u
=3e4
;for(i
=0;i
<8;i
++){N(i
);n
=P();if(n
<u
){u
=n
;k
=i
}if(k
===7)break;s
=B
.slice(0)}if(k
!==i
)N(k
);u
=e
[k
+(r
-1<<3)];for(i
=0;i
<8;i
++,u
>>=1){if(u
&1){s
[D
-1-i
+D
*8]=1;if(i
<6){s
[8+D
*i
]=1}else{s
[8+D
*(i
+1)]=1}}}for(i
=0;i
<7;i
++,u
>>=1){if(u
&1){s
[8+D
*(D
-7+i
)]=1;if(i
){s
[6-i
+D
*8]=1}else{s
[7+D
*8]=1}}}return s
}function P(){var a
,b
,c
,d
,e
,f
,g
=0,h
=0,j
=0;for(f
=0;f
<D
-1;f
++){for(e
=0;e
<D
-1;e
++){if(s
[e
+D
*f
]&&s
[e
+1+D
*f
]&&s
[e
+D
*(f
+1)]&&s
[e
+1+D
*(f
+1)]||!(s
[e
+D
*f
]||s
[e
+1+D
*f
]||s
[e
+D
*(f
+1)]||s
[e
+1+D
*(f
+1)])){g
+=i
}}}for(f
=0;f
<D
;f
++){m
[0]=0;for(d
=a
=e
=0;e
<D
;e
++){if((b
=s
[e
+D
*f
])===a
){m
[d
]++}else{m
[++d
]=1}a
=b
;h
+=a
?1:-1}g
+=O(d
)}if(h
<0)h
=-h
;c
=h
;c
+=c
<<2;c
<<=1;while(c
>D
*D
){c
-=D
*D
;j
++}g
+=j
*k
;for(e
=0;e
<D
;e
++){m
[0]=0;for(d
=a
=f
=0;f
<D
;f
++){if((b
=s
[e
+D
*f
])===a
){m
[d
]++}else{m
[++d
]=1}a
=b
}g
+=O(d
)}return g
}function O(a
){var b
=0,c
;for(c
=0;c
<=a
;c
++){if(m
[c
]>=5)b
+=h
+m
[c
]-5}for(c
=3;c
<a
-1;c
+=2){if(m
[c
-2]===m
[c
+2]&&m
[c
+2]===m
[c
-1]&&m
[c
-1]===m
[c
+1]&&m
[c
-1]*3===m
[c
]&&(m
[c
-3]===0||c
+3>a
||m
[c
-3]*3>=m
[c
]*4||m
[c
+3]*3>=m
[c
]*4)){b
+=j
}}return b
}function N(a
){var b
,c
,d
,e
;switch(a
){case 0:for(c
=0;c
<D
;c
++){for(b
=0;b
<D
;b
++){if(!(b
+c
&1)&&!M(b
,c
)){s
[b
+c
*D
]^=1}}}break;case 1:for(c
=0;c
<D
;c
++){for(b
=0;b
<D
;b
++){if(!(c
&1)&&!M(b
,c
))s
[b
+c
*D
]^=1}}break;case 2:for(c
=0;c
<D
;c
++){for(d
=0,b
=0;b
<D
;b
++,d
++){if(d
===3)d
=0;if(!d
&&!M(b
,c
))s
[b
+c
*D
]^=1}}break;case 3:for(e
=0,c
=0;c
<D
;c
++,e
++){if(e
===3)e
=0;for(d
=e
,b
=0;b
<D
;b
++,d
++){if(d
===3)d
=0;if(!d
&&!M(b
,c
))s
[b
+c
*D
]^=1}}break;case 4:for(c
=0;c
<D
;c
++){for(d
=0,e
=c
>>1&1,b
=0;b
<D
;b
++,d
++){if(d
===3){d
=0;e
=!e
}if(!e
&&!M(b
,c
))s
[b
+c
*D
]^=1}}break;case 5:for(e
=0,c
=0;c
<D
;c
++,e
++){if(e
===3)e
=0;for(d
=0,b
=0;b
<D
;b
++,d
++){if(d
===3)d
=0;if(!((b
&c
&1)+!(!d
|!e
))&&!M(b
,c
)){s
[b
+c
*D
]^=1}}}break;case 6:for(e
=0,c
=0;c
<D
;c
++,e
++){if(e
===3)e
=0;for(d
=0,b
=0;b
<D
;b
++,d
++){if(d
===3)d
=0;if(!((b
&c
&1)+(d
&&d
===e
)&1)&&!M(b
,c
)){s
[b
+c
*D
]^=1}}}break;case 7:for(e
=0,c
=0;c
<D
;c
++,e
++){if(e
===3)e
=0;for(d
=0,b
=0;b
<D
;b
++,d
++){if(d
===3)d
=0;if(!((d
&&d
===e
)+(b
+c
&1)&1)&&!M(b
,c
)){s
[b
+c
*D
]^=1}}}break}}function M(a
,b
){var c
;if(a
>b
){c
=a
;a
=b
;b
=c
}c
=b
;c
+=b
*b
;c
>>=1;c
+=a
;return t
[c
]}function L(a
,b
,c
,d
){var e
,h
,i
;for(h
=0;h
<d
;h
++)B
[c
+h
]=0;for(h
=0;h
<b
;h
++){e
=g
[B
[a
+h
]^B
[c
]];if(e
!==255){for(i
=1;i
<d
;i
++){B
[c
+i
-1]=B
[c
+i
]^f
[K(e
+x
[d
-i
])]}}else{for(i
=c
;i
<c
+d
;i
++){B
[i
]=B
[i
+1]}}B
[c
+d
-1]=e
===255?0:f
[K(e
+x
[0])]}}function K(a
){while(a
>=255){a
-=255;a
=(a
>>8)+(a
&255)}return a
}function J(a
,b
){var c
;s
[a
+D
*b
]=1;for(c
=-2;c
<2;c
++){s
[a
+c
+D
*(b
-2)]=1;s
[a
-2+D
*(b
+c
+1)]=1;s
[a
+2+D
*(b
+c
)]=1;s
[a
+c
+1+D
*(b
+2)]=1}for(c
=0;c
<2;c
++){I(a
-1,b
+c
);I(a
+1,b
-c
);I(a
-c
,b
-1);I(a
+c
,b
+1)}}function I(a
,b
){var c
;if(a
>b
){c
=a
;a
=b
;b
=c
}c
=b
;c
*=b
;c
+=b
;c
>>=1;c
+=a
;t
[c
]=1}function H(a
,b
,c
){try{var d
=a
.apply(c
||this);if(typeof b
==="function")return b(null,d
);return d
}catch(e
){if(typeof b
==="function")return b(e
);throw e
}}function G(){for(var a
=arguments
.length
;a
>=0;--a
){if(typeof arguments
[a
]==="function")return arguments
[a
]}}function F(){return w
?new v:a
.document
.createElement("img")}function E(){return w
?new n:a
.document
.createElement("canvas")}var b
=[0,11,15,19,23,27,31,16,18,20,22,24,26,28,20,22,24,24,26,28,28,22,24,24,26,26,28,28,24,24,26,26,26,28,28,24,26,26,26,28,28],c
="image/octet-stream",d
=[1,0,19,7,1,0,16,10,1,0,13,13,1,0,9,17,1,0,34,10,1,0,28,16,1,0,22,22,1,0,16,28,1,0,55,15,1,0,44,26,2,0,17,18,2,0,13,22,1,0,80,20,2,0,32,18,2,0,24,26,4,0,9,16,1,0,108,26,2,0,43,24,2,2,15,18,2,2,11,22,2,0,68,18,4,0,27,16,4,0,19,24,4,0,15,28,2,0,78,20,4,0,31,18,2,4,14,18,4,1,13,26,2,0,97,24,2,2,38,22,4,2,18,22,4,2,14,26,2,0,116,30,3,2,36,22,4,4,16,20,4,4,12,24,2,2,68,18,4,1,43,26,6,2,19,24,6,2,15,28,4,0,81,20,1,4,50,30,4,4,22,28,3,8,12,24,2,2,92,24,6,2,36,22,4,6,20,26,7,4,14,28,4,0,107,26,8,1,37,22,8,4,20,24,12,4,11,22,3,1,115,30,4,5,40,24,11,5,16,20,11,5,12,24,5,1,87,22,5,5,41,24,5,7,24,30,11,7,12,24,5,1,98,24,7,3,45,28,15,2,19,24,3,13,15,30,1,5,107,28,10,1,46,28,1,15,22,28,2,17,14,28,5,1,120,30,9,4,43,26,17,1,22,28,2,19,14,28,3,4,113,28,3,11,44,26,17,4,21,26,9,16,13,26,3,5,107,28,3,13,41,26,15,5,24,30,15,10,15,28,4,4,116,28,17,0,42,26,17,6,22,28,19,6,16,30,2,7,111,28,17,0,46,28,7,16,24,30,34,0,13,24,4,5,121,30,4,14,47,28,11,14,24,30,16,14,15,30,6,4,117,30,6,14,45,28,11,16,24,30,30,2,16,30,8,4,106,26,8,13,47,28,7,22,24,30,22,13,15,30,10,2,114,28,19,4,46,28,28,6,22,28,33,4,16,30,8,4,122,30,22,3,45,28,8,26,23,30,12,28,15,30,3,10,117,30,3,23,45,28,4,31,24,30,11,31,15,30,7,7,116,30,21,7,45,28,1,37,23,30,19,26,15,30,5,10,115,30,19,10,47,28,15,25,24,30,23,25,15,30,13,3,115,30,2,29,46,28,42,1,24,30,23,28,15,30,17,0,115,30,10,23,46,28,10,35,24,30,19,35,15,30,17,1,115,30,14,21,46,28,29,19,24,30,11,46,15,30,13,6,115,30,14,23,46,28,44,7,24,30,59,1,16,30,12,7,121,30,12,26,47,28,39,14,24,30,22,41,15,30,6,14,121,30,6,34,47,28,46,10,24,30,2,64,15,30,17,4,122,30,29,14,46,28,49,10,24,30,24,46,15,30,4,18,122,30,13,32,46,28,48,14,24,30,42,32,15,30,20,4,117,30,40,7,47,28,43,22,24,30,10,67,15,30,19,6,118,30,18,31,47,28,34,34,24,30,20,61,15,30],e
=[30660,29427,32170,30877,26159,25368,27713,26998,21522,20773,24188,23371,17913,16590,20375,19104,13663,12392,16177,14854,9396,8579,11994,11245,5769,5054,7399,6608,1890,597,3340,2107],f
=[1,2,4,8,16,32,64,128,29,58,116,232,205,135,19,38,76,152,45,90,180,117,234,201,143,3,6,12,24,48,96,192,157,39,78,156,37,74,148,53,106,212,181,119,238,193,159,35,70,140,5,10,20,40,80,160,93,186,105,210,185,111,222,161,95,190,97,194,153,47,94,188,101,202,137,15,30,60,120,240,253,231,211,187,107,214,177,127,254,225,223,163,91,182,113,226,217,175,67,134,17,34,68,136,13,26,52,104,208,189,103,206,129,31,62,124,248,237,199,147,59,118,236,197,151,51,102,204,133,23,46,92,184,109,218,169,79,158,33,66,132,21,42,84,168,77,154,41,82,164,85,170,73,146,57,114,228,213,183,115,230,209,191,99,198,145,63,126,252,229,215,179,123,246,241,255,227,219,171,75,150,49,98,196,149,55,110,220,165,87,174,65,130,25,50,100,200,141,7,14,28,56,112,224,221,167,83,166,81,162,89,178,121,242,249,239,195,155,43,86,172,69,138,9,18,36,72,144,61,122,244,245,247,243,251,235,203,139,11,22,44,88,176,125,250,233,207,131,27,54,108,216,173,71,142,0],g
=[255,0,1,25,2,50,26,198,3,223,51,238,27,104,199,75,4,100,224,14,52,141,239,129,28,193,105,248,200,8,76,113,5,138,101,47,225,36,15,33,53,147,142,218,240,18,130,69,29,181,194,125,106,39,249,185,201,154,9,120,77,228,114,166,6,191,139,98,102,221,48,253,226,152,37,179,16,145,34,136,54,208,148,206,143,150,219,189,241,210,19,92,131,56,70,64,30,66,182,163,195,72,126,110,107,58,40,84,250,133,186,61,202,94,155,159,10,21,121,43,78,212,229,172,115,243,167,87,7,112,192,247,140,128,99,13,103,74,222,237,49,197,254,24,227,165,153,119,38,184,180,124,17,68,146,217,35,32,137,46,55,63,209,91,149,188,207,205,144,135,151,178,220,252,190,97,242,86,211,171,20,42,93,158,132,60,57,83,71,109,65,162,31,45,67,216,183,123,164,118,196,23,73,236,127,12,111,246,108,161,59,82,41,157,85,170,251,96,134,177,187,204,62,90,203,89,95,176,156,169,160,81,11,245,22,235,122,117,44,215,79,174,213,233,230,231,173,232,116,214,244,234,168,80,88,175],h
=3,i
=3,j
=40,k
=10,l
=[3220,1468,2713,1235,3062,1890,2119,1549,2344,2936,1117,2583,1330,2470,1667,2249,2028,3780,481,4011,142,3098,831,3445,592,2517,1776,2234,1951,2827,1070,2660,1345,3177];var m
=[],n
,o
,p
,q
=[],r
=1,s
=[],t
=[],u
,v
,w
=false,x
=[],y
=a
.qr
,z
,A
,B
=[],C
,D
;var R
={VERSION:"1.0.3",canvas:function(a
,b
){b
=G(a
,b
);return H(function c(){switch(typeof a
){case"object":break;case"string":a
={value:a
};break;default:a
={};break}var b
,c
,d
,e
,f
,g
,h
=4,i
=25;if(a
.size
>=1&&a
.size
<=10)h
=a
.size
;h
*=i
;b
=a
.canvas
||E();c
=b
.getContext("2d");c
.canvas
.width
=h
;c
.canvas
.height
=h
;c
.fillStyle
=a
.background
||"#fff";c
.fillRect(0,0,h
,h
);if(a
.level
){switch(a
.level
.toUpperCase()){case"L":r
=1;break;case"M":r
=2;break;case"Q":r
=3;break;case"H":r
=4;break}}g
=Q(a
.value
||"");c
.lineWidth
=1;f
=h
;f
/=D
;f
=Math
.round(f
-.5);c
.clearRect(0,0,h
,h
);c
.fillStyle
=a
.background
||"#fff";c
.fillRect(0,0,f
*(D
+8),f
*(D
+8));c
.fillStyle
=a
.foreground
||"#000";for(d
=0;d
<D
;d
++){for(e
=0;e
<D
;e
++){if(g
[e
*D
+d
])c
.fillRect(f
*d
,f
*e
,f
,f
)}}return b
},b
,this)},image:function(a
,b
){b
=G(a
,b
);return H(function c(){switch(typeof a
){case"object":break;case"string":a
={value:a
};break;default:a
={};break}var b
=this.canvas(a
),c
=a
.image
||F();c
.src
=b
.toDataURL();c
.height
=b
.height
;c
.width
=b
.width
;return c
},b
,this)},save:function(b
,d
,e
){e
=G(b
,d
,e
);return H(function f(){switch(typeof b
){case"object":if(typeof d
==="string"&&!b
.path
)b
.path
=d
;break;case"string":b
={value:b
};if(typeof d
==="string")b
.path
=d
;break;default:b
={};break}var e
=this.canvas(b
);if(w
){if(typeof b
.path
!=="string"){throw new TypeError("Invalid path type: "+typeof b
.path
)}var f
,g
,h
=function i(){u
.write(f
,g
,0,g
.length
,0,function a(a
){u
.close(f
);if(a
)throw a
})};e
.toBuffer(function j(a
,b
){if(a
)throw a
;g
=b
;if(f
)h()});u
.open(b
.path
,"w",438,function k(a
,b
){if(a
)throw a
;f
=b
;if(g
)h()})}else{a
.location
.href
=e
.toDataURL().replace("image/png",c
)}},e
,this)},toDataURL:function(a
,b
){b
=G(a
,b
);return H(function c(){return this.canvas(a
).toDataURL()},b
,this)},noConflict:function(b
){return H(function c(){a
.qr
=y
;return this},b
,this)}};if(typeof exports
!=="undefined"){w
=true;if(typeof module
!=="undefined"&&module
.exports
){exports
=module
.exports
=R
}exports
.qr
=R
;n
=require("canvas");v
=n
.Image
;u
=require("fs")}else if(typeof define
==="function"&&define
.amd
){define("qr",function S(){return R
})}else{if(!a
.HTMLCanvasElement
){R
.canvas=function(){};R
.image=function(){};R
.save=function(){};R
.toDataURL=function(){}}a
.qr
=R
}})(this)