more work

This commit is contained in:
Jerome Etienne 2011-04-07 09:22:32 +02:00
parent ee9162c3bc
commit e79201608a
7 changed files with 258 additions and 7 deletions

20
MIT-LICENSE.txt Normal file
View file

@ -0,0 +1,20 @@
Copyright (c) 2011 Jerome Etienne, http://jetienne.com
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -6,7 +6,11 @@ all:
build: minify homepage_build
minify:
closurec --js src/jquery.qrcode.js --js_output_file jquery.qrcode.min.js
echo -n > /tmp/jquery.qrcode.tmp.js
head -2 src/jquery.qrcode.js >> /tmp/jquery.qrcode.tmp.js
cat src/qrcode.js >> /tmp/jquery.qrcode.tmp.js
tail -n +3 src/jquery.qrcode.js >> /tmp/jquery.qrcode.tmp.js
closurec --js /tmp/jquery.qrcode.tmp.js --js_output_file jquery.qrcode.min.js
homepage_build:
pandoc -A ~/.pandoc.header.html -s README.md -o index.html

View file

@ -1,8 +1,31 @@
# jQuery.qrcode.js
with jQuery.qrcode.js you can easily add qrcode to your webpages.
jQuery("#container").qrcode("this plugin is great")
With jQuery.qrcode.js you can easily add qrcode to your webpages.
It is standalone, no external services which go on and off, or add latency
while loading.
while loading.
Show, dont tell, here is a <a href='examples/demo.html'>demo</a>
## How to Use It
First include it in your webpage with the usual script tag
<script type="text/javascript" src="jquery.qrcode.min.js"></script>
Then create a DOM element which gonna contains the generated qrcode image. Lets say
a div
<div id="qrcode"></div>
Then you add the *qrcode* in this container by
jQuery('#qrcode').qrcode("this plugin is great");
This is it.
## Conclusion
MicroEvent.js is available on github <a href='https://github.com/jeromeetienne/jquery-qrcode'>here</a>
under <a href='https://github.com/jeromeetienne/jquery-qrcode.js/blob/master/MIT-LICENSE.txt'>MIT license</a>.
If you hit bugs, fill issues on github.
Feel free to fork, modify and have fun with it :)

23
examples/demo.html Normal file
View file

@ -0,0 +1,23 @@
<html>
<head>
<title>Demo page</title>
</head>
<body>
<p>
TODO make a nice looking pure client qrcode generator
even allow download of the image
</p>
<div id="output"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript" src="../jquery.qrcode.min.js"></script>
<script>
jQuery(function(){
jQuery('#output').qrcode("http://jetienne.com");
})
</script>
</body>
</html>

View file

@ -9,8 +9,11 @@
even allow download of the image
</p>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript" src="../src/jquery.qrcode.js"></script>
<!--<script type="text/javascript" src="../src/jquery.qrcode.js"></script>
<script type="text/javascript" src="../src/qrcode.js"></script>
-->
<script type="text/javascript" src="../jquery.qrcode.min.js"></script>
<div id="output"></div>
<script>

156
index.html Normal file
View file

