@ -186,19 +186,28 @@ var qrcodegen = new function() {
/*---- Public instance methods ----*/
// Draws this QR Code symbol with the given module scale and number of modules onto the given HTML canvas element.
// The canvas will be resized to a width and height of (this.size + border * 2) * scale. The painted image will be purely
// black and white with no transparent regions. The scale must be a positive integer, and the border must be a non-negative integer.
this . drawCanvas = function ( scale , border , canvas ) {
// The canvas will be resized to a width and height of (this.size + border * 2) * scale. The painted image will be
// coloured according to the colours given for 'dark' and 'light'; if 'dark' is omitted, black is used; if 'light'
// is omitted, the background is transparent. The scale must be a positive integer, and the border must be a
// non-negative integer.
this . drawCanvas = function ( scale , border , canvas , dark , light ) {
if ( scale <= 0 || border < 0 )
throw "Value out of range" ;
var width = ( size + border * 2 ) * scale ;
canvas . width = width ;
canvas . height = width ;
var ctx = canvas . getContext ( "2d" ) ;
if ( light ) {
ctx . fillStyle = light ;
ctx . fillRect ( 0 , 0 , width , width ) ;
}
ctx . fillStyle = dark ;
for ( var y = - border ; y < size + border ; y ++ ) {
for ( var x = - border ; x < size + border ; x ++ ) {
ctx . fillStyle = this . getModule ( x , y ) == 1 ? "#000000" : "#FFFFFF" ;
ctx . fillRect ( ( x + border ) * scale , ( y + border ) * scale , scale , scale ) ;
for ( var x = - border ; x < size + border ; /* no-op */ ) {
var moduleIsDark = this . getModule ( x , y ) == 1 ;
for ( var w = 1 ; w < size + border - x ; w ++ ) if ( this . getModule ( x + w , y ) != moduleIsDark ) break ;
x += w ;
if ( moduleIsDark ) ctx . fillRect ( ( x + border - w ) * scale , ( y + border ) * scale , scale * w , scale ) ;
}
}
} ;