Added QrCode.drawCanvas() to JavaScript version of the library, by moving it from the demo program.
This commit is contained in:
parent
671237fff2
commit
9a832a200d
|
@ -76,17 +76,7 @@ function redrawQrCode() {
|
||||||
var scale = parseInt(document.getElementById("scale-input").value, 10);
|
var scale = parseInt(document.getElementById("scale-input").value, 10);
|
||||||
if (scale <= 0 || scale > 30)
|
if (scale <= 0 || scale > 30)
|
||||||
return;
|
return;
|
||||||
// Draw QR Code onto canvas
|
qr.drawCanvas(scale, border, canvas);
|
||||||
var width = (qr.size + border * 2) * scale;
|
|
||||||
canvas.width = width;
|
|
||||||
canvas.height = width;
|
|
||||||
var ctx = canvas.getContext("2d");
|
|
||||||
for (var y = -border; y < qr.size + border; y++) {
|
|
||||||
for (var x = -border; x < qr.size + border; x++) {
|
|
||||||
ctx.fillStyle = qr.getModule(x, y) == 1 ? "#000000" : "#FFFFFF";
|
|
||||||
ctx.fillRect((x + border) * scale, (y + border) * scale, scale, scale);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
canvas.style.removeProperty("display");
|
canvas.style.removeProperty("display");
|
||||||
} else {
|
} else {
|
||||||
var code = qr.toSvgString(border);
|
var code = qr.toSvgString(border);
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
* - Fields int version, size, mask
|
* - Fields int version, size, mask
|
||||||
* - Field QrCode.Ecc errorCorrectionLevel
|
* - Field QrCode.Ecc errorCorrectionLevel
|
||||||
* - Method getModule(int x, int y) -> int
|
* - Method getModule(int x, int y) -> int
|
||||||
|
* - Method drawCanvas(int scale, int border, HTMLCanvasElement canvas) -> void
|
||||||
* - Method toSvgString(int border) -> str
|
* - Method toSvgString(int border) -> str
|
||||||
* - Enum Ecc:
|
* - Enum Ecc:
|
||||||
* - Constants LOW, MEDIUM, QUARTILE, HIGH
|
* - Constants LOW, MEDIUM, QUARTILE, HIGH
|
||||||
|
@ -185,6 +186,24 @@ var qrcodegen = new function() {
|
||||||
|
|
||||||
/*---- Public instance methods ----*/
|
/*---- 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) {
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// Based on the given number of border modules to add as padding, this returns a
|
// Based on the given number of border modules to add as padding, this returns a
|
||||||
// string whose contents represents an SVG XML file that depicts this QR Code symbol.
|
// string whose contents represents an SVG XML file that depicts this QR Code symbol.
|
||||||
this.toSvgString = function(border) {
|
this.toSvgString = function(border) {
|
||||||
|
|
Loading…
Reference in New Issue