@ -0,0 +1,156 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="pandoc" />
<meta name="date" content="" />
</head>
<body>
<div id="jquery.qrcode.js"
><h1
>jQuery.qrcode.js</h1
><p
>With jQuery.qrcode.js you can easily add qrcode to your webpages. It is standalone, no external services which go on and off, or add latency while loading.</p
><p
>Show, dont tell, here is a <a href='examples/demo.html'>demo</a></p
><div id="how-to-use-it"
><h2
>How to Use It</h2
><p
>First include it in your webpage with the usual script tag</p
><pre
><code
>&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.qrcode.min.js&quot;&gt;&lt;/script&gt;
</code
></pre
><p
>Then create a DOM element which gonna contains the generated qrcode image. Lets say a div</p
><pre
><code
>&lt;div id=&quot;qrcode&quot;&gt;&lt;/div&gt;
</code
></pre
><p
>Then you add the <em
>qrcode</em
> in this container by</p
><pre
><code
>jQuery('#qrcode').qrcode(&quot;this plugin is great&quot;);
</code
></pre
><p
>This is it.</p
></div
><div id="conclusion"
><h2
>Conclusion</h2
><p
>MicroEvent.js is available on github <a href='https://github.com/jeromeetienne/jquery-qrcode'>here</a> under <a href='https://github.com/jeromeetienne/microevent.js/blob/master/MIT-LICENSE.txt'>MIT license</a>. If you hit bugs, fill issues on github. Feel free to fork, modify and have fun with it :)</p
></div
></div
>
<style>
body {
margin: auto;
padding-right: 1em;
padding-left: 1em;
max-width: 44em;
border-left: 1px solid #eee;
border-right: 1px solid #eee;
font-family : Verdana, sans-serif;
font-size : 100%;
line-height : 140%;
color : #eee;
background-color : #22252a;
}
pre {
border : 1px dotted gray;
background-color : #444a50;
color : #1111111;
padding : 0.5em;
}
code {
font-family : monospace;
}
a {
text-decoration : none;
color : lightSteelBlue;
}
a:hover {
text-decoration : underline;
}
h1, h2, h3, h4, h5 { font-family: verdana;
font-weight: bold;
border-bottom: 1px dotted #eee;
color: lightSteelBlue; }
h1 {
color : #cd5;
font-size : 130%;
}
h1:nth-child(1) {
font-size : 300%;
text-align : center;
height : 1em;
}
h2 {
font-size : 110%;
}
h3 {
font-size : 95%;
}
h4 {
font-size : 90%;
font-style : italic;
}
h5 {
font-size : 90%;
font-style : italic;
}
h1.title {
font-size : 200%;
font-weight : bold;
padding-top : 0.2em;
padding-bottom : 0.2em;
text-align : left;
border : none;
}
dt code {
font-weight : bold;
}
dd p {
margin-top : 0;
}
img {
/* border-color : white;
border-style : solid;
*/}
#footer {
padding-top : 1em;
font-size : 70%;
color : gray;
text-align : center;
}
</style>
<!-- follow me on twitter -->
<a href="http://www.twitter.com/jerome_etienne">
<img style="position: absolute; bottom: 10px; right: 10px; border: 0;" src="http://twitter-badges.s3.amazonaws.com/follow_me-c.png" alt="Follow jerome_etienne on Twitter"/>
</a>
<!-- github ribbon -->
<a href="https://github.com/jeromeetienne/jquery-qrcode"><img style="position: absolute; top: 0; left: 0; border: 0;" src="https://assets0.github.com/img/ce742187c818c67d98af16f96ed21c00160c234a?repo=&url=http%3A%2F%2Fs3.amazonaws.com%2Fgithub%2Fribbons%2Fforkme_left_gray_6d6d6d.png&path=" alt="Fork me on GitHub"></a>
<!-- twitter share + facebook like -->
<div style="position: absolute; top: 10px; right: 10px; border: 0;">
<a href="http://twitter.com/share" class="twitter-share-button" data-count="none" data-via="jerome_etienne">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</div>
</body>
</html>

22
jquery.qrcode.min.js vendored Normal file
View file

