[SignalingServer] Optimize dependent modules
[platform/framework/web/wrtjs.git] / signaling_server / service / node_modules / qrcode / lib / renderer / utf8.js
1 var Utils = require('./utils')
2
3 var BLOCK_CHAR = {
4   WW: ' ',
5   WB: '▄',
6   BB: '█',
7   BW: '▀'
8 }
9
10 var INVERTED_BLOCK_CHAR = {
11   BB: ' ',
12   BW: '▄',
13   WW: '█',
14   WB: '▀'
15 }
16
17 function getBlockChar (top, bottom, blocks) {
18   if (top && bottom) return blocks.BB
19   if (top && !bottom) return blocks.BW
20   if (!top && bottom) return blocks.WB
21   return blocks.WW
22 }
23
24 exports.render = function (qrData, options, cb) {
25   var opts = Utils.getOptions(options)
26   var blocks = BLOCK_CHAR
27   if (opts.color.dark.hex === '#ffffff' || opts.color.light.hex === '#000000') {
28     blocks = INVERTED_BLOCK_CHAR
29   }
30
31   var size = qrData.modules.size
32   var data = qrData.modules.data
33
34   var output = ''
35   var hMargin = Array(size + (opts.margin * 2) + 1).join(blocks.WW)
36   hMargin = Array((opts.margin / 2) + 1).join(hMargin + '\n')
37
38   var vMargin = Array(opts.margin + 1).join(blocks.WW)
39
40   output += hMargin
41   for (var i = 0; i < size; i += 2) {
42     output += vMargin
43     for (var j = 0; j < size; j++) {
44       var topModule = data[i * size + j]
45       var bottomModule = data[(i + 1) * size + j]
46
47       output += getBlockChar(topModule, bottomModule, blocks)
48     }
49
50     output += vMargin + '\n'
51   }
52
53   output += hMargin.slice(0, -1)
54
55   if (typeof cb === 'function') {
56     cb(null, output)
57   }
58
59   return output
60 }
61
62 exports.renderToFile = function renderToFile (path, qrData, options, cb) {
63   if (typeof cb === 'undefined') {
64     cb = options
65     options = undefined
66   }
67
68   var fs = require('fs')
69   var utf8 = exports.render(qrData, options)
70   fs.writeFile(path, utf8, cb)
71 }