[SignalingServer] Optimize dependent modules
[platform/framework/web/wrtjs.git] / signaling_server / service / node_modules / qrcode / lib / renderer / png.js
1 var fs = require('fs')
2 var PNG = require('pngjs').PNG
3 var Utils = require('./utils')
4
5 exports.render = function render (qrData, options) {
6   var opts = Utils.getOptions(options)
7   var pngOpts = opts.rendererOpts
8   var size = Utils.getImageWidth(qrData.modules.size, opts)
9
10   pngOpts.width = size
11   pngOpts.height = size
12
13   var pngImage = new PNG(pngOpts)
14   Utils.qrToImageData(pngImage.data, qrData, opts)
15
16   return pngImage
17 }
18
19 exports.renderToDataURL = function renderToDataURL (qrData, options, cb) {
20   if (typeof cb === 'undefined') {
21     cb = options
22     options = undefined
23   }
24
25   exports.renderToBuffer(qrData, options, function (err, output) {
26     if (err) cb(err)
27     var url = 'data:image/png;base64,'
28     url += output.toString('base64')
29     cb(null, url)
30   })
31 }
32
33 exports.renderToBuffer = function renderToBuffer (qrData, options, cb) {
34   if (typeof cb === 'undefined') {
35     cb = options
36     options = undefined
37   }
38
39   var png = exports.render(qrData, options)
40   var buffer = []
41
42   png.on('error', cb)
43
44   png.on('data', function (data) {
45     buffer.push(data)
46   })
47
48   png.on('end', function () {
49     cb(null, Buffer.concat(buffer))
50   })
51
52   png.pack()
53 }
54
55 exports.renderToFile = function renderToFile (path, qrData, options, cb) {
56   if (typeof cb === 'undefined') {
57     cb = options
58     options = undefined
59   }
60
61   var stream = fs.createWriteStream(path)
62   stream.on('error', cb)
63   stream.on('close', cb)
64
65   exports.renderToFileStream(stream, qrData, options)
66 }
67
68 exports.renderToFileStream = function renderToFileStream (stream, qrData, options) {
69   var png = exports.render(qrData, options)
70   png.pack().pipe(stream)
71 }