pull/3/merge
George MacKerron 8 years ago committed by GitHub
commit 71ef4443d3

@ -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");
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);
if (light) {
ctx.fillStyle = light;
ctx.fillRect(0, 0, width, width);
}
ctx.fillStyle = dark;
for (var y = 0; y < size; y++) {
for (var x = 0; x < size; /* 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);
}
}
};

Loading…
Cancel
Save