summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/OATHAuth/modules/jquery.qrcode.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/OATHAuth/modules/jquery.qrcode.js')
-rw-r--r--www/wiki/extensions/OATHAuth/modules/jquery.qrcode.js88
1 files changed, 88 insertions, 0 deletions
diff --git a/www/wiki/extensions/OATHAuth/modules/jquery.qrcode.js b/www/wiki/extensions/OATHAuth/modules/jquery.qrcode.js
new file mode 100644
index 00000000..15a1c663
--- /dev/null
+++ b/www/wiki/extensions/OATHAuth/modules/jquery.qrcode.js
@@ -0,0 +1,88 @@
+( function ( $ ) {
+ $.fn.qrcode = function ( options ) {
+ // if options is string,
+ if ( typeof options === 'string' ){
+ options = { text: options };
+ }
+
+ // set default values
+ // typeNumber < 1 for automatic calculation
+ options = $.extend( {}, {
+ render : "canvas",
+ width : 256,
+ height : 256,
+ typeNumber : -1,
+ correctLevel : QRErrorCorrectLevel.H,
+ background : "#ffffff",
+ foreground : "#000000"
+ }, options);
+
+ var createCanvas = function(){
+ // create the qrcode itself
+ var qrcode = new QRCode(options.typeNumber, options.correctLevel);
+ qrcode.addData(options.text);
+ qrcode.make();
+
+ // create canvas element
+ var canvas = document.createElement('canvas');
+ canvas.width = options.width;
+ canvas.height = options.height;
+ var ctx = canvas.getContext('2d');
+
+ // compute tileW/tileH based on options.width/options.height
+ var tileW = options.width / qrcode.getModuleCount();
+ var tileH = options.height / qrcode.getModuleCount();
+
+ // draw in the canvas
+ for( var row = 0; row < qrcode.getModuleCount(); row++ ){
+ for( var col = 0; col < qrcode.getModuleCount(); col++ ){
+ ctx.fillStyle = qrcode.isDark(row, col) ? options.foreground : options.background;
+ var w = (Math.ceil((col+1)*tileW) - Math.floor(col*tileW));
+ var h = (Math.ceil((row+1)*tileW) - Math.floor(row*tileW));
+ ctx.fillRect(Math.round(col*tileW),Math.round(row*tileH), w, h);
+ }
+ }
+ // return just built canvas
+ return canvas;
+ };
+
+ // from Jon-Carlos Rivera (https://github.com/imbcmdth)
+ var createTable = function(){
+ // create the qrcode itself
+ var qrcode = new QRCode(options.typeNumber, options.correctLevel);
+ qrcode.addData(options.text);
+ qrcode.make();
+
+ // create table element
+ var $table = $('<table></table>')
+ .css("width", options.width+"px")
+ .css("height", options.height+"px")
+ .css("border", "0px")
+ .css("border-collapse", "collapse")
+ .css('background-color', options.background);
+
+ // compute tileS percentage
+ var tileW = options.width / qrcode.getModuleCount();
+ var tileH = options.height / qrcode.getModuleCount();
+
+ // draw in the table
+ for(var row = 0; row < qrcode.getModuleCount(); row++ ){
+ var $row = $('<tr></tr>').css('height', tileH+"px").appendTo($table);
+
+ for(var col = 0; col < qrcode.getModuleCount(); col++ ){
+ $('<td></td>')
+ .css('width', tileW+"px")
+ .css('background-color', qrcode.isDark(row, col) ? options.foreground : options.background)
+ .appendTo($row);
+ }
+ }
+ // return just built canvas
+ return $table;
+ };
+
+ return this.each(function(){
+ var element = options.render === "canvas" ? createCanvas() : createTable();
+ $(element).appendTo(this);
+ } );
+ };
+}( jQuery ) );