[SignalingServer] Optimize dependent modules
[platform/framework/web/wrtjs.git] / signaling_server / service / node_modules / qrcode / lib / renderer / canvas.js
1 var Utils = require('./utils')
2
3 function clearCanvas (ctx, canvas, size) {
4   ctx.clearRect(0, 0, canvas.width, canvas.height)
5
6   if (!canvas.style) canvas.style = {}
7   canvas.height = size
8   canvas.width = size
9   canvas.style.height = size + 'px'
10   canvas.style.width = size + 'px'
11 }
12
13 function getCanvasElement () {
14   try {
15     return document.createElement('canvas')
16   } catch (e) {
17     throw new Error('You need to specify a canvas element')
18   }
19 }
20
21 exports.render = function render (qrData, canvas, options) {
22   var opts = options
23   var canvasEl = canvas
24
25   if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {
26     opts = canvas
27     canvas = undefined
28   }
29
30   if (!canvas) {
31     canvasEl = getCanvasElement()
32   }
33
34   opts = Utils.getOptions(opts)
35   var size = Utils.getImageWidth(qrData.modules.size, opts)
36
37   var ctx = canvasEl.getContext('2d')
38   var image = ctx.createImageData(size, size)
39   Utils.qrToImageData(image.data, qrData, opts)
40
41   clearCanvas(ctx, canvasEl, size)
42   ctx.putImageData(image, 0, 0)
43
44   return canvasEl
45 }
46
47 exports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {
48   var opts = options
49
50   if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {
51     opts = canvas
52     canvas = undefined
53   }
54
55   if (!opts) opts = {}
56
57   var canvasEl = exports.render(qrData, canvas, opts)
58
59   var type = opts.type || 'image/png'
60   var rendererOpts = opts.rendererOpts || {}
61
62   return canvasEl.toDataURL(type, rendererOpts.quality)
63 }