qrcode-matrix 0.1.1 → 1.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,43 +0,0 @@
1
- var QR_MODE = 1;
2
-
3
- var qrNumber = function () {
4
-
5
- var strToNum = function (s) {
6
- for (var i = 0; i < s.length; i++) {
7
- var c = s.charAt(i);
8
- if (c < '0' || c > '9') {
9
- throw 'illegal char :' + c;
10
- }
11
- }
12
- return +s;
13
- };
14
-
15
- return function (data) {
16
- var _data = data;
17
- var _this = {};
18
- _this.getMode = function () {
19
- return QR_MODE;
20
- };
21
- _this.getLength = function (buffer) {
22
- return _data.length;
23
- };
24
- _this.write = function (buffer) {
25
- var data = _data;
26
- var i = 0;
27
- while (i + 2 < data.length) {
28
- buffer.put(strToNum(data.substring(i, i + 3)), 10);
29
- i += 3;
30
- }
31
- if (i < data.length) {
32
- if (data.length - i == 1) {
33
- buffer.put(strToNum(data.substring(i, i + 1)), 4);
34
- } else if (data.length - i == 2) {
35
- buffer.put(strToNum(data.substring(i, i + 2)), 7);
36
- }
37
- }
38
- };
39
- return _this;
40
- }
41
- }();
42
-
43
- module.exports = qrNumber;
package/src/qr.js DELETED
@@ -1,154 +0,0 @@
1
- var utils = require('./utils');
2
-
3
- // 数据模式
4
- var QRMode = qr.QRMode = utils.QRMode;
5
-
6
- // 纠错等级
7
- var QRErrorCorrectionLevel = qr.QRErrorCorrectionLevel = utils.QRErrorCorrectionLevel;
8
-
9
- function qr(options) {
10
- options = options || {};
11
- var defOptions = {
12
- mode: QRMode.MODE_8BIT_BYTE,
13
- errorCorrectionLevel: QRErrorCorrectionLevel.M,
14
- typeNumber: 0,
15
- str2ByteArray: toUTF8Array,
16
- maskPattern: 'auto'
17
- }
18
- var _options = {};
19
- for (var k in defOptions) {
20
- _options[k] = options[k] == undefined ? defOptions[k] : options[k];
21
- }
22
-
23
- var cache = {}
24
- var getfun = function () {
25
- return function (data) {
26
- var _mode = _options.mode,
27
- _typeNumber = _options.typeNumber,
28
- _errorCorrectionLevel = _options.errorCorrectionLevel,
29
- _maskPattern = _options.maskPattern;
30
-
31
- var _moduleCount = 0,
32
- _dataCache = null,
33
- _byteArray = _options.str2ByteArray(data.toString());
34
-
35
- var makeImpl = function (test, maskPattern) {
36
- var map;
37
- if (cache['basemap_' + _typeNumber]) {
38
- map = utils.copyMap(cache['basemap_' + _typeNumber]);
39
- } else {
40
- map = utils.mapInit(_moduleCount);
41
- //填充探测图型
42
- utils.setupAllPositionProbePattern(map);
43
- //填充矫正位图
44
- utils.setupPositionAdjustPattern(map, _typeNumber);
45
- //填充定位图
46
- utils.setupTimingPattern(map);
47
- cache['basemap_' + _typeNumber] = utils.copyMap(map);
48
- }
49
- //填充格式信息
50
- utils.setupTypeInfo(map, test, _errorCorrectionLevel, maskPattern);
51
-
52
- //填充版本信息
53
- (_typeNumber >= 7) && utils.setupTypeNumber(map, test, _typeNumber);
54
-
55
- //填充数据
56
- if (_dataCache == null) {
57
- _dataCache = utils.createData(_typeNumber, _errorCorrectionLevel, _byteArray, _options.mode);
58
- }
59
- return utils.mapData(map, _dataCache, maskPattern);
60
- };
61
-
62
- // 为指定TypeNumber,则记算适合的TypeNumber
63
- if (_typeNumber < 1) {
64
- var typeNumber = 1;
65
- for (; typeNumber < 40; typeNumber++) {
66
- var rsBlocks = utils.getRSBlocks(typeNumber, _errorCorrectionLevel);
67
- var buffer = utils.qrBitBuffer();
68
-
69
- var data = _byteArray;
70
- buffer.put(_options.mode, 4);
71
- buffer.put(data.length, utils.getLengthInBits(_options.mode, typeNumber));
72
- for (var i = 0; i < data.length; i++) {
73
- buffer.put(data[i], 8)
74
- }
75
-
76
- var totalDataCount = 0;
77
- for (var i = 0; i < rsBlocks.length; i++) {
78
- totalDataCount += rsBlocks[i].dataCount;
79
- }
80
-
81
- if (buffer.getLengthInBits() <= totalDataCount * 8) {
82
- break;
83
- }
84
- }
85
- _typeNumber = typeNumber;
86
- }
87
-
88
- _moduleCount = _typeNumber * 4 + 17;
89
-
90
- // 记算最合适的掩码方案
91
- if (_maskPattern === 'random') {
92
- _maskPattern = ~~(Math.random() * (7 + 1));
93
- } else if (0 <= _maskPattern && _maskPattern <= 7) {
94
- _maskPattern = _maskPattern >> 0;
95
- } else {
96
- _maskPattern = (function () {
97
- var minLostPoint = 0;
98
- var pattern = 0;
99
- for (var i = 0; i < 8; i += 1) {
100
- var map = makeImpl(true, i);
101
- var lostPoint = utils.getLostPoint(map);
102
- if (i == 0 || minLostPoint > lostPoint) {
103
- minLostPoint = lostPoint;
104
- pattern = i;
105
- }
106
- }
107
- return pattern;
108
- }());
109
- }
110
- // console.log({
111
- // mode:_mode,
112
- // typeNumber:_typeNumber,
113
- // errorCorrectionLevel:_errorCorrectionLevel,
114
- // maskPattern:_maskPattern
115
- // })
116
- var map = makeImpl(false, _maskPattern);
117
-
118
- return map;
119
- }
120
- }
121
- return getfun();
122
- }
123
-
124
- function toUTF8Array(str) {
125
- var utf8 = [];
126
- for (var i = 0; i < str.length; i++) {
127
- var charcode = str.charCodeAt(i);
128
- if (charcode < 0x80) utf8.push(charcode);
129
- else if (charcode < 0x800) {
130
- utf8.push(0xc0 | (charcode >> 6),
131
- 0x80 | (charcode & 0x3f));
132
- } else if (charcode < 0xd800 || charcode >= 0xe000) {
133
- utf8.push(0xe0 | (charcode >> 12),
134
- 0x80 | ((charcode >> 6) & 0x3f),
135
- 0x80 | (charcode & 0x3f));
136
- }
137
- // surrogate pair
138
- else {
139
- i++;
140
- // UTF-16 encodes 0x10000-0x10FFFF by
141
- // subtracting 0x10000 and splitting the
142
- // 20 bits of 0x0-0xFFFFF into two halves
143
- charcode = 0x10000 + (((charcode & 0x3ff) << 10) |
144
- (str.charCodeAt(i) & 0x3ff));
145
- utf8.push(0xf0 | (charcode >> 18),
146
- 0x80 | ((charcode >> 12) & 0x3f),
147
- 0x80 | ((charcode >> 6) & 0x3f),
148
- 0x80 | (charcode & 0x3f));
149
- }
150
- }
151
- return utf8;
152
- }
153
-
154
- module.exports = qr;