@ -0,0 +1,22 @@
(function(v){v.fn.qrcode=function(o){function w(a){this.mode=n.MODE_8BIT_BYTE;this.data=a}function p(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=0;this.dataCache=null;this.dataList=[]}function t(a,c){if(a.length==undefined)throw Error(a.length+"/"+c);for(var d=0;d<a.length&&a[d]==0;)d++;this.num=Array(a.length-d+c);for(var b=0;b<a.length-d;b++)this.num[b]=a[b+d]}function q(a,c){this.totalCount=a;this.dataCount=c}function x(){this.buffer=[];this.length=0}w.prototype=
{getLength:function(){return this.data.length},write:function(a){for(var c=0;c<this.data.length;c++)a.put(this.data.charCodeAt(c),8)}};p.prototype={addData:function(a){this.dataList.push(new w(a));this.dataCache=null},isDark:function(a,c){if(a<0||this.moduleCount<=a||c<0||this.moduleCount<=c)throw Error(a+","+c);return this.modules[a][c]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(false,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=this.typeNumber*
4+17;this.modules=Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=Array(this.moduleCount);for(var b=0;b<this.moduleCount;b++)this.modules[d][b]=null}this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(a,c);this.typeNumber>=7&&this.setupTypeNumber(a);if(this.dataCache==null)this.dataCache=p.createData(this.typeNumber,
this.errorCorrectLevel,this.dataList);this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,c){for(var d=-1;d<=7;d++)if(!(a+d<=-1||this.moduleCount<=a+d))for(var b=-1;b<=7;b++)c+b<=-1||this.moduleCount<=c+b||(this.modules[a+d][c+b]=0<=d&&d<=6&&(b==0||b==6)||0<=b&&b<=6&&(d==0||d==6)||2<=d&&d<=4&&2<=b&&b<=4?true:false)},getBestMaskPattern:function(){for(var a=0,c=0,d=0;d<8;d++){this.makeImpl(true,d);var b=k.getLostPoint(this);if(d==0||a>b){a=b;c=d}}return c},createMovieClip:function(a,
c,d){a=a.createEmptyMovieClip(c,d);this.make();for(c=0;c<this.modules.length;c++){d=c*1;for(var b=0;b<this.modules[c].length;b++){var e=b*1;if(this.modules[c][b]){a.beginFill(0,100);a.moveTo(e,d);a.lineTo(e+1,d);a.lineTo(e+1,d+1);a.lineTo(e,d+1);a.endFill()}}}return a},setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)if(this.modules[a][6]==null)this.modules[a][6]=a%2==0;for(a=8;a<this.moduleCount-8;a++)if(this.modules[6][a]==null)this.modules[6][a]=a%2==0},setupPositionAdjustPattern:function(){for(var a=
k.getPatternPosition(this.typeNumber),c=0;c<a.length;c++)for(var d=0;d<a.length;d++){var b=a[c],e=a[d];if(this.modules[b][e]==null)for(var f=-2;f<=2;f++)for(var h=-2;h<=2;h++)this.modules[b+f][e+h]=f==-2||f==2||h==-2||h==2||f==0&&h==0?true:false}},setupTypeNumber:function(a){for(var c=k.getBCHTypeNumber(this.typeNumber),d=0;d<18;d++){var b=!a&&(c>>d&1)==1;this.modules[Math.floor(d/3)][d%3+this.moduleCount-8-3]=b}for(d=0;d<18;d++){b=!a&&(c>>d&1)==1;this.modules[d%3+this.moduleCount-8-3][Math.floor(d/
3)]=b}},setupTypeInfo:function(a,c){for(var d=k.getBCHTypeInfo(this.errorCorrectLevel<<3|c),b=0;b<15;b++){var e=!a&&(d>>b&1)==1;if(b<6)this.modules[b][8]=e;else if(b<8)this.modules[b+1][8]=e;else this.modules[this.moduleCount-15+b][8]=e}for(b=0;b<15;b++){e=!a&&(d>>b&1)==1;if(b<8)this.modules[8][this.moduleCount-b-1]=e;else if(b<9)this.modules[8][15-b-1+1]=e;else this.modules[8][15-b-1]=e}this.modules[this.moduleCount-8][8]=!a},mapData:function(a,c){for(var d=-1,b=this.moduleCount-1,e=7,f=0,h=this.moduleCount-
1;h>0;h-=2)for(h==6&&h--;;){for(var g=0;g<2;g++)if(this.modules[b][h-g]==null){var j=false;if(f<a.length)j=(a[f]>>>e&1)==1;if(k.getMask(c,b,h-g))j=!j;this.modules[b][h-g]=j;e--;if(e==-1){f++;e=7}}b+=d;if(b<0||this.moduleCount<=b){b-=d;d=-d;break}}}};p.PAD0=236;p.PAD1=17;p.createData=function(a,c,d){c=q.getRSBlocks(a,c);for(var b=new x,e=0;e<d.length;e++){var f=d[e];b.put(f.mode,4);b.put(f.getLength(),k.getLengthInBits(f.mode,a));f.write(b)}for(e=a=0;e<c.length;e++)a+=c[e].dataCount;if(b.getLengthInBits()>
a*8)throw Error("code length overflow. ("+b.getLengthInBits()+">"+a*8+")");for(b.getLengthInBits()+4<=a*8&&b.put(0,4);b.getLengthInBits()%8!=0;)b.putBit(false);for(;;){if(b.getLengthInBits()>=a*8)break;b.put(p.PAD0,8);if(b.getLengthInBits()>=a*8)break;b.put(p.PAD1,8)}return p.createBytes(b,c)};p.createBytes=function(a,c){for(var d=0,b=0,e=0,f=Array(c.length),h=Array(c.length),g=0;g<c.length;g++){var j=c[g].dataCount,r=c[g].totalCount-j;b=Math.max(b,j);e=Math.max(e,r);f[g]=Array(j);for(var i=0;i<f[g].length;i++)f[g][i]=
255&a.buffer[i+d];d+=j;i=k.getErrorCorrectPolynomial(r);j=(new t(f[g],i.getLength()-1)).mod(i);h[g]=Array(i.getLength()-1);for(i=0;i<h[g].length;i++){r=i+j.getLength()-h[g].length;h[g][i]=r>=0?j.get(r):0}}for(i=g=0;i<c.length;i++)g+=c[i].totalCount;d=Array(g);for(i=j=0;i<b;i++)for(g=0;g<c.length;g++)if(i<f[g].length)d[j++]=f[g][i];for(i=0;i<e;i++)for(g=0;g<c.length;g++)if(i<h[g].length)d[j++]=h[g][i];return d};for(var n={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},u={L:1,M:0,Q:3,
H:2},s={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},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:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(a){for(var c=a<<10;k.getBCHDigit(c)-k.getBCHDigit(k.G15)>=0;)c^=k.G15<<k.getBCHDigit(c)-k.getBCHDigit(k.G15);return(a<<10|c)^k.G15_MASK},getBCHTypeNumber:function(a){for(var c=a<<12;k.getBCHDigit(c)-
k.getBCHDigit(k.G18)>=0;)c^=k.G18<<k.getBCHDigit(c)-k.getBCHDigit(k.G18);return a<<12|c},getBCHDigit:function(a){for(var c=0;a!=0;){c++;a>>>=1}return c},getPatternPosition:function(a){return k.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,c,d){switch(a){case s.PATTERN000:return(c+d)%2==0;case s.PATTERN001:return c%2==0;case s.PATTERN010:return d%3==0;case s.PATTERN011:return(c+d)%3==0;case s.PATTERN100:return(Math.floor(c/2)+Math.floor(d/3))%2==0;case s.PATTERN101:return c*d%2+c*d%3==0;case s.PATTERN110:return(c*
d%2+c*d%3)%2==0;case s.PATTERN111:return(c*d%3+(c+d)%2)%2==0;default:throw Error("bad maskPattern:"+a);}},getErrorCorrectPolynomial:function(a){for(var c=new t([1],0),d=0;d<a;d++)c=c.multiply(new t([1,l.gexp(d)],0));return c},getLengthInBits:function(a,c){if(1<=c&&c<10)switch(a){case n.MODE_NUMBER:return 10;case n.MODE_ALPHA_NUM:return 9;case n.MODE_8BIT_BYTE:return 8;case n.MODE_KANJI:return 8;default:throw Error("mode:"+a);}else if(c<27)switch(a){case n.MODE_NUMBER:return 12;case n.MODE_ALPHA_NUM:return 11;
case n.MODE_8BIT_BYTE:return 16;case n.MODE_KANJI:return 10;default:throw Error("mode:"+a);}else if(c<41)switch(a){case n.MODE_NUMBER:return 14;case n.MODE_ALPHA_NUM:return 13;case n.MODE_8BIT_BYTE:return 16;case n.MODE_KANJI:return 12;default:throw Error("mode:"+a);}else throw Error("type:"+c);},getLostPoint:function(a){for(var c=a.getModuleCount(),d=0,b=0;b<c;b++)for(var e=0;e<c;e++){for(var f=0,h=a.isDark(b,e),g=-1;g<=1;g++)if(!(b+g<0||c<=b+g))for(var j=-1;j<=1;j++)e+j<0||c<=e+j||g==0&&j==0||h==
a.isDark(b+g,e+j)&&f++;if(f>5)d+=3+f-5}for(b=0;b<c-1;b++)for(e=0;e<c-1;e++){f=0;a.isDark(b,e)&&f++;a.isDark(b+1,e)&&f++;a.isDark(b,e+1)&&f++;a.isDark(b+1,e+1)&&f++;if(f==0||f==4)d+=3}for(b=0;b<c;b++)for(e=0;e<c-6;e++)if(a.isDark(b,e)&&!a.isDark(b,e+1)&&a.isDark(b,e+2)&&a.isDark(b,e+3)&&a.isDark(b,e+4)&&!a.isDark(b,e+5)&&a.isDark(b,e+6))d+=40;for(e=0;e<c;e++)for(b=0;b<c-6;b++)if(a.isDark(b,e)&&!a.isDark(b+1,e)&&a.isDark(b+2,e)&&a.isDark(b+3,e)&&a.isDark(b+4,e)&&!a.isDark(b+5,e)&&a.isDark(b+6,e))d+=
40;for(e=f=0;e<c;e++)for(b=0;b<c;b++)a.isDark(b,e)&&f++;d+=Math.abs(100*f/c/c-50)/5*10;return d}},l={glog:function(a){if(a<1)throw Error("glog("+a+")");return l.LOG_TABLE[a]},gexp:function(a){for(;a<0;)a+=255;for(;a>=256;)a-=255;return l.EXP_TABLE[a]},EXP_TABLE:Array(256),LOG_TABLE:Array(256)},m=0;m<8;m++)l.EXP_TABLE[m]=1<<m;for(m=8;m<256;m++)l.EXP_TABLE[m]=l.EXP_TABLE[m-4]^l.EXP_TABLE[m-5]^l.EXP_TABLE[m-6]^l.EXP_TABLE[m-8];for(m=0;m<255;m++)l.LOG_TABLE[l.EXP_TABLE[m]]=m;t.prototype={get:function(a){return this.num[a]},
getLength:function(){return this.num.length},multiply:function(a){for(var c=Array(this.getLength()+a.getLength()-1),d=0;d<this.getLength();d++)for(var b=0;b<a.getLength();b++)c[d+b]^=l.gexp(l.glog(this.get(d))+l.glog(a.get(b)));return new t(c,0)},mod:function(a){if(this.getLength()-a.getLength()<0)return this;for(var c=l.glog(this.get(0))-l.glog(a.get(0)),d=Array(this.getLength()),b=0;b<this.getLength();b++)d[b]=this.get(b);for(b=0;b<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new t(d,
0)).mod(a)}};q.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]];q.getRSBlocks=function(a,c){var d=q.getRsBlockTable(a,c);if(d==undefined)throw Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+c);for(var b=d.length/3,e=[],f=0;f<b;f++)for(var h=d[f*3+0],g=d[f*3+1],j=d[f*3+2],r=0;r<h;r++)e.push(new q(g,j));return e};q.getRsBlockTable=function(a,c){switch(c){case u.L:return q.RS_BLOCK_TABLE[(a-1)*4+0];case u.M:return q.RS_BLOCK_TABLE[(a-1)*4+1];case u.Q:return q.RS_BLOCK_TABLE[(a-1)*4+2];case u.H:return q.RS_BLOCK_TABLE[(a-
1)*4+3];default:return}};x.prototype={get:function(a){return(this.buffer[Math.floor(a/8)]>>>7-a%8&1)==1},put:function(a,c){for(var d=0;d<c;d++)this.putBit((a>>>c-d-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0);if(a)this.buffer[c]|=128>>>this.length%8;this.length++}};if(typeof o==="string")o={text:o};o=v.extend({},{width:256,height:256,typeNumber:4,correctLevel:u.H},o);return this.each(function(){var a=
new p(o.typeNumber,o.correctLevel);a.addData(o.text);a.make();var c=document.createElement("canvas");c.width=o.width;c.height=o.height;for(var d=c.getContext("2d"),b=o.width/a.getModuleCount(),e=o.height/a.getModuleCount(),f=0;f<a.getModuleCount();f++)for(var h=0;h<a.getModuleCount();h++){d.fillStyle=a.isDark(f,h)?"#000000":"#ffffff";d.fillRect(h*b,f*e,b,e)}jQuery(c).appendTo(this)})}})(jQuery);